{"version":3,"sources":["core/providers/IccApis.js","core/providers/authProvider.js","core/providers/customResources/profile/profileSaga.js","core/components/forked/stringify/caseOpenIc.js","core/themes/SolsticeTheme.js","core/themes/icons/ChevronDownIcon.js","core/themes/icons/ChevronUpIcon.js","core/components/SubMenu.js","core/themes/icons/ChevronLeftIcon.js","core/themes/icons/ChevronRightIcon.js","core/hooks/UseProfile.js","core/components/CollapseButton.js","core/components/SolsticeMenu.js","core/themes/icons/ErrorIcon.js","core/components/forked/layout/Notification.tsx","core/themes/icons/SuccessIcon.js","core/components/SolsticeLogoutButton.js","core/components/SolsticeAppBar.js","core/apis/LogApi.js","core/hooks/useErrorLogger.js","core/components/SolsticeLayout.js","core/themes/icons/InvStructureIcon.js","core/themes/icons/TagIcon.js","core/themes/assets/EfrontBackground.jpg","core/components/LoginPage.js","core/components/BulkActionDeleteButton.js","core/components/LinkField.js","core/components/list/Empty.js","core/components/list/StyledFilter.js","core/themes/icons/ExcelIcon.js","core/components/LightTooltip.js","core/components/DialogTitleWithCloseButton.js","core/components/forked/input/FileInputPreview.tsx","core/components/forked/input/sanitizeRestProps.ts","core/components/forked/input/FileInput.tsx","core/components/forked/field/sanitizeRestProps.ts","core/themes/icons/FileIcon.js","core/themes/icons/PdfIcon.js","core/themes/icons/WordIcon.js","core/themes/icons/CompressedIcon.js","core/components/forked/field/FileField.tsx","core/apis/UserApi.js","core/hooks/useNotifyServerError.js","core/components/form/CustomSimpleForm.js","features/users/importusers/ExcelContactImportTitleBarWithDropbox.js","core/components/StatusSelectField.js","core/themes/icons/UserIcon.js","features/users/UserLookups.js","core/components/forked/input/AutocompleteSuggestionItem.tsx","core/components/forked/input/AutocompleteSuggestionList.tsx","core/components/forked/input/AutocompleteInput.tsx","features/users/UserList.js","core/components/form/SimpleFormWithSave.js","features/users/userphone/UserPhoneForm.js","features/users/userphone/UserPhoneCreateUpdate.js","core/apis/InvestorApi.js","features/investors/utils.js","features/users/useraddress/UserAddressForm.js","features/users/useraddress/UserAddressCreateUpdate.js","core/components/EditButtonWithOnClick.js","features/users/useraddress/UserAddressDatagrid.js","features/users/userphone/UserPhoneDatagrid.js","core/components/CheckBoxField.js","core/apis/UserMailApi.js","core/components/grid/GridPopoverWithCloseButton.js","core/components/ListPopover.js","core/components/inputs/FieldTitleWithListPopover.js","core/components/inputs/RichTextInput.js","features/resourceuploads/uploadsteps/emailDialog/EmailFormStyles.js","features/resourceuploads/uploadsteps/emailDialog/EmailForm.js","core/apis/PreviewEmailApi.js","features/users/EmailPreviewDialog.js","features/users/UserEmailDialog.js","core/components/forked/layout/Confirm.js","core/apis/TenantConfigurationApi.js","features/users/UserDetails.js","core/components/FormTitleBar.js","core/components/NavigationPrompt.js","core/components/edit/DeleteButtonWithConfirm.js","core/components/edit/EditToolbar.js","core/components/forked/input/DateInput.tsx","features/users/UserSecurity.js","core/components/LeaveConfirmWrapper.js","core/apis/EntitlementApi.js","core/hooks/UseFetch.js","core/components/VirtualizedGrid.js","core/components/StatusColorDisplay.js","core/components/inputs/GridInput.js","features/users/userauthorization/GridInputChoices.js","features/users/userauthorization/utils.js","features/users/userauthorization/AddAuthorizationDialog.js","features/users/userauthorization/datagridComponents/TableCells.js","features/users/EnumUserType.js","features/users/userauthorization/UserAuthorizationDatagrid.js","features/users/userauthorization/UserAuthorizationUpdate.js","core/components/forked/list/useListParams.ts","core/components/forked/list/useListController.ts","core/components/forked/list/ForceListRender.tsx","features/users/userauthorization/importPermissionsGroups/steps/ContactStep.js","core/apis/FundFamilyApi.js","core/apis/FundInvestorApi.js","features/users/userauthorization/stepper/utils.js","features/users/userauthorization/importPermissionsGroups/steps/PermissionGroupsStep.js","features/users/userauthorization/importPermissionsGroups/ImportPermissionsContext.js","features/users/userauthorization/importPermissionsGroups/ImportPermissionsGroupsDialog.js","features/users/userauthorization/UserAuthorizationTab.js","core/apis/UserRolesApi.js","core/components/inputs/GridInputFilter.js","features/users/creationsteps/CreationContactContext.js","features/users/featureaccesscontrol/AddRolesDialog.js","features/users/featureaccesscontrol/FeatureAccessControlTab.js","core/apis/UserNotificationApi.js","features/users/usernotification/UserNotificationLookups.js","features/users/usernotification/UserNotificationForm.js","features/users/usernotification/UserNotificationCommon.js","features/users/usernotification/UserNotificationCreate.js","features/users/usernotification/UserNotificationContext.js","features/users/usernotification/UserNotificationDatagrid.js","features/users/usernotification/UserNotificationDataProvider.js","features/users/usernotification/UserNotificationTab.js","core/apis/UserActivityApi.js","core/components/inputs/sanitizeRestProps.js","core/components/inputs/TimeInput.tsx","features/users/useractivity/UserActivityForm.js","features/users/useractivity/UserActivityDetailDialog.js","core/components/WrapperField.js","features/users/useractivity/ActivityLookups.js","features/users/useractivity/UserActivityTab.js","core/components/forked/layout/ViewTab.tsx","core/components/tab/UdfTab.js","features/users/UserEdit.js","features/users/creationsteps/StyleStep.js","features/users/creationsteps/AccessRolesStep.js","features/users/userauthorization/AddAuthorization.js","features/users/creationsteps/SelectPermissionGroupsStep.js","core/apis/GroupApi.js","features/investors/copyContactsSteps/CopyContactsContext.js","core/components/grid/GridPopover.js","features/investors/copyContactsSteps/ContactsStep.js","features/users/creationsteps/AssignPermissionGroupsStep.js","features/users/creationsteps/UserDetailsStep.js","features/users/creationsteps/EmailNotificationsStep.js","core/components/wizardStepper/WizardStepper.js","core/components/wizardStepper/GenerateMessageOnLeave.js","features/users/UserCreate.js","features/users/index.js","core/apis/FundApi.js","features/funds/fundimport/ExcelFundImportTitleBarWithDropbox.js","features/funds/FundLookups.js","core/components/InvestorStatusSelectField.js","features/fundinvestors/FundInvestorLookups.js","features/funds/InvestorFundDatagrid.js","core/components/TagsField.js","core/components/inputs/TagFilter.js","features/funds/FundList.js","core/components/list/ListPagination.js","core/apis/FundTagsAssociationsApi.js","features/fundinvestors/FundInvestorSummary.js","features/fundinvestors/FundInvestorForm.js","features/fundinvestors/FundInvestorCreateUpdate.js","features/investors/InvestorLookups.js","core/components/inputs/TagInput.js","features/investors/InvestorDetails.js","features/funds/InvestorCreateDialog.js","features/funds/creationSteps/utils.js","features/funds/FundSummary.js","features/funds/FundEdit.js","features/funds/creationSteps/CreationFundContext.js","features/funds/creationSteps/FundDetailsStep.js","features/funds/creationSteps/AddRelatedInvestors.js","features/funds/creationSteps/AddRelatedContacts/utils/usePagination.js","features/users/userauthorization/stepper/ManageAuthorizations.js","features/funds/creationSteps/AddRelatedContacts/ContactsList.js","features/users/userauthorization/stepper/styles.js","features/funds/creationSteps/AddRelatedContacts/AddRelatedContacts.js","features/funds/index.js","features/funds/FundCreate.js","features/investors/FundInvestorDatagrid.js","core/apis/WireInstructionApi.js","features/investors/wireinstructions/WireInstructionsImportFromExcel.js","features/investors/importinvestors/ExcelInvestorImportTitleBarWithDropbox.js","features/investors/InvestorList.js","features/investors/creationSteps/CreationInvestorContext.js","features/investors/creationSteps/InvestorDetailsStep.js","features/investors/creationSteps/AddRelatedFundsStep.js","features/splitmethods/SplitMethodTypeLookups.js","features/investors/creationSteps/MatchingFieldsStep.js","features/investors/creationSteps/addRelatedContacts/ContactsList.js","features/investors/creationSteps/addRelatedContacts/AddRelatedContactsStep.js","features/investors/InvestorCreate.js","features/fundinvestors/contactssteps/ManageContactContext.js","features/fundinvestors/contactssteps/ManageStep.js","features/fundinvestors/contactssteps/ContactsStep.js","features/fundinvestors/FundInvestorStepper.js","features/investors/FundCreateDialog.js","features/investors/wireinstructions/WireInstructionSummary.js","features/investors/wireinstructions/WireInstructionCreateUpdateDialog.js","features/investors/InvestorContactsDatagrid.js","features/investors/wireinstructions/WireInstructionsDatagrid.js","features/investors/copyContactsSteps/InvestorDatagrid.js","features/investors/copyContactsSteps/InvestorsStep.js","features/investors/CopyContactStepper.js","features/investors/MatchingFields.js","core/components/DeleteButtonWithRedirect.tsx","features/investors/InvestorListBulkActions.js","core/apis/FundInvestorTagsAssociationsApi.js","features/investors/InvestorFundRelationshipDialog.js","features/investors/primarycontacts/PrimaryContactsDialog.js","core/apis/InvestorTagsAssociationsApi.js","features/investors/InvestorEdit.js","features/investors/index.js","core/themes/icons/DocumentIcon.js","core/components/ListTitleBar.js","features/resourceuploads/ResourceUploadLookups.js","core/apis/ResourceUploadApi.js","features/resourceuploads/ResourceUploadListBulkActions.js","core/apis/DocumentApi.js","features/resourceuploads/uploadsteps/SummaryStepStyles.js","core/hooks/UseInterval.js","features/resourceuploads/uploadsteps/SummaryStep.js","features/resourceuploads/manageBatch/CopyInvestorContext.js","features/resourceuploads/manageBatch/SelectInvestorsStep.js","features/resourceuploads/manageBatch/PropertiesStep.js","features/resourceuploads/manageBatch/CopyToInvestorStepper.js","features/resourceuploads/manageBatch/ManageDocumentPropertiesDialog.js","core/components/grid/PopupField.js","core/components/DateRangeLookups.js","core/components/DateRangeFilter.js","features/resourceuploads/ResourceUploadList.js","core/themes/icons/PendingIndicator.js","features/resourceuploads/uploadsteps/SplitStep/SplitStepDocumentTable.js","features/resourceuploads/uploadsteps/SplitStep/SplitStepActionBar.js","features/resourceuploads/uploadsteps/SplitStep/AssignSplitStep.js","core/components/inputs/CheckBoxInput.js","features/resourceuploads/uploadsteps/DetailsStep.js","core/themes/utils/doubleListStyles.js","core/components/inputs/DoubleListArrayInput.js","core/themes/icons/WarningIcon.js","features/resourceuploads/uploadsteps/FundStep/styles.js","features/resourceuploads/uploadsteps/FundStep/FundLevelTree.js","core/apis/FundInvestorTagApi.js","core/apis/FundTagApi.js","features/resourceuploads/uploadsteps/FundStep/FundInvestorTagTree/TreeListButtons.js","features/resourceuploads/uploadsteps/FundStep/FundInvestorTagTree/TreeListFilters.js","features/resourceuploads/uploadsteps/FundStep/FundInvestorTagTree/utils.js","features/resourceuploads/uploadsteps/FundStep/FundInvestorTagTree/TreeTitle.js","features/resourceuploads/uploadsteps/FundStep/FundInvestorTagTree/TreeError.js","features/resourceuploads/uploadsteps/FundStep/FundInvestorTagTree/NodeRenderer.js","features/resourceuploads/uploadsteps/FundStep/FundInvestorTagTree/TreeList.js","features/resourceuploads/uploadsteps/FundStep/FundInvestorTagTree/FundInvestorTagLevelTree.js","features/resourceuploads/uploadsteps/FundStep/FundInvestorTagTree/FundInvestorTagLevelTreeContainer.js","features/resourceuploads/uploadsteps/FundStep/FundsStep.js","features/resourceuploads/uploadsteps/InvestorsStep.js","features/resourceuploads/uploadsteps/DeliveryTabs/TabsStyles.js","features/resourceuploads/uploadsteps/DeliveryTabs/CommonTabLookups.js","core/apis/PostalMailApi.js","features/resourceuploads/uploadsteps/DeliveryTabs/CommonTab.js","features/resourceuploads/uploadsteps/DeliveryStep.js","core/apis/MailApi.js","features/testemail/ContactDataProvider.js","features/testemail/DistributionListContactSummary.js","features/testemail/DistributionListContactForm.js","core/apis/DistributionListApi.js","features/testemail/DistributionListContactDialog.js","features/resourceuploads/uploadsteps/emailDialog/EmailPreviewDialog.js","features/resourceuploads/uploadsteps/emailDialog/EmailDialog.js","features/resourceuploads/ResourceUploadCreate.js","features/resourceuploads/ResourceUploadEdit.js","features/resourceuploads/index.js","features/categories/CategoryLookups.js","features/categories/CategoryList.js","core/apis/DocumentCategoryApi.js","features/categories/CategorySummary.js","features/categories/SubcategoriesDataGrid.js","features/categories/SubcategorySummary.js","features/categories/SubcategoryForm.js","features/categories/SubcategoryCreateDialog.js","features/categories/CategoryEdit.js","core/components/CreateToolbar.js","features/categories/CategoryCreate.js","features/categories/index.js","features/presets/PresetList.js","core/apis/DocumentPresetApi.js","features/presets/PresetSummary.js","features/presets/PresetEdit.js","features/presets/PresetCreate.js","features/presets/index.js","features/groups/GroupCategoryDatagrid.js","features/groups/GroupLookups.js","features/groups/GroupList.js","features/groups/GroupSummary.js","features/groups/GroupCreate.js","core/apis/GroupCategoryApi.js","features/groupcategories/GroupCategorySummary.js","features/groupcategories/GroupCategoryForm.js","features/groupcategories/GroupCategoryCreateUpdate.js","features/groups/CategoryCreateDialog.js","features/groupcategories/GroupSubcategoryCreate.js","features/groups/GroupEdit.js","features/groups/index.js","features/documenttypes/DocumentTypeList.js","core/apis/DocumentTypeApi.js","features/documenttypes/DocumentTypeSummary.js","features/documenttypes/DocumentTypeCreate.js","features/documenttypes/DocumentTypeEdit.js","features/documenttypes/index.js","features/mailtemplates/MailTemplateLookups.js","features/mailtemplates/MailTemplateList.js","core/apis/EmailTemplateApi.js","features/mailtemplates/MailTemplateSummary.js","features/mailtemplates/MailTemplateCreate.js","features/mailtemplates/MailTemplateEdit.js","features/mailtemplates/index.js","features/splitmethods/SplitMethodList.js","features/splitmethods/SplitMethodSummary.js","core/apis/SplitMethodApi.js","features/splitmethods/SplitMethodCreate.js","features/splitmethods/SplitMethodEdit.js","features/splitmethods/index.js","core/themes/icons/TenantConfigurationIcon.js","features/tenantconfigurations/TenantConfigurationList.js","features/tenantconfigurations/TenantConfigurationLookups.js","features/tenantconfigurations/TenantConfigurationSummary.js","features/tenantconfigurations/TenantConfigurationForm.js","features/tenantconfigurations/TenantConfigurationEdit.js","features/tenantconfigurations/index.js","core/apis/OrganizationApi.js","features/organizations/importorganizations/ExcelOrganizationImportTitleBarWithDropbox.js","features/organizations/OrganizationLookups.js","features/organizations/organizationsinvestor/OrganizationInvestorDatagrid.js","features/organizations/OrganizationList.js","features/organizations/OrganizationSummary.js","features/organizations/OrganizationCreate.js","features/organizations/organizationsinvestor/AddExistingInvestorSummary.js","features/organizations/organizationsinvestor/AddExistingInvestorForm.js","features/organizations/organizationsinvestor/AddExistingInvestorDialog.js","features/organizations/organizationsinvestor/OrganizationInvestorCreateDialog.js","features/organizations/organizationsinvestor/RemoveOrganizationInvestorButton.js","features/organizations/OrganizationEdit.js","features/organizations/index.js","features/fundfamilies/fundfamiliesfund/FundFamilyFundDatagrid.js","features/fundfamilies/FundFamilyLookups.js","features/fundfamilies/FundFamilyList.js","features/fundfamilies/FundFamilySummary.js","features/fundfamilies/FundFamilyCreate.js","features/fundfamilies/fundfamiliesfund/AddExistingOrphanFundSummary.js","features/fundfamilies/fundfamiliesfund/AddExistingOrphanFundForm.js","features/fundfamilies/fundfamiliesfund/AddExistingOrphanFundDialog.js","features/fundfamilies/fundfamiliesfund/FundFamilyFundCreateDialog.js","features/fundfamilies/fundfamiliesfund/RemoveFundFamilyFundButton.js","features/fundfamilies/FundFamilyEdit.js","features/fundfamilies/index.js","features/documentwatermarks/DocumentWatermarkList.js","features/documentwatermarks/DocumentWatermarkLookups.js","features/documentwatermarks/DocumentWatermarkColorPicker.js","core/apis/DocumentWatermarkApi.js","features/documentwatermarks/DocumentWatermarkUtils.js","features/documentwatermarks/DocumentWatermarkSummary.js","features/documentwatermarks/DocumentWatermarkCreate.js","features/documentwatermarks/DocumentWatermarkEdit.js","features/documentwatermarks/index.js","core/themes/icons/RoleIcon.js","features/roles/RoleList.js","core/apis/RoleApi.js","core/components/inputs/TreeInput.js","features/roles/RoleLookups.js","features/roles/RoleSummary.js","features/roles/RoleCreate.js","features/roles/RelatedContactsDatagrid.js","features/roles/RoleEdit.js","features/roles/index.js","core/themes/icons/FundTagIcon.js","features/fundtags/FundTagSummary.js","features/fundtags/FundTagCreate.js","features/fundtags/FundTagEdit.js","features/fundtags/fundtagimport/ExcelFundTagImportTitleBarWithDropbox.js","features/fundtags/FundTagList.js","features/fundtags/index.js","core/themes/icons/InvestorTagIcon.js","core/apis/InvestorTagApi.js","features/investortags/investortagimport/ExcelInvestorTagImportTitleBarWithDropbox.js","features/investortags/InvestorTagList.js","features/investortags/InvestorTagSummary.js","features/investortags/InvestorTagEdit.js","features/investortags/InvestorTagCreate.js","features/investortags/index.js","core/themes/icons/FundInvestorTagIcon.js","features/fundinvestortags/AddFundsDialog.js","features/fundinvestortags/utils/styles.js","features/fundinvestortags/FundInvestorTagSummary.js","features/fundinvestortags/FundInvestorTagEdit.js","features/fundinvestortags/fundinvestortagimport/ExcelFundInvestorTagImportTitleBarWithDropBox.js","features/fundinvestortags/FundInvestorTagList.js","features/fundinvestortags/creationSteps/CreationFundInvestorTagContext.js","features/fundinvestortags/creationSteps/TagDetailsStep.js","features/fundinvestortags/creationSteps/utils.js","features/fundinvestortags/creationSteps/assignTag/FundInvestorSelection.js","features/fundinvestortags/creationSteps/assignTag/AssignTagForm.js","features/fundinvestortags/creationSteps/assignTag/AssignTagStep.js","features/fundinvestortags/FundInvestorTagCreate.js","features/fundinvestortags/index.js","core/apis/EmailArchiveAttachmentApi.js","features/emailarchives/EmailArchiveList.js","core/apis/EmailArchiveExcelDownloadApi.js","features/emailarchives/EmailArchiveShow.js","features/emailarchives/index.js","features/categoryterms/CategoryTermsLookups.js","features/categoryterms/CategoryTermsList.js","features/categoryterms/CategoryTermsSummary.js","features/categoryterms/AddCategories.js","features/categoryterms/CategoryTermsRelations.js","features/categoryterms/CategoryTermsEdit.js","features/categoryterms/CategoryTermsCreate.js","features/categoryterms/index.js","features/fundterms/FundTermsLookup.js","features/fundterms/FundTermsList.js","features/fundterms/FundTermsSummary.js","features/fundterms/AddFunds.js","features/fundterms/FundTermsRelations.js","features/fundterms/FundTermsEdit.js","features/fundterms/FundTermsCreate.js","features/fundterms/index.js","features/distributionlists/DistributionListList.js","features/distributionlists/createsteps/DistributionListContext.js","features/distributionlists/createsteps/RecipientsLookups.js","core/components/ImportExcelGroup.js","features/distributionlists/createsteps/RecipientsStep.js","features/distributionlists/createsteps/AdvancedOptionsDialog.js","features/distributionlists/createsteps/OptionsGrid.js","features/distributionlists/createsteps/OptionsStep.js","features/distributionlists/createsteps/EmailPreviewDialog.js","features/distributionlists/createsteps/EmailDialog.js","features/distributionlists/createsteps/SummaryGrid.js","features/distributionlists/createsteps/SummaryStep.js","features/distributionlists/DistributionListCreate.js","features/distributionlists/DistributionListShow.js","features/distributionlists/index.js","core/themes/icons/ReportIcon.js","features/reports/ReportLookups.js","features/reports/ReportList.js","core/apis/AdminReportApi.js","features/reports/ReportDatagrid.js","features/reports/filters/CheckBoxFilter.js","features/reports/filters/styles/SelectFilterStyles.js","features/reports/filters/SelectFilter.js","features/reports/ReportFilters.js","features/reports/ReportSummary.js","features/reports/ReportEdit.js","features/reports/index.js","core/components/forked/core/Resource.tsx","NotActivatedMessage.js","core/providers/customResources/profile/profileReducer.js","App.js","serviceWorker.js","index.js","core/providers/customResources/profile/profileActions.js","features/resourceuploads/uploadsteps/emailDialog/EmailFormLookups.js","core/utils/IcxPortal.js","core/i18n/englishLanguageMessages.js","core/providers/utils.js","core/apis/ApiBase.js","core/providers/IccUserDataProvider.js","core/components/forked/stringify/index.js","core/utils/index.js"],"names":["iccApis","users","singular","plural","paginated","id","generatedId","createMethod","updateMethod","funds","additionalGetManyFilterParam","returnFundTags","additionalGetOneFilterParam","investors","getMany","returnInvestorTags","organizations","resourceuploads","queryId","userphones","userphonetypes","useraddresses","useraddresstypes","userauthorizations","categories","subcategories","fundclasses","fundinvestors","countries","states","pluralId","documentpresets","documenttypes","documentwatermarks","documentsecurities","fundfamilies","categorytypes","currencies","mailtemplates","splitmethods","documents","resourceuploaddocuments","tenantconfigurations","groups","groupcategories","fundterms","fundtermsrelations","categoryterms","categorytermsrelations","distributionlist","roles","fundtags","investortags","fundinvestortags","authorities","userroles","distributionlists","mfamethods","reports","emailarchives","emailarchiveattachments","emailarchiverecipients","distributionlistrecipients","aliasUdfs","investorcontacts","primarycontacts","usernotifications","activities","userudfs","investorudfs","fundinvestorudfs","wireinstructions","investorcount","fundtagsassociations","investortagsassociations","fundinvestortagsassociations","refreshTimeout","undefined","type","params","AUTH_LOGIN","username","password","tenant","sessionStorage","setItem","request","method","url","API_URL","headers","Buffer","from","toString","error","axios","then","response","status","statusText","getIcError","data","Error","accessToken","setInterval","token","getItem","catch","message","AUTH_LOGOUT","removeItem","clearInterval","Promise","resolve","AUTH_ERROR","reject","AUTH_CHECK","jwt","jwtDecode","current_time","Date","now","isNaN","exp","AUTH_GET_PERMISSIONS","authoritiesRequest","getPermissions","retrieveProfile","_marked2","_regeneratorRuntime","mark","resetProfile","_marked3","firstRetrieveProfile","_marked4","profileSaga","action","resp","notId","param","wrap","_context","prev","next","profileTypes","REFRESH_PROFILE","put","getProfile","call","sent","getProfileSuccess","t0","get","messageArgs","getProfileFailure","showNotification","stop","_marked","_context2","select","state","profile","item","resetProfileAction","isLoading","_context3","loading","_context4","takeEvery","_ref","caseOpenIc","options","key","result","value","length","encode","encodeURI","join","substring","arrayFormatSeparator","concat","solstice","brand","emphasized","border","backgroundHeader","errorMain","errorLight","baseText","secondary","tertiary","disabled","fontSize","unit","SolsticeTheme","createTheme","sidebar","width","closedWidth","palette","contrastThreshold","tonalOffset","primary","main","light","typography","fontFamily","text","hint","shape","borderRadius","shadows","overrides","MuiList","root","minWidth","MuiListItemText","inset","paddingLeft","MuiSnackbarContent","color","MuiButton","textTransform","label","MuiIconButton","height","padding","MuiSwitch","icon","iconChecked","MuiCheckbox","PrivateSwitchBase","MuiTab","wrapper","MuiTable","MuiTableRow","head","MuiTableSortLabel","display","justifyContent","MuiTableCell","body","maxWidth","wordBreak","MuiTablePagination","input","paddingTop","selectRoot","MuiDrawer","docked","overflow","MuiPaper","top","position","zIndex","elevation0","marginTop","elevation1","elevation2","elevation8","MuiPopover","paper","MuiAutocomplete","popper","backgroundColor","MuiInput","minHeight","underline","borderBottom","MuiInputBase","MuiInputLabel","formControl","transform","shrink","marginDense","MuiFormControl","marginNormal","MuiListItemIcon","MuiSvgIcon","MuiSelect","MuiTypography","caption","h5","colorTextSecondary","h6","body1","AutocompleteInput","suggestionsContainerOpen","MuiDialog","paperWidthFalse","paperScrollPaper","maxHeight","margin","paddingBottom","lineHeight","MuiDialogTitle","MuiDialogContent","flex","flexDirection","MuiDialogActions","borderTop","MuiDialogContentText","marginBottom","MuiMenu","MuiMenuItem","paddingRight","MuiStepIcon","completed","MuiStepLabel","iconContainer","MuiStepConnector","MuiAvatar","MuiTabs","indicator","MuiFormGroup","row","marginLeft","marginRight","RaListToolbar","toolbar","alignItems","RaNullableBooleanInput","RaFilter","form","button","borderColor","RaAutocompleteArrayInput","container","left","borderRight","borderLeft","content","suggestionsContainer","chip","textDecoration","boxSizing","chipContainerFilled","inputRootFilled","transition","inputInput","RaSimpleFormIterator","line","indexContainer","ChevronDownIcon","props","_jsx","className","style","ChevronUpIcon","SubMenu","_Component","_inherits","_super","_createSuper","_classCallCheck","apply","arguments","_createClass","_this$props","this","handleToggle","sidebarIsOpen","isOpen","name","classes","children","_jsxs","Fragment","ListItem","dense","onClick","listItem","ListItemIcon","ListItemText","listItemText","listItemIcon","Collapse","in","timeout","unmountOnExit","Divider","List","component","disablePadding","sidebarIsClosed","Component","withStyles","ChevronLeftIcon","ChevronRightIcon","useProfile","dispatch","useDispatch","useSelector","refreshProfile","useCallback","refreshProfileAction","useStyles","makeStyles","toggleButton","cursor","bottom","toggleButtonActive","toggleButtonInactive","version","chevron","bottomIcon","CollapseButton","shouldDisplayVersion","open","userType","process","classnames","setVisibility","subMenuText","sidebarOpened","sidebarClosed","menuStyle","translatedResourceName","resource","translate","smart_count","_","inflection","humanize","pluralize","MENU_STATE_KEY","SolsticeMenu","_this","componentDidMount","onRouteChanged","resources","location","pathname","nextLocation","find","substr","group","setState","menu","_objectSpread","_defineProperty","saveStore","json","JSON","stringify","menuState","parse","e","prevProps","filter","hasList","reduce","_resource$options","groupIcon","groupMenu","push","_this2","onMenuClick","setSidebarVisibility","tree","buildMenuTree","map","MenuItemLink","activeClassName","active","to","primaryText","leftIcon","rgba","child","withTranslate","connect","admin","ui","sidebarOpen","getResources","router","withRouter","theme","createStyles","ErrorIcon","variantIcon","warning","info","customWarning","forkedWarning","success","contrastText","undo","multiLine","whiteSpace","iconVariant","opacity","errorMessage","infoMessage","warningMessage","notificationContent","Notification","autoHideDuration","rest","_objectWithoutProperties","_excluded","_useState","useState","_useState2","_slicedToArray","setOpen","notification","getNotification","useTranslate","styles","notificationType","isNewAdminCustomWarning","isForkedWarning","Icon","messageStyle","useEffect","handleRequestClose","handleExited","undoable","complete","undoableEventEmitter","emit","isUndo","hideNotification","handleUndo","Dialog","BackdropProps","invisible","Snackbar","disableWindowBlurListener","TransitionProps","onExited","onClose","ContentProps","classNames","Button","size","SnackbarContent","clsx","defaultProps","SolsticeLogoutButton","smallMenuItem","userLogout","Responsive","xsmall","MenuItem","ExitIcon","Typography","variant","medium","userLogoutAction","SolsticeAppBar","AppBar","isDevMode","runningInPortal","LogApi","_ApiBase","_sendClientlogs","_asyncToGenerator","_callee","payload","getHeaders","abrupt","_x","ApiBase","logLevel","solsticeSidebar","drawerPaper","_ref2","_excluded2","Sidebar","CustomLayout","_len","args","Array","_key","hasError","errorInfo","log","stacktrace","componentStack","tags","appBar","customRoutes","dashboard","logout","title","_excluded3","_this$state","activated","staticContext","history","match","appFrame","contentWithSidebar","createElement","hasDashboard","customHeader","Menu","EnhancedCustomLayout","background","default","flexGrow","flexBasis","overflowY","SolsticeLayout","_excluded4","muiTheme","setMuiTheme","logRef","useRef","notify","useNotify","configRoarrLog","ROARR","write","current","context","level","x","_window$location","console","logId","uuidv4","sendClientlogs","time","moment","toISOString","window","href","err","warn","onError","onerror","src","col","stack","includes","useErrorLogger","MuiThemeProvider","InvStructureIcon","TagIcon","viewBox","fill","xmlns","fillRule","clipRule","d","renderInput","_ref$meta","meta","_ref$meta2","touched","inputProps","Object","assign","_objectDestructuringEmpty","htmlFor","TextField","helperText","fullWidth","Login","login","auth","userLogin","nextPathname","Card","card","avatar","Avatar","LockIcon","Form","onSubmit","validate","values","errors","handleSubmit","Field","autoFocus","TopToolbar","actions","CircularProgress","thickness","EnhancedLogin","EfrontBackground","backgroundRepeat","backgroundSize","grey","LoginPage","BulkActionDeleteButton","React","BulkDeleteButton","LinkField","_props$record","record","source","basePath","idSource","render","_props$linkType","linkType","Link","linkToRecord","link","gridContainer","gridContainerWithButtons","buttonGridContainer","buttonGridContainerWithoutTitle","alignSelf","emptyText","fontWeight","Empty","classesOverride","buttons","buttonsToShow","hide","Grid","direction","ButtonList","index","isValidElement","StyledFilter","Filter","ExcelIcon","LightTooltip","tooltip","common","white","boxShadow","Tooltip","DialogTitleWithCloseButton","closeButton","right","spacing","fontStyle","helpIconContainer","verticalAlign","helpIcon","help","_React$useState","_React$useState2","handleTooltipClose","disableTypography","ClickAwayListener","onClickAway","placement","PopperProps","disablePortal","disableFocusListener","disableHoverListener","disableTouchListener","HelpOutlineIcon","IconButton","CloseIcon","removeButton","removeIcon","FileInputPreview","onRemove","file","preview","rawFile","URL","revokeObjectURL","Clear","afterSubmit","allowEmpty","allowNull","alwaysOn","beforeSubmit","defaultValue","format","formatOnBlur","formClassName","initializeForm","isEqual","isRequired","limitChoicesToValue","locale","multiple","optionText","optionValue","ref","submitError","subscription","textAlign","translateChoice","validateFields","dropZone","getContrastText","FileInput","accept","_props$labelMultiple","labelMultiple","_props$labelSingle","labelSingle","maxSize","minSize","_props$multiple","_props$options","_props$options2","inputPropsOptions","placeholder","transformFile","File","_props","Children","only","createObjectURL","transformedFile","Math","round","transformFiles","files","isArray","_useInput","useInput","_useInput$input","onChange","filteredFiles","stateFile","shallowEqual","childrenElement","_useDropzone","useDropzone","onDrop","newFiles","updatedFiles","_toConsumableArray","getRootProps","getInputProps","Labeled","sanitizeRestProps","_Fragment","cloneElement","FormHelperText","InputHelperText","omit","FileIcon","PdfIcon","WordIcon","CompressedIcon","sizeLabel","fileTitle","fileIconStyle","getFileIcon","fileType","FileField","target","download","useRecordContext","sourceValue","fileTitleValue","srcValue","titleValue","addLabel","UserApi","_resetPassword","userId","_createUserauthorizations","_callee2","_x2","_deleteUserauthorizations","_callee3","_x3","_sendWelcomeEmail","_callee4","_x4","_resetMfa","_callee5","_context5","_x5","_getUserMFA","_callee6","_context6","_x6","_setUserMFA","_callee7","userMFA","_context7","_x7","_checkIfEmailExists","_callee8","email","_context8","_x8","_setPassword","_callee9","_context9","userIdToUpdate","newPassword","_x9","_x10","_getSSOAuthenticationsModes","_callee10","_context10","_getUserSSO","_callee11","_context11","_x11","_setUserSSO","_callee12","authMethod","_context12","_x12","_validateImportFromExcel","_callee13","_context13","_x13","_importUsersFromExcel","_callee14","_context14","_x14","_getContactExcelTemplate","_callee15","_context15","responseType","_exportUsersExcel","_callee16","fundFamillyId","mupUserId","orphanVisibility","queryParameters","_context16","fundFamilyId","arrayFormat","_x15","_x16","_x17","_x18","_x19","_x20","_x21","_updateUser","_callee17","_context17","_x22","_x23","useNotifyServerError","fallback","CustomSimpleForm","onKeyPress","handleKeyPress","preventDefault","SimpleForm","errorIcon","toolbarStyle","firstButtonStyle","buttonStyle","barTitle","horisontalRule","ButtonMUISpan","excelIcon","warningIcon","validationColumnWarning","leftWrapper","validateButton","validateButtonText","validationColumn","noRows","noRowsBlack","circularProgress","tabsStyle","tableWrapper","table","AvatarImage","ErrorImage","ExcelIconImage","_ref3","WarningImage","_ref4","StyledFileInput","ExcelContactImportTitleBarWithDropbox","_ref5","createUrl","secondTitle","secondCreateUrl","hasCreatePermission","hasExportUsersExcelPermission","hasImportUserExcelPermission","filters","anchorEl","setAnchorEl","_useState3","_useState4","importModelViewToggle","setsViewOfImport","_useState5","_useState6","validateButtonVisibile","setValidateButtonVisibility","_useState7","_useState8","submitting","setSubmitting","_useState9","_useState10","disableImportButton","setImportButtonDisabled","_useState11","_useState12","loaderVisible","setLoaderVisible","_useState13","_useState14","showGrid","setShowGrid","_useState15","_useState16","showNoDataInExcelError","setShowNoDataInExcelError","_useState17","_useState18","isFileFieldDisabled","setIsFileFieldDisabled","_useState19","_useState20","downloadingTemplate","setDownloadingTemplate","_useState21","_useState22","excelFileData","setExcelFileData","_useState23","_useState24","setValue","_useState25","_useState26","order","setOrder","_useState27","_useState28","orderBy","setOrderBy","_useState29","_useState30","setResponse","_useState31","_useState32","responseTab2","setResponseTab2","_useState33","_useState34","responseTab3","setResponseTab3","_useState35","_useState36","responseTab4","setResponseTab4","_useState37","_useState38","responseTab5","setResponseTab5","_useState39","_useState40","responseTab6","setResponseTab6","_useState41","_useState42","tab1ContainsErrors","setTab1ContainsErrors","_useState43","_useState44","tab1ContainsWarning","setTab1ContainsWarning","_useState45","_useState46","tab2ContainsErrors","setTab2ContainsErrors","_useState47","_useState48","tab3ContainsErrors","setTab3ContainsErrors","_useState49","_useState50","tab4ContainsErrors","setTab4ContainsErrors","_useState51","_useState52","tab5ContainsErrors","setTab5ContainsErrors","_useState53","_useState54","tab6ContainsErrors","setTab6ContainsErrors","_useState55","_useState56","tab6ContainsWarning","setTab6ContainsWarning","_useState57","_useState58","propertiesDataModel","setPropertiesDataModel","notifyServerError","handleCloseImportClick","cleanUpData","handleChange","event","newValue","handleClickValidation","_ref6","responseData","arrayData","arrayDataTab2","arrayDataTab3","arrayDataTab4","arrayDataTab5","arrayDataTab6","dataModel","validationErrors","validationErrorsTab2","validationErrorsTab3","validationErrorsTab4","validationErrorsTab5","validationErrorsTab6","FormData","append","validateImportFromExcel","validatedFieldUdfModels","forEach","obj","fieldName","slice","r","validationError","handleImportContactsClick","_ref7","importUsersFromExcel","refreshView","finish","handleClickDownloadAsExcel","_ref8","getContactExcelTemplate","saveAs","finally","Toolbar","ButtonMUI","currentTarget","WrapperClass","keepMounted","Boolean","exportUsersExcel","handleExportClick","reason","DialogContent","FormDataConsumer","_ref9","formData","Loading","TabContext","TabList","Tab","selectionFollowsFocus","TabPanel","selected","Table","stickyHeader","TableHead","TableRow","headCell","TableCell","cell","sortDirection","TableSortLabel","sortColumnName","isDesc","sortedTableData","sort","a","b","toLowerCase","y","handleRequestSort","TableBody","hover","rowNum","firstName","middleName","lastName","companyName","emailOptOut","receiveDailySummary","salutation","suffix","ccEmail","syncToExternalResource","businessAddressLine1","businessAddressLine2","businessAddressLine3","city","stateOrProvince","zipOrPostalCode","country","phoneNumber","extension","verifiedByUser","handleRequestTab2Sort","userEmail","fundId","investorId","groupName","handleRequestTab3Sort","handleRequestTab4Sort","roleName","handleRequestTab5Sort","sortByErrorMessage","rowNumber","fieldValue","handleRequestTab6Sort","DialogActions","greenText","green","orangeText","orange","redText","red","StatusSelectField","optionClass","batchStatus","activeVersion","SelectField","sortable","UserIcon","userStatus","userTypeForIA","userTypeSA","suggestion","suggestionText","highlightedSuggestionText","AutocompleteSuggestionItem","matches","parts","createValue","highlightedIndex","isSelected","filterValue","getSuggestionText","isHighlighted","part","highlight","suggestionsPaper","AutocompleteSuggestionList","menuProps","inputEl","_props$classes","suggestionsContainerProps","Popper","modifiers","Paper","square","clientWidth","chipBackgroundColor","inputRoot","flexWrap","defaultInput","divider","_props$choices","choices","emptyValue","idOverride","inputOverride","isRequiredOverride","_props$margin","matchSuggestion","metaOverride","onBlur","onFocus","labelProps","InputProps","_props$optionText","_props$optionValue","setFilter","clientSideFilterOnly","shouldRenderSuggestionsOverride","shouldRenderSuggestions","suggestionLimit","_props$translateChoic","_props$variant","_props$showArrowDown","showArrowDown","_useInput$meta","setFilterValue","getSuggestionFromValue","choice","selectedItem","useMemo","_useSuggestions","useSuggestions","getChoiceText","getChoiceValue","getSuggestions","handleFilterChange","eventOrValue","storeInputRef","inputPosition","getBoundingClientRect","anchorPosition","updateAnchorEl","handleBlur","handleFocus","openMenu","handleClear","Downshift","inputValue","itemToString","val","getItemProps","getLabelProps","getMenuProps","isMenuOpen","_getInputProps","suggestions","inputRef","endAdornment","InputAdornment","ClearIcon","ArrowDropDownIcon","FieldTitle","InputLabelProps","suppressRefError","dataGridHead","statusColumnStyle","progress","Actions","displayedFilters","filterValues","showFilter","UserFilters","setAppliedFilters","isMupTenant","isMupChild","useQuery","orderDirection","TextInput","predictiveSearchParser","predictiveSearchFormatter","autoComplete","menuId","getItemId","itemIndex","SelectInput","UsersTitle","useListContext","setshowGridLoader","ListTitleBar","UserList","hasDeletePermission","hasEditPermission","hasReadPermission","userProfile","showGridLoader","permissions","appliedFilters","field","exporter","perPage","pagination","Pagination","rowsPerPageOptions","bulkActionButtons","empty","syncWithLocation","small","SimpleList","secondaryText","tertiaryText","Datagrid","thead","sortBy","headerClassName","SimpleFormWithSave","onSave","save","saving","simpleFormProps","UserPhoneFormFields","operation","xs","sm","md","lg","required","validatePhoneNumber","fieldLengthValidator","getAvailablePhoneTypes","currentUserPhone","existingPhoneTypes","list","ids","phoneTypeId","formRef","showDialog","handleDialogToggle","crudGetManyReference","fetchEnd","fetchStart","crudGetList","loaded","currentSort","setSort","operationProps","popupTitle","okButtonLabel","Create","FormSpy","Edit","mapDispatchToProps","userPhoneId","handleSaveClick","submit","handleClose","reset","split","crudOperation","CREATE","UPDATE","dataProvider","setTimeout","UserPhoneForm","SaveButton","handleSubmitWithRedirect","InvestorApi","_checkIdExists","validateStatus","_update","_getRelatedContactsAsExcel","_importInvestorsFromExcel","_downloadInvestorImportTemplate","_exportInvestorsExcel","investorName","investorTagId","_updatePrimaryContacts","primaryContacts","_create","_updateInvestor","_getInvestors","investorIds","paramsMaxSize","baseUrl","encodedReqIds","getManyByChunk","_getInvestor","_getRelatedContacts","validateInvestorIdRa","_allValues","fieldProps","validateInvestorId","validateInvestorIdRff","isCountryWithState","countryWithState","memoize","idValid","isValueOnlyUnderscoreHyphen","isStringAlphaNumericUnderscoreHyphen","isStringOnlyUnderscoreHyphen","checkIdExists","autocompleteSuggestions","ShowStates","UserAddressFormFields","ReferenceInput","reference","filterToQuery","searchText","change","countryCode","getAvailableAddressTypes","currentUserAddress","existingAddressTypes","addressTypeId","UserAddressForm","addressId","disableFocusRipple","EditButtonWithOnClick","_ref$basePath","_ref$label","_ref$record","_ref$icon","ContentCreate","memo","nextProps","editButton","editButtonColumnStyle","handleAddressEditButtonClick","dataGridProps","unSelectAll","useUnselectAll","total","cellClassName","handlePhoneEditButtonClick","labelStyle","getIsChecked","checked","CheckBoxField","_ref$isChecked","isChecked","custom","Checkbox","xl","UserMailApi","emailData","GridPopoverWithCloseButton","openModal","anchorOrigin","vertical","horizontal","transformOrigin","Popover","popoverContent","useListPopoverStyles","cardContent","inputSearchContainer","inputSearch","ListPopover","searchPlaceholder","onSelectItem","allItems","items","buttonLabel","search","setSearch","setItems","currentOpenItem","setCurrentOpenItem","openPopover","handleClickItem","capitalize","evt","PaperProps","hiddenLabel","startAdornment","SearchIcon","adornedStart","CardContent","MenuList","primaryTypographyProps","ExpandLess","ExpandMore","subItem","subIndex","inputTitleContainer","FieldTitleWithListPopover","displayingVariables","ListPopoverProps","labelError","labelContainer","RichTextInput","editorConfig","variables","mode","setMode","editorRef","editor","getData","FormControl","variable","insertHtml","insertText","CKEditor","onMode","config","onBeforeLoad","CKEDITOR","disableAutoInline","readOnly","EmailFormStyles","tableRoot","gridItemFundName","textOverflow","disableStyleInput","rootCell","tableCell","arrowGroupGridItem","selectAllItem","buttonItem","buttonClass","labelCustom","itemCollapsed","checkbox","checkboxInvisible","formCheckBox","ccCheckbox","inputLabel","checkboxDiv","tooltipPlacementBottom","maxSingleAddressLength","removeBlanks","replace","validateEmails","isValidNoneOrMultipleCommaSeparatedEmails","splittedEmails","isValidEmailRegex","validateEmail","getFullName","user","getCompositeId","compositeId","checkChoiceIsSelected","selectedItems","recipientId","choiceCompoId","findIndex","checkCcChoiceIsSelected","cc","ccEmails","PopoverToContent","variantButton","colorButton","_useMemo","rows","selectedRows","rowCount","selectedRowsCount","_useMemo$rowCount","_useMemo$selectedRows","RecipientsList","RecipientsListRow","groupedChoices","groupBy","onSelectAllClick","cloneDeep","indeterminate","rowItems","groupLabel","ExpandedInformations","expand","setExpand","handleClickCheckbox","array","splice","handleCcClickCheckbox","ccIndex","EmailForm","textButton","_ref5$groupBy","_ref5$recipientId","_ref5$attachments","attachments","_ref5$variables","variableType","_ref5$userProfile","previousNotificationMethod","notificationMethod","setPreviousNotificationMethod","formState","useFormState","useForm","subject","notificationLabel","setNotificationLabel","loadingTemplate","setLoadingTemplate","handleTemplateChange","_yield$dataProvider","fetchAliasUdfs","_yield$dataProvider2","emailAlias","emailAliasReplyTo","templateId","sameFundSelected","findLast","fundName","handleChangeType","mailTemplateTypes","onlyInfo","handleClick","trim","emptySubject","currentValue","toArray","cursorIndex","selectionStart","getSubjectVariables","mupVariables","getBodyVariables","gridItem","PreviewEmailApi","deliveryTabPreview","contactPreview","_previewforSavedDL","msgBody","testEmail","resourceUploadId","EmailPreviewDialog","substitutedSubject","setSubstitutedSubject","substitutedBody","setSubstitutedBody","setLoading","previewItem","emailToSubstitute","splitEmails","emailParts","mailDto","i","emailAddress","address","UserEmailDialog","_React$Component","showDistributionListPreviewEmailDialog","getBase64","reader","FileReader","readAsDataURL","onload","mailData","isTestEmail","defaultTo","base64Content","splitedRawFileData","base64FileContent","mimeType","fileName","disposition","contentId","fromAddress","alias","replyToAddress","aliasTo","rememberEmailAddressAlias","rememberMe","t1","t2","t3","bcc","t4","t5","all","t6","t7","create","t8","_this$props2","_this$props2$variable","initialValues","replaceAll","keepDirtyOnReinitialize","pristine","formprops","disableEnforceFocus","testButton","secondaryButton","dialogContent","contentText","confirmPrimary","confirmWarning","alpha","iconPaddingStyle","Confirm","_classnames","confirm","cancel","confirmColor","ConfirmIcon","CancelIcon","onConfirm","_ref$translateOptions","translateOptions","_ref$showCancel","showCancel","handleConfirm","stopPropagation","DialogTitle","ActionCheck","AlertError","TenantConfigurationApi","_get","headerContainer","radioGroupRoot","emailLinkDiv","welcomeEmailGridStyle","welcomeEmailDivStyle","welcomeEmailIcon","welcomeEmailIconDisabled","labelStyleDisabled","gridComponentStyle","composeEmailStyle","rootFormIterator","checkIfEmailIsValidAndExists","emailExists","isValidEmailLocalPartAndDomainName","checkIfEmailExists","encodeURIComponent","totalCount","pageData","toUpperCase","UserDetails","creation","handleResend","hasComposeEmailPermission","openEmailModal","setOpenEmailModal","disableComposeEmailAndWelcomeEmail","setdisableComposeEmailAndWelcomeEmail","openOptOutModal","setOpenOptOutModal","welcomeEmailValue","setWelcomeEmailValue","fetchWelcomeEmailValue","userTypeChoices","formProps","RadioButtonGroupInput","isStringContainingLessThanOrGreaterThanOrEqualsSign","isMupChildCheck","checkWelcomeEmailIsOptedOut","MailIcon","_values","rel","Email","emailIcon","ArrayInput","SimpleFormIterator","disableReordering","enter","exit","addButton","AddIcon","ccInput","ccEmailAddresses","appBarStyle","activeButton","inActiveButton","suspendedButton","pendingButton","createTypography","editTypography","nameTypography","nameContainer","avatarItem","nameDiv","containerDiv","containerGrid","loginUserDiv","downloadAsExcelButton","labelButton","formatStatus","charAt","StatusText","statusLabel","FormTitleBar","recordLabel","loginUserId","showAvatar","avatarContent","showButton","onButtonClick","nameClass","adjustMatchingPath","when","setNextLocation","setOpenModal","unblock","block","newLocation","p1","p2","hasPermission","onCancel","document","hash","crudDelete","invalid","selectedIds","submitOnEnter","redirect","DeleteButton","handleDialogClose","handleDelete","onBeforeDelete","_this$props2$classes","_this$props2$label","singularize","_this$props2$deleteCo","deleteContent","deleteButton","ActionDelete","LeftButtons","goBack","dataTestid","formReset","keys","leftButtons","saveButton","hasEdit","hasShow","hasCreate","_props$deletable","deletable","DeleteButtonWithConfirm","convertDateToString","utcMode","getDate","yyyy","getUTCFullYear","getFullYear","MM","getUTCMonth","getMonth","dd","getUTCDate","dateRegex","LocalizedUtils","_DateFnsUtils","toDate","DateFnsUtils","DateInput","customParseValue","customOnChange","_ref$margin","_ref$format","test","getStringFromDate","_ref$variant","_ref$formatCustom","formatCustom","_ref$showFieldLabel","showFieldLabel","MuiPickersUtilsProvider","utils","KeyboardDatePicker","disableToolbar","parsedValue","isEmpty","KeyboardButtonProps","autoOk","DialogProps","rightArrowButtonProps","leftArrowButtonProps","getDefaultMFA","mfaMethods","mfaMethodDescription","isMFAGloballyDisabled","defaultMethod","checkIfValidPassword","isValidPassword","divStyle","resetMfaLinkStyle","statusLabelDisabled","labelDisabled","enrollmentStatus","confirmDialogIsOpen","setConfirmDialogIsOpen","confirmDialogType","setConfirmDialogType","setMfaMethods","mfaMethod","setMfaMethod","mfaDueDate","setMfaDueDate","mfaStatus","setMfaStatus","loadingState","setLoadingState","showCreateTemporaryPasswordDialogToggle","setShowCreateTemporaryPasswordDialogToggle","passwordValue","setPasswordValue","samePasswords","setSamePasswords","ssoMethods","setSsoMethods","ssoMethod","setSsoMethod","_props$userProfile","_useMemo2","hasWriteMfaPermission","hasResetPwdPermission","hasEditSSOPermission","hasReadSSOPermission","defaultMFA","mfaEnabledAndEditable","ssoEnabled","ssoEditable","handleConfirmDialogClose","handleResetClick","resetPassword","messages","ra","password_reset","handleResetMfa","handleConfirmResetMfa","resetMfa","isValidDate","isValid","handleCreateTemporaryPasswordDialogToggle","prevState","handleCreateTemporaryPasswordClose","handleCreateTemporaryPasswordClick","setPassword","set_password_updated","updatePasswordValue","persist","checkIfSamePassword","confirmPassword","isSoftTokenMethod","mfaMethodName","mfaEditable","formattedDueDate","userMfa","userSSO","startOf","mfaEnrollmentDueDate","setUserMFA","authenticationMode","setUserSSO","isCancelled","allMFAMethods","getUserMFA","userMfaData","userMfaEnrollmentStatusDto","getSSOAuthenticationsModes","allSSOModes","authenticationModes","getUserSSO","userSSOMode","Lock","ReactAdminButton","PasswordInput","EditToolbar","FormLabel","LeaveConfirmWrapper","EntitlementApi","getAuthorizationsByUserId","createAuthorizations","getAuthorizationsByInvestorId","_getAuthorizationsByRole","useFetch","fetchFunc","setData","func","_data","DraggableHeader","resizeColumns","columnSource","deltaPositionX","setDeltaPositionX","handleDrag","deltaX","handleStop","dragStyle","Draggable","axis","onDrag","onStop","VirtualizedGrid","_React$PureComponent","calculateWidths","recomputeGridSize","widths","fixedSizedColumns","columns","definedSizeColumnsWidth","el","acc","curr","relativeSizeColumnsLength","widthPercentage","gridRef","columnWidthGetter","column","totalWidth","resizeCol","_this$state2","percentDelta","newColumnWidth","sortFunction","orderASC","columnType","columnLookupOptions","columnLookupIdField","columnLookupTextField","isSame","isBefore","isAfter","aRowLookupObject","bRowLookupObject","aRowText","bRowText","localeCompare","sensitivity","getSortedData","orderedData","columnRow","orderColumn","lookupTextField","lookupIdField","unshift","orderClick","setDocuments","_this$state3","newOrderBy","newOrderASC","sortedDocs","cellRenderer","row_data","columnIndex","rowVal","rowIndex","_this$props$resizible","resizibleColumns","cellVal","rowStyle","headerStyle","additionalColumn","headercheckboxStyle","_this$props2$disableS","disableSelectAll","filteredRows","filteredSelectedRows","numSelectedRows","filteredRowsCount","filteredSelectedRowsCount","renderer","_this$props3","fixedColumns","rowHeight","itemSearch","emptyMessage","_this$props3$calculat","calculateColumnWidth","_this$state4","getRowHeight","noContentRenderer","AutoSizer","MultiGrid","grid","fixedColumnCount","fixedRowCount","columnWidth","colIndex","colWidth","getColumnWidth","columnCount","enableFixedColumnScroll","enableFixedRowScroll","hideTopRightGridScrollbar","hideBottomLeftGridScrollbar","styleTopLeftGrid","styleBottomLeftGrid","outline","styleBottomRightGrid","PureComponent","StatusColorDisplay","containerClass","gridLarge","searchLabel","checkboxCell","statusRenderer","statusChoice","GridInput","hasText","optionTextLabel","optionValueLabel","_props$additionalColu","additionalColumns","sortFunc","singleSelect","disableCheckBoxes","additionalFilterProps","showAdditionalFilter","finalFormOnChange","finalFormOnBlur","setItemSearch","additionalItemSearch","setAdditionalItemSearch","isShiftDown","setIsShiftDown","lastSelectedItem","setLastSelectedItem","itemSelection","handleItemSearch","debounce","getAdditionalFilterChoices","isNil","attributeToFilter","uniqBy","handleKeyUp","handleKeyDown","addEventListener","removeEventListener","sortedChoices","filteredChoices","additionalColumnValues","addValue","some","filteredSelectedChoices","getShiftSelectedItems","currentSelectedIndex","lastSelectedIndex","min","max","renderItemLabel","choiceName","handleItemSelected","hasBeenSelected","shiftSelectedItems","Set","indexOf","handleAllItemsSelected","alreadySelectedChoices","selectedValue","getItemValue","getItemStatus","getItemText","additionalColumnsContains1Column","sizeFor2ColumnsOptionLabel","sizeFor2ColumnsOptionValue","cellStyle","isStatusColumn","dataRows","textColumn","valueColumn","statusColumn","cur","gridData","isAdditionalFilter","InputLabel","Autocomplete","getOptionLabel","option","onInputChange","_event","newInputValue","disableValue","GridInputChoices","usedIds","extendedChoices","setExtendedChoices","currentChoices","setCurrentChoices","useDataProvider","extendWithFamilies","fundFamilyIds","familiesDict","choicesWithFamily","fundFamilyName","newChoices","ch","filterChoices","nc","validateInvestors","validateFunds","referenceArrayInputProps","isRegular","queryfilter","getFundFamiliesIds","fundSelected","arrayToFill","reduxFunds","setOpenDialog","userTypeRoleCheck","handleAddAuthorization","formValues","setFormValues","allFunds","isDisabledAddButton","isValidSelectionForInvestors","getList","selectedFunds","fundFamiliesIds","dataWithFundFamilies","fund","fundFamily","dataWithFunds","newFormProps","ReferenceArrayInput","colTitle","centerAndBorder","topLeft","rowTitle","rowTitleParent","indent_1","indent_2","rowTitleLabel","TooltipWrapper","TableCellWithCheckbox","handleCheckboxChange","extraProps","RowTitle","onRowChange","indentation","tooltipLabel","displayId","clName","rowTitleLabels","ColumnTitle","center","USERTYPE","spaceRegex","tableGrid","tableGridForWizard","leftGrid","topGrid","back_0","back_1","centerContent","saveButtonContainer","backButton","isDisabled","groupId","connectedUserIds","authorization","superAdmin","every","node","idInvestorLevel","createChild","leafs","parent","leaf","authId","fieldSort","getTreeRoot","getRows","expandedNodeIds","updateNodeAndChildren","updateParents","selCount","updateIds","UserAuthorizationDatagrid","groupByLabel","originalAuthorizations","authorizations","groupsFilter","onChangeAuthorizations","hasWriteAuthorizationPermission","authorizationsConnectedUser","wizardMode","refreshList","createdContactId","authorizationsGridToDeleteRef","permissionGroupsUploaded","_props$setCurrentAuth","setCurrentAuthorizations","_props$currentAuthori","currentAuthorizations","_props$columnLabel","columnLabel","_props$setPermissions","setPermissionsStaging","_props$permissionsSta","permissionsStaging","setRows","openConfirm","setOpenConfirm","chkEvts","setChckEvts","selectedCkIds","setSelectedCkIds","authorizationsToUpdate","refresh","useRefresh","globalDisabled","treeAndLeaf","groupsDict","orphans","createAuthTree","authTree","leafsById","groupsToShow","selGroups","_id$split","createSelectedGroups","updateCks","forcedCkIds","selCkIds","ckIds","rowId","_rowId$split","_rowId$split2","evts","browseChildren","indexAuthorizationsGridRef","indexPermissionsStaging","permission","filterState","indexAuthorizationsGridToDeleteRef","_chkEvts$","newAuthorizationsToUpdate","newAuthorizationsFromAllOption","originalAuthorizationsForThisGroup","remove","intersectionBy","differenceBy","authAlreadyToUpdate","handleClickSave","authorizationsToCreate","authorizationsToDelete","_payload","deleteUserauthorizations","createUserauthorizations","onSectionRendered","isVisible","_isScrolling","_parent","clList","first","rowData","rowDataFinal","groupData","checkId","tabIndex","classNameBottomLeftGrid","classNameTopLeftGrid","classNameTopRightGrid","Progress","UserAuthorizationUpdate","_props$authorizations","newAuthorizations","onChangeNewAuthorizations","newAuthorizationsNotSavedExists","newAuth","UserAuthorizationRegularContact","UserAuthorizationFundAdmin","selectedAssignmentMode","uniqAuthorizations","uniq","_useQueryWithStore","useQueryWithStore","chunk","fundInvestors","fundMap","Map","invMap","dataWithInvestors","Query","fundFamilies","SET_FILTER","emptyObject","defaultSort","defaultParams","validQueryParams","parseObject","query","parseQueryFromLocation","pickBy","v","k","getQuery","queryFromLocation","filterDefaultValues","page","hasCustomParams","getNumberOrDefault","possibleNumber","parsedNumber","parseInt","useListParams","_ref$sort","_ref$perPage","_ref$debounce","_ref$syncWithLocation","useLocation","localParams","setLocalParams","reduxState","tempParams","requestSignature","changeListParams","changeParams","queryReducer","setPage","newPage","setPerPage","newPerPage","displayedFilterValues","debouncedSetFilters","lodashDebounce","removeEmpty","setFilters","hideFilter","filterName","useListController","useCheckMinimumRequiredProps","_props$exporter","defaultExporter","_props$sort","_props$perPage","_props$debounce","useResourceContext","_useListParams","_useListParams2","queryModifiers","_useRecordSelection","useRecordSelection","_useRecordSelection2","selectionModifiers","_useGetMainList","useGetMainList","CRUD_GET_LIST","onFailure","refetch","totalPages","ceil","defaultTitle","useGetResourceLabel","getResourceLabel","onSelect","onToggleItem","toggle","onUnselectItems","clearSelection","ForceListRender","_ref$forceShowList","forceShowList","controllerProps","ListContextProvider","ListView","tableHeadCells","dataKey","contactContainer","contactContainerForCreation","flexContainer","noMatchContainer","searchContainer","searchBar","searchBarFullWidth","investorsFilterContainer","selectField","noBorderBottom","hoverRow","ContactStep","isRegularCreation","userToCopyCreation","userToCopy","updateUserCreation","updateUser","userIdCreation","setSelectedContactForImport","setIsNewImportToDo","contacts","setContacts","investorSelected","setInvestorSelected","setInvestors","filteredContacts","setFilteredContacts","filteredContactsForFiltering","setFilteredContactsForFiltering","_useContext","useContext","ImportPermissionsContext","selectedRow","setSelectedRow","setLoaded","fetchUsers","isUserRegular","IdOfUser","contact","previousStateInvestors","rowClick","newSelected","searchArray","newArray","cellData","cellValue","isItemSelected","handleOnChangeInvestorsFilter","displayEmpty","rowGetter","headerHeight","gridStyle","rowClassName","estimatedRowSize","overscanRowCount","onRowClick","other","Column","headerRenderer","headerProps","FundFamilyApi","_getAll","FundInvestorApi","_getRelatedFundsAsExcel","fundInvestorTagId","shouldReturnTags","_getByInvestorId","fundInvestor","_delete2","_getByFundIds","fundIds","createUserAuthorizations","userAuthorizations","searchInput","tempFilteredContacts","useFetchAuthorizationsForDatagrid","contactId","isCreatedContactRcOrIa","arePermissionGroupsUploaded","isNewImportToDo","setAuthorizations","authorizationsIds","setAuthorizationsIds","fetchedAuthorizations","fetchedAuthorization","uniqFundIds","getByFundIds","investorMap","getAll","fundItem","ff","authItem","fundFind","topToolbar","radioLabel","radioLabelRoot","paragraph","contactInformation","bold","steps","nextButton","setGroupsFilter","idsUserChosen","setIdsUserChosen","setAuthorizationsConnectedUser","loggedInUser","onChangeAuthorizationsForImport","setAuthorizationsUserChosen","_useFetch","_useFetch$data","formCtrlLabel1Cls","formCtrlLabel2Cls","authorizationsUserChosen","RadioGroup","FormControlLabel","control","Radio","_newAuthorizationsToUpdateBoolean","newAuthorizationsToUpdateArray","final","pullAll","createContext","ImportPermissionsProvider","activeStep","setActiveStep","authorizationsToImport","setAuthorizationsToImport","setUserToCopy","finalFunds","finalGroups","filteredGroups","adminGroup","getActiveStep","step","currentStep","increaseStep","decreaseStep","authorizationsUser","oldAuthorizations","newAuthorizationsToImport","Provider","stepper","stepperContainer","stepContainer","progressIndicator","ImportPermissionsGroupsDialog","setOpenImportPermissionGroups","loadingForImport","setLoadingForImport","handleImportAuthorizations","authorizationsUserChosenCopy","finalArrayToImport","newItem","pullAllBy","Stepper","Step","StepLabel","useUserAuthorizationTopToolbarStyles","headline","importPermissionButton","UserAuthorizationTopToolbar","onGroupsFilterChange","openDialog","openImportPermissionGroups","openWarningConfirmForImport","setOpenWarningConfirmForImport","topToolBarClasses","idsFromTheUserToUpdate","ImportPermissionGroupsDialog","AddAuthorizationDialog","UserAuthorizationUpdateComponentWithAuhtorizations","useProgressStyles","UserAuthorizationUpdateComponentProfile","_props$groups","groupIds","UserAuthorizationUpdateComponent","updateUsedIds","useUserAuthorizationStyles","gridTab","mainList","noMarginStyle","whenBlockNavigation","mainClasses","listFilter","setNewAuthorizations","authorizationsDirty","setAuthorizationsDirty","newAuthorizationsDirty","setNewAuthorizationsDirty","newValues","newAuths","actionsToolbarProps","UserRolesApi","userRoles","GridInputFilter","CreationContactContext","validateRoles","_field","onSubmitEnd","setAccessRoles","accessRoles","setSelectedAccessRoles","rolesToDelete","role","roleId","delete","res","differenceWith","contactContext","currentForm","setContactContext","_total","UserRolesAction","hasWriteUserRolePermission","handleAddUserRolesButtonClick","FeatureAccessControlTab","hasReadRolePermission","confirmTitle","confirmContent","ReferenceField","AddRolesDialog","UserNotificationApi","deliveryMethod","deliveryMethodToDisplay","selectRequired","UserNotificationFormFields","fundsChoices","documentTypes","allInvestors","userAddressesTypesAvailable","initialValue","UserNotificationLookups","parameterChoices","optioenxt","UserNotificationForm","notificationFormRef","setNotificationFormValues","notificationFormValues","buildId","documentTypeId","parameter","errorAlreadyExists","UserNotificationCreate","_props$notifications","notifications","notificationForm","isCreating","setIsCreating","notificationArray","update","alreadyExists","UserNotificationContext","useSelectFieldStyles","selectContainer","disableWhen","listIsLoading","dataLoading","notificationContext","choicesOverride","LinearProgress","unicity","allValues","_i","_Object$values","startsWith","validateUnicity","UserNotificationDatagrid","userAddressTypesAvailable","userAddressTypes","fundChoices","investorChoices","fundsLoading","investorsLoading","fundInvestorsLoading","handleDisableParameter","notIds","currentRecord","uatFound","uat","useUserNotificationsDataProvider","fundsData","setFundsData","investorsData","setInvestorsData","fundInvestorsData","setFundInvestorsData","_fundIds","_investorIds","notif","fundIdsIn","investorIdsIn","_useQueryWithStore$da","_useMemo3","_fundsWithAllInvestorsAuthorization","fundsWithAllInvestorsAuthorization","isLoadingFundsInvestors","_data$data","_fundsInvestors","errorFundsInvestors","listContainer","useCustomFormStyles","customForm","CustomForm","_props$data","hasWriteUserNotificationPermission","customRef","hasBulkActions","currentsort","filtervalues","setContext","currentData","pick","useBulkActionsToolbarButtonStyles","BulkActionsToolbarButtons","unselectAll","openConfirmDelete","setOpenConfirmDelete","isDeleting","setIsDeleting","dataToKeep","inflect","useActionsToolbarStyles","ActionsToolbar","dialogProps","_props$data2","openNotificationCreateDialog","setOpenNotificationCreateDialog","handleNotificationCreateDialogToggle","useEmptyStyles","CustomProvider","customProps","providerNotificationContext","UserNotificationTab","allAddresses","setNotificationContext","userAddressTypesAll","addressesTypesIds","types","docTypeChoices","_useUserNotifications","_funds","_investors","_fundInvestorsMap","_investor","fundInvestorsMap","handleSave","newData","dataToUpdate","listProps","createDialogProps","RecordContextProvider","UserActivityApi","_add","note","timeRegex","setHours","getTimeFromDate","TimeInput","_props$format","_props$parse","_props$autoOk","_props$disableToolbar","_props$ampm","ampm","KeyboardTimePicker","UserActivityFormFields","createdOrUpdatedBy","editRecord","setActivityForm","activityForm","setActivityFormValues","activityFormValues","dateTime","hours","minutes","outlined","UserActivityDetailDialog","detailsTitle","activityType","closeDialog","timeParts","set","utc","add","UserActivityForm","DateField","showTime","RichTextField","WrapperField","activityTypes","dateFilterStyle","dateInputStyle","dateRangeSeparator","paddingCheckbox","headerCell","tbody","listPage","formatUploadDateFilter","endOf","TabSectionLabel","SubjectColumn","DetailsColumn","handleOpen","hasDetails","documentActivity","batchId","reportId","UserActivityDatagrid","DateRangeFilter","ActivityFilters","_useListContext2","SelectProps","generalSearchField","loginIpAddress","loginBrowser","loginSystem","loginSubject","documentReportId","documentBatchId","documentTitle","documentFundId","documentInvestorId","documentAccessType","setActivityFilters","UserActivityAction","handleActivityAddButtonClick","UserActivityTab","hasAddActivityPermission","setIsOpen","activityDetails","setActivityDetails","hiddenStyle","ViewTab","_ref$classes","contentClassName","hidden","intent","path","tabLoaded","setTabLoaded","FormTabHeader","FormGroupContextProvider","displayName","checkboxGroup","formatCheckboxValue","formatDate","UdfField","udfField","userUdfValue","fieldType","possibleValues","nonModifiedCase","formatSelectInputValue","NullableBooleanInput","UdfSection","udfFields","UdfTab","forwardRef","onChangeUDFs","hideCommands","setHasUdfs","_useMutation","useMutation","mutate","queryFilter","useImperativeHandle","saveUdfs","onSuccess","getState","udf","udfId","saveId","updatedUdfs","updatedUdf","udfNewValue","lastModified","initialize","_useQuery","ufdFieldsWithPossibleValues","initialValuesEqual","dirty","valid","UserPhoneAddressActionsStyles","UserAddressActions","handleAddressCreateDialogToggle","useraddresstypeIds","UserPhoneActions","handlePhoneCreateDialogToggle","userphonetypeIds","UserTitle","loginUserVisibleFlag","loginUserIdVisible","noActions","_props$permissions","showPhoneCreateDialog","setShowPhoneCreateDialog","showPhoneEditDialog","setShowPhoneEditDialog","showAddressCreateDialog","setShowAddressCreateDialog","showAddressEditDialog","setShowAddressEditDialog","phoneRecord","setPhoneRecord","phoneBasePath","setPhoneBasePath","addressRecord","setAddressRecord","addressBasePath","setAddressBasePath","setWhenBlockNavigation","setLoginUserIdVisible","checkShowUserLoginIDConfiguration","handleResendWelcomeEmail","sendWelcomeEmail","displayToolbar","isExact","hasReadUserAuthorizationPermission","hasReadUserRolePermission","hasReadActivityPermission","NavigationPrompt","removePathEnd","LeaveConfirm","TabbedForm","FormTab","UserPhoneDatagrid","UserPhoneCreateUpdate","UserAddressDatagrid","UserAddressCreateUpdate","UserSecurity","UserAuthorizationTab","header","descriptionContainer_contactDetails","descriptionContainer_accessRoles","descriptionContainer_default","description","radioContainer","closeIcon","addIcon","paddingBlock","paddingInline","paddingBlockButton","overflowX","saveAndCloseContainer","gap","formGroup","marginBlock","AccessRolesStep","contactCreated","selectedPermissionGroups","setSelectedPermissionGroups","editFormValues","setEditFormValues","permissionGroupSelect","documentElement","scrollHeight","SelectPermissionGroupsStep","confirmWarningIsOpen","handleConfirmWarningClose","setSelectedAssignmentMode","clearStates","AddAuthorization","GroupApi","_getActiveNonAdminGroups","CopyContactsContext","GridPopover","GridInputTable","ContactsList","userTree","selectedUsers","setSelectedRows","contactsContext","setContactsContext","handleClickAll","usersSelected","handleRowSelect","itemRow","useGetAuthorizations","setError","getManyReference","_useContext2","fundsRelation","_useGetAuthorizations","userConnectedAuthorizations","userConnectedAuthorizationsLoading","userConnectedAuthorizationIds","userAuthorizationsArray","investorChoosen","selectedGroups","finalUser","_useQuery$data","_useQuery2","userauthorization","AssignPermissionGroupsStep","connectedUserProfile","selectedContactForImport","createdUserType","setGroups","connectedUserAuthorizations","currentAuthorizationsIds","setCurrentAuthorizationsIds","_useFetchAuthorizatio","importedAuthorizations","importedAuthorizationsIds","_useFetchAuthorizatio2","createdContactAuthorizations","createdContactAuthorizationsIds","getActiveNonAdminGroups","groupsFetched","auths","fieldState","UserDetailsStep","setContactCreated","setActiveListOfSteps","hasReadUserRolesPermission","hasWriteUserRolesPermission","hasWriteUserAuthorizationPermission","hasReadUserAuthorizationNaPermission","activeListOfSteps","shouldQuitRef","setIsSpinnerOnNextButton","setIsSpinnerOnSaveButton","userSet","setLeavingPromptListOfSteps","leavingPromptListOfSteps","isDisable","setIsDisable","formStateRef","initialFormValues","salutationName","company","createForm","_Object$entries","entries","_Object$entries$_i","syncToExternalSource","updatedListOfStep","STEP","contactDetails","composeValidators","validators","validator","previousActiveField","handleAddCcField","mutators","triggerValidation","fieldsToValidate","changeValue","n","noValidate","_form$getFieldState","_form$getFieldState2","getFieldState","userTypeSelected","selectPermissionGroups","assignPermissionGroups","currentList","stepNo","isSubmitting","detailsFormState","Select","_allValue","ccEmailKey","handleDeleteCcField","startIcon","Add","EmailNotificationsStep","handleSendWelcomeEmailClick","WizardStepper","hasRadioButtons","displayRadiosButtons","handleBackForm","handleNextForm","resourceCreated","displayResourceCreatedInfo","shouldDisplayResourceCreatedInfo","getDescriptionContainerStyle","isBackDisabled","isNextAvailable","isSpinnerOnNextButton","isSpinnerOnSaveButton","isSaveAndCloseStep","providerFormContext","customContext","generateMessageOnLeave","isFirstStepPristine","shouldHideBackButton","isLastStep","getSubmitButtonInfo","displayBackButton","handleCloseClick","buttonkey","primaryButton","GenerateMessageOnLeave","listOfSteps","resourceName","stepsForgotten","isResourceCreated","stepForgotten","lastElement","pop","templateMessage","leavingPromptLabel","emailNotifications","UserCreate","_useProfile","setIsNextAvailable","setIsBackDisabled","setIsSaveAndCloseStep","setConfirmWarningIsOpen","isDefaultListOfStepsSet","setIsDefaultListOfStepsSet","useRedirect","assignedPermissionGroups","setAssignedPermissionGroups","selectedAccessRoles","setPermissionGroupsUploaded","submitButtonClicked","setSubmitButtonClicked","setIsFirstStepPristine","hasEditUserPermission","isItSaveAndCloseStep","_contactContext$detai","isDetailsFormValid","isDetailsFormSubmitting","isDetailsFormPristine","setDefaultListOfSteps","stepsByDefault","stepsForLeavingPrompt","_setDefaultListOfStep","_setDefaultListOfStep2","stepsByDefaults","buttonClicked","areObjectsEqual","hasObject","getNewPermissionsToUpload","permissionToUpload","permissionAlreadyUploaded","newPermissionToUpload","getAttribute","obj1","obj2","arr","permissionsAlreadyUploaded","permissionsToUpload","getElementById","dispatchEvent","Event","cancelable","currentListOfStep","handleImportRadioButtonClick","handleCheckBoxChange","onMouseDown","onKeyDown","currentContext","createContactForm","edit","UserEdit","FundApi","_importFundsFromExcel","_downloadFundImportTemplate","_exportFundsExcel","fundTagId","_edit","ExcelFundImportTitleBarWithDropbox","hasExportFundExcelPermission","hasImportFundExcelPermission","excelPayload","setExcelPayload","hasValidationErrors","setHasValidationErrors","getExcelPayload","validationErrorsExist","exportFundsExcel","downloadFundImportTemplate","columnDirectionSort","fundType","aka","startDate","closingDate","inceptionDate","contactEmail","currency","alternativeCurrency","importFundsFromExcel","fundStatus","InvestorStatusSelectField","investorStatus","fundInvestorStatus","AKAField","_useGetOne","useGetOne","expandLabel","handleInvestorClick","handleInvestorFundEditButtonClick","hasReadInvestorPermission","FunctionField","tag","tagsContainer","TagsField","_ref$hasRecord","hasRecord","tagType","_ref$tags","tagArray","buttonInputLike","borderBottomColor","buttonInputLikeForList","popover","customButton","box","buttonPrimary","singleTagInput","SelectTagArray","selectedTags","_props$selectLabel","selectLabel","setInputLabel","AutocompleteArrayInput","TagFilter","tagClasses","useStylesTag","tagsList","onChangeFundInv","fundInvTagsList","fundInvSelectedTags","displayTagFilter","displayFundInvTagFilter","_props$isListFilter","isListFilter","_props$selectLabel2","_props$topLabel","topLabel","listContext","endIcon","FilterList","selectedTagsCount","tagItem","renderTag","getPlaceholder","Box","expandOnlyDataGridHead","expandDataGridHead","expandIconCell","useshowStyles","FundFilters","fundTags","setSelectedTags","fundtagsCount","_filterValues$fundTag","tagId","isTagInDB","tagChoice","FundShow","ReferenceManyField","InvestorFundDatagrid","FundsTitle","FundIcon","EmailField","emailAddresses","FundList","_useGetList","useGetList","fundTagLoading","fundInvestorId","ListPagination","FundTagsAssociationsApi","FundInvestorSummary","ReferenceArrayInputProps","choicesToExclude","filterOptionValue","setFundInvestorFormProps","FundInvestorCreateUpdate","fundInvestorFormProps","FundInvestorForm","containerCustom","suggestionsCustom","disabledInput","pointerEvents","gridContainerCustom","SelectTagInput","tagIds","tagLoading","hasEditTagPermission","getAdditionalOptions","formattedValue","TagInput","_useGetList$data","totalTags","_step","currentObj","_iterator","_createForOfIteratorHelper","s","done","hasOwnProperty","f","getPropertyByPath","InvestorDetails","documentHardCopyRecipient","setDocumentHardCopyRecipient","sendHardCopy","setSendHardCopy","addressCountry","setAddressCountry","changeEnableDocumentTypeSelect","getInvestor","investorNotificationModel","showTooltip","disableTooltip","isOrphan","addressStateProvince","hasEditInvestorTagPermission","InvestorCreateDialog","setInvestorFormProps","investorFormProps","createProps","validateFund","endDate","validateFundIdRa","validateFundId","validateFundIdRff","emailParser","element","emailFormatter","FundSummary","disableFundFamily","hasEditFundTagPermission","InvestorFilters","InvestorFundAction","hasCreateInvestorPermission","hasWriteFundInvestorPermission","handleInvestorCreateButtonClick","handleFundInvestorCreateButtonClick","FundTitle","getInitials","FundRelatedInvestorsLabel","fundInvestorRecord","setFundInvestorRecord","fundInvestorBasePath","setFundInvestorBasePath","hasErrorOnSubmit","setHasErrorOnSubmit","hasModificationSubmittedRef","showInvestorCreateDialog","setShowInvestorCreateDialog","showFundInvestorEditDialog","setShowFundInvestorEditDialog","showFundInvestorCreateDialog","setShowFundInvestorCreateDialog","useEditController","hasDeleteFundInvestorPermission","handleInvestorCreateDialogToggle","recordStringify","valuesStringify","tagAssociationsToAdd","tagAssociationsToRemove","fiRecord","fiBasePath","CreationFundContext","useStyle","placeItems","FundDetailsStep","fundCreatedRef","setListOfSteps","fundContext","setFundContext","_id","_response","dataFundClasses","fundClassesLoading","fundClassesError","fundClasses","fundClass","classCode","_useGetList2","dataCurrencies","currenciesLoading","currenciesError","code","_useGetList3","dataFundFamilies","fundFamiliesLoading","fundFamiliesError","fundFamilyCount","AddRelatedInvestors","hasDeleteFundInvestorRelationship","filterFundInvestorsStates","fi","elem","fundInvestorToDelete","fundInvestorToAdd","formStateProps","Alert","severity","usePagination","itemsPerPage","currentPage","setCurrentPage","maxPage","previousState","jump","pageNumber","begin","end","useDialogStyles","ManageAuthorizations","isManageModalOpen","setIsManageModalOpen","hasAssignUserAuthorization","contactAuthorizationsIds","setContactAuthorizationsIds","_ref$setPermissionGro","permissionToDelete","_ref$setPermissionToD","setPermissionToDelete","classesDialog","isConfirmModalOpen","setIsConfirmModalOpen","omitCheckedProperty","contactAuthorizations","ContactsTable","displayTooltip","handleManageClick","_DATA","count","tableCellWrapper","classeName","manageButton","arrow","InfoOutlined","pageSelected","selectedContact","setSelectedContact","AddRelatedContacts","setIsLoading","fetchContactsAndGroups","fetchContacts","fetchGroups","getRelatedContacts","GroupsApi","fetchedContacts","fetchedGroups","contactsRemoved","FundEdit","_fundContext$fund","setShouldHideBackButton","hasEditFundPermission","hasAddFundInvestorRelationShip","_fundContext$detailsF","_fundContext$detailsF2","handleFundClick","datagridProps","freezeEnabled","setFreezeEnabled","formatNumberWithSeparatorsAndPrecision","precision","toLocaleString","numberPart","decimalPart","hasReadFundPermission","_response$pageData$","month","day","year","timeZone","WireInstructionApi","createMultipleWireInstructions","wireInstructions","_importFromExcel","_createWireInstructions2","createWireInstructions","_getWireInstructionsExcelTemplate","_getWireInstructionsAsExcel","entityId","rowIndexCol","getColClass","WireInstructionsImportFromExcelInterrnal","hasImportWireInstructionExcelPermission","hasExportWireInstructionExcelPermission","dataAvailable","columnDefs","setColumnDefs","colToColName","colDefs","idx","colDefsToMap","getOrderedColumns","cols","foundCols","notFoundCols","resCols","getColName","handleImportClick","colName","columnSort","columnDefinitions","elt","importWireInstructions","importFromExcel","handleImportWireInstructionsClick","getWireInstructionsAsExcel","getWireInstructionsExcelTemplate","excelMenu","menuTitle","displayArrayInCell","WireInstructionsImportFromExcel","ExcelInvestorImportTitleBarWithDropbox","hasExportInvestorsExcelPermission","hasImportInvestorExcelPermission","hasCreateWireInstructionPermission","tab4ContainsWarning","setTab4ContainsWarning","validationWarningTab1","validationWarningTab4","validationWarning","exportInvestorsExcel","downloadInvestorImportTemplate","taxId","addressLine1","addressLine2","addressLine3","stateProvince","zipPostalCode","faxNumber","matchingFieldTaxId","matchingFieldAkaInvestorName","matchingFieldAkaInvestorId","matchingFieldCrossReference","matchingFieldAlternateTaxId","investorFreezeStartDate","investorFreezeEndDate","importInvestorsFromExcel","investorTagsCount","_filterValues$investo","InvestorShow","returnFundInvestorTags","FundInvestorDatagrid","InvestorsTitle","InvestorIcon","InvestorList","investorTagLoading","CreationInvestorContext","InvestorDetailsStep","investorContext","setInvestorContext","investor","updateInvestor","investorDetails","relatedFundsUploaded","setRelatedFundsUploaded","getByInvestorId","relatedFunds","addRelatedFunds","typeChoices","matchingFields","maxFieldLength","MatchingFieldsStep","externalId1","externalId2","externalId3","externalId4","externalId5","matchingFieldFormState","originalPermissions","currentUserAuthorization","currentUserAuthorizationToDelete","currentUserPermissionUploaded","AddRelatedContactsStep","rcData","rcError","rcLoading","iaData","iaError","iaLoading","groupsLoading","setGroupsLoading","groupsError","setGroupsError","allContactsSorted","handleSearchChange","addRelatedContacts","InvestorCreate","setOriginalPermissions","hasEditInvestorPermission","hasAssignUserAccessRights","_investorContext$deta","relatedFundsFormState","_investorContext$rela","isRelatedFundsFormValid","isRelatedFundFormSubmitting","AddRelatedFundsStep","permissionSetter","perm","_investorContext$inve","permissionsToCreate","ManageContactContext","ManageStep","setFundInvestors","userNotificationsArray","_props$ids","providerContactsContext","shouldDisplay","ContactsStep","hasNext","hasBack","connector","StepConnector","FundCreateDialog","setFundFormProps","fundFormProps","DisplayForm","maxLength","WireInstructionSummary","confirmDialog","setConfirmDialog","setDirty","wireInstructionFormProps","hasDeleteWireInstructionPermission","setWireInstructionFormProps","fundsRelated","copyWiresInstructionsToAllFunds","multipleWiToCreate","deleteWireinstructionsArray","idsToDelete","WireInstruction","hasReadUserPermission","preferredMethodLookups","DisplayFundRecord","setDataAvailable","hasEditWireInstructionPermission","dataAvailableMemo","InvestorDatagrid","InvestorsStep","matchingFieldMaxLength","MatchingFields","defaultIcon","DeleteButtonWithRedirect","_props$confirmTitle","_props$confirmContent","_props$icon","redirectPath","redirectTo","_useDeleteMany","useDeleteMany","CRUD_DELETE_MANY","_useDeleteMany2","deleteMany","InvestorListBulkActions","handleRelationshipOpen","hasReadFundInvestorPermission","showLoader","setShowLoader","handleRelationshipClick","allSelected","FundInvestorTagsAssociationsApi","fundInvestorRelationshipStyles","relationshipName","relationshipLabel","fieldLabelMargin","helpIconWidthMargin","sectionHeaderStyle","containerStyle","flexStyle","simpleForm","adornmentStyle","InvestorFundRelationshipDialog","hasEditFundInvestorTagPermission","setCurrentForm","additionalFieldsChanged","setAdditionalFieldsChanged","formFieldsChanged","setFormFieldsChanged","udfFieldChanged","setUdfFieldChanged","udfFieldsInvalid","setUdfFieldsInvalid","hasUdfs","formFieldsInvalid","setFormFieldsInvalid","formsumbitting","setFormSumbitting","udftabRef","fundInvestorUpdated","fundInvestorStringify","fundInvestorUpdatedStringify","hasModifications","filterAndMapTags","tagList","updatedTagList","fiTag","fundInvestorTags","commitment","totalCommitment","placementFee","managementFee","commitmentPrecision","lpSharingPercent","validatePercentageFields","onAdditionalTextFieldChange","additionalFeldsChanged","profileData","validateFundInvestorDates","_formprops$form$getSt","fundCurrency","NumberFormat","prefix","decimalScale","decimalSeparator","thousandSeparator","fixedDecimalScale","allowNegative","customInput","onValueChange","isAllowed","noshow","dialog","selectOptions","USER_ID","DOCUMENT_TYPE_ID","PrimaryContacts","setDisableSubmit","requestProps","validData","iLoading","iError","iLoaded","dtLoading","dtError","dtLoaded","contactsData","cLoading","cError","cLoaded","ct","nIds","pcs","dt","iv","primaryContactNumber","pc","newControllerProps","renderDocumentType","_useMemo4","dgClasses","selClasses","endsWith","fetchedData","promises","updatePrimaryContacts","DefaultPrimaryContact","showTitle","FormWrapper","_ref2$contacts","PrimaryContactsDialog","disableSubmit","InvestorTagsAssociationsApi","ActionsStyles","useActionsStyles","setFundInvSelectedTags","ContactFilters","FundInvestorActions","hasExportInvestorFundsPermission","hasCreateFundPermission","classesExportButton","handleClickDownloadRelatedFundsAsExcel","getRelatedFundsAsExcel","ButtonReactAdmin","handleFundCreateButtonClick","CreateWireInstructionButton","handleWireInstructionCreateButtonClick","WireInstructionsActions","InvestorContactsActions","hasExportInvestorContactsPermission","showCopyContactsStepper","showPrimaryContacts","_ref7$userProfile","_ref7$ids","getRelatedContactsAsExcel","InvestorTitle","_ref10","RelatedFundsWrapper","setFundInvestor","handleDialogOpen","_ref11","selectedId","fetchedFundInvestor","freezeEnabledConfigInfo","freezeValue","handleReload","FundInvestorStepper","firstNameSort","onFormInit","showFundCreateDialog","setShowFundCreateDialog","showWireInstructionCreateDialog","setShowWireInstructionCreateDialog","showWireInstructionUpdateDialog","setShowWireInstructionUpdateDialog","setShowCopyContactsStepper","setShowPrimaryContacts","wireInstructionRecord","setWireInstructionRecord","wireInstructionPresent","setWireInstructionPresent","reload","setReload","hideToolbar","handleShowCopyContactsStepper","handleShowPrimaryContacts","handleFundCreateDialogToggle","handleWireInstructionCreateDialogToggle","handleWireInstructionUpdateDialogToggle","hasReadWireInstructionsPermission","_ref12","investorTags","_ref13","_ref14","InvestorContactsDatagrid","CopyContactStepper","WireInstructionsDatagrid","present","WireInstructionCreateUpdateDialog","InvestorEdit","DocumentIcon","buttonId","documentStatus","documentFilterStatus","batchTitleVariables","ResourceUploadApi","_upload","Accept","onUploadProgress","progressEvent","lengthComputable","_updateResourceUpload","_download","onDownloadProgress","_split","splitMethodId","_getSplitStatus","getTime","_setBatchStatus","newStatus","setAction","URLSearchParams","_setMultipleActive","_setMultiplePending","_setMultipleSuspended","_setFundinvestors","_getFundinvestors","_deleteFundinvestors","_proof","_getProofStatus","_downloadProofFile","_notify","_getBatchWithDocuments","batchRequest","documentRequest","batchForEdit","spread","batchResponse","documentsResponse","batch","_getResourceUploadDistributionListExcel","_callee18","_context18","_x24","_fundInvestorValidateImport","_callee19","fundIdMetaDataDto","_context19","_x25","_x26","_downloadDocumentUploadImportTemplate","_callee20","_context20","_updateResourceUploadTitle","_callee21","resourceUploadTitle","_context21","_x27","_x28","ResourceUploadListBulkActions","handleManageDocumentPropertiesOpen","hasApprovePermission","openConfirmSuspend","setOpenConfirmSuspend","openConfirmApprove","setOpenConfirmApprove","setopenConfirmDelete","openConfirmPending","setOpenConfirmPending","handleApprove","batchIds","setMultipleActive","handlePending","setMultiplePending","handleSuspend","setMultipleSuspended","handleEditClick","handleDeleteClick","editVisible","DocumentApi","_deleteDocuments","_assignDocuments","_setSingleStatus","documentId","_copyToAnotherInvestors","orignalDocumentId","_setMultipleStatus","_downloadDocumentAsFile","SummaryStepStyles","dialogActions","actionBarContainer","proofSelect","blueItem","progressText","progressIcon","doneText","doneIcon","errorText","indicatorsContainer","batchIndicators","helper","disableButton","useInterval","callback","delay","savedCallback","tick","ret","clearTimeout","DocumentTable","tagName","totalLabel","EnhancedTableHead","doc","categoryName","ErrorBadge","SummaryActionBar","handleProofActionChange","proofStatus","isPreviewLoading","showSendEmail","bulkMode","_ref3$hasUnMatchedDoc","hasUnMatchedDocs","setProofStatus","setIsPreviewLoading","setShowSendEmail","counter","setCounter","setTagName","_props$resourceupload","resourceupload","hasSendEmailPermission","formName","_resourceupload$profi","_resourceupload$resou","_resourceupload$allIn","_profileData$category","categoryId","setDelay","triggerEmail","maxCounterReached","MAX_COUNTER","getProofStatus","newProofStatus","handleProof","proof","downloadProofFile","approveDocuments","metadata","sendEmails","matchingStatus","CopyInvestorContext","InvestorGrid","relatedInvestorIds","SelectInvestorsStep","setInvestorsContext","translateWatermarkRecordToInput","DetailsSummary","batchLookups","formApi","allSubcategories","useWatermark","setUseWatermark","setSubcategories","documentValue","cat","batchSecurity","allSecurities","sec","documentSecurityId","applyWatermark","multiline","setFieldTouched","allCategories","onSecurityChange","profileName","allWatermarks","PropertiesStep","createNewDocuments","copyObject","newDocuments","dueDate","documentDate","subcategoryId","watermarkId","copyToAnotherInvestors","sourceDocument","mminHeight","CopyToInvestorStepper","providerInvestorContext","handleRefresh","inputEllipsis","dateRoot","statusRoot","gridCheckbox","columnClass","headerClass","summaryItemClass","statusColumnClass","dateColumnClass","docGridLegend","docGridLegendLabelClass","infoIcon","gridButton","nonDirty","nonDirtyGrid","reviewContainer","reviewGridNewLabel","reviewGridOldLabel","EllipsisInput","ReadOnlyField","ReadOnlyFieldGrid","translateInvestorRecordToInput","rowValue","RequiredIfNotUploadedViaApi","resourceUpload","uploadVia","getTextFromValue","lookup","isDate","lookupObject","handleSelectAllClick","handleGridAction","allSubCategories","dateHasError","handleDocumentDueDateChange","validateTitle","allColumns","dirtyFields","ReviewGridField","hasNewValue","availableSubCategory","subCat","docSecurity","StatusColum","originalFileName","downloadDocumentAsFile","noDocumentsMessage","uploadType","uploadedBy","offSet","HasSummaryActionBar","getGridHeight","align","colorObject","ReviewField","formatValue","initial","EditGrid","handleBatchTitleChange","onBatchStatusChange","onBatchSecurityChange","onBatchColumnChange","onBatchCategoryChange","onBatchSubcategoryChange","ManageDocumentPropertiesDialog","formIsDirty","previewVisible","formIsValid","copyToInvestorDialogOpen","copyToInvestorFundId","copyToInvestorExistingInvIds","copyToInvestorSourceDocument","isBetween","newDateHasError","isNewValueBlank","newFormattedValue","handleCopyToInvestorDialogOpen","selectedDocumentsIds","selectedDocument","alreadyMatchedInvestorIds","documentToCopy","handleCopyToInvestorDialogOpenToggle","refreshAfterCopyToAnotherInvestors","loadProofStatus","proofStatusCheckHandler","setDateHasError","searchBatchSecurity","batchLookupsAllSec","derivedSecurityId","derivedWatermarkId","batchDocuments","docSecId","_this$formValues$docu","changedDocuments","_this$formValues$docu2","proofStatusCallback","batchProofStatus","initialProofCheck","_args7","Queue","statusInfo","queue","proofStatusPromise","ms","resultObject","callProofStatusDelay","enqueue","_this$props$batchForE","checkValueChanged","derivedProperty","derivedInfo","_this$formValues$docu3","docStatus","securityChanged","_this$formValues$docu4","lookups","documentsColumnName","batchPropertyName","_this$formValues$docu5","_this$formValues$docu6","_this$formValues$docu7","_this$formValues$docu8","validateDates","derivedDocumentDate","derivedDueDate","deleteDocuments","documentIdsToDelete","changedocuments","docInitials","currentMetadata","_this$formValues$docu9","confirmCloseHandler","_this$formValues$docu10","checkBatchPropertiesChanged","handleSaveChanges","handlePreviewVisibleChange","checkPreviewDisabled","api","diffs","diff","undoChange","saveChanges","_this$props$batchForE2","formBatchData","metadataValues","batchStatusCalled","changedDocs","statusChangedDocs","fieldsChangedDocs","documentsForUpdate","documentsForStatusUpdate","newBatchTitle","quarter","updateResourceUpload","setBatchStatus","differentFields","checkWatermark","assignDocuments","setMultipleStatus","updateResourceUploadTitle","_this$props$batchForE3","derivedCategoryId","derivedDocumentSecurityId","derivedWatermarkProfileId","_this$props$permissio","documentProfileId","handleFormChange","_this2$state","_this2$formValues","_this2$formValues$doc","onResourceUploadPropertyChange","PopupField","headLabel","_props$classesNames","classesNames","tableRow","DateRangeChoices","useDateRangeFilterStyles","labeled","iconButton","seperationItem","dateFrom","ConvertRangeToStartEndDate","range","newSelectValue","week","dow","timeValue","subtract","splitted","number","rangeType","start","startString","endString","fromSource","toSource","_props$defaultFrom","defaultFrom","_props$defaultTo","_props$defaultSelectV","defaultSelectValue","_props$showRange","showRange","_props$autoSelectValu","autoSelectValues","setStartDate","setEndDate","selectValue","setSelectValue","handleChangeSelect","startDateString","endDateString","fieldNewValue","maxDateProps","maxDate","minDateProps","minDate","MenuProps","getContentAnchorEl","newDate","keyboardIcon","CalendarTodayIcon","inputContainer","StatusByColorField","ShowRelatedDocuments","documentsFilteredByStatus","noDataWrapper","batchTitleFilterStyle","compressedFilterStyle","fundLabel","fundsTableRow","fundsTableCell","FundField","DocumentFundField","derivedFundId","InvestorCountField","readInvestorsCount","totalInvestorsCount","Number","isInteger","toFixed","DocumentFilters","dateFilter","documentDateFilter","fromDocumentDate","toDocumentDate","fromUploadDate","toUploadDate","uploadDateFilter","subType","DocumentsTitle","ResourceUploadList","showManageDocumentsDialog","selectedBatchesIds","setSelected","setSelectedBatch","setDateFilter","isDateFilterLoaded","setIsDateFilterLoaded","setCategories","getBatchWithDocuments","getBatchLookups","securities","watermarks","_categories","fetchDocMngtDefaultDateValue","entry","getCategories","categoriesGet","uploadDateFilterDefaultRange","uploadedByFirstName","uploadedByLastName","PendingIndicatorIcon","_ref$title","cx","cy","inputStyle","inputPlaceholder","emptyGridHeaderCell","validateInvestor","MatchingColumn","statusValue","startCase","camelCase","InvestorColumn","investorFunds","handleInvestorChange","allChoices","FundColumn","handleFundChange","_investorFund$funds","EmptyTableBody","splitStatus","handleSplit","splitStatusDescription","colSpan","EmptyTableHead","SplitDocumentTable","gridInfoBar","infoBarNotMatchedLabel","infoBarMatchedLabel","infoBarBatchIdLabel","splittedDocuments","calculateInvestorsWithoutContactsIds","splitMethod","investorWithoutContactsIds","unreferencedInvestors","setUnreferencedInvestors","investorWithoutContacts","setInvestorWithoutContacts","setInvestorFunds","unMatchedDocs","matchedDocs","visibleDocuments","isFilteredOut","getSplittedDocuments","getDocs","docs","reSplitMethod","selectedFilter","unsortedInvestors","investorFund","relationshipStatus","referencedInvestor","handleMatchDocument","changedDoc","modifiedDoc","changedSplittedDocuments","numberOfPages","handleMatchChanged","_investorFund$funds2","changedDocument","filterByDocStatus","newFilter","downloadDocument","invStatus","inv","SplitActionBar","selectInput","buttonsContainer","formHelperText","FormHelperTextProps","AssignSplitStep","disableActionButtons","handleResetActionButtons","setSplitStatusGlobally","setSplitStatus","handleResetClosingState","_profileData$splitMet","setSplitStatusDescription","getSplitStatus","newSplitStatus","referencedInvestors","roleFilters","matchedDoc","userRole","categoryOrSubcategoryId","getAuthorizationsByRole","saveInvestors","docIsChanged","initialDocuments","initialDoc","currState","_formprops$form$getSt2","CheckBoxInput","onCheckBoxSelectChange","_this$props2$disabled","useFundLevelCheckBoxStyles","subLabelStyle","downloadResource","translateWatermarkInputToRecord","WatermarkSelectInput","customChoices","FundLevelCheckBox","handleFundLevelDocumentsChanged","hasSubcategories","onProfileChange","onCategoryChange","hasWatermark","isFundLevelFlowAvailable","isDocumentTagLoading","isApiUploadedBatch","doucumentTitleRef","validateDocumentType","DetailsStep","uploading","profileId","self","_assertThisInitialized","fetchDocumentTypesAndPreselectFirst","watermarkProfileId","subCategoryId","subCats","subcat","uploadPercent","uploadCurrent","uploadTotal","securityId","uploadDocument","_self$props","handleUploadChange","fundLevelDocument","uploadedResourceupload","upload","validateDocumentDetails","doubleListStyles","itemId","itemLabel","itemLabelText","separateButton","groupChevron","itemsNumberGrid","gridSmall","borderWidth","fullHeight","searchBox","itemGrid","pendingResourceWrapper","TagField","DoubleListArrayInput","leftSelection","rightSelection","groupsCollapsed","getSortField","renderListItemLabel","includeId","allowTagFilter","choiceId","fundInvTagsArray","toggleGroup","handleLeftItemDoubleClick","valueList","handleRightItemDoubleClick","handleLeftItemSelected","handleRightItemSelected","handleAddClick","handleAddAllClick","_this$state$itemSearc","_this$state$value","filterOnGroup","_this$state$selectedT","_this$state$fundInvSe","compareProvidedTagsToSelectedTags","handleRemoveClick","handleRemoveAllClick","selectedItemSearch","checkJapanFund","handleJapanFund","fundInvTagIds","getSize","allowFilterByGroup","handleSelectedItemSearch","_this$props4","filterByGroup","filterByGroupLabel","additionalActions","_this$props4$readOnly","_this$state3$itemSear","_this$state3$selected","_this$state3$filterOn","_this$state3$selected2","_this$state3$fundInvS","groupFilter","sortChoices","chevronStyle","renderListItem","_this3","inFamily","_this$props5","_this$props5$readOnly","renderGroup","onDoubleClick","_this4","_this5","getGroupLabel","_this6","fundInvestorTag","idKey","addField","WarningIcon","useClassesCustom","rootTreeView","popperAutoComplete","rootTreeItem","contentFF","suggestionsPaperAutoComplete","listboxAutoComplete","optionAutoComplete","isJapanFundSelected","isNBGClient","FundStepAdditionalActions","fundStepAdditionalActionsHandler","NotificationForJapanFund","notificationContainer","FundDoubleList","FundLevelTree","setFunds","uploadChanged","updatedResourceupload","allInvestorsChecked","setAllInvestors","setFundinvestors","stepReadOnly","FundInvestorTagApi","_checkIfNameExists","fundInvestorTagName","_downloadInvestorTagImportTemplate","_importInvestorTagFromExcel","FundTagApi","_checkFundTagNameExists","fundTagName","_downloadFundTagImportTemplate","_importFundTagFromExcel","TreeListButtons","selectionError","defaultChevronStyle","chevronStyleForAdd","TreeListFilters","classesCustom","searchFundNameQuery","setSearchFundNameQuery","selectedFundTags","onFundTagsChange","selectedFundFamily","handleFundFamilyChange","isFundFamilyFilterAvailable","isFundTagsFilterAvailable","listSide","colSize","listbox","findNode","nodeId","_step4","_step2","_iterator2","_step3","_iterator3","_iterator4","findParentNodes","selectedNode","keepChildren","_step5","_iterator5","fundFamilyNode","_step6","_iterator6","_step7","_iterator7","fundNode","_step8","_iterator8","filterByNodeId","buildNewArray","_step9","newArr","_iterator9","_step10","_iterator10","_step10$value","transferFundInvestorTags","treeSelected","leftList","matchingTreeSelectedItem","data2Item","updatedFunds","matchingTreeSelectedFund","data2Fund","existingTag","filterData","filteredFunds","matchFundName","matchFundFamilyId","matchFundTags","findByFundId","_step11","_iterator11","foundFund","removeFundInvestorTags","copyState","rightList","copyRightList","copyLeftList","getSelectedNodes","selectedNodes","nodeList","flatMap","handleFundFamilyNode","selectedNodeId","oppositeList","matchingIndex","oppositeListItem","handleFundNode","nodeParent","matchingFF","cleanSelectedNodes","fundInvestorTagNode","TreeTitle","listTitle","countFundNode","numberOfFundsAvailable","numberOfFundsSelected","TreeError","formRenderProps","modified","submitFailed","NodeRenderer","handleSelect","handleDoubleClick","isPending","renderTreeItems","commonProps","TreeItem","TreeList","nodesExpanded","nodesSelected","listFiltered","TreeView","defaultCollapseIcon","defaultExpandIcon","expanded","onNodeToggle","onNodeSelect","multiSelect","setLeftList","setIsJapanFundSelected","leftNodeIdsExpanded","setLeftNodeIdsExpanded","leftNodeIdsSelected","setLeftNodeIdsSelected","rightNodeIdsExpanded","setRightNodeIdsExpanded","rightNodeIdsSelected","setRightNodeIdsSelected","setRightList","setSelectedFundFamily","setSelectedFundTags","searchQueryLeft","setSearchQueryLeft","searchQueryRight","setSearchQueryRight","setSelectionError","fundIdsInput","useField","fundInvestorTagIdInput","_step12","_iterator12","_step13","_iterator13","fiTagFound","findByFundInvestorTagId","fiTagTree","fundTree","ffIndex","isListFundLevel","_copyState","fundIdsSelected","fundInvestorTagIdSelected","_removeFundInvestorTa","fundFamilyWithoutFiTag","_handleFundFamilyNode","leftListUpdated","rightListUpdated","leafParent","_handleFundNode","_copyState2","fundIdsInputToUpdate","fundInvestorTagIdInputToUpdate","originalNode","fundToRemove","fundIdsToRemove","_handleFundFamilyNode2","parentNode","_handleFundNode2","nodeIds","selectedLeaves","leftListWithoutFiTag","leftListItem","updatedFundIdInputValue","updatedRightList","arr1","arr2","merged","addToMerged","_existingItem$funds","existingItem","mergeArrays","nodeIdsToFilter","nodesFromRightList","fiTagOriginalParent","fiTagRightParent","nodeIdsToRemove","_loop","nodeFundIds","originalFundFamily","dataItem","fundsWithFiTag","leftListNode","matchingFund","buildDataStructure","fiTags","existingFundFamilyNode","familyNode","FundInvestorTagLevelTreeContainer","setFundFamilies","setFundTags","isPristine","setIsPristine","fetchData","fundFamilyPromise","fundsPromise","fundInvestorTagsPromise","fundTagsPromise","fundFamiliesResponse","fundsResponse","fundInvestorTagsResp","fundTagsResponse","updatedResourceUpload","FundInvestorTagLevelTree","FundStep","fundLevelDocumentsChecked","sortByValidationError","DoubleListArrayInputChoicesFiltered","fundIdsToFilterBy","choicesFiltered","fundinvestor","toggleExcelDialog","numberOfErrors","responseLoading","fundInvestorValidateImport","excelDialog","hasErrors","disabledImport","excelTitle","investorSelection","importFundInvestorsFromExcel","assignedFundinvestors","resourcefundinvestor","getAssignedInvestors","resourcefundinvestors","resourceFundInvestorsObject","missingAssignedFunds","getFundinvestors","_this$state$assignedF","fundinvestorsToDelete","deleteRequestBody","_fundinvestor$split","_fundinvestor$split2","deleteFundinvestors","_fundinvestor$split3","_fundinvestor$split4","radioGroupOptions","radioGroupRow","handleDownloadClick","downloadDocumentUploadImportTemplate","checkBoxChoice","paramThresholdNotExceeded","fitId","customFilter","toggleInvestorSelection","_formData","inputField","templateButton","templateSpan","labelItems","errorsLabel","tableContainer","float","TabStyles","paperContainer","buttonFooter","informationText","selectInputContainer","selectInputText","informationNumber","emptyLabel","buttonDisabled","footerButton","downloadDoc","tooltipPlacementTop","informationsContainer","nonFilter","filtersLookupsReporting","filtersLookupsEmail","PostalMailApi","sendPostalMail","DeliveryTable","recipientsList","handleOpenEmailModal","handleDownloadAsExcel","isLoadingExcelDoc","hasExportPermission","recipientsListFiltered","setRecipientsListFilter","contactFilters","setContactFilters","nonAdminContacts","adminContacts","noNotificationsSetContacts","filterItems","RecipientsTable","tempArray","dailySummary","recipient","difference","handleSelectAllInvestorRecipients","handleSelectAllUserRecipients","prevSelectedRows","downloadAttachment","documentFileName","tooltipTitle","openConfirmPostalMail","setOpenConfirmPostalMail","sendingList","addressCity","addressZipCode","firstname","lastname","fax","postalMailObject","postalCode","useFundsAndInvestorsData","_getFundAndInvestorId","getFundAndInvestorIds","idsToSend","investorsResponse","investorsError","fundsError","CommonTabStyles","includeAdmin","includeCC","isSendHardCopy","formatData","_useFundsAndInvestors","_useCategoryHook","categoryIds","_useQuery3","categoriesResponse","categoriesLoading","categoriesError","useCategoryHook","setLoadingExcelDoc","getResourceUploadDistributionListExcel","contactFilter","finalList","contactWithFundName","contactWithInvestorName","contactWithCategoryName","category","getFinalList","itemsSelected","DeliveryStep","TabbedShowLayout","CommonTab","MailApi","sendmailtolist","useContactDataProvider","isLoadingUsers","setIsLoadingUsers","errorUsers","setErrorUsers","fetchedUsers","setFetchedUsers","userIdList","isLoaded","newUsers","validateCheckedBox","UserEmailGridInput","userName","FetchedContactGridInput","DistributionListContactSummary","recipients","setUserEmailsFormProps","DistributionListApi","getEmailAddressesByFilter","getEmailAddressesExcelByFilter","getExcludedContactsFromDistributionList","_getRecipientsExcelForDistList","_sendMail","_downloadDistributionListImportTemplate","_updateDistributionList","DistributionListContactDialog","userEmailsFormProps","b64","distributionListId","deliveryTab","emailAttachments","resourceuploadId","_this$props2$notifica","listToSend","distributionListRecipients","o","t9","t10","t11","t12","t13","t14","t15","sendEmailDto","sendMail","DistributionListContactForm","currentItem","setCurrentItem","substitutedEmail","setSubstitutedEmail","nextItem","previousItem","_ref$notificationMeth","_ref$recipientsList","recipientsListSelected","_ref$variableType","showDistributionListTestEmailDialog","setShowDistributionListTestEmailDialog","showPreviewEmailDialog","setShowPreviewEmailDialog","toggleShowDistributionListTestEmailDialog","toggleShowPreviewEmailDialog","ResourceUploadCreate","resDocumentTag","isDocumentTagActiveValue","isDocumentTagFlagActive","resFITag","handleCloseEmail","submitInProgress","closing","handleSaveAndClose","confirmUpdate","popupSteps","confirmUpdateAndCloseDialogIsOpen","submitSucceeded","targetStep","confirmUpdateDialogIsOpen","goToNextStep","getPopupSteps","approveClicked","setPendingClicked","handleStep","resolveRedirectTo","handleConfirmUpdateDialogClose","handleConfirmUpdate","_args2","setPending","handleSetPending","validateBatch","bulkUploadStep","singleUploadStep","approveButton","FundsStep","SummaryStep","bulkType","getBulkMode","fundLevelDoc","isFundLevelDoc","_this$state5","_this$props2$permissi","_this$state6","isEdit","specialTextForMatchingStepLeaveModal","hasApproveButton","nonLinear","StepButton","stepButton","EmailDialog","noPaddingContainer","ResourceuploadEdit","ResourceUploadEdit","categoryStatus","CategoryFilters","CategoryTitle","CategoryIcon","CategoryList","DocumentCategoryApi","getCategoriesByTemplateID","templateID","_checkNameExists","encodedName","freezeComponentStyle","CategorySummary","formErrors","setFormErrors","nameOrCategory","tenantConfigurations","loadingTenantConfigurations","isInvestorFreezeOn","handleConfirmDialogConfirm","validateCategoryName","nameExists","checkNameExists","InfoOutlinedIcon","handleSubcategoryEditButtonClick","hasWriteCategorySubcategoryPermission","SubcategorySummary","setSubcategoryFormProps","categoryTypeId","filterType","excludeFromDailySummary","SubcategoryCreateDialog","subcategoryFormProps","SubcategoryForm","SubcategoryAction","handleSubcategoryCreateDialogToggle","CategoryEdit","showSubcategoryCreateDialog","showSubcategoryEditDialog","subcategoryRecord","handleSubcategoryEditDialogToggle","subcategoryBasePath","handleFormIsDirty","SubcategoriesDatagrid","allowNavigationOnSave","_submitting","useHistory","handleClickCancel","CategoryCreate","fundLevelFreeze","CreateToolbar","PresetFilters","PresetTitle","PresetIcon","PresetList","DocumentPresetApi","presetName","whenFieldChanges","becomes","setHasSubcategories","setHasWatermark","resourceUploadTitleRef","validatePresetName","handleSelectVariableBatchTitle","myrequired","at1","at2","at3","isFieldContainsOnlySpaces","splitType","onUploadTypeChange","PresetEdit","PresetSummary","PresetCreate","CustomDatagridRow","CustomDatagridBody","DatagridBody","CustomDatagrid","isExpand","handleGroupCategoryClick","handleCategoryEditButtonClick","hasReadCategoryPermission","groupStatus","GroupFilters","loggedUserType","GroupTitle","GroupIcon","CategoriesShow","isDisplayAdminCategoriesOn","GroupCategoryDatagrid","GroupList","groupCategoryId","GroupSummary","noop","whenGroupCreated","setWhenGroupCreated","redirectAfterConfirm","mutationMode","GroupCategoryApi","groupCategories","validateCategories","GroupCategorySummary","creationFilter","categoryOrSubcategoryIds","setGroupCategoryFormProps","GroupCategoryCreateUpdate","groupCategoryFormProps","GroupCategoryForm","CategoryCreateDialog","setCategoryFormProps","categoryFormProps","groupCategoriesError","validateSubcategories","GroupSubcategoryCreate","setGroupSubcategoryFormProps","groupSubcategoryFormProps","groupsubcategories","subcategoryIds","groupcategory","textInput","GroupRelatedCategoriesLabel","CategoriesFilters","GroupCategoryAction","hasWriteGroupCategoryPermission","hasCreateCategoryPermission","onCategoryCreateButtonClick","onGroupCategoryCreateButtonClick","onGroupSubcategoryCreateButtonClick","GroupEdit","showCategoryCreateDialog","setShowCategoryCreateDialog","showGroupCategoryCreateDialog","setShowGroupCategoryCreateDialog","showGroupCategoryEditDialog","setShowGroupCategoryEditDialog","showGroupSubcategoryCreateDialog","setShowGroupSubcategoryCreateDialog","setCategoryOrSubcategoryIds","groupCategoriesFilter","handleCategoryCreateDialogToggle","handleGroupCategoryCreateButtonClick","GroupCreate","DocumentTypeFilters","DocumentTypeTitle","LayersIcon","DocumentTypeList","scope","DocumentTypeApi","_checkDescriptionExists","DocumentTypeSummary","validateDescription","descExists","checkDescriptionExists","notBlank","DocumentTypeCreate","DocumentTypeEdit","documentDateVariable","dueDateVariable","bodyVariables","subjectVariables","rootListItem","nested","MailTemplateFilters","EmailNotification","_ref2$data","Collapsible","MailTemplateTitle","MailTemplateList","DatagridRow","EmailTemplateApi","subjectRoot","usedForAutomatedEmail","initialTemplateDate","MailTemplateCreate","templateDate","editable","dynamicContent","MailTemplateSummary","MailTemplateEdit","loadingCategory","emailTemplateId","distributionLists","loadingDistributionLists","welcomeEmailConfig","loadingWelcomeEmailConfig","newMupClientEmailConfig","loadingNewMupClientEmailConfig","isUsedForWelcomeEmail","isUsedForNewMupClientEmail","isLinkedToCategoryWithTriggerEmailOn","linkedToCategory","emailTemplateLinkedtoDL","SplitMethodTitle","SplitDocumentIcon","SplitMethodList","browseLink","SplitMethodSummary","SplitMethodApi","SplitMethodCreate","externalId","splitMethodResponse","crudGetOne","SplitMethodEdit","splitMethodType","CallSplitIcon","TenantConfigurationIcon","useStylesForInput","TenantConfigurationFilters","TenantConfigurationTitle","TenantConfigurationList","TimeZones","checkboxContainer","checkboxLabel","CheckboxShow","IntervalInput","onCheckboxChange","multipleSource","setChecked","hoursParser","NumberInput","TimeZoneInput","onTimeChange","onZoneChange","ValueInput","handleIntervalCheckboxChange","_formData$value","part1","part2","handleIntervalChange","interval","_formData$value2","part3","handleTimeZoneCheckboxChange","handleTimeChange","zone","handleZoneChange","zoneValue","booleanParser","textParser","interval0","interval1","TenantConfigurationSummary","valideIntervals","interval2","val1","val2","abs","validateTenantConfiguration","intervalMessageError","TenantConfigurationForm","TenantConfigurationEdit","OrganizationApi","organizationId","_downloadOrganizationImportTemplate","_importOrganizationsFromExcel","_exportOrganizationsExcel","ExcelOrganizationImportTitleBarWithDropbox","hasExportOrganizationsExcelPermission","hasImportOrganizationExcelPermission","handleImportOrganizationsClick","importOrganizationsFromExcel","downloadOrganizationImportTemplate","exportOrganizationsExcel","investorFamilyId","investorFamilyName","organizationStatus","handleRowClick","OrganizationFilter","nameSort","OrganizationShow","OrganizationInvestorDatagrid","OrganizationTitle","OrganizationIcon","organizationFilter","OrganizationList","userProofile","OrganizationSummary","validateOrganizationId","idExists","OrganizationCreate","InvestorsGridInput","preselectedChoices","AddExistingInvestorSummary","AddExistingInvestorDialog","investorsToBeUpdated","initialInvestor","createPluralizedMessage","updated","AddExistingInvestorForm","RemoveButton","updateMany","RemoveOrganizationInvestorButton","visibleInvestors","useFilterStyles","filterInput","investorNameFilter","setInvestorNameFilter","OrganizationInvestorAction","hasExportOrganizationRelatedInvestorPermission","handleAddExistingInvestorCreateDialogToggle","OrganizationRelatedInvestorsLabel","OrganizationEdit","showOrganizationInvestorCreateDialog","showAddExistingInvestorCreateDialog","handleOrganizationInvestorCreateDialogToggle","OrganizationInvestorCreateDialog","fundFamilyStatus","FundFamilyFilters","FundFamilyShow","FundFamilyFundDatagrid","FundFamilyTitle","FundFamilyIcon","FundFamilyList","FundFamilySummary","validateFundFamilyId","FundFamilyCreate","OrphanFundsGridInput","AddExistingOrphanFundSummary","AddExistingOrphanFundDialog","fundsToBeUpdated","initialFund","AddExistingOrphanFundForm","RemoveFundFamilyFundButton","visibleFunds","fundNameFilter","setFundNameFilter","FundFundFamilyAction","handleAddExistingOrphanFundDialogToggle","FundFamilyRelatedFundsLabel","FundFamilyEdit","showFundFamilyFundCreateDialog","showAddExistingOrphanFundDialog","handleFundFamilyFundCreateDialogToggle","FundFamilyFundCreateDialog","DocumentWatermarkFilter","DocumentWatermarkTitle","DocumentWatermarkIcon","DocumentWatermarkList","watermarkText","fontTypes","fontSizes","textDirection","textPosition","fontColors","watermarkCheckboxInclude","DocumentWatermarkColorPicker","onChangeColorPicker","colorButtons","colorPickerInsideButton","DocumentWatermarkApi","validateWatermarkName","isValueStartingWithBlank","getFormatFromValues","isBoldSelected","isItalicSelected","DocumentWatermarkSummary","defineColorPickerButtonClass","fontColor","colorPickerButtonClass","colorPickerButtonRed","colorPickerButtonBlue","colorPickerButtonOrange","colorPickerButtonGreen","colorPickerButtonGrey","colorPickerButtonBlack","checkboxFields","sizeGrid","fontSizeInput","customButtonGrid","_ref$input","colorPickerPopup","hex","convertFontColorFromHexToString","rgb","rgbSplit","convertColorToHex","_ref2$input","ToggleButton","boldItalicButtons","FormatBoldIcon","_ref3$input","FormatItalicIcon","_ref4$input","ToggleButtonGroup","exclusive","alignment","toggleContainer","alignmentButton","FormatAlignLeft","FormatAlignCenter","FormatAlignRight","_ref5$input","watermarkDisplay","textArea","orientation","stretched","font","horizontalAlignment","DocumentWatermarkCreate","RoleIcon","RolesTitle","RoleList","RoleApi","Group","selection","handleChecked","_useChoices","useChoices","numSelected","sumBy","noBorder","expandCell","checkboxRoot","specialCellRoot","tableCellRoot","renderChoice","TreeInput","hasFilters","filterFunction","groupProp","treeChoices","handleAllChecked","selectedText","_createElement","EmptyLabel","authoritiesToExclude","RoleSummary","validateRoleName","validateRoleId","splittedId","isStringAlphaNumeric","RoleTitle","RelatedContactsLabel","RoleEdit","RelatedContactsDatagrid","RoleCreate","FundTagIcon","gridItemRelative","radioGroup","FundTagSummary","resetFilter","selectedFundIds","validateFundTagName","checkFundTagNameExists","FundTagTitle","FundTagForm","hasPostError","fundIdsToAdd","setResetFilter","hasModification","fundIdsToDelete","ExcelFundTagImportTitleBarWithDropbox","hasExportFundTagExcelPermission","hasImportFundTagExcelPermission","downloadFundTagImportTemplate","importFundTagFromExcel","nameColumnStyle","inputCustomWidth","formFullWidth","TagsTitle","FundTagNameFilters","_fundId","FundTagCreate","FundTagEdit","InvestorTagIcon","InvestorTagApi","_checkInvestorTagNameExists","investorTagName","ExcelInvestorTagImportTitleBarWithDropbox","hasExportInvestorTagExcelPermission","hasImportInvestorTagExcelPermission","downloadInvestorTagImportTemplate","importInvestorTagFromExcel","InvestorTagNameFilters","DisplayInvestors","fetchedInvestors","setFetchedInvestors","fetchInvestors","getInvestors","InvestorField","SingleFieldList","InvestorTagList","InvestorTagSummary","selectedInvestorIds","validateInvestorTagName","checkInvestorTagNameExists","InvestorTagTitle","investorIdsToAdd","investorIdsToDelete","InvestorTagEdit","InvestorTagCreate","FundInvestorTagIcon","dialogContainer","handleNewFundInv","onlyFundsWithFundInvestorRelation","choicesIds","FormWithRedirect","mainRow","collapseRow","cellRightScroll","classChevron","FundInvestorSelection","formValuesIds","expandAll","stylesSelection","expandInvestors","setExpandInvestors","totalInvRows","calcHeight","selectedInvestorRows","investorRenderer","VirtualizedList","rowRenderer","RenderFunds","mapFundInvSorted","numberOfTotalRows","setExpandAll","rowsPerPage","setRowsPerPage","investorSelectedRows","rowsCount","filteredNewValues","expandAllCell","_ref4$","TablePagination","onPageChange","onRowsPerPageChange","RenderFundInvestors","containerFlex","buttonFlex","numberOfTotalRow","mapFundInvestors","mapFundSorted","value1","value2","validateFundInvestorTagName","fieldSate","fundInvestorTagNameExists","checkIfNameExists","AddFundsDialog","FundInvestorTagTitle","FundInvestorTagForm","initialValuesRef","setIds","setNumberOfTotalRow","parsedNewFundInv","newFundInvestors","payloadTag","initialIds","formIds","payloadTagAssociationToAdd","payloadTagAssociationToDelete","relation","FundInvestorTagSummary","ExcelFundInvestorTagImportTitleBarWithDropBox","hasExportFundInvestorTagExcelPermission","hasImportFundInvestorTagExcelPermission","cellChild","FundInvestorTagNameFilters","Investors","Funds","investorNames","RenderChevron","DisplayFundInvestors","mapFundInvestorsNames","renderFundInvestors","FundInvestorField","FundInvestorTagList","CreationFundInvestorTagContext","TagDetailsStep","setFundInvestorTagContext","mapInvestorsToSelectedFunds","mapFundInvestorSortedByFund","validateFundInvestorTagNameRff","numberOfSelectedRows","updatedValues","Checkboxes","AssignTagForm","payloadTagAssociation","associations","_ref9$","fundInvestorTagContext","setInitialFormValues","_ref3$","_fundName","FundInvestorTagCreate","FundInvestorTagEdit","EmailArchiveAttachmentApi","_downloadAttachmentFile","emailArchiveId","fileId","attachmentIdType","rootList","buttonDownload","centerProgress","formatStartDate","mmt","formatEndDate","dateValue","disableFuture","EmailArchiveFilters","EmailArchiveTitle","ArchiveIcon","Attachments","attachment","downloadAttachmentFile","BlockedDatagrid","EmailArchiveList","isRowSelectable","emailSentFromSystem","userFirstName","userLastName","userDeleted","fundNames","timestamp","noOfAttachments","EmailArchiveExcelDownloadApi","_downloadEmailArchiveAsExcel","emailStatus","accordionDetails","filterLabel","accordionBottomBorder","downloadEmailArchiveAsExcel","emailTermStatus","RecipientsFilter","displayItems","itemsArray","Recipients","displayUserName","displayStatus","getFormattedUserName","CustomTextField","_ref6$emptyText","_ref6$secondSource","secondSource","CustomFunctionField","ShowFiltersGrid","accordionBody","setExpanded","Accordion","panel","isExpanded","AccordionSummary","expandIcon","ExpandMoreIcon","AccordionDetails","includeAdministrator","inactiveInvestors","includeInactiveInvestors","loggedInUsers","includeLoggedInUsers","usersWhoHaveNotLoggedIn","includeUsersWhoHaveNotLoggedIn","excludeEmailDomains","excludeEmailDomain","resourceUploads","UserNamesTextField","recipientName","CustomDateField","EmailBodyField","AttachmentsField","RecipientsField","AdvancedOptionsButton","setFiltersDialogOpen","buttonSpan","filtersLabel","EmailArchiveSummary","_ref15","filtersDialogOpen","rootContent","rootItem","rootRichText","show","_ref16","Show","categoryTermStatus","categoryTermFrequency","termNameFilterStyle","CategoryTermsFilter","CategoryTermsName","CategoryTermsIcon","CategoryField","CategoryTermsList","CategoryTermsSummary","CategoryTermsRelationsGridComponent","existingRelations","categoryTermId","existingRelationsCategoryIds","availableChoices","setShowDialog","_useCreate","useCreate","categoties","CategoryTermsRelations","_ref$permissions","setVersion","hasWriteCategoryTermRelationPermission","categoryTermIds","AddCategories","CategoryTermsTitle","CategoryTermTitle","CategoryTermsEdit","fundTermStatus","FundTermsFilter","FundTermsName","FundTermsIcon","FundTermsList","FundTermsSummary","TermsRelationsGridComponent","fundTermId","existingRelationsFundIds","_props$emptyComponent","emptyComponent","showAllFundsDialog","setShowAllFundsDialog","hasAllFundAction","setHasAllFundAction","hasAddExistingFundActions","setHasAddExistingFundActions","showAddAllFundAction","showAddExistingFundsAction","handleOpenAllFunds","handleCloseAllFunds","FundRelationsEmpty","hasEditFundTermRelationPermission","AddFunds","FundTermsRelations","FundTermsTitle","FundTermTitle","FundTermsEdit","DistributionListFilter","DistributionListTitle","DistributionListIcon","DistributionListList","DistributionListContext","excelColumns","ImportExcelGroup","setPreselectedUsersEmails","setUserIdList","loadingDownload","setLoadingDownload","showNoRowsError","setShowNoRowsError","emails","userIds","u","downloadDistributionListImportTemplate","recipientsChoice","fundTagsLoading","fundTagsError","RecipientsStep","dlContext","setDlContext","_dlContext$distributi","distributionList","hasImportPermission","setRecipients","newDistributionList","firstCheckbox","validateOption","validateDomains","isValidMultipleDomains","domainsParser","AdvancedOptionsDialog","_props$option","handleSetAdvancedOptions","contactsCheckBoxDisabled","setContactsCheckBoxDisabled","includeUsersWhoDidNotAccessDocument","resourceUploadIds","advancedFormProps","handleApplyClick","OptionsGrid","showAdvancedDialog","setShowAdvancedDialog","currentOption","setCurrentOption","_formprops$values$opt","selectedAllContact","selectedCcContacts","includeAllPrimary","includeAllWithCC","_useMemo$selectedAllC","_useMemo$selectedCcCo","handleAllContactSelect","handleCcContactSelect","handleAdvancedClick","advancedOptions","applyToAll","anonAdvancedOptions","validateOptions","FundsArrayInput","OptionsArray","OptionsStep","preselectedUsersEmails","_dlContext$options","setOptions","getFundsForDistributionList","previewforSavedDL","prevItem","getResourceUploadId","setShowDistributionListPreviewEmailDialog","_props$distributionLi","distributionListName","_props$variableType","dlOptions","initRecipients","includeAllCcEmails","handleSendClick","indicatorLabel","excludedContactsLabel","indicatorNumber","excludedContactsIndicatorLabel","composeEmail","indicatorDiv","searchDiv","searchTextInput","buttonsDiv","helperSearchInput","searchNotAddedInput","descendingComparator","getComparator","stableSort","comparator","stabilizedThis","SummaryGrid","showEmaildDialog","setShowEmaildDialog","hasComposeEmailDLPermission","filterByName","filterByEmail","filterByFund","filterByInvestor","addExcludedContacts","finalData","_formprops$values","_formprops$values2$re","excludedContacts","setExcludedContacts","excludedContactsDialogOpen","setExcludedContactsDialogOpen","filteredExcludedContacts","setFilteredExcludedContacts","excludedContactsLoaded","setExcludedContactsLoaded","addDisabled","setAddDisabled","tableEl","handleChangePage","scrollTop","handleChangeRowsPerPage","paginationCls","getExcludedContacts","responseList","paramNotSelected","excludedUserFundRelations","contactsIndicators","distinct","nonAdmin","recipientsWithCcEmails","choicesHaveCcEmails","handleEmailDialogToggle","createSortHandler","property","visuallyHidden","handleSelectWithCcEmails","backIconButtonProps","nextIconButtonProps","excludedContactsFilter","splitAndTrimString","filteredList","filterExcludedContacts","newExcludedContacts","loaderContainer","validateRecipients","filteredData","setFilteredData","nameFilter","setNameFilter","emailFilter","setEmailFilter","fundFilter","setFundFilter","investorFilter","setInvestorFilter","setFinalData","_useMemo2$initRecipie","userAdmingFlag","fundAdminFlag","userAdminFlag","handleCreateDistributionList","emailFundRecipientList","cleanInputFilter","filterText","dataToFilter","contactNameList","emailList","investorList","fundList","newRecipients","populateRecipients","providerDlContext","RecipientsFilters","RecipientsActions","onCompose","onDownloadToExcel","numberOfExcludedContacts","composeEmailButton","calculateSelectedCCAll","ccCount","accu","isSelectedCC","CkAllContext","CkAllLabel","RecipientsGrid","_ref4$ids","ccIds","handleFilters","notChanged","setNothingChanged","checkedState","recipientsIds","selectedCCIds","gridSelectedIds","handleToggleRecipient","distributionListUsers","changedUserIndex","muteObject","getRecipientsExcelForDistList","handleSelectRecipients","handleToggleRecipientCCs","fundRecListToBeUpdated","updateDistributionList","selectedRecipients","handleToggleAllRecipientCCs","listInfo","totalNumberOfContacts","distinctContacts","MUIButton","MUITextField","addedContacts","combinedUsers","newFinalData","_ref7$permissions","finalRecipients","setFinalRecipients","gridDataUsers","sortedUsers","newIds","newccIds","contactList","emailFilterValue","contactFilterValue","fundFilterValue","investorFilterValue","DistributionListCreate","_toolbar","breakpoints","up","down","notSelectedUsersIndicatorLabel","ReportIcon","reportTypes","labelCheckbox","Filters","CheckboxGroupInput","reportType","ReportsTitle","ReportList","reportTypeName","AdminReportApi","filterLabels","notSupportedFilterCriteria","maximumOutput","containerNoData","textNoData","textNoDataMaximumReached","tableCellHead","tableCellBody","desc","columnDataTypes","valA","valB","currentDataType","dateValA","dateA","date","cmp","getSorting","DEFAULT_DATE_FORMAT","TZ_PLACEHOLDER","formatValueByColumn","currentColumn","dataType","colDate","tz","parsedDate","parseZone","colStyles","pageOptions","backIconProps","nextIconProps","ReportDatagrid","filtersSentAreDifferent","fixColumns","progressCls","cellHeadCls","cellBodyCls","rowLimit","row_limit","indexValue","checkBoxInput","CheckBoxFilter","SelectFilterStyles","mainContainer","listHeader","listHeaderItem","searchItem","searchIcon","switch","checkboxAllItemsIcon","lisItemContainer","listItemTextContainer","fieldContainer","fieldContainerError","customPopover","inputContainerEl","offsetHeight","offsetTop","customPopoverOpen","backdrop","useSelectFilterStyles","SelectFilter","lov","setTouched","searchValue","setSearchValue","scrollToRow","setScrollToRow","showSelected","setShowSelected","lastItemSelected","setLastItemSelected","setAllValuesChecked","upperFirst","lovIds","nextCurrentValues","collator","Intl","Collator","numeric","compare","currentValues","displayValue","allItemsChecked","SelectIconComponent","inputContainerElHeight","listWidth","uniqId","selector","ArrowDropUpIcon","keyCode","querySelector","focus","ContainerProps","Switch","disableRipple","switchBase","ArrowKeyStepper","scrollToColumn","isControlled","onScrollToChange","newScrollToRow","scrollToIndex","onRowsRendered","SelectFilterWithDependency","dependsOn","dependsOnFilterValues","dependsOnFilterMultiple","valuesToSearch","valuesToSearchIsArray","lovOverride","filterSource","listIds","lovFiltered","allValuesCheckedFilters","containerDateRange","filtersAreDependants","crossFilters","indexSource","dependsOnFilter","ReportFilters","filterParameters","hasFundFilter","hasFundFamilyFilter","hasInvestorFilter","hasUserFilter","datagridContainer","gridLg3","ReportSummary","reportData","setReportData","previousFiltersSent","setPreviousFiltersSent","setFiltersSentAreDifferent","loadingViewReport","setLoadingViewReport","loadingDownloadReport","setLoadingDownloadReport","reportDefinition","isEveryButtonDisabled","filtersRequired","filtersUsed","filtersRequiredUsed","getFiltersToSend","reportFilters","subKey","getFilterLabelsToSend","reportFilterLabels","currentFilter","isAllDates","last","currentDate","currentFilterValue","handleClickViewReport","handleClickDownloadReport","alignIcon","ReportTitle","ReportEdit","defaultOptions","ResourceRegister","readPermission","createPermission","editPermission","deletePermission","registerResource","unregisterResource","ResourceRoutes","isRegistered","resourceData","ResourceContextProvider","Route","routeProps","WithPermissions","decodeURIComponent","Resource","_props$intent","NotActivatedMessage","initialState","GET_PROFILE","GET_PROFILE_SUCCESS","GET_PROFILE_FAILURE","RESET_PROFILE","en","englishMessages","i18nProvider","polyglotI18nProvider","App","Admin","layout","authProvider","loginPage","logoutButton","customReducers","profileReducer","customSagas","SettingsIcon","presets","TermsIcon","AlternateEmail","emailarchive","AlternateEmailIcon","hostname","editorUrl","initIcxPortal","ReactDOM","navigator","serviceWorker","ready","registration","unregister","deliveryTabBodyVariables","deliveryTabSubjectVariables","contactVariables","variablesForDistributionList","distributionListSubjectVariables","distributionListBodyVariables","portalMode","callBack","messageEvent","eventContent","origin","eventData","icapitoken","client","_parse","jwtClient","replaceState","receiveMessageFromIcx","sendgetIccApiTokenToIcx","sendPingOnMoveThrottled","throttle","sendPingOnMove","sendPingToIcx","pingTimeout","parentDomain","ancestorOrigins","referrer","postMessage","module","exports","add_filter","back","bulk_actions","clear_input_value","clone","confirm_leave","confirm_quit","export","remove_filter","unselect","close","loading_list","boolean","true","false","null","not_found","upload_several","upload_single","image","references","all_missing","many_missing","single_missing","toggle_hidden","about","are_you_sure","no_edit_permission","bulk_delete_content","bulk_delete_title","delete_content","delete_title","details","invalid_form","loading_table","no","yes","confirm_copy","confirm_delete_tags","confirm_delete_tag","fund_level_document","navigation","no_results","no_more_results","page_out_of_boundaries","page_out_from_end","page_out_from_begin","page_range_info","page_rows_per_page","auth_check_error","user_menu","sign_in","sign_in_error","custom_updated_message","importation_permission_groups","copy_contacts_successfull","created_contact_successful","created_investor_successful","created","deleted","added","bad_item","item_doesnt_exist","http_error","data_provider_error","canceled","logged_out","send_envelopes","udfs_successfully_updated","group_created","distribution_email_sent","server","distribution_list_updated","watermark_text_direction","watermark_text_position","delete_error","resource_upload_pending","resource_upload_approved","resource_upload_approved_email","copy_wire_instructions","update_primary_contacts_successfull","report_has_more_data","report_has_bad_criteria","date_after_today","validation","minLength","minValue","maxValue","oneOf","regex","network","_504","_response$errorMessag","responseText","convertDataProviderRequestToHTTP","GET_LIST","_params$pagination","pageSize","_params$sort","GET_ONE","additionalFilters","idQuery","getQueryIdsFromId","urlFilters","GET_MANY","GET_MANY_REFERENCE","_params$sort2","getQueryIdsFromData","UPDATE_MANY","DELETE","DELETE_MANY","_getQueryIdsListFromI","idsQuery","idsQueryDataList","queryParams","getQueryIdsListFromIds","executeRequest","authentToken","previousData","convertHTTPResponseToDataProvider","GET_MAX_PARAMS_SIZE","getManyByChunks","allIds","targetId","idsMaxLength","reqIds","chunks","lastIndex","lastIndexOf","responses","uniqueFundIds","uniqueData","getManyByChunksFundsForDistributionList","_convertDataProviderR","strictUriEncode","require","decodeComponent","splitOnFirst","validateArrayFormatSeparator","TypeError","strict","decode","keysSorter","parseValue","parseNumbers","parseBooleans","formatter","accumulator","exec","isEncodedArray","parserForArrayFormat","_splitOnFirst","_splitOnFirst2","_Object$keys","_i2","_Object$keys2","object","shouldFilter","skipNull","skipEmptyString","encoderForArrayFormat","objectCopy","_i3","_Object$keys3","DEFAULT_CHUNK_PARAMS_MAX_SIZE","REACT_APP_LOCAL_BUILD","reg","initials","phrases","messageToBePrepare","Polyglot","t","splitedEmail","isTrailingSpace","isPhoneNumberValid","stringToDo","valueToSplitBy","splittedString","RegExp","prototype","item1","item2","type1","type2","diffObjct","arraysMatch","objDiff","promise","dequeue","workingOnPromise","shift"],"mappings":"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","file":"static/js/main.9858854b.chunk.js","sourcesContent":["const iccApis = {\r\n users: {\r\n singular: 'user',\r\n plural: 'users',\r\n paginated: true,\r\n id: 'userId',\r\n generatedId: true,\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n funds: {\r\n singular: 'fund',\r\n plural: 'funds',\r\n paginated: true,\r\n additionalGetManyFilterParam: { returnFundTags: true },\r\n additionalGetOneFilterParam: { returnFundTags: true },\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n investors: {\r\n singular: 'investor',\r\n plural: 'investors',\r\n paginated: true,\r\n getMany: false,\r\n additionalGetOneFilterParam: { returnInvestorTags: true },\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n organizations: {\r\n singular: 'organization',\r\n plural: 'organizations',\r\n paginated: true,\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n resourceuploads: {\r\n singular: 'resourceupload',\r\n plural: 'resourceuploads',\r\n paginated: true,\r\n createMethod: 'POST',\r\n id: 'resourceUploadId',\r\n queryId: 'resourceUploadId' // 'id' by default and for all other APIS !\r\n },\r\n userphones: {\r\n singular: 'userphone',\r\n plural: 'userphones',\r\n paginated: true,\r\n id: ['userId', 'phoneTypeId'],\r\n createMethod: 'PUT',\r\n updateMethod: 'PUT'\r\n },\r\n userphonetypes: {\r\n singular: 'userphonetype',\r\n plural: 'userphonetypes',\r\n paginated: true,\r\n id: 'id'\r\n },\r\n useraddresses: {\r\n singular: 'useraddress',\r\n plural: 'useraddresses',\r\n paginated: true,\r\n id: ['userId', 'addressTypeId'],\r\n createMethod: 'PUT',\r\n updateMethod: 'PUT'\r\n },\r\n useraddresstypes: {\r\n singular: 'useraddresstype',\r\n plural: 'useraddresstypes',\r\n paginated: true,\r\n id: 'id'\r\n },\r\n userauthorizations: {\r\n singular: 'userauthorization',\r\n plural: 'userauthorizations',\r\n paginated: true,\r\n id: ['userId', 'investorId', 'fundId', 'groupId'],\r\n createMethod: 'POST',\r\n updateMethod: 'POST'\r\n },\r\n categories: {\r\n singular: 'category',\r\n plural: 'categories',\r\n paginated: true,\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n subcategories: {\r\n singular: 'subcategory',\r\n plural: 'subcategories',\r\n paginated: true,\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'POST'\r\n },\r\n fundclasses: {\r\n plural: 'fundclasses',\r\n paginated: false,\r\n id: 'classCode'\r\n },\r\n fundinvestors: {\r\n singular: 'fundinvestor',\r\n plural: 'fundinvestors',\r\n paginated: true,\r\n getMany: false,\r\n id: ['fundId', 'investorId'],\r\n createMethod: 'PUT',\r\n updateMethod: 'PUT'\r\n },\r\n countries: {\r\n singular: 'country',\r\n plural: 'countries',\r\n id: 'code',\r\n paginated: true\r\n },\r\n states: {\r\n singular: 'state',\r\n plural: 'states',\r\n id: ['code', 'countryCode'],\r\n pluralId: 'code',\r\n paginated: true\r\n },\r\n documentpresets: {\r\n singular: 'documentpreset',\r\n plural: 'documentpresets',\r\n id: 'id',\r\n paginated: true,\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n documenttypes: {\r\n singular: 'documenttype',\r\n plural: 'documenttypes',\r\n id: 'id',\r\n paginated: true,\r\n createMethod: 'POST',\r\n updateMethod: 'POST'\r\n },\r\n documentwatermarks: {\r\n singular: 'documentwatermark',\r\n plural: 'documentwatermarks',\r\n id: 'id',\r\n paginated: true,\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n documentsecurities: {\r\n singular: 'documentsecurity',\r\n plural: 'documentsecurities',\r\n id: 'id',\r\n paginated: false\r\n },\r\n fundfamilies: {\r\n singular: 'fundfamily',\r\n plural: 'fundfamilies',\r\n paginated: true,\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n categorytypes: {\r\n plural: 'category/types',\r\n id: 'id',\r\n paginated: false\r\n },\r\n currencies: {\r\n plural: 'currencies',\r\n id: 'code',\r\n paginated: false\r\n },\r\n mailtemplates: {\r\n singular: 'mailtemplate',\r\n plural: 'mailtemplates',\r\n id: 'id',\r\n paginated: true,\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n splitmethods: {\r\n singular: 'splitmethod',\r\n plural: 'splitmethods',\r\n id: 'id',\r\n paginated: false,\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n documents: {\r\n plural: 'documents',\r\n id: 'id',\r\n paginated: true\r\n },\r\n resourceuploaddocuments: {\r\n plural: 'resourceupload/documents',\r\n id: 'id',\r\n paginated: false\r\n },\r\n tenantconfigurations: {\r\n singular: 'tenantconfiguration',\r\n plural: 'tenantconfigurations',\r\n paginated: true,\r\n id: 'id',\r\n updateMethod: 'PUT'\r\n },\r\n groups: {\r\n singular: 'group',\r\n plural: 'groups',\r\n id: 'id',\r\n paginated: true,\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n groupcategories: {\r\n singular: 'groupcategory',\r\n plural: 'groupcategories',\r\n paginated: true,\r\n id: ['groupId', 'categoryOrSubcategoryId'],\r\n createMethod: 'PUT',\r\n updateMethod: 'PUT'\r\n },\r\n fundterms: {\r\n singular: 'fund/termandcondition',\r\n plural: 'funds/termsandconditions',\r\n paginated: true,\r\n id: ['termId'],\r\n queryId: 'termId',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n fundtermsrelations: {\r\n singular: 'funds/termsandconditions/relations', // We are never creation one relation, and that allow us to useCreate and call the multiple api with an array\r\n plural: 'funds/termsandconditions/relations',\r\n paginated: true,\r\n id: ['fundTermId', 'fundId'],\r\n createMethod: 'POST'\r\n },\r\n categoryterms: {\r\n singular: 'category/termandcondition',\r\n plural: 'categories/termsandconditions',\r\n paginated: true,\r\n id: ['categoryTermId'],\r\n queryId: 'categoryTermId',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n categorytermsrelations: {\r\n singular: 'categories/termsandconditions/relations',\r\n plural: 'categories/termsandconditions/relations',\r\n paginated: true,\r\n id: ['categoryTermId', 'categoryId'],\r\n createMethod: 'POST'\r\n },\r\n distributionlist: {\r\n plural: 'resourceupload/distributionlist',\r\n paginated: false,\r\n id: 'id'\r\n },\r\n roles: {\r\n singular: 'role',\r\n plural: 'roles',\r\n paginated: false,\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n fundtags: {\r\n singular: 'fundtag',\r\n plural: 'fundtags',\r\n paginated: true,\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n investortags: {\r\n singular: 'investortag',\r\n plural: 'investortags',\r\n paginated: true,\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n fundinvestortags: {\r\n singular: 'fundinvestortag',\r\n plural: 'fundinvestortags',\r\n paginated: true,\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n authorities: {\r\n plural: 'roles/authorities',\r\n paginated: false,\r\n id: 'id'\r\n },\r\n userroles: {\r\n plural: 'roles/userroles',\r\n paginated: false,\r\n id: ['userId', 'roleId']\r\n },\r\n distributionlists: {\r\n singular: 'distributionlist',\r\n plural: 'distributionlists',\r\n paginated: true,\r\n id: 'id',\r\n createMethod: 'POST'\r\n },\r\n mfamethods: {\r\n plural: 'user/mfa/methods',\r\n paginated: false,\r\n id: 'mfaMethodName'\r\n },\r\n reports: {\r\n singular: 'adminreport',\r\n plural: 'adminreports',\r\n paginated: false,\r\n id: 'id'\r\n },\r\n emailarchives: {\r\n singular: 'emailarchive/emaildetails',\r\n plural: 'emailarchives',\r\n id: 'id',\r\n paginated: true\r\n },\r\n emailarchiveattachments: {\r\n singular: 'emailarchive/attachments',\r\n plural: 'emailarchive/attachments',\r\n id: 'id'\r\n },\r\n emailarchiverecipients: {\r\n singular: 'emailarchive/emailrecipients',\r\n plural: 'emailarchive/emailrecipients',\r\n id: ['userId', 'fundId', 'investorId'],\r\n paginated: true\r\n },\r\n distributionlistrecipients: {\r\n singular: 'distributionlist/recipients',\r\n plural: 'distributionlist/recipients',\r\n id: 'distributionListId',\r\n paginated: false\r\n },\r\n aliasUdfs: {\r\n singular: 'user/emailudf',\r\n plural: 'user/emailudf',\r\n updateMethod: 'PUT',\r\n id: 'id',\r\n paginated: false\r\n },\r\n investorcontacts: {\r\n plural: 'investor/contacts',\r\n paginated: true,\r\n id: ['investorId', 'userId']\r\n },\r\n primarycontacts: {\r\n plural: 'investor/primarycontacts',\r\n paginated: false,\r\n id: ['investorId', 'documentTypeId', 'type']\r\n },\r\n usernotifications: {\r\n plural: 'usernotifications',\r\n paginated: false,\r\n id: [\r\n 'fundId',\r\n 'investorId',\r\n 'documentTypeId',\r\n 'deliveryMethod',\r\n 'parameter'\r\n ],\r\n createMethod: 'PUT',\r\n updateMethod: 'PUT'\r\n },\r\n activities: {\r\n plural: 'activities',\r\n paginated: true,\r\n id: 'activityId'\r\n },\r\n userudfs: {\r\n singular: 'userudf',\r\n plural: 'userudfs',\r\n paginated: false,\r\n id: 'userId',\r\n queryId: 'userId',\r\n updateMethod: 'PUT'\r\n },\r\n investorudfs: {\r\n singular: 'investorudf',\r\n plural: 'investorudfs',\r\n paginated: false,\r\n id: 'investorId',\r\n queryId: 'investorId',\r\n updateMethod: 'PUT'\r\n },\r\n fundinvestorudfs: {\r\n singular: 'fundinvestorudf',\r\n plural: 'fundinvestorudfs',\r\n paginated: false,\r\n id: ['investorId', 'fundId'],\r\n updateMethod: 'PUT'\r\n },\r\n wireinstructions: {\r\n singular: 'wireinstruction',\r\n plural: 'wireinstructions',\r\n paginated: true,\r\n id: 'id',\r\n createMethod: 'POST',\r\n updateMethod: 'PUT'\r\n },\r\n investorcount: {\r\n singular: 'resourceuploads/investors/readcount',\r\n plural: 'resourceuploads/investors/readcount',\r\n pluralId: 'resourceUploadId',\r\n id: 'resourceUploadId',\r\n paginated: false\r\n },\r\n fundtagsassociations: {\r\n plural: 'fundtags/associations',\r\n paginated: false,\r\n id: ['fundTagId', 'fundId']\r\n },\r\n investortagsassociations: {\r\n plural: 'investortags/associations',\r\n paginated: false,\r\n id: ['investorTagId', 'investorId']\r\n },\r\n fundinvestortagsassociations: {\r\n plural: 'fundinvestortagsas/associations',\r\n paginated: false,\r\n id: ['fundInvestorTagId', 'fundId', 'investorId']\r\n }\r\n};\r\n\r\nexport default iccApis;\r\n","import axios from 'axios';\r\nimport jwtDecode from 'jwt-decode';\r\nimport {\r\n AUTH_CHECK,\r\n AUTH_ERROR,\r\n AUTH_LOGIN,\r\n AUTH_LOGOUT,\r\n AUTH_GET_PERMISSIONS\r\n} from 'react-admin';\r\n\r\nimport { getIcError } from './utils';\r\n\r\nconst API_URL = 'v1';\r\n\r\n// Token refresh timer\r\nconst REFRESH_TIMEOUT = 2 * 60 * 1000; // 2 minutes;\r\nlet refreshTimeout = undefined;\r\n\r\nconst startTokenRefresh = () => {\r\n refreshTimeout = setInterval(() => {\r\n const token = sessionStorage.getItem('token');\r\n const tenant = sessionStorage.getItem('tenant');\r\n var request = {\r\n method: 'GET',\r\n url: API_URL + '/user/auth',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'IC-USER-CLIENT': Buffer.from(tenant).toString('base64'),\r\n 'X-IC-ACCESS-TOKEN': token\r\n }\r\n };\r\n\r\n let error = undefined;\r\n return axios.request(request).then(response => {\r\n if (response.status !== 200) {\r\n error = response.statusText;\r\n }\r\n if (response.status === 404) {\r\n return 'Server not responding';\r\n }\r\n\r\n if (error !== undefined) {\r\n error = getIcError(response.data) || error;\r\n throw new Error(error);\r\n }\r\n sessionStorage.setItem('token', response.data.accessToken);\r\n });\r\n }, REFRESH_TIMEOUT);\r\n};\r\n\r\nconst stopTokenRefresh = () => {\r\n if (refreshTimeout !== undefined) {\r\n clearInterval(refreshTimeout);\r\n refreshTimeout = undefined;\r\n }\r\n};\r\n\r\nconst getPermissions = () => {\r\n const token = sessionStorage.getItem('token');\r\n const tenant = sessionStorage.getItem('tenant');\r\n\r\n // Get Authorities\r\n var authoritiesRequest = {\r\n method: 'GET',\r\n url: API_URL + '/authorities',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'IC-USER-CLIENT': Buffer.from(tenant).toString('base64'),\r\n 'X-IC-ACCESS-TOKEN': token\r\n }\r\n };\r\n\r\n let error = undefined;\r\n return axios.request(authoritiesRequest).then(response => {\r\n if (response.status !== 200) {\r\n error = response.statusText;\r\n }\r\n if (response.status === 404) {\r\n return 'Server not responding';\r\n }\r\n\r\n if (error !== undefined) {\r\n error = getIcError(response.data) || error;\r\n throw new Error(error);\r\n }\r\n\r\n return response.data;\r\n });\r\n};\r\n\r\nexport default (type, params) => {\r\n if (type === AUTH_LOGIN) {\r\n const { username, password, tenant } = params;\r\n sessionStorage.setItem('tenant', tenant);\r\n\r\n var request = {\r\n method: 'GET',\r\n url: API_URL + '/user/auth',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'IC-USER-CLIENT': Buffer.from(tenant).toString('base64'),\r\n 'IC-USER-ID': Buffer.from(username).toString('base64'),\r\n 'IC-USER-PASSWORD': Buffer.from(password).toString('base64')\r\n }\r\n };\r\n\r\n let error = undefined;\r\n return axios\r\n .request(request)\r\n .then(response => {\r\n if (response.status !== 200) {\r\n error = response.statusText;\r\n }\r\n\r\n if (error !== undefined) {\r\n error = getIcError(response.data) || error;\r\n throw new Error(error);\r\n }\r\n\r\n sessionStorage.setItem('token', response.data.accessToken);\r\n startTokenRefresh();\r\n })\r\n .catch(error => {\r\n if (error.response) {\r\n switch (error.response.status) {\r\n case 401:\r\n error.message = 'ra.auth.sign_in_error';\r\n break;\r\n case 504:\r\n error.message = 'ra.network._504';\r\n break;\r\n default:\r\n //error.message = 'ra.network.http_error';\r\n }\r\n }\r\n throw error;\r\n });\r\n }\r\n\r\n if (type === AUTH_LOGOUT) {\r\n sessionStorage.removeItem('token');\r\n sessionStorage.removeItem('tenant');\r\n\r\n stopTokenRefresh();\r\n\r\n return Promise.resolve();\r\n }\r\n if (type === AUTH_ERROR) {\r\n const status = params.status;\r\n if (status === 401 || status === 403) {\r\n sessionStorage.removeItem('token');\r\n sessionStorage.removeItem('tenant');\r\n\r\n return Promise.reject();\r\n }\r\n return Promise.resolve();\r\n }\r\n if (type === AUTH_CHECK) {\r\n // Check that token is there\r\n const token = sessionStorage.getItem('token');\r\n if (!token) {\r\n return Promise.reject();\r\n }\r\n // Test for token expiration\r\n const jwt = jwtDecode(token);\r\n var current_time = Date.now();\r\n if (!isNaN(jwt.exp) && jwt.exp * 1000 < current_time) {\r\n return Promise.reject();\r\n }\r\n // Everything OK\r\n return Promise.resolve();\r\n }\r\n if (type === AUTH_GET_PERMISSIONS) {\r\n const token = sessionStorage.getItem('token');\r\n if (!token) {\r\n return Promise.reject();\r\n }\r\n return getPermissions();\r\n }\r\n return Promise.reject('Unknown auth method ' + type);\r\n};\r\n","import { put, takeEvery, call, select } from 'redux-saga/effects';\r\nimport { showNotification } from 'react-admin';\r\nimport axios from 'axios';\r\nimport get from 'lodash/get';\r\nimport {\r\n getProfile,\r\n getProfileSuccess,\r\n getProfileFailure,\r\n resetProfile as resetProfileAction,\r\n types as profileTypes\r\n} from './profileActions';\r\n\r\nconst API_URL = 'v1';\r\n\r\n/**\r\n * Retrieve profile of the user connected\r\n * @param {*} action\r\n */\r\nexport function* retrieveProfile(action) {\r\n // Avoid to throw same action (GET and REFRESH)\r\n if (!action || action.type !== profileTypes.REFRESH_PROFILE) {\r\n yield put(getProfile());\r\n }\r\n const token = sessionStorage.getItem('token');\r\n const tenant = sessionStorage.getItem('tenant');\r\n\r\n // Call to /v1/user without a userId will fecth the logged in user profile\r\n var request = {\r\n method: 'GET',\r\n url: API_URL + '/user',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'IC-USER-CLIENT': Buffer.from(tenant).toString('base64'),\r\n 'X-IC-ACCESS-TOKEN': token\r\n }\r\n };\r\n\r\n try {\r\n const resp = yield call(axios.request, request);\r\n\r\n yield put(getProfileSuccess(resp.data));\r\n } catch (error) {\r\n let notId = 'ra.page.error';\r\n let param = {};\r\n const message = get(error, 'response.data.errorMessage');\r\n if (message) {\r\n notId = 'ra.notification.server';\r\n param = { messageArgs: { message: message } };\r\n }\r\n yield put(getProfileFailure(message));\r\n yield put(showNotification(notId, 'error', param));\r\n }\r\n}\r\n\r\n/**\r\n * Reset the profile when the user is logout\r\n */\r\nexport function* resetProfile() {\r\n const profile = yield select(state => state.profile.item);\r\n // If there is no profile anymore, avoid to dispatch an event to reset the profile again\r\n if (profile) {\r\n yield put(resetProfileAction());\r\n }\r\n}\r\n\r\n/**\r\n * Retrieve the profile of the user connected for the first time\r\n */\r\nexport function* firstRetrieveProfile() {\r\n const token = sessionStorage.getItem('token');\r\n const isLoading = yield select(state => state.profile.loading);\r\n const error = yield select(state => state.profile.error);\r\n const profile = yield select(state => state.profile.item);\r\n\r\n if (token && !isLoading && !profile && !error) {\r\n yield retrieveProfile();\r\n }\r\n}\r\n\r\n/**\r\n * Main Saga to manage the profile of the user connected\r\n */\r\nexport default function* profileSaga() {\r\n yield takeEvery(\r\n ({ type }) => type === 'RA/REGISTER_RESOURCE',\r\n firstRetrieveProfile\r\n );\r\n yield takeEvery('RA/CLEAR_STATE', resetProfile);\r\n yield takeEvery('REFRESH_PROFILE', retrieveProfile);\r\n}\r\n","import { encode } from './index';\r\n\r\nexport function caseOpenIc(options) {\r\n return key => (result, value) => {\r\n if (value === null || value === undefined || value?.length === 0) {\r\n return result;\r\n }\r\n\r\n let res;\r\n if (result.length === 0) {\r\n res = [\r\n [\r\n encode(key, options),\r\n '=',\r\n encodeURI('['),\r\n encode(value, options)\r\n ].join('')\r\n ];\r\n } else {\r\n result = result[0].substring(0, result[0].length - 3);\r\n res = [\r\n [result, encode(value, options)].join(options.arrayFormatSeparator)\r\n ];\r\n }\r\n res = res[0].concat(encodeURI(']'));\r\n return [res];\r\n };\r\n}\r\n","import { createTheme } from '@material-ui/core/styles';\r\n\r\nconst solstice = {\r\n // CF https://www.figma.com/file/XcS1SdVJAtrkloDi3P4iu73u/Fundation%2FColors?node-id=236%3A8\r\n branding: {\r\n brand: '#01579B'\r\n },\r\n component: {\r\n emphasized: '#2962FF',\r\n border: '1px solid #E0E0E0',\r\n backgroundHeader: '#F5F5F5',\r\n errorMain: '#f44336',\r\n errorLight: '#FFEBEE'\r\n },\r\n text: {\r\n baseText: '#424242',\r\n secondary: '#757575',\r\n tertiary: '#9E9E9E',\r\n disabled: '#757575'\r\n },\r\n typography: {\r\n fontSize: 14\r\n },\r\n spacing: {\r\n unit: 8\r\n }\r\n};\r\n\r\nexport const SolsticeTheme = createTheme({\r\n sidebar: {\r\n width: 272, // The default value is 240\r\n closedWidth: 48 // The default value is 55\r\n },\r\n palette: {\r\n contrastThreshold: 3,\r\n tonalOffset: 0.2,\r\n primary: {\r\n main: solstice.component.emphasized // Primary color used for main button\r\n },\r\n secondary: {\r\n main: solstice.branding.brand //Main dark blue color for solstice (top bar)\r\n },\r\n error: {\r\n main: solstice.component.errorMain,\r\n light: solstice.component.errorLight\r\n }\r\n },\r\n typography: {\r\n // Use the system font instead of the default Roboto font.\r\n fontFamily: ['\"Segoe UI\"', 'Arial', 'sans-serif'].join(','),\r\n fontSize: 14\r\n },\r\n text: {\r\n primary: solstice.text.baseText,\r\n secondary: solstice.text.secondary,\r\n disabled: solstice.text.disabled,\r\n hint: solstice.text.tertiary\r\n },\r\n shape: {\r\n borderRadius: 2\r\n },\r\n shadows: [\r\n //Remove all shadows\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none',\r\n 'none'\r\n ],\r\n overrides: {\r\n MuiList: {\r\n root: {\r\n 'background-color': 'white',\r\n '& .new-filter-item': { minWidth: '170px' }\r\n }\r\n },\r\n MuiListItemText: {\r\n inset: {\r\n '&:first-child': {\r\n paddingLeft: '33px'\r\n },\r\n paddingLeft: '33px'\r\n }\r\n },\r\n MuiSnackbarContent: {\r\n root: {\r\n color: '#424242'\r\n }\r\n },\r\n MuiButton: {\r\n root: {\r\n textTransform: 'capitalize',\r\n borderRadius: '2px'\r\n },\r\n label: {\r\n 'padding-right': '6.5px'\r\n }\r\n },\r\n MuiIconButton: {\r\n root: {\r\n width: '28px',\r\n height: '28px', //Reduce the height of the Icon button\r\n padding: '0px'\r\n }\r\n },\r\n MuiSwitch: {\r\n icon: {\r\n border: solstice.component.border\r\n },\r\n iconChecked: {\r\n 'border-color': solstice.branding.brand\r\n }\r\n },\r\n MuiCheckbox: {\r\n root: {}\r\n },\r\n PrivateSwitchBase: {\r\n root: {\r\n padding: 'inherit'\r\n }\r\n },\r\n MuiTab: {\r\n root: {\r\n 'text-transform': 'none'\r\n },\r\n wrapper: {\r\n 'font-size': solstice.typography.fontSize + '!important' //Force the font size here, would be good to have a more targeted CSS rule instead of important\r\n }\r\n },\r\n MuiTable: {\r\n root: {\r\n border: solstice.component.border,\r\n 'background-color': 'white'\r\n }\r\n },\r\n MuiTableRow: {\r\n head: {\r\n height: '30px'\r\n },\r\n root: {\r\n height: '30px'\r\n }\r\n },\r\n MuiTableSortLabel: {\r\n root: {\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n }\r\n },\r\n MuiTableCell: {\r\n body: {\r\n padding: '0 8px !important',\r\n maxWidth: '20vw',\r\n wordBreak: 'break-word'\r\n },\r\n head: {\r\n padding: '0 8px !important',\r\n color: solstice.text.secondary,\r\n 'background-color': `${solstice.component.backgroundHeader} !important`,\r\n height: '30px',\r\n border: solstice.component.border,\r\n 'font-size': solstice.typography.fontSize\r\n }\r\n },\r\n MuiTablePagination: {\r\n input: {\r\n border: 'none',\r\n 'background-color': 'transparent'\r\n },\r\n select: {\r\n paddingTop: '7px',\r\n 'font-size': solstice.typography.fontSize\r\n },\r\n selectRoot: {\r\n 'margin-right': '0'\r\n }\r\n },\r\n MuiDrawer: {\r\n docked: {\r\n 'background-color': 'white',\r\n 'border-right': solstice.component.border,\r\n overflow: 'hidden'\r\n }\r\n },\r\n MuiPaper: {\r\n root: {\r\n // Adds sticky bulk action toolbar when it opened\r\n \"&[class*='bulkActionsDisplayed'] [class*='RaBulkActionsToolbar']\": {\r\n top: '0px',\r\n position: 'sticky'\r\n },\r\n // Adds sticky header cell on table when the bulk action toolbar is opened\r\n \"&[class*='bulkActionsDisplayed'] [class*='RaDatagrid-headerCell']\": {\r\n top: '62px',\r\n position: 'sticky'\r\n },\r\n // Disables sticky header cell on sub-children when the bulk action toolbar is opened\r\n \"&[class*='bulkActionsDisplayed'] .show-page [class*='RaDatagrid-headerCell']\": {\r\n top: 'initial',\r\n position: 'static',\r\n zIndex: 'initial'\r\n }\r\n },\r\n elevation0: {\r\n height: 'inherit!important',\r\n marginTop: '0px !important'\r\n },\r\n elevation1: {\r\n 'background-color': 'transparent' // Used as background of edit and list\r\n },\r\n elevation2: {\r\n // Used for autocomplete menu\r\n 'background-color': 'white',\r\n border: solstice.component.border\r\n },\r\n elevation8: {\r\n 'box-shadow':\r\n '0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)'\r\n }\r\n },\r\n MuiPopover: {\r\n paper: {\r\n border: '1px solid #E0E0E0'\r\n }\r\n },\r\n MuiAutocomplete: {\r\n input: {\r\n padding: '5px 5px 6px !important'\r\n },\r\n popper: {\r\n backgroundColor: 'white',\r\n border: '1px solid #E0E0E0',\r\n 'box-shadow':\r\n '0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)'\r\n }\r\n },\r\n MuiInput: {\r\n root: {\r\n border: solstice.component.border,\r\n 'border-radius': '2px',\r\n 'background-color': 'white',\r\n minHeight: '30px'\r\n },\r\n input: {\r\n padding: '5px 5px 6px',\r\n 'font-size': solstice.typography.fontSize\r\n },\r\n underline: {\r\n 'border-bottom': solstice.component.border,\r\n '&:before': {\r\n borderBottom: 'none',\r\n 'border-bottom-width': '1px!important' //Always reduce the size of the bottom border of hover on a field\r\n }\r\n }\r\n },\r\n MuiInputBase: {\r\n input: {\r\n height: 'inherit'\r\n }\r\n },\r\n MuiInputLabel: {\r\n root: {\r\n 'z-index': '1',\r\n 'margin-left': '1px',\r\n color: solstice.text.secondary,\r\n fontSize: '14px'\r\n },\r\n formControl: {\r\n transform: 'none',\r\n 'font-size': solstice.typography.fontSize,\r\n 'line-height': '20px',\r\n top: '-8px'\r\n },\r\n shrink: {\r\n transform: 'none'\r\n },\r\n marginDense: {\r\n transform: 'none'\r\n }\r\n },\r\n MuiFormControl: {\r\n marginNormal: {\r\n 'margin-top': '-20px',\r\n 'margin-bottom': '0px'\r\n },\r\n root: {\r\n width: '100%'\r\n }\r\n },\r\n MuiListItemIcon: {\r\n root: {\r\n 'font-size': '20px',\r\n 'margin-right': '0px',\r\n 'padding-right': '1.2em'\r\n }\r\n },\r\n MuiSvgIcon: {\r\n root: {\r\n 'font-size': '20px'\r\n }\r\n },\r\n MuiSelect: {\r\n icon: {\r\n top: 'inherit'\r\n }\r\n },\r\n MuiTypography: {\r\n caption: {\r\n 'font-size': solstice.typography.fontSize\r\n },\r\n h5: {\r\n 'line-height': '24px',\r\n 'font-size': '18px',\r\n 'padding-top': '16px',\r\n 'font-weight': '500'\r\n },\r\n colorTextSecondary: {\r\n color: 'rgba(0, 0, 0, 0.75)'\r\n },\r\n h6: {\r\n fontSize: '18px'\r\n },\r\n body1: {\r\n 'font-size': '14px'\r\n }\r\n },\r\n AutocompleteInput: {\r\n suggestionsContainerOpen: {\r\n 'background-color': 'red'\r\n }\r\n },\r\n MuiDialog: {\r\n paperWidthFalse: {\r\n maxWidth: 'calc(100% - 32px) !important'\r\n },\r\n paperScrollPaper: {\r\n maxHeight: 'calc(100% - 32px) !important'\r\n },\r\n paper: {\r\n margin: '16px !important',\r\n '&[aria-labelledby=alert-dialog-title]': {\r\n '& div:nth-of-type(1)': {\r\n border: 0,\r\n paddingBottom: '7px'\r\n },\r\n '& div:nth-of-type(2)': {\r\n paddingTop: '7px',\r\n paddingBottom: '20px',\r\n backgroundColor: '#ffffff'\r\n },\r\n '& div:nth-of-type(3)': {\r\n 'flex-direction': 'row-reverse',\r\n 'justify-content': 'flex-start',\r\n border: 0,\r\n paddingTop: '20px',\r\n paddingBottom: '14.5px',\r\n '& button': {\r\n lineHeight: '14px',\r\n '& svg': { display: 'none' },\r\n '& span': { padding: 0 }\r\n },\r\n '& button:nth-of-type(1)': {\r\n border: '1px solid #E0E0E0',\r\n color: solstice.component.emphasized,\r\n margin: '0px 4px 0px 4px',\r\n padding: '6px 16px'\r\n },\r\n '& button:nth-of-type(2)': {\r\n border: '1px solid #2962FF',\r\n backgroundColor: '#2962FF',\r\n color: '#ffffff',\r\n margin: '0px 4px 0px 4px',\r\n padding: '6px 16px'\r\n }\r\n }\r\n }\r\n }\r\n },\r\n // Add white backgroundColor to Mui Dialog\r\n MuiDialogTitle: {\r\n root: {\r\n backgroundColor: 'white',\r\n padding: solstice.spacing.unit * 2,\r\n borderBottom: solstice.component.border\r\n }\r\n },\r\n MuiDialogContent: {\r\n root: {\r\n backgroundColor: '#FAFAFA',\r\n padding: solstice.spacing.unit * 2,\r\n '& .simple-form': {\r\n display: 'flex',\r\n flex: 1,\r\n height: '100%',\r\n width: '100%',\r\n '& > div': {\r\n width: '100%',\r\n // Override MuiCardContent inside SimpleForm\r\n padding: '0px !important',\r\n '& > div': {\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n }\r\n }\r\n }\r\n }\r\n },\r\n MuiDialogActions: {\r\n root: {\r\n backgroundColor: 'white',\r\n margin: '0',\r\n padding: '8px 12px',\r\n borderTop: solstice.component.border,\r\n justifyContent: 'flex-end'\r\n }\r\n },\r\n MuiDialogContentText: {\r\n root: {\r\n marginBottom: '0'\r\n }\r\n },\r\n MuiMenu: {\r\n paper: {\r\n maxHeight: 'calc(50% - 32px)',\r\n maxWidth: '50%'\r\n }\r\n },\r\n MuiMenuItem: {\r\n root: {\r\n 'line-height': '1.4em',\r\n fontSize: solstice.typography.fontSize,\r\n paddingLeft: '8px',\r\n paddingRight: '8px',\r\n paddingTop: '6px',\r\n paddingBottom: '6px',\r\n '&$selected': {\r\n backgroundColor: '#E3F2FD !important'\r\n }\r\n }\r\n },\r\n MuiStepIcon: {\r\n root: {\r\n width: '24px',\r\n height: '24px',\r\n color: '#757575'\r\n },\r\n text: {\r\n fontSize: '0.75rem' //It has to be that time to properly fit in the circle\r\n },\r\n completed: {\r\n color: '#00A645!important'\r\n }\r\n },\r\n MuiStepLabel: {\r\n iconContainer: {\r\n paddingRight: '4px'\r\n },\r\n label: {\r\n fontSize: '14px'\r\n }\r\n },\r\n MuiStepConnector: {\r\n root: {\r\n minWidth: '32px'\r\n }\r\n },\r\n MuiAvatar: {\r\n root: {\r\n margin: '8px'\r\n }\r\n },\r\n MuiTabs: {\r\n indicator: {\r\n height: '3px' // Selected Tab underline thickness\r\n }\r\n },\r\n MuiFormGroup: {\r\n row: {\r\n marginLeft: '9px',\r\n marginTop: '12px',\r\n '& label': {\r\n marginRight: '35px'\r\n }\r\n }\r\n },\r\n RaListToolbar: {\r\n toolbar: {\r\n alignItems: 'inherit'\r\n }\r\n },\r\n RaNullableBooleanInput: {\r\n input: {\r\n width: '100%'\r\n }\r\n },\r\n RaFilter: {\r\n form: {\r\n marginTop: 0,\r\n minHeight: '64px',\r\n '& > div': {\r\n alignItems: 'center',\r\n '& .select': {\r\n width: '100%'\r\n },\r\n '& .hide-filter': {\r\n marginTop: '17px'\r\n }\r\n }\r\n },\r\n button: {\r\n border: '1px solid',\r\n borderColor: '#E0E0E0',\r\n borderRadius: '2px',\r\n backgroundColor: 'white',\r\n marginTop: '8px',\r\n minHeight: '28px',\r\n width: '170px',\r\n '& svg': { display: 'none' },\r\n '& button': { paddingTop: '2px', fontSize: '14px' }\r\n }\r\n },\r\n RaAutocompleteArrayInput: {\r\n container: {\r\n '& > div > label': {\r\n marginTop: '8px',\r\n fontSize: '16px',\r\n '& > span:before': {\r\n zIndex: 10,\r\n top: 8,\r\n left: 430,\r\n position: 'absolute',\r\n height: 0,\r\n width: 0,\r\n display: 'inline-block',\r\n borderTop: '5px solid #757575',\r\n borderRight: '5px solid transparent',\r\n borderLeft: '5px solid transparent',\r\n content: '\" \"'\r\n }\r\n },\r\n '& > div > div:before ': { borderBottom: 'none' }\r\n },\r\n suggestionsContainer: {\r\n backgroundColor: '#FFF',\r\n border: '1px solid #E0E0E0'\r\n },\r\n chip: {\r\n color: '#212121',\r\n fontSize: '12px',\r\n textDecoration: 'none',\r\n boxSizing: 'border-box',\r\n backgroundColor: '#F5F5F5 !important',\r\n border: '1px solid #E0E0E0',\r\n borderRadius: '2px',\r\n padding: '0 5px',\r\n marginLeft: 0,\r\n height: '23px',\r\n '& > span': {\r\n paddingLeft: 0\r\n },\r\n '& > svg': {\r\n width: '17px',\r\n height: '17px'\r\n }\r\n },\r\n chipContainerFilled: {\r\n margin: '5px'\r\n },\r\n inputRootFilled: {\r\n backgroundColor: '#FFF !important',\r\n border: '1px solid #E0E0E0',\r\n fontSize: '14px',\r\n padding: 0,\r\n transition: 'all .3s ease',\r\n '&:hover': {\r\n backgroundColor: '#FFF'\r\n }\r\n },\r\n inputInput: { padding: '5px 0px' }\r\n },\r\n RaSimpleFormIterator: {\r\n line: {\r\n borderBottom: 'none',\r\n '& .ra-input > div': {\r\n marginTop: 0,\r\n width: '100%'\r\n }\r\n },\r\n indexContainer: {\r\n color: '#757575',\r\n paddingTop: '5px'\r\n },\r\n action: {\r\n paddingTop: 0\r\n }\r\n }\r\n }\r\n});\r\n","import React from 'react';\r\n\r\nexport const ChevronDownIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const ChevronUpIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import React, { Fragment, Component } from 'react';\r\nimport List from '@material-ui/core/List';\r\nimport ListItem from '@material-ui/core/ListItem';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\nimport ListItemText from '@material-ui/core/ListItemText';\r\nimport Divider from '@material-ui/core/Divider';\r\nimport Collapse from '@material-ui/core/Collapse';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { ChevronDownIcon } from '../themes/icons/ChevronDownIcon';\r\nimport { ChevronUpIcon } from '../themes/icons/ChevronUpIcon';\r\n\r\nconst styles = {\r\n listItem: {\r\n paddingLeft: '1.25rem',\r\n 'white-space': 'nowrap'\r\n },\r\n listItemText: {\r\n paddingLeft: '8px',\r\n paddingRight: '8px',\r\n fontSize: '14px',\r\n minWidth: 'auto'\r\n },\r\n sidebarIsOpen: {\r\n paddingLeft: 0,\r\n transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms'\r\n },\r\n sidebarIsClosed: {\r\n paddingLeft: 0,\r\n transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms'\r\n },\r\n iconContainer: {\r\n width: '20px',\r\n minWidth: '20px',\r\n minHeight: '20px',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n icon: {\r\n minWidth: '14px',\r\n paddingRight: 0\r\n },\r\n listItemIcon: {\r\n fontSize: '16px',\r\n minWidth: '20px',\r\n paddingRight: 0\r\n }\r\n};\r\n\r\nclass SubMenu extends Component {\r\n render() {\r\n const {\r\n handleToggle,\r\n sidebarIsOpen,\r\n isOpen,\r\n name,\r\n icon,\r\n classes,\r\n children\r\n } = this.props;\r\n\r\n return (\r\n \r\n \r\n
\r\n {icon}\r\n
\r\n \r\n \r\n {isOpen ? : }\r\n \r\n \r\n \r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(SubMenu);\r\n","import React from 'react';\r\n\r\nexport const ChevronLeftIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const ChevronRightIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import { useCallback } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport get from 'lodash/get';\r\n\r\nimport { refreshProfile as refreshProfileAction } from '../providers/customResources/profile/profileActions';\r\n\r\n/**\r\n * Custom hook to get state of the profile stored in redux\r\n * Loading and error states are managed by redux and saga\r\n */\r\nexport const useProfile = () => {\r\n const dispatch = useDispatch();\r\n const profile = useSelector(state => get(state, 'profile.item'));\r\n const loading = useSelector(state => get(state, 'profile.loading'));\r\n const error = useSelector(state => get(state, 'profile.error'));\r\n\r\n /**\r\n * Force the refresh for the profile\r\n */\r\n const refreshProfile = useCallback(() => {\r\n dispatch(refreshProfileAction());\r\n }, [dispatch]);\r\n\r\n return {\r\n profile,\r\n loading,\r\n error,\r\n refreshProfile\r\n };\r\n};\r\n","import React, { useCallback } from 'react';\r\nimport { ChevronLeftIcon } from '../themes/icons/ChevronLeftIcon';\r\nimport { ChevronRightIcon } from '../themes/icons/ChevronRightIcon';\r\nimport { useProfile } from '../hooks/UseProfile';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport classnames from 'classnames';\r\n\r\nconst useStyles = makeStyles({\r\n toggleButton: {\r\n backgroundColor: 'white',\r\n height: '40px',\r\n cursor: 'pointer',\r\n position: 'fixed',\r\n bottom: '15px',\r\n borderTop: '1px solid rgba(0, 0, 0, 0.12)',\r\n borderRight: '1px solid rgba(0, 0, 0, 0.12)',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n transition: 'width 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms'\r\n },\r\n toggleButtonActive: {\r\n width: '272px'\r\n },\r\n toggleButtonInactive: {\r\n width: '48px'\r\n },\r\n version: {\r\n display: 'flex',\r\n width: 'inherit',\r\n bottom: '1px',\r\n position: 'fixed',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: '#9E9E9E',\r\n fontSize: '10px',\r\n fontFamily: 'Segoe UI',\r\n borderRight: '1px solid rgba(0, 0, 0, 0.12)',\r\n backgroundColor: 'white',\r\n height: '16px'\r\n },\r\n chevron: {\r\n color: '#757575',\r\n transform: 'scale(0.7)'\r\n },\r\n bottomIcon: {\r\n lineHeight: '40px'\r\n }\r\n});\r\n\r\nexport const CollapseButton = props => {\r\n const { profile } = useProfile();\r\n const classes = useStyles();\r\n\r\n const shouldDisplayVersion = useCallback(() => {\r\n if (\r\n props.open &&\r\n profile &&\r\n (profile.userType === 'SUPER_ADMIN' || profile.userType === 'FUND_ADMIN')\r\n ) {\r\n return `${process.env.REACT_APP_VERSION} ${process.env.REACT_APP_BUILD_NUMBER}`;\r\n }\r\n }, [profile, props.open]);\r\n\r\n return (\r\n props.setVisibility(!props.open)}\r\n >\r\n
\r\n {props.open ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
{shouldDisplayVersion()}
\r\n \r\n );\r\n};\r\n","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport inflection from 'inflection';\r\nimport {\r\n getResources,\r\n setSidebarVisibility,\r\n MenuItemLink,\r\n withTranslate\r\n} from 'react-admin';\r\nimport { withRouter } from 'react-router';\r\n\r\nimport classnames from 'classnames';\r\nimport { withStyles, createStyles } from '@material-ui/core/styles';\r\n\r\nimport { connect } from 'react-redux';\r\nimport SubMenu from './SubMenu';\r\n\r\nimport { CollapseButton } from './CollapseButton';\r\n\r\nconst styles = theme =>\r\n createStyles({\r\n root: {\r\n color: '#424242',\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n borderLeft: '4px solid transparent',\r\n paddingLeft: '16px',\r\n paddingRight: '16px',\r\n paddingTop: '8px',\r\n paddingBottom: '8px',\r\n '& div': {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n paddingRight: '0px',\r\n minWidth: '28px'\r\n },\r\n '& span': {\r\n minWidth: '20px',\r\n minHeight: '20px',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n alignItems: 'center'\r\n }\r\n },\r\n active: {\r\n color: '#424242',\r\n 'border-left': '4px solid',\r\n 'border-color': theme.palette.secondary.main,\r\n 'background-color': '#E3F2FD'\r\n },\r\n icon: { color: '#757575', height: '1.16em' }\r\n });\r\nconst subMenuText = {\r\n sidebarOpened: {\r\n paddingLeft: '2rem',\r\n transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms'\r\n },\r\n sidebarClosed: {\r\n paddingLeft: '1rem',\r\n transition: 'padding-left 195ms cubic-bezier(0.4, 0, 0.6, 1) 0ms'\r\n }\r\n};\r\n\r\nconst menuStyle = {\r\n width: 'inherit',\r\n height: 'inherit'\r\n};\r\n\r\nconst translatedResourceName = (resource, translate) => {\r\n const name = translate(`resources.${resource.name}.name`, {\r\n smart_count: 2,\r\n _:\r\n resource.options && resource.options.label\r\n ? translate(resource.options.label, {\r\n smart_count: 2,\r\n _: resource.options.label\r\n })\r\n : inflection.humanize(inflection.pluralize(resource.name))\r\n });\r\n return name;\r\n};\r\n\r\nconst MENU_STATE_KEY = 'menustate';\r\n\r\nclass SolsticeMenu extends Component {\r\n static propTypes = {\r\n onMenuClick: PropTypes.func,\r\n logout: PropTypes.object,\r\n classes: PropTypes.object.isRequired,\r\n className: PropTypes.string\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // Get saved menu state from local storage\r\n this.state = {\r\n menu: {}\r\n };\r\n const menuState = sessionStorage.getItem(MENU_STATE_KEY);\r\n if (menuState !== null) {\r\n try {\r\n this.state.menu = JSON.parse(menuState);\r\n } catch (e) {\r\n // Wrong JSON format, do nothing\r\n }\r\n }\r\n }\r\n\r\n componentDidMount = () => {\r\n // Get menu state from initial route\r\n this.onRouteChanged(this.props.resources, this.props.location.pathname);\r\n };\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.location.pathname !== prevProps.location.pathname) {\r\n // New route, update menu state\r\n this.onRouteChanged(this.props.resources, this.props.location.pathname);\r\n }\r\n }\r\n\r\n /**\r\n * Route has changed, update menu state\r\n */\r\n onRouteChanged = (resources, nextLocation) => {\r\n // Find 1st selected resource\r\n const resource = resources.find(\r\n resource =>\r\n resource.name === nextLocation.substr(1) &&\r\n resource.options.group !== undefined\r\n );\r\n // Select submenu containing this resource\r\n if (resource !== undefined && resource.options.group) {\r\n this.setState(\r\n {\r\n menu: {\r\n ...this.state.menu,\r\n [resource.options.group]: true\r\n }\r\n },\r\n () => this.saveStore()\r\n );\r\n }\r\n };\r\n\r\n /**\r\n * Save menu state to local storage\r\n */\r\n saveStore = () => {\r\n const json = JSON.stringify(this.state.menu);\r\n sessionStorage.setItem(MENU_STATE_KEY, json);\r\n };\r\n\r\n /**\r\n * Toggle menu open in state\r\n */\r\n handleToggle = group => {\r\n this.setState(\r\n {\r\n menu: {\r\n ...this.state.menu,\r\n [group]: !this.state.menu[group]\r\n }\r\n },\r\n () => this.saveStore()\r\n );\r\n };\r\n\r\n /**\r\n * Build menu tree from resource list\r\n * @param {*} resources\r\n */\r\n buildMenuTree(resources) {\r\n // Index group by group name\r\n const groups = {};\r\n\r\n // Build the menu tree\r\n return resources\r\n .filter(resource => resource.hasList)\r\n .reduce((menu, resource) => {\r\n if (resource.options.group !== undefined) {\r\n const { group, groupIcon } = resource.options;\r\n let groupMenu = groups[group];\r\n if (groupMenu === undefined) {\r\n groupMenu = {\r\n label: group,\r\n groupIcon: groupIcon,\r\n children: [resource]\r\n };\r\n groups[group] = groupMenu;\r\n menu.push(groupMenu);\r\n } else {\r\n groupMenu.children.push(resource);\r\n }\r\n } else {\r\n menu.push(resource);\r\n }\r\n return menu;\r\n }, []);\r\n }\r\n\r\n render() {\r\n const {\r\n onMenuClick,\r\n classes,\r\n className,\r\n dense,\r\n resources,\r\n translate,\r\n open,\r\n setSidebarVisibility\r\n } = this.props;\r\n\r\n const tree = this.buildMenuTree(resources);\r\n return (\r\n
\r\n {tree.map(resource => {\r\n // Top level menu item\r\n if (resource.children === undefined) {\r\n return (\r\n \r\n ) : null\r\n }\r\n onClick={onMenuClick}\r\n dense={dense}\r\n />\r\n );\r\n } else {\r\n // Sub-menu with children\r\n return (\r\n this.handleToggle(resource.label)}\r\n isOpen={this.state.menu[resource.label]}\r\n sidebarIsOpen={open}\r\n name={resource.label}\r\n key={resource.label}\r\n icon={resource.groupIcon}\r\n style={{ rgba: '(0, 0, 0, 80)' }}\r\n >\r\n {resource.children.map(child => (\r\n \r\n ) : null\r\n }\r\n onClick={onMenuClick}\r\n dense={dense}\r\n style={\r\n open\r\n ? subMenuText.sidebarOpened\r\n : subMenuText.sidebarClosed\r\n }\r\n />\r\n ))}\r\n \r\n );\r\n }\r\n })}\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nconst mapStateToProps = state => ({\r\n open: state.admin.ui.sidebarOpen,\r\n resources: getResources(state),\r\n pathname: state.router.location.pathname // used to force redraw on navigation\r\n});\r\n\r\nexport default withTranslate(\r\n connect(mapStateToProps, { setSidebarVisibility })(\r\n withRouter(withStyles(styles)(SolsticeMenu))\r\n )\r\n);\r\n","import React from 'react';\r\n\r\nexport const ErrorIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import React, { useCallback, useEffect, useState } from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Snackbar, { SnackbarProps } from '@material-ui/core/Snackbar';\r\nimport SnackbarContent from '@material-ui/core/SnackbarContent';\r\nimport { makeStyles, Theme } from '@material-ui/core/styles';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport {\r\n complete,\r\n getNotification,\r\n hideNotification,\r\n undo,\r\n undoableEventEmitter,\r\n useTranslate\r\n} from 'react-admin';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport clsx from 'clsx';\r\n\r\nimport { SuccessIcon } from '../../../themes/icons/SuccessIcon';\r\nimport { ErrorIcon } from '../../../themes/icons/ErrorIcon';\r\n\r\nexport interface NotificationProps extends Omit {\r\n type?: string;\r\n autoHideDuration?: number;\r\n multiLine?: boolean;\r\n}\r\n\r\nconst variantIcon = {\r\n warning: ErrorIcon, // in the future maybe WarningIcon\r\n error: ErrorIcon,\r\n info: SuccessIcon,\r\n customWarning: ErrorIcon,\r\n forkedWarning: ErrorIcon\r\n};\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n success: {\r\n backgroundColor: theme.palette.success.main,\r\n color: theme.palette.success.contrastText\r\n },\r\n error: {\r\n backgroundColor: '#FFEBEE',\r\n border: '1px solid #D50000',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px'\r\n },\r\n info: {\r\n backgroundColor: '#E8F5E9',\r\n border: '1px solid #00A645',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px'\r\n },\r\n warning: {\r\n backgroundColor: '#FFEBEE',\r\n border: '1px solid #D50000',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px'\r\n },\r\n forkedWarning: {\r\n backgroundColor: '#FFF4E5',\r\n border: '1px solid #FFA500',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px'\r\n },\r\n customWarning: {\r\n backgroundColor: '#FFA500',\r\n border: '1px solid #FFA500',\r\n boxSizing: 'border-box',\r\n borderRadius: '2px'\r\n },\r\n undo: (props: NotificationProps) => ({\r\n color:\r\n props.type === 'success'\r\n ? theme.palette.success.contrastText\r\n : theme.palette.primary.light\r\n }),\r\n multiLine: {\r\n whiteSpace: 'pre-wrap'\r\n },\r\n icon: {\r\n fontSize: 20,\r\n marginRight: '20px'\r\n },\r\n iconVariant: {\r\n opacity: 0.9\r\n },\r\n errorMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginRight: '10px',\r\n color: '#D50000'\r\n },\r\n infoMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginRight: '10px',\r\n color: '#008437'\r\n },\r\n warningMessage: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginRight: '10px',\r\n color: '#FFA500'\r\n },\r\n notificationContent: {\r\n display: 'flex'\r\n }\r\n}));\r\n\r\nconst Notification = (props: NotificationProps) => {\r\n const {\r\n classes: classesOverride,\r\n type,\r\n className,\r\n autoHideDuration,\r\n multiLine,\r\n ...rest\r\n } = props;\r\n const [open, setOpen] = useState(false);\r\n const notification = useSelector(getNotification);\r\n const dispatch = useDispatch();\r\n const translate = useTranslate();\r\n const styles = useStyles({});\r\n let notificationType = (notification && notification.type) || type;\r\n const messageArgs = (notification && notification.messageArgs) || null;\r\n //only explicitly set New Admin custom warnings will be orange, otherwise red\r\n if (messageArgs && messageArgs.isNewAdminCustomWarning) {\r\n notificationType = 'customWarning';\r\n } else if (messageArgs && messageArgs.isForkedWarning) {\r\n notificationType = 'forkedWarning';\r\n }\r\n const Icon = variantIcon[notificationType];\r\n\r\n let messageStyle = styles.infoMessage;\r\n if (\r\n notificationType === 'customWarning' ||\r\n notificationType === 'forkedWarning'\r\n ) {\r\n messageStyle = styles.warningMessage;\r\n } else if (notificationType !== 'info') {\r\n messageStyle = styles.errorMessage;\r\n }\r\n\r\n useEffect(() => {\r\n setOpen(!!notification);\r\n }, [notification]);\r\n\r\n const handleRequestClose = useCallback(() => {\r\n setOpen(false);\r\n }, [setOpen]);\r\n\r\n const handleExited = useCallback(() => {\r\n if (notification && notification.undoable) {\r\n dispatch(complete());\r\n undoableEventEmitter.emit('end', { isUndo: false });\r\n }\r\n dispatch(hideNotification());\r\n }, [dispatch, notification]);\r\n\r\n const handleUndo = useCallback(() => {\r\n dispatch(undo());\r\n undoableEventEmitter.emit('end', { isUndo: true });\r\n }, [dispatch]);\r\n\r\n if (!notification) return null;\r\n\r\n return (\r\n \r\n \r\n {translate('ra.action.undo')}\r\n \r\n ) : null\r\n }\r\n {...rest}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n {notification &&\r\n notification.message &&\r\n translate(notification.message, notification.messageArgs)}\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nNotification.propTypes = {\r\n type: PropTypes.string,\r\n autoHideDuration: PropTypes.number,\r\n multiLine: PropTypes.bool\r\n};\r\n\r\nNotification.defaultProps = {\r\n type: 'info',\r\n autoHideDuration: 10000,\r\n multiLine: false\r\n};\r\n\r\nexport default Notification;\r\n","import React from 'react';\r\n\r\nexport const SuccessIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport { connect } from 'react-redux';\r\nimport { Responsive, userLogout as userLogoutAction } from 'react-admin';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Button from '@material-ui/core/Button';\r\nimport ExitIcon from '@material-ui/icons/PowerSettingsNew';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { Typography } from '@material-ui/core/';\r\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\r\n\r\nconst styles = {\r\n root: {\r\n padding: '5px 10px',\r\n color: '#ffffff',\r\n margin: '10px 24px'\r\n },\r\n smallMenuItem: {\r\n textTransform: 'none'\r\n },\r\n icon: {\r\n minWidth: '10px',\r\n color: '#ffffff',\r\n paddingRight: '1em'\r\n }\r\n};\r\n\r\nconst SolsticeLogoutButton = withStyles(styles)(({ classes, userLogout }) => (\r\n \r\n \r\n \r\n \r\n \r\n Logout\r\n \r\n \r\n }\r\n medium={\r\n \r\n }\r\n />\r\n));\r\n\r\nconst mapDispatchToProps = dispatch => ({\r\n userLogout: () => {\r\n return dispatch(userLogoutAction());\r\n }\r\n});\r\n\r\nexport default connect(undefined, mapDispatchToProps)(SolsticeLogoutButton);\r\n","import React from 'react';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport SolsticeLogoutButton from './SolsticeLogoutButton';\r\nimport { runningInPortal } from '../utils/IcxPortal';\r\nimport { isDevMode } from '../utils';\r\n\r\nconst SolsticeAppBar = ({ classes, ...props }) => {\r\n return (\r\n \r\n {isDevMode() && !runningInPortal() && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SolsticeAppBar;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Log API\r\n */\r\nclass LogApi extends ApiBase {\r\n async sendClientlogs(payload) {\r\n const request = {\r\n url: `${this.API_URL}/jslogs`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(payload)\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.status;\r\n }\r\n}\r\n\r\nexport default new LogApi();\r\n","import { useRef, useEffect, useCallback } from 'react';\r\nimport { useNotify } from 'react-admin';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport log, { ROARR } from 'roarr';\r\nimport moment from 'moment';\r\n\r\nimport LogApi from '../apis/LogApi';\r\nimport { getIcError } from '../providers/utils';\r\n/**\r\n * Custom hook to activate \"Roarr\" logs and catch no render errors and log them to splunk by calling POST v1/jslogs.\r\n * This hook will display an error notification as well with an UUID that can be used to identify\r\n * and find the log easily in splunk.\r\n */\r\nexport const useErrorLogger = () => {\r\n const logRef = useRef({});\r\n const notify = useNotify();\r\n\r\n const configRoarrLog = useCallback(() => {\r\n ROARR.write = message => {\r\n try {\r\n const payload = JSON.parse(message);\r\n if (\r\n logRef.current.message !== payload.message ||\r\n logRef.current.stacktrace !== payload.context.stacktrace\r\n ) {\r\n // Log Levels: 10 TRACE, 20\tDEBUG, 30 INFO, 40 WARN, 50\tERROR, 60 FATAL\r\n const level =\r\n logLevel.find(x => x.id === payload.context.logLevel) || {};\r\n if (payload.context.logLevel >= 50) {\r\n console.error(payload);\r\n const logId = uuidv4();\r\n LogApi.sendClientlogs([\r\n {\r\n logId,\r\n level: level.name,\r\n message: payload.message,\r\n time: moment(payload.time).toISOString(),\r\n stacktrace: payload.context.stacktrace,\r\n location: window.location?.href,\r\n tags: payload.context.tags\r\n }\r\n ]).catch(err => {\r\n console.error('Server error: ' + getIcError(err));\r\n });\r\n notify('ra.log.error', {\r\n type: 'error',\r\n messageArgs: {\r\n logId: logId,\r\n message: payload.message\r\n }\r\n });\r\n } else if (payload.context.logLevel === 40) {\r\n console.warn(payload);\r\n } else {\r\n console.log(payload);\r\n }\r\n // Set current log information to the logRef so we can avoid logging the same error more the once\r\n logRef.current = {\r\n message: payload.message,\r\n stacktrace: payload.context.stacktrace\r\n };\r\n }\r\n } catch (error) {\r\n console.error('Error occurred while executing \"Roarr\" logs: ', error);\r\n }\r\n };\r\n }, [notify]);\r\n\r\n const onError = useCallback(() => {\r\n window.onerror = function(message, src, line, col, error) {\r\n // Avoid logging the render errors since it's handled with React Error Boundaries (look into SolsticLayout.js -> componentDidCatch) and it has better stack info\r\n if (error.stack && !error.stack.includes('at render')) {\r\n // Log the error with \"Roarr\" => sending the log to Splunk by calling POST v1/jslogs\r\n log.error(\r\n { ...error, stacktrace: error.stack, tags: 'Events Error' },\r\n `${error.message}`\r\n );\r\n }\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n configRoarrLog();\r\n onError();\r\n }, [onError, configRoarrLog]);\r\n\r\n return {};\r\n};\r\n\r\nconst logLevel = [\r\n { id: 10, name: 'TRACE' },\r\n { id: 20, name: 'DEBUG' },\r\n { id: 30, name: 'INFO' },\r\n { id: 40, name: 'WARN' },\r\n { id: 50, name: 'ERROR' },\r\n { id: 60, name: 'FATAL' }\r\n];\r\n","import {\r\n createTheme,\r\n createStyles,\r\n MuiThemeProvider,\r\n withStyles\r\n} from '@material-ui/core/styles';\r\nimport classnames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport React, { Component, createElement, useState, useEffect } from 'react';\r\nimport { Error, Sidebar } from 'react-admin';\r\nimport { connect } from 'react-redux';\r\nimport { withRouter } from 'react-router';\r\nimport log from 'roarr';\r\n\r\nimport { SolsticeTheme } from '../themes/SolsticeTheme';\r\nimport Menu from './SolsticeMenu';\r\nimport Notification from './forked/layout/Notification';\r\nimport AppBar from './SolsticeAppBar';\r\nimport { useErrorLogger } from '../hooks/useErrorLogger';\r\n\r\nconst styles = theme =>\r\n createStyles({\r\n root: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n zIndex: 1,\r\n minHeight: '100vh',\r\n backgroundColor: theme.palette.background.default,\r\n position: 'relative',\r\n minWidth: 'fit-content',\r\n width: '100%'\r\n },\r\n appFrame: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexGrow: 1,\r\n minHeight: '100vh'\r\n },\r\n contentWithSidebar: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n maxWidth: '100vw'\r\n },\r\n content: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n flexBasis: 0,\r\n padding: 0,\r\n overflowY: 'auto'\r\n },\r\n customHeader: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n width: '100%',\r\n height: '100%',\r\n overflow: 'hidden'\r\n }\r\n });\r\n\r\nconst sanitizeRestProps = ({\r\n staticContext,\r\n history,\r\n match,\r\n sidebar,\r\n ...props\r\n}) => props;\r\n\r\nconst sideBarStyles = {\r\n drawerPaper: {\r\n position: 'static',\r\n maxHeight: 'calc(100vh - 40px)',\r\n minWidth: 'fit-content',\r\n marginTop: 0,\r\n '& > div': {\r\n position: 'static'\r\n }\r\n }\r\n};\r\nconst solsticeSidebar = withStyles(sideBarStyles)(({ classes, ...props }) => (\r\n \r\n));\r\n\r\nclass CustomLayout extends Component {\r\n state = { hasError: false, errorMessage: null, errorInfo: null };\r\n\r\n componentDidCatch(errorMessage, errorInfo) {\r\n // Log the error with \"Roarr\" => sending the log to the Splunk by calling POST v1/jslogs\r\n log.error(\r\n {\r\n ...errorInfo,\r\n stacktrace: errorInfo.componentStack,\r\n tags: 'React Error Boundaries, SWW'\r\n },\r\n `${errorMessage}`\r\n );\r\n this.setState({ hasError: true, errorMessage, errorInfo });\r\n }\r\n\r\n render() {\r\n const {\r\n appBar,\r\n children,\r\n classes,\r\n className,\r\n customRoutes,\r\n error,\r\n dashboard,\r\n location,\r\n logout,\r\n menu,\r\n notification,\r\n open,\r\n title,\r\n ...props\r\n } = this.props;\r\n const { hasError, errorMessage, errorInfo } = this.state;\r\n const activated = location.pathname !== '/notactivated';\r\n\r\n return (\r\n \r\n
\r\n
\r\n {activated &&\r\n createElement(solsticeSidebar, {\r\n children: createElement(menu, {\r\n logout,\r\n hasDashboard: !!dashboard\r\n })\r\n })}\r\n
\r\n {createElement(appBar, { title, open })}\r\n
\r\n {hasError\r\n ? createElement(error, {\r\n error: errorMessage,\r\n errorInfo,\r\n title\r\n })\r\n : children}\r\n
\r\n
\r\n
\r\n {createElement(notification)}\r\n
\r\n \r\n );\r\n }\r\n}\r\n\r\nconst componentPropType = PropTypes.oneOfType([\r\n PropTypes.func,\r\n PropTypes.string\r\n]);\r\n\r\nCustomLayout.propTypes = {\r\n appBar: componentPropType,\r\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\r\n classes: PropTypes.object,\r\n className: PropTypes.string,\r\n customRoutes: PropTypes.array,\r\n dashboard: componentPropType,\r\n error: componentPropType,\r\n history: PropTypes.object.isRequired,\r\n logout: PropTypes.oneOfType([\r\n PropTypes.node,\r\n PropTypes.func,\r\n PropTypes.string\r\n ]),\r\n menu: componentPropType,\r\n notification: componentPropType,\r\n open: PropTypes.bool,\r\n sidebar: componentPropType,\r\n title: PropTypes.node.isRequired\r\n};\r\n\r\nCustomLayout.defaultProps = {\r\n appBar: AppBar,\r\n error: Error,\r\n menu: Menu,\r\n notification: Notification,\r\n sidebar: Sidebar\r\n};\r\n\r\nconst mapStateToProps = state => ({\r\n open: state.admin.ui.sidebarOpen\r\n});\r\n\r\nconst EnhancedCustomLayout = connect(\r\n mapStateToProps,\r\n {} // Avoid connect passing dispatch in props\r\n)(withRouter(withStyles(styles)(CustomLayout)));\r\n\r\nconst SolsticeLayout = props => {\r\n const { theme, ...rest } = props;\r\n const [muiTheme, setMuiTheme] = useState(() => createTheme(theme));\r\n // Activate \"Roarr\" logs to send the app logs to Splunk by calling POST v1/jslogs\r\n // Catch exceptions thrown within handlers (events exceptions) and log them with \"Roarr\"\r\n useErrorLogger();\r\n\r\n useEffect(() => {\r\n setMuiTheme(createTheme(theme));\r\n }, [theme]);\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nSolsticeLayout.propTypes = {\r\n theme: PropTypes.object\r\n};\r\n\r\nSolsticeLayout.defaultProps = {\r\n theme: SolsticeTheme\r\n};\r\n\r\nexport default SolsticeLayout;\r\n","import React from 'react';\r\n\r\nconst InvStructureIcon = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default InvStructureIcon;\r\n","import React from 'react';\r\n\r\nexport const TagIcon = () => (\r\n \r\n \r\n \r\n);\r\n","export default __webpack_public_path__ + \"static/media/EfrontBackground.d9728f48.jpg\";","import React, { Component } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { Form, Field } from 'react-final-form';\r\nimport { connect } from 'react-redux';\r\n\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport Button from '@material-ui/core/Button';\r\nimport Card from '@material-ui/core/Card';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport {\r\n MuiThemeProvider,\r\n createTheme,\r\n withStyles\r\n} from '@material-ui/core/styles';\r\nimport LockIcon from '@material-ui/icons/Lock';\r\nimport EfrontBackground from '../themes/assets/EfrontBackground.jpg';\r\nimport { translate, userLogin, TopToolbar } from 'react-admin';\r\nimport Notification from './forked/layout/Notification';\r\nimport { SolsticeTheme } from '../themes/SolsticeTheme';\r\n\r\nconst styles = theme => ({\r\n main: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n minHeight: '100vh',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n background: 'url(' + EfrontBackground + ')',\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover'\r\n },\r\n card: {\r\n minWidth: 300,\r\n marginTop: '6em'\r\n },\r\n avatar: {\r\n margin: '1em',\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n icon: {\r\n backgroundColor: theme.palette.secondary.main\r\n },\r\n hint: {\r\n marginTop: '1em',\r\n display: 'flex',\r\n justifyContent: 'center',\r\n color: theme.palette.grey[500]\r\n },\r\n form: {\r\n padding: '0 1em 1em 1em'\r\n },\r\n input: {\r\n marginTop: '1em'\r\n },\r\n actions: {\r\n padding: '0 1em 1em 1em'\r\n }\r\n});\r\n\r\n// see http://redux-form.com/6.4.3/examples/material-ui/\r\nconst renderInput = ({\r\n meta: { touched, error } = {},\r\n input: { ...inputProps },\r\n htmlFor,\r\n ...props\r\n}) => (\r\n \r\n);\r\n\r\nclass Login extends Component {\r\n login = auth => {\r\n return this.props.userLogin(\r\n auth,\r\n this.props.location.state ? this.props.location.state.nextPathname : '/'\r\n );\r\n };\r\n render() {\r\n const { classes, loading, translate } = this.props;\r\n return (\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n {\r\n const errors = {};\r\n if (!values.tenant) {\r\n errors.tenant = translate('ra.validation.required');\r\n }\r\n if (!values.username) {\r\n errors.username = translate('ra.validation.required');\r\n }\r\n if (!values.password) {\r\n errors.password = translate('ra.validation.required');\r\n }\r\n return errors;\r\n }}\r\n >\r\n {({ handleSubmit }) => (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n {loading && }\r\n {translate('ra.auth.sign_in')}\r\n \r\n \r\n
\r\n )}\r\n \r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nLogin.propTypes = {\r\n authProvider: PropTypes.func,\r\n classes: PropTypes.object,\r\n previousRoute: PropTypes.string,\r\n translate: PropTypes.func.isRequired,\r\n userLogin: PropTypes.func.isRequired\r\n};\r\n\r\nconst mapStateToProps = state => ({ loading: state.admin.loading > 0 });\r\n\r\nconst EnhancedLogin = translate(\r\n connect(mapStateToProps, { userLogin })(withStyles(styles)(Login))\r\n);\r\n\r\n// We need to put the MuiThemeProvider decoration in another component\r\n// Because otherwise the withStyles() HOC used in EnhancedLogin won't get\r\n// the right theme\r\nconst LoginPage = props => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default LoginPage;\r\n","import React from 'react';\r\nimport { BulkDeleteButton } from 'react-admin';\r\n\r\nconst BulkActionDeleteButton = props => (\r\n \r\n \r\n \r\n);\r\n\r\nexport default BulkActionDeleteButton;\r\n","import React from 'react';\r\nimport { Link, linkToRecord } from 'react-admin';\r\nimport PropTypes from 'prop-types';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst styles = {\r\n link: {\r\n cursor: 'pointer',\r\n '& *': {\r\n cursor: 'pointer'\r\n }\r\n }\r\n};\r\n\r\nconst LinkField = props => {\r\n const {\r\n record = {},\r\n source,\r\n basePath,\r\n idSource,\r\n classes,\r\n render,\r\n linkType = 'edit',\r\n resource,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n \r\n {render ? render(record) : record[source]}\r\n \r\n );\r\n};\r\n\r\nLinkField.propTypes = {\r\n source: PropTypes.string,\r\n record: PropTypes.object.isRequired,\r\n idSource: PropTypes.string,\r\n render: PropTypes.func,\r\n linkType: PropTypes.string\r\n};\r\n\r\nLinkField.defaultProps = {\r\n source: 'id',\r\n idSource: 'id'\r\n};\r\n\r\nexport default withStyles(styles)(LinkField);\r\n","import React from 'react';\r\nimport { Button } from 'react-admin';\r\nimport PropTypes from 'prop-types';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport classNames from 'classnames';\r\n\r\nconst useStyles = makeStyles({\r\n gridContainer: {\r\n padding: '16px'\r\n },\r\n gridContainerWithButtons: {\r\n padding: '16px 0'\r\n },\r\n buttonGridContainer: {\r\n minHeight: '40px',\r\n margin: '8px 0'\r\n },\r\n buttonGridContainerWithoutTitle: {\r\n marginTop: '3px',\r\n marginBottom: '13px'\r\n },\r\n title: {\r\n flex: 1,\r\n padding: '20px 0 0 0'\r\n },\r\n button: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n alignSelf: 'center',\r\n marginLeft: '10px'\r\n },\r\n emptyText: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n display: 'inline-block',\r\n fontFamily: '\"Segoe UI\",Arial,sans-serif'\r\n }\r\n});\r\n\r\n/**\r\n * Component to use with the List\r\n * 2 use cases :\r\n * - In subpages, like userphones with a top bar with create button\r\n * - In list pages, like funds with only a text\r\n *\r\n * }\r\n * >\r\n * ...\r\n * \r\n *\r\n * @param {*} props\r\n */\r\nconst Empty = props => {\r\n const { classes: classesOverride, emptyText, buttons, title } = props;\r\n const classes = useStyles({ classes: classesOverride });\r\n\r\n const buttonsToShow = buttons.filter(button => !button.hide);\r\n\r\n return (\r\n 0 ? classes.gridContainerWithButtons : ''\r\n )\r\n }}\r\n >\r\n {buttonsToShow.length > 0 && (\r\n \r\n )}\r\n \r\n \r\n {emptyText}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ButtonList = ({ buttons, classes, title }) => {\r\n return (\r\n \r\n \r\n {title}\r\n \r\n {buttons.map((button, index) => {\r\n return React.isValidElement(button) ? (\r\n button\r\n ) : (\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nEmpty.propTypes = {\r\n emptyText: PropTypes.string, // Text when nothing should be displayed\r\n buttons: PropTypes.array,\r\n title: PropTypes.string\r\n};\r\n\r\nEmpty.defaultProps = {\r\n emptyText: 'No results found',\r\n buttons: []\r\n};\r\n\r\nexport default Empty;\r\n","import React from 'react';\r\nimport { Filter } from 'react-admin';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles({\r\n button: {\r\n border: '1px solid',\r\n borderColor: '#E0E0E0',\r\n borderRadius: '2px',\r\n backgroundColor: 'white',\r\n marginTop: '8px',\r\n height: '28px',\r\n '& svg': { display: 'none' },\r\n '& button': { paddingTop: '2px', fontSize: '14px' }\r\n }\r\n});\r\n\r\nconst StyledFilter = props => {\r\n const classes = useStyles();\r\n return ;\r\n};\r\n\r\nexport default StyledFilter;\r\n","import React from 'react';\r\n\r\nexport const ExcelIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import { withStyles } from '@material-ui/core/styles';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nconst LightTooltip = withStyles(theme => ({\r\n tooltip: {\r\n backgroundColor: theme.palette.common.white,\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n border: '1px solid #E0E0E0',\r\n fontSize: 14,\r\n borderRadius: '2px',\r\n maxWidth: '400px',\r\n boxShadow: '0px 2px 2px rgba(0, 0, 0, 0.08)',\r\n fontWeight: 'normal',\r\n marginTop: '10px',\r\n marginLeft: '4px'\r\n }\r\n}))(Tooltip);\r\n\r\nexport default LightTooltip;\r\n","import React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport MuiDialogTitle from '@material-ui/core/DialogTitle';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport LightTooltip from '../components/LightTooltip';\r\nimport ClickAwayListener from '@material-ui/core/ClickAwayListener';\r\n\r\nconst DialogTitleWithCloseButton = withStyles(theme => ({\r\n root: {\r\n display: 'flex',\r\n margin: 0,\r\n padding: '13px 13px 13px 16px'\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n top: '13px'\r\n },\r\n title: {\r\n fontFamily: 'Segoe UI',\r\n fontStyle: 'normal',\r\n fontWeight: '600',\r\n fontSize: '18px',\r\n lineHeight: '24px',\r\n display: 'inline'\r\n },\r\n helpIconContainer: {\r\n display: 'inline',\r\n verticalAlign: 'middle',\r\n cursor: 'pointer',\r\n paddingLeft: '4px'\r\n },\r\n helpIcon: {\r\n verticalAlign: 'middle',\r\n color: '#757575'\r\n }\r\n}))(props => {\r\n const { children, classes, onClose, help } = props;\r\n const [open, setOpen] = React.useState(false);\r\n\r\n const handleTooltipClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleTooltipOpen = () => {\r\n setOpen(true);\r\n };\r\n return (\r\n \r\n \r\n {children}{' '}\r\n \r\n {help ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n ) : null}\r\n {onClose ? (\r\n \r\n \r\n \r\n ) : null}\r\n
\r\n );\r\n});\r\n\r\nexport default DialogTitleWithCloseButton;\r\n","import React, { useEffect, ReactNode } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport { useTranslate } from 'react-admin';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n removeButton: {},\r\n removeIcon: {\r\n color: theme.palette.error.main\r\n }\r\n}));\r\n\r\ninterface Props {\r\n children: ReactNode;\r\n className?: string;\r\n onRemove: () => void;\r\n file: any;\r\n}\r\n\r\nconst FileInputPreview = (props: Props) => {\r\n const { children, className, onRemove, file, ...rest } = props;\r\n const classes = useStyles(rest);\r\n const translate = useTranslate();\r\n\r\n useEffect(() => {\r\n return () => {\r\n const preview = file.rawFile ? file.rawFile.preview : file.preview;\r\n\r\n if (preview) {\r\n window.URL.revokeObjectURL(preview);\r\n }\r\n };\r\n }, [file]);\r\n\r\n return (\r\n
\r\n {children}\r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nFileInputPreview.propTypes = {\r\n children: PropTypes.element.isRequired,\r\n className: PropTypes.string,\r\n file: PropTypes.object,\r\n onRemove: PropTypes.func.isRequired\r\n};\r\n\r\nFileInputPreview.defaultProps = {\r\n file: undefined\r\n};\r\n\r\nexport default FileInputPreview;\r\n","export default ({\r\n afterSubmit,\r\n allowEmpty,\r\n allowNull,\r\n alwaysOn,\r\n basePath,\r\n beforeSubmit,\r\n component,\r\n data,\r\n defaultValue,\r\n error,\r\n format,\r\n formatOnBlur,\r\n formClassName,\r\n initializeForm,\r\n input,\r\n isEqual,\r\n isRequired,\r\n label,\r\n limitChoicesToValue,\r\n locale,\r\n margin,\r\n meta,\r\n multiple,\r\n name,\r\n options,\r\n optionText,\r\n optionValue,\r\n parse,\r\n record,\r\n ref,\r\n render,\r\n resource,\r\n source,\r\n submitError,\r\n subscription,\r\n textAlign,\r\n translate,\r\n translateChoice,\r\n type,\r\n validate,\r\n validateFields,\r\n value,\r\n variant,\r\n ...rest\r\n}: any) => rest;\r\n","import React, {\r\n Children,\r\n cloneElement,\r\n isValidElement,\r\n ReactElement\r\n} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport { shallowEqual } from 'react-redux';\r\nimport { useDropzone, DropzoneOptions } from 'react-dropzone';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport classnames from 'classnames';\r\nimport {\r\n InputProps,\r\n useInput,\r\n useTranslate,\r\n InputHelperText,\r\n Labeled\r\n} from 'react-admin';\r\n\r\nimport FileInputPreview from './FileInputPreview';\r\nimport sanitizeRestProps from './sanitizeRestProps';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n dropZone: {\r\n background: theme.palette.background.default,\r\n cursor: 'pointer',\r\n padding: theme.spacing(1),\r\n textAlign: 'center',\r\n color: theme.palette.getContrastText(theme.palette.background.default)\r\n },\r\n preview: {},\r\n removeButton: {},\r\n root: { width: '100%' },\r\n value: { padding: 0 }\r\n}));\r\n\r\nexport interface FileInputProps {\r\n accept?: string;\r\n labelMultiple?: string;\r\n labelSingle?: string;\r\n maxSize?: number;\r\n minSize?: number;\r\n multiple?: boolean;\r\n}\r\n\r\nexport interface FileInputOptions extends DropzoneOptions {\r\n inputProps?: any;\r\n}\r\n\r\nconst FileInput = (props: FileInputProps & InputProps) => {\r\n const {\r\n accept,\r\n children,\r\n className,\r\n classes: classesOverride,\r\n format,\r\n helperText,\r\n label,\r\n labelMultiple = 'ra.input.file.upload_several',\r\n labelSingle = 'ra.input.file.upload_single',\r\n maxSize,\r\n minSize,\r\n multiple = false,\r\n options: {\r\n inputProps: inputPropsOptions,\r\n ...options\r\n } = {} as FileInputOptions,\r\n parse,\r\n placeholder,\r\n resource,\r\n source,\r\n validate,\r\n ...rest\r\n } = props;\r\n const translate = useTranslate();\r\n const classes = useStyles({ classes: classesOverride });\r\n\r\n // turn a browser dropped file structure into expected structure\r\n const transformFile = file => {\r\n if (!(file instanceof File)) {\r\n return file;\r\n }\r\n\r\n const { size, source, title, type } = (Children.only(\r\n children\r\n ) as ReactElement).props;\r\n\r\n const preview = URL.createObjectURL(file);\r\n const transformedFile = {\r\n rawFile: file,\r\n [source]: preview\r\n };\r\n\r\n if (title) {\r\n transformedFile[title] = file.name;\r\n }\r\n\r\n if (size) {\r\n transformedFile[size] = ' (' + Math.round(file.size / 1024) + 'kb)';\r\n }\r\n if (type) {\r\n transformedFile[type] = file.type;\r\n }\r\n\r\n return transformedFile;\r\n };\r\n\r\n const transformFiles = (files: any[]) => {\r\n if (!files) {\r\n return multiple ? [] : null;\r\n }\r\n\r\n if (Array.isArray(files)) {\r\n return files.map(transformFile);\r\n }\r\n\r\n return transformFile(files);\r\n };\r\n\r\n const {\r\n id,\r\n input: { onChange, value, ...inputProps },\r\n meta,\r\n isRequired\r\n } = useInput({\r\n format: format || transformFiles,\r\n parse: parse || transformFiles,\r\n source,\r\n type: 'file',\r\n validate,\r\n ...rest\r\n });\r\n const { touched, error, submitError } = meta;\r\n const files = value ? (Array.isArray(value) ? value : [value]) : [];\r\n\r\n const onDrop = newFiles => {\r\n const updatedFiles = multiple ? [...files, ...newFiles] : [...newFiles];\r\n\r\n if (multiple) {\r\n onChange(updatedFiles);\r\n } else {\r\n onChange(updatedFiles[0]);\r\n }\r\n };\r\n\r\n const onRemove = file => () => {\r\n if (multiple) {\r\n const filteredFiles = files.filter(\r\n stateFile => !shallowEqual(stateFile, file)\r\n );\r\n onChange(filteredFiles as any);\r\n } else {\r\n onChange(null);\r\n }\r\n };\r\n\r\n const childrenElement = isValidElement(Children.only(children))\r\n ? (Children.only(children) as ReactElement)\r\n : undefined;\r\n\r\n const { getRootProps, getInputProps } = useDropzone({\r\n ...options,\r\n accept,\r\n maxSize,\r\n minSize,\r\n multiple,\r\n onDrop\r\n });\r\n return (\r\n \r\n <>\r\n {(multiple || files.length === 0) && (\r\n \r\n \r\n {placeholder ? (\r\n placeholder\r\n ) : multiple ? (\r\n

{translate(labelMultiple)}

\r\n ) : (\r\n

{translate(labelSingle)}

\r\n )}\r\n \r\n )}\r\n {children && (\r\n
\r\n {files.map((file, index) => (\r\n \r\n {cloneElement(childrenElement, {\r\n record: file,\r\n className: classes.preview\r\n })}\r\n \r\n ))}\r\n
\r\n )}\r\n {(touched && error) || helperText ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n \r\n );\r\n};\r\n\r\nFileInput.propTypes = {\r\n accept: PropTypes.string,\r\n children: PropTypes.element,\r\n classes: PropTypes.object,\r\n className: PropTypes.string,\r\n id: PropTypes.string,\r\n isRequired: PropTypes.bool,\r\n label: PropTypes.string,\r\n labelMultiple: PropTypes.string,\r\n labelSingle: PropTypes.string,\r\n maxSize: PropTypes.number,\r\n minSize: PropTypes.number,\r\n multiple: PropTypes.bool,\r\n options: PropTypes.object,\r\n resource: PropTypes.string,\r\n source: PropTypes.string,\r\n placeholder: PropTypes.node\r\n};\r\n\r\nexport default FileInput;\r\n","import omit from 'lodash/omit';\r\n\r\nexport default (props: object): object =>\r\n omit(props, [\r\n 'addLabel',\r\n 'allowEmpty',\r\n 'basePath',\r\n 'cellClassName',\r\n 'className',\r\n 'formClassName',\r\n 'headerClassName',\r\n 'label',\r\n 'linkType',\r\n 'link',\r\n 'locale',\r\n 'record',\r\n 'refetch',\r\n 'resource',\r\n 'sortable',\r\n 'sortBy',\r\n 'source',\r\n 'textAlign',\r\n 'translateChoice'\r\n ]);\r\n","import React from 'react';\r\n\r\nexport const FileIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const PdfIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const WordIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const CompressedIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport get from 'lodash/get';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport classnames from 'classnames';\r\nimport { useRecordContext } from 'react-admin';\r\n\r\nimport sanitizeRestProps from './sanitizeRestProps';\r\nimport { PublicFieldProps, InjectedFieldProps, fieldPropTypes } from './types';\r\n\r\nimport { FileIcon } from '../../../themes/icons/FileIcon';\r\nimport { PdfIcon } from '../../../themes/icons/PdfIcon';\r\nimport { WordIcon } from '../../../themes/icons/WordIcon';\r\nimport { ExcelIcon } from '../../../themes/icons/ExcelIcon';\r\nimport { CompressedIcon } from '../../../themes/icons/CompressedIcon';\r\n\r\nconst useStyles = makeStyles({\r\n root: { display: 'inline-block' },\r\n sizeLabel: { color: '#A4A4A4' },\r\n fileTitle: { color: '#2962FF' }\r\n});\r\n\r\nconst fileIconStyle = {\r\n width: '24px',\r\n height: '24px',\r\n paddingRight: '8px'\r\n};\r\n\r\nconst getFileIcon = (fileType, classes) => {\r\n switch (fileType) {\r\n case 'application/pdf':\r\n return ;\r\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\r\n case 'application/msword':\r\n return ;\r\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\r\n case 'application/vnd.ms-excel':\r\n return ;\r\n case 'application/zip':\r\n case 'application/octet-stream':\r\n case 'application/x-zip-compressed':\r\n case 'multipart/x-zip':\r\n return ;\r\n default:\r\n return ;\r\n }\r\n};\r\n\r\ninterface Props extends PublicFieldProps {\r\n src?: string;\r\n title?: string;\r\n target?: string;\r\n download?: boolean;\r\n classes?: object;\r\n size?: number;\r\n type?: string;\r\n}\r\n\r\nexport const FileField = (props: Props & InjectedFieldProps) => {\r\n const {\r\n className,\r\n classes: classesOverride,\r\n size,\r\n source,\r\n title,\r\n src,\r\n target,\r\n type,\r\n download,\r\n ...rest\r\n } = props;\r\n const record = useRecordContext(props);\r\n const sourceValue = get(record, source || '');\r\n const classes = useStyles({ classes: classesOverride });\r\n\r\n if (!sourceValue) {\r\n return (\r\n \r\n );\r\n }\r\n\r\n if (Array.isArray(sourceValue)) {\r\n return (\r\n \r\n {sourceValue.map((file, index) => {\r\n const fileTitleValue = get(file, title);\r\n const srcValue = get(file, src);\r\n const sizeLabel = get(file, size);\r\n const fileType = get(file, type);\r\n\r\n return (\r\n
  • \r\n {getFileIcon(fileType, classes)}\r\n \r\n {fileTitleValue}\r\n \r\n {sizeLabel}\r\n
  • \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n const titleValue = get(record, title);\r\n const sizeLabel = get(record, size);\r\n const fileType = get(record, type);\r\n\r\n return (\r\n \r\n {getFileIcon(fileType, classes)}\r\n \r\n {titleValue}\r\n \r\n {sizeLabel}\r\n \r\n );\r\n};\r\n\r\nFileField.defaultProps = {\r\n addLabel: true\r\n};\r\n\r\nFileField.propTypes = {\r\n ...fieldPropTypes,\r\n src: PropTypes.string,\r\n title: PropTypes.string,\r\n target: PropTypes.string\r\n};\r\n\r\nexport default FileField;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\nimport { stringify } from '../components/forked/stringify';\r\n\r\n/**\r\n * User API\r\n */\r\nclass UserApi extends ApiBase {\r\n /**\r\n * Reset user password\r\n * @param {*} userId\r\n */\r\n async resetPassword(userId) {\r\n const body = {\r\n userId: userId\r\n };\r\n const request = {\r\n url: `${this.API_URL}/user/resetpassword`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(body)\r\n };\r\n\r\n await axios.request(request);\r\n }\r\n\r\n /**\r\n * create userauthorizations\r\n * @param {*} userauthorizations\r\n */\r\n async createUserauthorizations(userauthorizations) {\r\n const request = {\r\n url: `${this.API_URL}/userauthorizations`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(userauthorizations)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * delete userauthorizations\r\n * @param {*} userauthorizations\r\n */\r\n async deleteUserauthorizations(userauthorizations) {\r\n const request = {\r\n url: `${this.API_URL}/userauthorizations`,\r\n headers: this.getHeaders(),\r\n method: 'DELETE',\r\n data: JSON.stringify(userauthorizations)\r\n };\r\n\r\n return axios.request(request);\r\n }\r\n\r\n /**\r\n * post sendwelcomeemail\r\n * @param {*} id\r\n */\r\n async sendWelcomeEmail(id) {\r\n const request = {\r\n url: `${this.API_URL}/user/sendwelcomeemail?id=${id}`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(id)\r\n };\r\n\r\n return axios.request(request);\r\n }\r\n\r\n /**\r\n * Reset user mfa\r\n * @param {*} userId\r\n */\r\n async resetMfa(userId) {\r\n const request = {\r\n url: `${this.API_URL}/user/mfa/resetMfaAndSendEnrollment?id=${userId}`,\r\n headers: this.getHeaders(),\r\n method: 'POST'\r\n };\r\n\r\n return axios.request(request);\r\n }\r\n\r\n /**\r\n * Get users mfa information\r\n * @param {*} userId\r\n */\r\n async getUserMFA(userId) {\r\n const request = {\r\n url: `${this.API_URL}/users/mfa?userId=${userId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set users mfa information\r\n * @param userMFA\r\n */\r\n async setUserMFA(userMFA) {\r\n const request = {\r\n url: `${this.API_URL}/users/mfa`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(userMFA)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Returns array of matching emails\r\n * @param {string} email\r\n */\r\n async checkIfEmailExists(email) {\r\n const request = {\r\n url: `${this.API_URL}/users?email=${email}&orphanVisibility=ALL_VISIBLE`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set custom temp password to user\r\n * @param {*} userId\r\n * @param {*} password\r\n */\r\n async setPassword(userId, password) {\r\n const body = {\r\n userIdToUpdate: userId,\r\n newPassword: password\r\n };\r\n const request = {\r\n url: `${this.API_URL}/user/setpassword`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(body)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Get user available sso authentications modes\r\n */\r\n async getSSOAuthenticationsModes() {\r\n const request = {\r\n url: `${this.API_URL}/user/sso/authenticationModes`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Get users SSO authentication mode\r\n * @param {*} userId\r\n */\r\n async getUserSSO(userId) {\r\n const request = {\r\n url: `${this.API_URL}/user/sso/authenticationMode?id=${userId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set users SSO authentication mode\r\n * @param authMethod\r\n */\r\n async setUserSSO(authMethod) {\r\n const request = {\r\n url: `${this.API_URL}/user/sso/authenticationMode`,\r\n headers: this.getHeaders(),\r\n method: 'PUT',\r\n data: JSON.stringify(authMethod)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async validateImportFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/user/validateimport`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async importUsersFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/users/import`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Get contact template excel\r\n */\r\n async getContactExcelTemplate() {\r\n const request = {\r\n url: `${this.API_URL}/user/import/template`,\r\n headers: this.getHeaders(),\r\n method: 'GET',\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async exportUsersExcel(\r\n name,\r\n fundFamillyId,\r\n id,\r\n mupUserId,\r\n email,\r\n status,\r\n orphanVisibility\r\n ) {\r\n const queryParameters = stringify(\r\n {\r\n id: id,\r\n mupUserId: mupUserId,\r\n name: name,\r\n fundFamilyId: fundFamillyId,\r\n email: email,\r\n status: status,\r\n orphanVisibility: 'ALL_VISIBLE'\r\n },\r\n {\r\n arrayFormat: 'comma'\r\n }\r\n );\r\n\r\n const request = {\r\n url: `${this.API_URL}/users/excel/export?${queryParameters}`,\r\n method: 'GET',\r\n headers: this.getHeaders(),\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Update an existing user\r\n */\r\n async updateUser(id, payload) {\r\n const request = {\r\n url: `${this.API_URL}/user?id=${id}`,\r\n headers: this.getHeaders(),\r\n method: 'PUT',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new UserApi();\r\n","import { useCallback } from 'react';\r\nimport { useNotify } from 'react-admin';\r\n\r\nimport { getIcError } from '../providers/utils';\r\n\r\n/**\r\n * Custom hook to notify Error from Network / server\r\n */\r\nconst useNotifyServerError = () => {\r\n const notify = useNotify();\r\n\r\n return useCallback(\r\n (error, fallback) => {\r\n if (fallback && typeof error !== 'string' && error && !error.message) {\r\n notify(fallback, { type: 'error' });\r\n } else {\r\n notify('ra.notification.server', {\r\n type: 'error',\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n },\r\n [notify]\r\n );\r\n};\r\n\r\nexport default useNotifyServerError;\r\n","import React, { useCallback } from 'react';\r\nimport { SimpleForm } from 'react-admin';\r\n\r\nconst CustomSimpleForm = props => {\r\n const { onKeyPress } = props;\r\n const handleKeyPress = useCallback(\r\n e => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault(); // necessary to prevent default SaveButton submit logic\r\n }\r\n if (typeof onKeyPress === 'function') onKeyPress(e);\r\n },\r\n [onKeyPress]\r\n );\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n};\r\n\r\nexport default CustomSimpleForm;\r\n","import React, { useState } from 'react';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport { Grid, Typography, CircularProgress, Button } from '@material-ui/core/';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport ButtonMUI from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport { FormDataConsumer, refreshView, Loading } from 'react-admin';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport TabList from '@material-ui/lab/TabList';\r\nimport TabPanel from '@material-ui/lab/TabPanel';\r\nimport TabContext from '@material-ui/lab/TabContext';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport { useNotify } from 'ra-core';\r\n\r\nimport { ExcelIcon } from '../../../core/themes/icons/ExcelIcon';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport FileInput from '../../../core/components/forked/input/FileInput';\r\nimport FileField from '../../../core/components/forked/field/FileField';\r\nimport UserApi from '../../../core/apis/UserApi';\r\nimport { saveAs } from 'file-saver';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = {\r\n avatar: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\r\n height: '36px',\r\n width: '36px',\r\n color: '#757575'\r\n },\r\n errorIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'red'\r\n },\r\n toolbarStyle: {\r\n backgroundColor: '#FFFFFF',\r\n borderBottom: '1px solid #E5E5E5',\r\n minHeight: '54px',\r\n paddingTop: '0',\r\n paddingBottom: '0'\r\n },\r\n firstButtonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px'\r\n },\r\n buttonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px',\r\n marginRight: '10px'\r\n },\r\n root: {\r\n flexGrow: 1\r\n },\r\n barTitle: {\r\n flexGrow: 1,\r\n paddingLeft: '8px'\r\n },\r\n label: {\r\n paddingRight: '0px'\r\n },\r\n horisontalRule: {\r\n height: '1px',\r\n backgroundColor: '#E0E0E0',\r\n border: 'none'\r\n },\r\n ButtonMUISpan: {\r\n paddingLeft: '4px'\r\n },\r\n excelIcon: {\r\n verticalAlign: 'middle',\r\n paddingRight: '10px'\r\n },\r\n warningIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'orange'\r\n },\r\n validationColumnWarning: {\r\n color: 'orange'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n validateButton: {\r\n textAlign: 'center',\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)'\r\n },\r\n validateButtonText: {\r\n color: 'grey'\r\n },\r\n validationColumn: {\r\n color: 'red'\r\n },\r\n noRows: {\r\n color: 'red'\r\n },\r\n noRowsBlack: {\r\n color: 'black'\r\n },\r\n circularProgress: {\r\n paddingRight: '3px'\r\n },\r\n tabsStyle: {\r\n color: 'black',\r\n background: 'transparent'\r\n },\r\n tableWrapper: {\r\n maxHeight: '70vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n};\r\n\r\nconst AvatarImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ErrorImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ExcelIconImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst WarningImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst ExcelContactImportTitleBarWithDropbox = withStyles(styles)(\r\n ({\r\n classes,\r\n type,\r\n title,\r\n createUrl,\r\n secondTitle,\r\n secondCreateUrl,\r\n icon,\r\n hasCreatePermission,\r\n hasExportUsersExcelPermission,\r\n hasImportUserExcelPermission,\r\n filters,\r\n ...rest\r\n }) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [importModelViewToggle, setsViewOfImport] = useState(false);\r\n const [validateButtonVisibile, setValidateButtonVisibility] = useState(\r\n false\r\n );\r\n const [submitting, setSubmitting] = useState(false);\r\n const [disableImportButton, setImportButtonDisabled] = useState(true);\r\n const [loaderVisible, setLoaderVisible] = useState(false);\r\n const [showGrid, setShowGrid] = useState(false);\r\n const [showNoDataInExcelError, setShowNoDataInExcelError] = useState(false);\r\n const [isFileFieldDisabled, setIsFileFieldDisabled] = useState(false);\r\n const [downloadingTemplate, setDownloadingTemplate] = useState(false);\r\n const [excelFileData, setExcelFileData] = useState('');\r\n\r\n const [value, setValue] = useState('1');\r\n const [order, setOrder] = useState('desc');\r\n const [orderBy, setOrderBy] = useState(-1);\r\n const [response, setResponse] = useState('');\r\n const [responseTab2, setResponseTab2] = useState('');\r\n const [responseTab3, setResponseTab3] = useState('');\r\n const [responseTab4, setResponseTab4] = useState('');\r\n const [responseTab5, setResponseTab5] = useState('');\r\n const [responseTab6, setResponseTab6] = useState('');\r\n const [tab1ContainsErrors, setTab1ContainsErrors] = useState(false);\r\n const [tab1ContainsWarning, setTab1ContainsWarning] = useState(false);\r\n const [tab2ContainsErrors, setTab2ContainsErrors] = useState(false);\r\n const [tab3ContainsErrors, setTab3ContainsErrors] = useState(false);\r\n const [tab4ContainsErrors, setTab4ContainsErrors] = useState(false);\r\n const [tab5ContainsErrors, setTab5ContainsErrors] = useState(false);\r\n const [tab6ContainsErrors, setTab6ContainsErrors] = useState(false);\r\n const [tab6ContainsWarning, setTab6ContainsWarning] = useState(false);\r\n const [propertiesDataModel, setPropertiesDataModel] = useState(false);\r\n\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleImportClick = () => {\r\n setAnchorEl(null);\r\n setsViewOfImport(true);\r\n };\r\n\r\n const handleCloseImportClick = () => {\r\n setAnchorEl(null);\r\n cleanUpData();\r\n setsViewOfImport(false);\r\n };\r\n\r\n const handleRequestSort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowNum';\r\n break;\r\n case 1:\r\n sortColumnName = 'email';\r\n break;\r\n case 2:\r\n sortColumnName = 'firstName';\r\n break;\r\n case 3:\r\n sortColumnName = 'middleName';\r\n break;\r\n case 4:\r\n sortColumnName = 'lastName';\r\n break;\r\n case 5:\r\n sortColumnName = 'userType';\r\n break;\r\n case 6:\r\n sortColumnName = 'companyName';\r\n break;\r\n case 7:\r\n sortColumnName = 'emailOptOut';\r\n break;\r\n case 8:\r\n sortColumnName = 'receiveDailySummary';\r\n break;\r\n case 9:\r\n sortColumnName = 'title';\r\n break;\r\n case 10:\r\n sortColumnName = 'salutation';\r\n break;\r\n case 11:\r\n sortColumnName = 'suffix';\r\n break;\r\n case 12:\r\n sortColumnName = 'ccEmail';\r\n break;\r\n case 13:\r\n sortColumnName = 'syncToExternalResource';\r\n break;\r\n case 14:\r\n sortColumnName = 'businessAddressLine1';\r\n break;\r\n case 15:\r\n sortColumnName = 'businessAddressLine2';\r\n break;\r\n case 16:\r\n sortColumnName = 'businessAddressLine3';\r\n break;\r\n case 17:\r\n sortColumnName = 'city';\r\n break;\r\n case 18:\r\n sortColumnName = 'stateOrProvince';\r\n break;\r\n case 19:\r\n sortColumnName = 'zipOrPostalCode';\r\n break;\r\n case 20:\r\n sortColumnName = 'country';\r\n break;\r\n case 21:\r\n sortColumnName = 'phoneNumber';\r\n break;\r\n case 22:\r\n sortColumnName = 'extension';\r\n break;\r\n case 23:\r\n sortColumnName = 'verifiedByUser';\r\n break;\r\n case 24:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNum';\r\n }\r\n\r\n var sortedTableData = response.sort(function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowNum') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab2Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowNum';\r\n break;\r\n case 1:\r\n sortColumnName = 'userEmail';\r\n break;\r\n case 2:\r\n sortColumnName = 'fundId';\r\n break;\r\n case 3:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 4:\r\n sortColumnName = 'groupName';\r\n break;\r\n case 5:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNum';\r\n }\r\n\r\n var sortedTableData = responseTab2.sort(function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowNum') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab3Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowNum';\r\n break;\r\n case 1:\r\n sortColumnName = 'userEmail';\r\n break;\r\n case 2:\r\n sortColumnName = 'fundId';\r\n break;\r\n case 3:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 4:\r\n sortColumnName = 'groupName';\r\n break;\r\n case 5:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNum';\r\n }\r\n\r\n var sortedTableData = responseTab3.sort(function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowNum') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab4Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowNum';\r\n break;\r\n case 1:\r\n sortColumnName = 'userEmail';\r\n break;\r\n case 2:\r\n sortColumnName = 'roleName';\r\n break;\r\n case 3:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNum';\r\n }\r\n\r\n var sortedTableData = responseTab4.sort(function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowNum') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n setResponse(sortedTableData);\r\n };\r\n const handleRequestTab5Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowNum';\r\n break;\r\n case 1:\r\n sortColumnName = 'userEmail';\r\n break;\r\n case 2:\r\n sortColumnName = 'roleName';\r\n break;\r\n case 3:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNum';\r\n }\r\n\r\n var sortedTableData = responseTab5.sort(function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowNum') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab6Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n let sortByErrorMessage = false;\r\n if (index === propertiesDataModel.length - 1) {\r\n sortByErrorMessage = true;\r\n }\r\n var sortedTableData = responseTab6.sort(function(a, b) {\r\n let x, y;\r\n if (index === 0) {\r\n // Row Num\r\n x = a.rowNumber;\r\n y = b.rowNumber;\r\n return isDesc ? x - y : y - x;\r\n } else if (index === 1) {\r\n // Email\r\n x = a.email.toLowerCase();\r\n y = b.email.toLowerCase();\r\n } else if (sortByErrorMessage) {\r\n x = a.validationError.toLowerCase();\r\n y = b.validationError.toLowerCase();\r\n } else {\r\n x = a.validatedFieldUdfModels[index - 2].fieldValue.toLowerCase();\r\n y = b.validatedFieldUdfModels[index - 2].fieldValue.toLowerCase();\r\n }\r\n\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n setResponseTab6(sortedTableData);\r\n };\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const cleanUpData = value => {\r\n setTab1ContainsErrors(false);\r\n setTab1ContainsWarning(false);\r\n setTab2ContainsErrors(false);\r\n setTab3ContainsErrors(false);\r\n setTab4ContainsErrors(false);\r\n setTab5ContainsErrors(false);\r\n setTab6ContainsErrors(false);\r\n setTab6ContainsWarning(false);\r\n setShowGrid(false);\r\n setImportButtonDisabled(true);\r\n setShowNoDataInExcelError(false);\r\n if (value) {\r\n setValidateButtonVisibility(true);\r\n } else {\r\n setValidateButtonVisibility(false);\r\n }\r\n };\r\n\r\n const handleClickValidation = async values => {\r\n var payload = new FormData();\r\n if (values.file) {\r\n payload.append('excelFile', values.file.rawFile, values.file.title);\r\n setExcelFileData(values);\r\n }\r\n\r\n setValidateButtonVisibility(false);\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setIsFileFieldDisabled(true);\r\n try {\r\n const responseData = await UserApi.validateImportFromExcel(payload);\r\n var arrayData = responseData['validatedContactDetails'];\r\n setResponse(arrayData);\r\n\r\n var arrayDataTab2 = responseData['addedAuthorizations'];\r\n setResponseTab2(arrayDataTab2);\r\n\r\n var arrayDataTab3 = responseData['deletedAuthorizations'];\r\n setResponseTab3(arrayDataTab3);\r\n\r\n var arrayDataTab4 = responseData['addedUserRoles'];\r\n setResponseTab4(arrayDataTab4);\r\n\r\n var arrayDataTab5 = responseData['deletedUserRoles'];\r\n setResponseTab5(arrayDataTab5);\r\n\r\n var arrayDataTab6 = responseData['validatedContactUdfs'];\r\n setResponseTab6(arrayDataTab6);\r\n\r\n // Extract datamodel of the UDF from the first row if any\r\n if (arrayDataTab6.length > 0) {\r\n let dataModel = [{ id: 'Row Number' }, { id: 'Email' }];\r\n arrayDataTab6[0].validatedFieldUdfModels.forEach(obj => {\r\n dataModel.push({\r\n id: obj.fieldName\r\n });\r\n });\r\n dataModel.push({ id: 'Validation Error / Warning message' });\r\n setPropertiesDataModel(dataModel);\r\n }\r\n\r\n const validationErrors = arrayData\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n validationErrors.length > 0 && setTab1ContainsErrors(true);\r\n\r\n const validationWarningTab1 = arrayData\r\n .slice(0)\r\n .filter(r => r.warningMessage !== '');\r\n validationWarningTab1.length > 0 && setTab1ContainsWarning(true);\r\n\r\n const validationErrorsTab2 = arrayDataTab2\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n validationErrorsTab2.length > 0 && setTab2ContainsErrors(true);\r\n\r\n const validationErrorsTab3 = arrayDataTab3\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n validationErrorsTab3.length > 0 && setTab3ContainsErrors(true);\r\n\r\n const validationErrorsTab4 = arrayDataTab4\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n validationErrorsTab4.length > 0 && setTab4ContainsErrors(true);\r\n\r\n const validationErrorsTab5 = arrayDataTab5\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n validationErrorsTab5.length > 0 && setTab5ContainsErrors(true);\r\n\r\n const validationErrorsTab6 = arrayDataTab6\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n validationErrorsTab6.length > 0 && setTab6ContainsErrors(true);\r\n\r\n const validationWarningTab6 = arrayDataTab6\r\n .slice(0)\r\n .filter(r => r.warningMessage !== '');\r\n validationWarningTab6.length > 0 && setTab6ContainsWarning(true);\r\n\r\n if (\r\n arrayData.length > 0 ||\r\n arrayDataTab2.length > 0 ||\r\n arrayDataTab3.length > 0 ||\r\n arrayDataTab4.length > 0 ||\r\n arrayDataTab5.length > 0 ||\r\n arrayDataTab6.length > 0\r\n ) {\r\n var errors = false;\r\n if (\r\n arrayData.length > 0 &&\r\n validationErrors &&\r\n validationErrors.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab2.length > 0 &&\r\n validationErrorsTab2 &&\r\n validationErrorsTab2.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab3.length > 0 &&\r\n validationErrorsTab3 &&\r\n validationErrorsTab3.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n\r\n if (\r\n arrayDataTab4.length > 0 &&\r\n validationErrorsTab4 &&\r\n validationErrorsTab4.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n\r\n if (\r\n arrayDataTab5.length > 0 &&\r\n validationErrorsTab5 &&\r\n validationErrorsTab5.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n\r\n if (\r\n arrayDataTab6.length > 0 &&\r\n validationErrorsTab6 &&\r\n validationErrorsTab6.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n\r\n setImportButtonDisabled(errors);\r\n } else {\r\n setImportButtonDisabled(true);\r\n setShowNoDataInExcelError(true);\r\n }\r\n\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n setShowGrid(true);\r\n } catch (e) {\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n notifyServerError(e);\r\n }\r\n };\r\n\r\n const handleImportContactsClick = async values => {\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setShowGrid(false);\r\n setIsFileFieldDisabled(true);\r\n var payload = new FormData();\r\n if (values && values.file) {\r\n payload.append('excelFile', values.file.rawFile, values.file.title);\r\n }\r\n\r\n try {\r\n await UserApi.importUsersFromExcel(payload);\r\n notify('ra.notification.custom_updated_message');\r\n } catch (e) {\r\n setLoaderVisible(false);\r\n notifyServerError(e);\r\n } finally {\r\n setShowGrid(false);\r\n setLoaderVisible(false);\r\n setsViewOfImport(false);\r\n setIsFileFieldDisabled(false);\r\n refreshView();\r\n }\r\n };\r\n\r\n /**\r\n * Click on button 'Download as Excel' to download the excel file\r\n */\r\n const handleClickDownloadAsExcel = async () => {\r\n setDownloadingTemplate(true);\r\n UserApi.getContactExcelTemplate()\r\n .then(resp => {\r\n const fileName = 'Contact Import Template.xlsx';\r\n saveAs(resp, fileName);\r\n })\r\n .catch(e => {\r\n notify(getIcError(e), { type: 'error' });\r\n })\r\n .finally(() => {\r\n setDownloadingTemplate(false);\r\n });\r\n };\r\n\r\n const handleExportClick = filters => {\r\n setSubmitting(true);\r\n UserApi.exportUsersExcel(\r\n filters.name,\r\n filters.fundFamilyId,\r\n filters.id,\r\n filters.mupUserId,\r\n filters.email,\r\n filters.status,\r\n filters.orphanVisibility\r\n )\r\n .then(resp => {\r\n const fileName = 'Contacts Export.xlsx';\r\n saveAs(resp, fileName);\r\n setSubmitting(false);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n setSubmitting(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n {type}\r\n \r\n {(hasImportUserExcelPermission || hasExportUsersExcelPermission) && (\r\n
    \r\n \r\n
    \r\n \r\n \r\n Import/Export Contacts\r\n \r\n
    \r\n \r\n \r\n {hasImportUserExcelPermission && (\r\n \r\n Import Contacts from Excel\r\n \r\n )}\r\n {hasExportUsersExcelPermission && (\r\n handleExportClick(filters)}\r\n disabled={submitting}\r\n >\r\n {submitting && (\r\n \r\n \r\n \r\n )}\r\n Export Contacts to Excel\r\n \r\n )}\r\n {hasImportUserExcelPermission && (\r\n
    \r\n
    \r\n \r\n {downloadingTemplate && (\r\n \r\n \r\n \r\n )}\r\n Download Template\r\n \r\n
    \r\n )}\r\n \r\n
    \r\n )}\r\n\r\n {hasCreatePermission && title && (\r\n \r\n {title}\r\n \r\n )}\r\n\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseImportClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Import Contacts from Excel\r\n \r\n\r\n \r\n
    \r\n \r\n \r\n {({ formData, ...rest }) => (\r\n \r\n {!isFileFieldDisabled && (\r\n cleanUpData(value)}\r\n >\r\n \r\n \r\n )}\r\n {loaderVisible && }\r\n {validateButtonVisibile && (\r\n
    \r\n

    \r\n No Data To Display\r\n
    \r\n Click 'Validate' to parse and display Excel Data\r\n

    \r\n handleClickValidation(formData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n >\r\n Validate\r\n \r\n
    \r\n )}\r\n\r\n {showGrid && (\r\n
    \r\n \r\n \r\n \r\n {\r\n if (tab1ContainsErrors) {\r\n return (\r\n \r\n );\r\n } else if (tab1ContainsWarning) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n />\r\n {\r\n if (tab2ContainsErrors) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n />\r\n {\r\n if (tab3ContainsErrors) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n />\r\n {\r\n if (tab4ContainsErrors) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n />\r\n {\r\n if (tab5ContainsErrors) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n />\r\n {\r\n if (tab6ContainsErrors) {\r\n return (\r\n \r\n );\r\n } else if (tab6ContainsWarning) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Email' },\r\n { id: 'First Name' },\r\n { id: 'Middle Name' },\r\n { id: 'Last Name' },\r\n { id: 'User Type' },\r\n { id: 'Status' },\r\n { id: 'Company Name' },\r\n { id: 'Email Opt Out' },\r\n { id: 'Receive Daily Summary' },\r\n { id: 'Title' },\r\n { id: 'Salutation' },\r\n { id: 'Suffix' },\r\n { id: 'CC Email' },\r\n { id: 'Sync To External Resource' },\r\n { id: 'Business Address Line 1' },\r\n { id: 'Business Address Line 2' },\r\n { id: 'Business Address Line 3' },\r\n { id: 'City' },\r\n { id: 'State/Province' },\r\n { id: 'ZIP/Postal Code' },\r\n { id: 'Country' },\r\n { id: 'Phone Number' },\r\n { id: 'Extension' },\r\n { id: 'Profile Updated in Portal' },\r\n {\r\n id:\r\n 'Validation Error / Warning message'\r\n }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestSort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {response.map((item, index) => {\r\n return (\r\n \r\n {item.rowNum}\r\n {item.email}\r\n \r\n {item.firstName}\r\n \r\n \r\n {item.middleName}\r\n \r\n {item.lastName}\r\n {item.userType}\r\n {item.status}\r\n \r\n {item.companyName}\r\n \r\n \r\n {item.emailOptOut}\r\n \r\n \r\n {item.receiveDailySummary}\r\n \r\n {item.title}\r\n \r\n {item.salutation}\r\n \r\n {item.suffix}\r\n {item.ccEmail}\r\n \r\n {item.syncToExternalResource}\r\n \r\n \r\n {item.businessAddressLine1}\r\n \r\n \r\n {item.businessAddressLine2}\r\n \r\n \r\n {item.businessAddressLine3}\r\n \r\n {item.city}\r\n \r\n {item.stateOrProvince}\r\n \r\n \r\n {item.zipOrPostalCode}\r\n \r\n {item.country}\r\n \r\n {item.phoneNumber}\r\n \r\n \r\n {item.extension}\r\n \r\n \r\n {item.verifiedByUser}\r\n \r\n \r\n {tab1ContainsErrors\r\n ? item.validationError\r\n : item.warningMessage}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Email' },\r\n { id: 'Fund ID' },\r\n { id: 'Investor ID' },\r\n { id: 'Group Name' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab2Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab2.map((item, index) => {\r\n return (\r\n \r\n {item.rowNum}\r\n \r\n {item.userEmail}\r\n \r\n {item.fundId}\r\n \r\n {item.investorId}\r\n \r\n \r\n {item.groupName}\r\n \r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Email' },\r\n { id: 'Fund ID' },\r\n { id: 'Investor ID' },\r\n { id: 'Group Name' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab3Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab3.map((item, index) => {\r\n return (\r\n \r\n {item.rowNum}\r\n \r\n {item.userEmail}\r\n \r\n {item.fundId}\r\n \r\n {item.investorId}\r\n \r\n \r\n {item.groupName}\r\n \r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Email' },\r\n { id: 'Role Name' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab4Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab4.map((item, index) => {\r\n return (\r\n \r\n {item.rowNum}\r\n \r\n {item.userEmail}\r\n \r\n {item.roleName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Email' },\r\n { id: 'Role Name' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab5Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab5.map((item, index) => {\r\n return (\r\n \r\n {item.rowNum}\r\n \r\n {item.userEmail}\r\n \r\n {item.roleName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {propertiesDataModel ? (\r\n propertiesDataModel.map(\r\n (headCell, index) => (\r\n \r\n \r\n handleRequestTab6Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n )\r\n )\r\n ) : (\r\n \r\n There are no data in excel file to be\r\n validated. The sheet is empty.\r\n \r\n )}\r\n \r\n \r\n \r\n {responseTab6.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.rowNumber}\r\n \r\n {item.email}\r\n\r\n {item.validatedFieldUdfModels.map(\r\n cell => (\r\n \r\n {cell.fieldValue}\r\n \r\n )\r\n )}\r\n\r\n \r\n {tab6ContainsErrors\r\n ? item.validationError\r\n : item.warningMessage}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Close\r\n \r\n
    \r\n handleImportContactsClick(excelFileData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className={classes.button}\r\n disabled={disableImportButton}\r\n >\r\n Import\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n);\r\n\r\nexport default ExcelContactImportTitleBarWithDropbox;\r\n","import React from 'react';\r\nimport { SelectField } from 'react-admin';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\n\r\nimport green from '@material-ui/core/colors/green';\r\nimport orange from '@material-ui/core/colors/orange';\r\nimport red from '@material-ui/core/colors/red';\r\n\r\nconst styles = {\r\n greenText: { color: green[500] },\r\n orangeText: { color: orange[500] },\r\n redText: { color: red[500] }\r\n};\r\n\r\nconst StatusSelectField = withStyles(styles)(({ classes, ...props }) => {\r\n let optionClass = '';\r\n const status =\r\n props.record &&\r\n (props.record.status ||\r\n props.record.batchStatus ||\r\n props.record.activeVersion);\r\n switch (status) {\r\n case 'ACTIVE':\r\n case 'A':\r\n optionClass = classes.greenText;\r\n break;\r\n case 'INVITED':\r\n case 'INACTIVE':\r\n case 'PENDING':\r\n case 'OFFLINE':\r\n case 'P':\r\n optionClass = classes.orangeText;\r\n break;\r\n case 'SUSPENDED':\r\n case 'S':\r\n optionClass = classes.redText;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return ;\r\n});\r\n\r\nexport default StatusSelectField;\r\n","import React from 'react';\r\n\r\nexport const UserIcon = () => {\r\n return (\r\n \r\n );\r\n};\r\n","const userStatus = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'INVITED', name: 'Invited' },\r\n { id: 'SUSPENDED', name: 'Suspended' },\r\n { id: 'OFFLINE', name: 'Offline' }\r\n];\r\n\r\n// the pair 'value - label' is used by react-admin \r\n// the pair 'id - name' is used by mui-rff \r\n */\r\nconst convertDateToString = (value: Date, source, utcMode) => {\r\n if (!(value instanceof Date) || isNaN(value.getDate())) return '';\r\n const pad = '00';\r\n const yyyy = utcMode\r\n ? value.getUTCFullYear().toString()\r\n : value.getFullYear().toString();\r\n const MM = utcMode\r\n ? (value.getUTCMonth() + 1).toString()\r\n : (value.getMonth() + 1).toString();\r\n const dd = utcMode\r\n ? value.getUTCDate().toString()\r\n : value.getDate().toString();\r\n\r\n return `${yyyy}-${(pad + MM).slice(-2)}-${(pad + dd).slice(-2)}`;\r\n};\r\n\r\nconst dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/;\r\n\r\nconst getStringFromDate = (value: string | Date, source, utcMode) => {\r\n // null, undefined and empty string values should not go through dateFormatter\r\n // otherwise, it returns undefined and will make the input an uncontrolled one.\r\n if (value == null || value === '') {\r\n return '';\r\n }\r\n\r\n if (value instanceof Date) {\r\n return convertDateToString(value, source, utcMode);\r\n }\r\n\r\n // valid dates should not be converted\r\n if (dateRegex.test(value)) {\r\n return value;\r\n }\r\n\r\n return convertDateToString(new Date(value), source, utcMode);\r\n};\r\n\r\nexport class LocalizedUtils extends DateFnsUtils {\r\n date(value) {\r\n if (typeof value === 'undefined') {\r\n return new Date();\r\n }\r\n if (value === null) {\r\n return null;\r\n }\r\n //new Date(value) in combination with timezone can increase or decrease day by one\r\n //toDate(value) from date-fns-tz just creates Date object with given day from string\r\n if (typeof value === 'string') {\r\n return toDate(value);\r\n }\r\n return new Date(value);\r\n }\r\n}\r\n\r\nexport const DateInput = ({\r\n label,\r\n customParseValue,\r\n customOnChange,\r\n options,\r\n source,\r\n resource,\r\n helperText,\r\n margin = 'dense',\r\n utcMode,\r\n meta,\r\n onBlur,\r\n onFocus,\r\n parse,\r\n validate,\r\n format = (value, source) => getStringFromDate(value, source, utcMode),\r\n variant = 'standard',\r\n formatCustom = 'MM/dd/yyyy',\r\n showFieldLabel = true,\r\n ...rest\r\n}: DateInputProps) => {\r\n const {\r\n id,\r\n input,\r\n isRequired,\r\n meta: { error, touched }\r\n } = useInput({\r\n format,\r\n onBlur,\r\n onFocus,\r\n parse,\r\n resource,\r\n source,\r\n validate,\r\n ...rest\r\n });\r\n const onChange = value => {\r\n let parsedValue = value;\r\n if (customParseValue) {\r\n parsedValue = customParseValue(parsedValue);\r\n }\r\n input.onChange(parsedValue);\r\n input.onBlur(parsedValue);\r\n if (typeof customOnChange === 'function') {\r\n customOnChange(value);\r\n }\r\n };\r\n return (\r\n \r\n \r\n )\r\n }\r\n error={!!(touched && error)}\r\n onChange={onChange}\r\n value={input.value ? input.value : null}\r\n helperText={\r\n (isEmpty(error) ? false : error) || helperText\r\n ? React.createElement(InputHelperText, {\r\n touched: touched,\r\n error: error,\r\n helperText: helperText\r\n })\r\n : null\r\n }\r\n KeyboardButtonProps={{\r\n id: 'change-date',\r\n 'aria-label': 'change date'\r\n }}\r\n InputProps={{\r\n autoComplete: 'off'\r\n }}\r\n autoOk={true}\r\n {...sanitizeRestProps(rest)}\r\n DialogProps={{\r\n id: 'start-date-button'\r\n }}\r\n rightArrowButtonProps={{\r\n id: 'right-arrow'\r\n }}\r\n leftArrowButtonProps={{\r\n id: 'left-arrow'\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nDateInput.propTypes = {\r\n label: PropTypes.string,\r\n options: PropTypes.object,\r\n resource: PropTypes.string,\r\n source: PropTypes.string\r\n};\r\n\r\nDateInput.defaultProps = {\r\n options: {}\r\n};\r\n\r\nexport type DateInputProps = InputProps &\r\n Omit;\r\n\r\nexport default DateInput;\r\n","import React, { useState, useCallback, useEffect, useMemo } from 'react';\r\nimport {\r\n useNotify,\r\n SaveButton,\r\n PasswordInput,\r\n SelectInput,\r\n Button as ReactAdminButton\r\n} from 'react-admin';\r\nimport { Grid, Typography, FormLabel } from '@material-ui/core/';\r\nimport Lock from '@material-ui/icons/Lock';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport UserApi from '../../core/apis/UserApi';\r\nimport Confirm from '../../core/components/forked/layout/Confirm';\r\nimport DateInput from '../../core/components/forked/input/DateInput';\r\nimport moment from 'moment';\r\nimport dataProvider from '../../core/providers/IccUserDataProvider';\r\nimport messages from '../../core/i18n/englishLanguageMessages';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { isValidPassword } from '../../core/utils';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = {\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n },\r\n divStyle: { display: 'flex' },\r\n labelStyle: {\r\n cursor: 'pointer',\r\n color: '#2962FF',\r\n textDecoration: 'underline',\r\n marginLeft: '9px'\r\n },\r\n label: {\r\n fontSize: '14px',\r\n color: '#757575',\r\n paddingLeft: '2px',\r\n transform: 'translate(0px, 5px)'\r\n },\r\n statusLabel: {\r\n paddingLeft: '2px',\r\n paddingTop: '8px'\r\n },\r\n resetMfaLinkStyle: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n labelStyleDisabled: {\r\n color: '#00000061',\r\n marginLeft: '9px',\r\n textDecoration: 'underline'\r\n },\r\n statusLabelDisabled: {\r\n paddingLeft: '2px',\r\n paddingTop: '8px',\r\n color: '#00000061'\r\n },\r\n labelDisabled: {\r\n fontSize: '14px',\r\n color: '#00000061',\r\n paddingLeft: '2px',\r\n transform: 'translate(0px, 5px)'\r\n },\r\n form: {\r\n '& > div': {\r\n padding: '0px !important'\r\n }\r\n },\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n};\r\n\r\nconst getDefaultMFA = mfaMethods => {\r\n const defaultMFA = mfaMethods.find(method =>\r\n method.mfaMethodDescription.includes('Default')\r\n );\r\n return defaultMFA;\r\n};\r\n\r\nconst isMFAGloballyDisabled = defaultMethod => {\r\n return defaultMethod.mfaMethodDescription === 'Default/Inherited (Disabled)';\r\n};\r\n\r\nconst getStatusLabel = enrollmentStatus => {\r\n return enrollmentStatus === 'ENROLLED'\r\n ? 'User has successfully enrolled to MFA'\r\n : 'User has not enrolled to MFA yet';\r\n};\r\n\r\nconst checkIfValidPassword = value => {\r\n let message;\r\n\r\n if (value && value.length > 0) {\r\n if (!isValidPassword(value)) {\r\n message = 'Please enter a valid password';\r\n }\r\n }\r\n return message;\r\n};\r\n\r\nconst UserSecurity = props => {\r\n const [confirmDialogIsOpen, setConfirmDialogIsOpen] = useState(false);\r\n const [confirmDialogType, setConfirmDialogType] = useState('password');\r\n const [mfaMethods, setMfaMethods] = useState([]);\r\n const [mfaMethod, setMfaMethod] = useState('');\r\n const [mfaDueDate, setMfaDueDate] = useState(null);\r\n const [mfaStatus, setMfaStatus] = useState('');\r\n const [loadingState, setLoadingState] = useState(false);\r\n const [\r\n showCreateTemporaryPasswordDialogToggle,\r\n setShowCreateTemporaryPasswordDialogToggle\r\n ] = useState(false);\r\n const [submitting, setSubmitting] = useState(false);\r\n const [passwordValue, setPasswordValue] = useState('');\r\n const [samePasswords, setSamePasswords] = useState(false);\r\n const [ssoMethods, setSsoMethods] = useState([]);\r\n const [ssoMethod, setSsoMethod] = useState('');\r\n\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const { classes, record, permissions, userProfile = {}, ...rest } = props;\r\n\r\n const [\r\n hasWriteMfaPermission,\r\n hasResetPwdPermission,\r\n hasEditSSOPermission,\r\n hasReadSSOPermission\r\n ] = useMemo(\r\n () => [\r\n permissions.includes('AUTH_WRITE_MFA'),\r\n permissions.includes('AUTH_RESET_PASSWORD'),\r\n permissions.includes('AUTH_EDIT_AUTHENTICATION_MODE'),\r\n permissions.includes('AUTH_READ_AUTHENTICATION_MODES')\r\n ],\r\n [permissions]\r\n );\r\n\r\n const defaultMFA = getDefaultMFA(mfaMethods);\r\n const isMupChild = sessionStorage.getItem('isMupChild') === 'true';\r\n const mfaEnabledAndEditable =\r\n mfaMethods.length > 0 && !isMFAGloballyDisabled(defaultMFA);\r\n const ssoEnabled = ssoMethods.length > 0;\r\n const ssoEditable =\r\n ssoEnabled &&\r\n hasEditSSOPermission &&\r\n (userProfile.userType === 'SUPER_ADMIN' ||\r\n (userProfile.userType === 'FUND_ADMIN' &&\r\n userProfile.userId !== record.id));\r\n\r\n const handleConfirmDialogClose = useCallback(() => {\r\n setConfirmDialogIsOpen(false);\r\n setLoadingState(false);\r\n }, []);\r\n\r\n const handleResetClick = useCallback(() => {\r\n setConfirmDialogIsOpen(true);\r\n setConfirmDialogType('password');\r\n }, []);\r\n\r\n const handleConfirm = useCallback(\r\n async record => {\r\n try {\r\n setLoadingState(true);\r\n await UserApi.resetPassword(record.userId);\r\n handleConfirmDialogClose();\r\n notify(messages.ra.notification.password_reset);\r\n } catch (error) {\r\n handleConfirmDialogClose();\r\n notifyServerError(error);\r\n }\r\n },\r\n [notify, notifyServerError, handleConfirmDialogClose]\r\n );\r\n\r\n const handleResetMfa = useCallback(() => {\r\n setConfirmDialogIsOpen(true);\r\n setConfirmDialogType('mfa');\r\n }, []);\r\n\r\n const handleConfirmResetMfa = useCallback(\r\n async record => {\r\n try {\r\n await UserApi.resetMfa(record.userId);\r\n handleConfirmDialogClose();\r\n notify('Multi Factor Authentication was reset succesfully');\r\n } catch (error) {\r\n handleConfirmDialogClose();\r\n notifyServerError(error);\r\n }\r\n },\r\n [notify, notifyServerError, handleConfirmDialogClose]\r\n );\r\n\r\n const isValidDate = useCallback(value => {\r\n //null is valid for mfaEnrollmentDueDate\r\n if (value && !moment(value).isValid()) {\r\n return 'Invalid Date';\r\n }\r\n }, []);\r\n\r\n const handleCreateTemporaryPasswordDialogToggle = useCallback(() => {\r\n setShowCreateTemporaryPasswordDialogToggle(prevState => !prevState);\r\n }, []);\r\n\r\n const handleCreateTemporaryPasswordClose = useCallback(() => {\r\n if (submitting) return;\r\n handleCreateTemporaryPasswordDialogToggle();\r\n }, [handleCreateTemporaryPasswordDialogToggle, submitting]);\r\n\r\n const handleCreateTemporaryPasswordClick = useCallback(async () => {\r\n try {\r\n await UserApi.setPassword(record.userId, passwordValue);\r\n notify(messages.ra.notification.set_password_updated);\r\n handleCreateTemporaryPasswordClose();\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n }, [\r\n notify,\r\n notifyServerError,\r\n handleCreateTemporaryPasswordClose,\r\n passwordValue,\r\n record.userId\r\n ]);\r\n\r\n const updatePasswordValue = useCallback(event => {\r\n event.persist();\r\n setPasswordValue(event.target.value);\r\n }, []);\r\n\r\n const checkIfSamePassword = useCallback((value, values) => {\r\n const { confirmPassword, password } = values;\r\n let message;\r\n\r\n if (!password || !confirmPassword || password !== confirmPassword) {\r\n setSamePasswords(false);\r\n message = 'Please enter the same password';\r\n } else {\r\n setSamePasswords(true);\r\n }\r\n return message;\r\n }, []);\r\n\r\n const isSoftTokenMethod = useCallback(() => {\r\n const softTokenIndex = mfaMethods.findIndex(\r\n method =>\r\n method.mfaMethodName === mfaMethod &&\r\n method.mfaMethodDescription.includes('Soft Token OTP')\r\n );\r\n return softTokenIndex !== -1;\r\n }, [mfaMethod, mfaMethods]);\r\n\r\n const handleSubmit = useCallback(\r\n async (values, mfaEditable, ssoEditable) => {\r\n if (mfaEditable) {\r\n setSubmitting(true);\r\n const formattedDueDate = values.mfaDueDate\r\n ? moment(values.mfaDueDate)\r\n .startOf('day')\r\n .format('YYYY-MM-DDTHH:MM:SS.SSS')\r\n : values.mfaDueDate;\r\n const userMfa = {\r\n userId: record.userId,\r\n mfaMethod: values.mfaMethod,\r\n mfaEnrollmentDueDate: formattedDueDate\r\n };\r\n\r\n try {\r\n await UserApi.setUserMFA([userMfa]);\r\n setSubmitting(false);\r\n setMfaMethod(values.mfaMethod);\r\n setMfaDueDate(values.mfaDueDate);\r\n notify('ra.notification.custom_updated_message');\r\n } catch (error) {\r\n setSubmitting(false);\r\n notifyServerError(error);\r\n }\r\n }\r\n if (ssoEditable) {\r\n setSubmitting(true);\r\n const userSSO = {\r\n userId: record.userId,\r\n authenticationMode: values.ssoMethod\r\n };\r\n\r\n try {\r\n await UserApi.setUserSSO(userSSO);\r\n setSubmitting(false);\r\n setSsoMethod(values.ssoMethod);\r\n notify('ra.notification.custom_updated_message');\r\n } catch (error) {\r\n setSubmitting(false);\r\n notifyServerError(error);\r\n }\r\n }\r\n },\r\n [notify, notifyServerError, record.userId]\r\n );\r\n\r\n useEffect(() => {\r\n let isCancelled = false;\r\n dataProvider('GET_LIST', 'mfamethods', {\r\n pagination: { perPage: -1 },\r\n filter: { userId: `${record.userId}` }\r\n })\r\n .then(allMFAMethods => {\r\n if (!isCancelled && allMFAMethods && allMFAMethods.data) {\r\n const defaultMFA = getDefaultMFA(allMFAMethods.data);\r\n if (!isMFAGloballyDisabled(defaultMFA)) {\r\n UserApi.getUserMFA(record.userId)\r\n .then(userMfaData => {\r\n if (!isCancelled) {\r\n const userMFA =\r\n userMfaData && userMfaData.length > 0\r\n ? userMfaData[0]\r\n : null;\r\n setMfaMethods(allMFAMethods.data);\r\n setMfaMethod(userMFA ? userMFA.mfaMethod : '');\r\n setMfaDueDate(userMFA ? userMFA.mfaEnrollmentDueDate : null);\r\n setMfaStatus(\r\n userMFA ? userMFA.userMfaEnrollmentStatusDto : ''\r\n );\r\n }\r\n })\r\n .catch(notifyServerError);\r\n } else {\r\n setMfaMethods(allMFAMethods.data);\r\n setMfaMethod(defaultMFA.mfaMethodName);\r\n }\r\n }\r\n })\r\n .catch(notifyServerError);\r\n\r\n if (!isMupChild && hasReadSSOPermission) {\r\n UserApi.getSSOAuthenticationsModes()\r\n .then(allSSOModes => {\r\n if (\r\n !isCancelled &&\r\n allSSOModes &&\r\n allSSOModes.ssoEnabled &&\r\n allSSOModes.authenticationModes.length > 0\r\n ) {\r\n UserApi.getUserSSO(record.userId)\r\n .then(userSSOMode => {\r\n if (!isCancelled) {\r\n const userMFA = userSSOMode\r\n ? userSSOMode.authenticationMode\r\n : null;\r\n setSsoMethods(allSSOModes.authenticationModes);\r\n setSsoMethod(userMFA || '');\r\n }\r\n })\r\n .catch(notifyServerError);\r\n }\r\n })\r\n .catch(notifyServerError);\r\n }\r\n return () => (isCancelled = true);\r\n }, [notify, notifyServerError, hasReadSSOPermission, isMupChild, record]);\r\n\r\n return (\r\n
    \r\n \r\n {hasResetPwdPermission && (\r\n <>\r\n \r\n Security\r\n \r\n \r\n \r\n \r\n \r\n Reset Password\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    Password requirements:
    \r\n
    \r\n
      \r\n
    • 8-15 characters long, no spaces allowed
    • \r\n
    • include capital letters, numbers and symbols
    • \r\n
    • must not be User ID or Email Address
    • \r\n
    \r\n
    \r\n
    \r\n \r\n }\r\n id=\"save\"\r\n disabled={!samePasswords}\r\n />\r\n \r\n Cancel\r\n \r\n \r\n
    \r\n \r\n )}\r\n \r\n \r\n {(mfaEnabledAndEditable || ssoEnabled) && (\r\n \r\n handleSubmit(values, mfaEnabledAndEditable, ssoEditable)\r\n }\r\n toolbar={\r\n \r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n className={classes.form}\r\n initialValues={{ mfaMethod, mfaDueDate, ssoMethod }}\r\n >\r\n {mfaEnabledAndEditable && (\r\n \r\n \r\n \r\n Multi Factor Authentication\r\n \r\n \r\n \r\n \r\n \r\n {isSoftTokenMethod() && (\r\n \r\n \r\n \r\n \r\n \r\n Reset MFA and Send Enrollment Email\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n MFA Enrollment Status\r\n \r\n \r\n {getStatusLabel(mfaStatus)}\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n {ssoEnabled && (\r\n \r\n \r\n Single Sign-On\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n

    \r\n {confirmDialogType === 'password'\r\n ? 'You are about to reset password for this contact.'\r\n : 'You are about to reset MFA for this contact.'}\r\n

    \r\n {confirmDialogType === 'password'\r\n ? 'A new temporary password will be sent by email.'\r\n : 'Email with instructions will be sent.'}\r\n \r\n }\r\n onConfirm={() =>\r\n confirmDialogType === 'password'\r\n ? handleConfirm(record)\r\n : handleConfirmResetMfa(record)\r\n }\r\n loading={loadingState}\r\n onClose={handleConfirmDialogClose}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(UserSecurity);\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport Confirm from './forked/layout/Confirm';\r\n\r\n/**\r\n * Wrapper for the confirm pop-up component,\r\n * expecially for the confirm pop-up when you leave a page without save your changes\r\n */\r\nconst LeaveConfirmWrapper = props => {\r\n return (\r\n \r\n

    You made some changes on this page.

    \r\n If you leave now, the changes will be lost.\r\n \r\n }\r\n confirm=\"ra.action.confirm_leave\"\r\n />\r\n );\r\n};\r\n\r\nLeaveConfirmWrapper.propTypes = {\r\n isOpen: PropTypes.bool,\r\n onClose: PropTypes.func.isRequired,\r\n onConfirm: PropTypes.func.isRequired\r\n};\r\n\r\nexport default LeaveConfirmWrapper;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n/**\r\n * Entitlement API\r\n */\r\nclass EntitlementApi extends ApiBase {\r\n /**\r\n * Get user authorizations by role\r\n * @param {*} filters Array of filter objects\r\n */\r\n async getAuthorizationsByRole(filters) {\r\n const request = {\r\n url: `${this.API_URL}/userauthorizations/byrole`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(filters)\r\n };\r\n const response = await axios.request(request);\r\n if (response.status !== 200) {\r\n throw new Error(response.statusText);\r\n }\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Get user authorizations by userId\r\n * @param userId\r\n */\r\n getAuthorizationsByUserId = async userId => {\r\n const request = {\r\n url: `${this.API_URL}/userauthorizations?userId=${userId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data && response.data.pageData;\r\n };\r\n\r\n /**\r\n * Get user authorizations by userId\r\n * @param {*} userauthorizations Array of filter objects\r\n */\r\n createAuthorizations = async userauthorizations => {\r\n const request = {\r\n url: `${this.API_URL}/userauthorizations`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(userauthorizations)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data && response.data.pageData;\r\n };\r\n /**\r\n * Get user authorizations by userId and investorId\r\n * @param investorId\r\n */\r\n getAuthorizationsByInvestorId = async investorId => {\r\n const request = {\r\n url: `${this.API_URL}/userauthorizations?investorId=${investorId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n };\r\n}\r\nexport default new EntitlementApi();\r\n","import { useState, useEffect, useCallback } from 'react';\r\n\r\nimport useNotifyServerError from './useNotifyServerError';\r\n\r\n/**\r\n * Custom hook to fetch data from the server\r\n * This hook return the data return by the api and the loading state as { data, loading }\r\n * In case of error the hook show up the error into the React Admin notification component\r\n * @param {function} fetchFunc the function to execute the API call\r\n * @param {*} payload the payload to pass to the fetchFunc function\r\n */\r\nexport const useFetch = (fetchFunc, payload) => {\r\n const [data, setData] = useState(null);\r\n const [loading, setLoading] = useState(true);\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const func = useCallback(async () => {\r\n try {\r\n const data = await fetchFunc(payload);\r\n setData(data);\r\n setLoading(false);\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n }, [fetchFunc, payload, notifyServerError]);\r\n\r\n useEffect(() => {\r\n func();\r\n }, [func]);\r\n\r\n return { data, loading };\r\n};\r\n","import React, { useState, useCallback } from 'react';\r\nimport { MultiGrid, AutoSizer } from 'react-virtualized';\r\nimport Draggable from 'react-draggable';\r\nimport { Checkbox } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport LightTooltip from '../components/LightTooltip';\r\n\r\nconst DraggableHeader = props => {\r\n const { resizeColumns, columnSource, width } = props;\r\n\r\n const [deltaPositionX, setDeltaPositionX] = useState(0);\r\n\r\n const handleDrag = useCallback(\r\n async (e, ui) => {\r\n setDeltaPositionX(deltaPositionX + ui.deltaX);\r\n },\r\n [deltaPositionX, setDeltaPositionX]\r\n );\r\n\r\n const handleStop = useCallback(async () => {\r\n resizeColumns(columnSource, deltaPositionX, width);\r\n setDeltaPositionX(0);\r\n }, [resizeColumns, deltaPositionX, width, columnSource]);\r\n\r\n const dragStyle = {\r\n cursor: 'col-resize',\r\n color: 'transparent',\r\n position: 'absolute',\r\n right: -deltaPositionX,\r\n top: 0,\r\n zIndex: '1',\r\n width: '6px',\r\n borderRight: '1px solid #E0E0E0'\r\n };\r\n\r\n return (\r\n \r\n :\r\n \r\n );\r\n};\r\n\r\nclass VirtualizedGrid extends React.PureComponent {\r\n constructor() {\r\n super();\r\n this.state = {\r\n widths: {}, //fixed size width or percentage of flexible width grid part for each column\r\n definedSizeColumnsWidth: 0, //calculated width of all columns with defined constant widths\r\n orderBy: '',\r\n orderASC: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.calculateWidths(false);\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.columns.length !== prevProps.columns.length) {\r\n this.calculateWidths(true);\r\n }\r\n }\r\n\r\n calculateWidths = (recomputeGridSize = false) => {\r\n let widths = [];\r\n // number of columns with predefined constat width\r\n const fixedSizedColumns = this.props.columns.filter(e => e.width);\r\n // total width of columns with predefined constat width\r\n const definedSizeColumnsWidth = fixedSizedColumns\r\n .map(el => el.width)\r\n .reduce((acc, curr) => {\r\n acc += curr;\r\n return acc;\r\n }, 0);\r\n // number of columns with flexible width\r\n const relativeSizeColumnsLength =\r\n this.props.columns.length - fixedSizedColumns.length;\r\n\r\n this.props.columns.forEach(col => {\r\n widths[col.source] = col.width\r\n ? col.width\r\n : col.widthPercentage\r\n ? col.widthPercentage\r\n : 1 / relativeSizeColumnsLength;\r\n });\r\n this.setState(\r\n {\r\n widths: widths,\r\n definedSizeColumnsWidth: definedSizeColumnsWidth\r\n },\r\n recomputeGridSize ? this.gridRef.recomputeGridSize() : null\r\n );\r\n };\r\n\r\n columnWidthGetter = (column, totalWidth) => {\r\n let { widths, definedSizeColumnsWidth } = this.state;\r\n return column.width\r\n ? column.width\r\n : widths[column.source] * (totalWidth - definedSizeColumnsWidth);\r\n };\r\n\r\n resizeCol = (columnSource, deltaX, width) => {\r\n const { widths, definedSizeColumnsWidth } = this.state;\r\n const percentDelta = deltaX / (width - definedSizeColumnsWidth);\r\n const newColumnWidth = widths[columnSource] + percentDelta;\r\n if (newColumnWidth < 0) return;\r\n this.setState(\r\n {\r\n widths: {\r\n ...widths,\r\n [columnSource]: newColumnWidth\r\n }\r\n },\r\n () => this.gridRef.recomputeGridSize()\r\n );\r\n };\r\n\r\n sortFunction = (\r\n a,\r\n b,\r\n orderBy,\r\n orderASC,\r\n columnType,\r\n columnLookupOptions,\r\n columnLookupIdField,\r\n columnLookupTextField\r\n ) => {\r\n if (columnType === 'date') {\r\n if (!a[orderBy] || !b[orderBy]) {\r\n return a[orderBy] ? -1 : b[orderBy] ? 1 : 0;\r\n }\r\n if (moment(a[orderBy]).isSame(b[orderBy], 'day')) {\r\n return 0;\r\n }\r\n return orderASC\r\n ? moment(a[orderBy]).isBefore(b[orderBy], 'day')\r\n ? -1\r\n : 1\r\n : moment(a[orderBy]).isAfter(b[orderBy], 'day')\r\n ? -1\r\n : 1;\r\n } else if (columnType === 'lookup') {\r\n const aRowLookupObject = columnLookupOptions.find(\r\n e => e[columnLookupIdField] === a[orderBy]\r\n );\r\n const bRowLookupObject = columnLookupOptions.find(\r\n e => e[columnLookupIdField] === b[orderBy]\r\n );\r\n const aRowText = aRowLookupObject\r\n ? aRowLookupObject[columnLookupTextField] || ''\r\n : '';\r\n const bRowText = bRowLookupObject\r\n ? bRowLookupObject[columnLookupTextField] || ''\r\n : '';\r\n if (!aRowText || !bRowText) {\r\n return aRowText ? -1 : bRowText ? 1 : 0;\r\n }\r\n return orderASC\r\n ? aRowText.localeCompare(bRowText)\r\n : bRowText.localeCompare(aRowText);\r\n } else if (columnType === 'number') {\r\n if (!a[orderBy] || !b[orderBy]) {\r\n return a[orderBy] ? -1 : b[orderBy] ? 1 : 0;\r\n }\r\n if (a[orderBy] === b[orderBy]) {\r\n return 0;\r\n }\r\n return orderASC\r\n ? a[orderBy] < b[orderBy]\r\n ? -1\r\n : 1\r\n : a[orderBy] > b[orderBy]\r\n ? -1\r\n : 1;\r\n } else {\r\n if (!a[orderBy] || !b[orderBy]) {\r\n return a[orderBy] ? -1 : b[orderBy] ? 1 : 0;\r\n }\r\n return orderASC\r\n ? a[orderBy].trim().localeCompare(b[orderBy].trim(), undefined, {\r\n sensitivity: 'base'\r\n })\r\n : b[orderBy].trim().localeCompare(a[orderBy].trim(), undefined, {\r\n sensitivity: 'base'\r\n });\r\n }\r\n };\r\n\r\n //sort grid data with chosen column\r\n getSortedData = (orderBy, orderASC) => {\r\n const { data, columns } = this.props;\r\n let orderedData = [...data];\r\n const columnRow = orderedData[0]; //columns title row\r\n const orderColumn = columns.find(e => e.source === orderBy);\r\n const columnType = orderColumn.type;\r\n const columnLookupOptions = orderColumn.options\r\n ? orderColumn.options\r\n : undefined;\r\n const columnLookupTextField = orderColumn.lookupTextField\r\n ? orderColumn.lookupTextField\r\n : undefined;\r\n const columnLookupIdField = orderColumn.lookupIdField\r\n ? orderColumn.lookupIdField\r\n : undefined;\r\n //remove column header row and sort all remaining\r\n orderedData = orderedData\r\n .slice(1)\r\n .sort((a, b) =>\r\n this.sortFunction(\r\n a,\r\n b,\r\n orderBy,\r\n orderASC,\r\n columnType,\r\n columnLookupOptions,\r\n columnLookupIdField,\r\n columnLookupTextField\r\n )\r\n );\r\n //include again column header row\r\n orderedData.unshift(columnRow);\r\n return orderedData;\r\n };\r\n\r\n //set order column values in parent component data\r\n orderClick = column => {\r\n const { setDocuments } = this.props;\r\n const { orderBy, orderASC } = this.state;\r\n\r\n const newOrderBy = column.source;\r\n const newOrderASC = orderBy !== newOrderBy ? true : !orderASC;\r\n const sortedDocs = this.getSortedData(newOrderBy, newOrderASC);\r\n //function passed from parent component used to set order column values\r\n if (setDocuments) {\r\n setDocuments(sortedDocs);\r\n }\r\n this.setState({\r\n orderBy: newOrderBy,\r\n orderASC: newOrderASC\r\n });\r\n };\r\n\r\n cellRenderer = (row_data, width, data, orderBy, orderASC) => {\r\n let column = this.props.columns[row_data.columnIndex];\r\n let rowVal = data[row_data.rowIndex];\r\n const { resizibleColumns = true } = this.props;\r\n let cellVal = rowVal[column.source];\r\n\r\n let rowStyle = { ...row_data.style };\r\n rowStyle.width = this.columnWidthGetter(column, width);\r\n\r\n //fist row in data is column row\r\n if (row_data.rowIndex === 0) {\r\n const headerStyle = {\r\n ...rowStyle,\r\n color: '#757575',\r\n height: '30px',\r\n fontSize: '14px',\r\n fontWeight: '500',\r\n lineHeight: '30px',\r\n backgroundColor: '#F5F5F5 !important',\r\n textAlign: 'left'\r\n };\r\n\r\n if (column.type !== 'checkbox') {\r\n return (\r\n \r\n
    \r\n \r\n column.sortable ? this.orderClick(column) : null\r\n }\r\n >\r\n {cellVal}\r\n {column.sortable && (\r\n \r\n {orderBy && orderBy === column.source && orderASC && (\r\n \r\n )}\r\n {orderBy && orderBy === column.source && !orderASC && (\r\n \r\n )}\r\n {(!orderBy || orderBy !== column.source) && (\r\n _\r\n )}\r\n
    \r\n )}\r\n \r\n {resizibleColumns && (\r\n //add div for resizing with handler cursor type\r\n \r\n )}\r\n \r\n \r\n );\r\n } else {\r\n const headercheckboxStyle = {\r\n ...rowStyle,\r\n padding: '0 8px !important',\r\n borderRight: '1px solid #E0E0E0'\r\n };\r\n const {\r\n disableSelectAll = false,\r\n selectedRows,\r\n filteredRows,\r\n filteredSelectedRows\r\n } = this.props;\r\n const numSelectedRows = selectedRows\r\n ? selectedRows\r\n : data.filter(r => r.selected === true).length;\r\n const rowCount = data.length - 1;\r\n const filteredRowsCount = filteredRows ? filteredRows.length : rowCount;\r\n const filteredSelectedRowsCount = filteredSelectedRows\r\n ? filteredSelectedRows.length\r\n : numSelectedRows;\r\n return (\r\n
    \r\n {!disableSelectAll && (\r\n 0 &&\r\n filteredSelectedRowsCount < filteredRowsCount\r\n }\r\n checked={\r\n filteredSelectedRowsCount > 0 &&\r\n filteredSelectedRowsCount === filteredRowsCount\r\n }\r\n onClick={column.onClick}\r\n />\r\n )}\r\n
    \r\n );\r\n }\r\n // data rows\r\n } else {\r\n if (column.renderer) {\r\n return column.renderer({ column, row_data, rowVal });\r\n } else {\r\n return (\r\n
    \r\n {cellVal}\r\n
    \r\n );\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n let {\r\n data,\r\n columns,\r\n fixedColumns,\r\n height,\r\n width,\r\n rowHeight,\r\n minHeight,\r\n itemSearch,\r\n emptyMessage,\r\n calculateColumnWidth = null\r\n } = this.props;\r\n let { widths, orderBy, orderASC } = this.state;\r\n let getColumnWidth = (colIndex, width) => {\r\n if (calculateColumnWidth) {\r\n return calculateColumnWidth(colIndex, width);\r\n }\r\n let column = columns[colIndex];\r\n const colWidth =\r\n column.type !== 'checkbox'\r\n ? widths[column.source] * width\r\n : column.width;\r\n if (!colWidth || isNaN(colWidth)) {\r\n return 100;\r\n } else {\r\n return colWidth;\r\n }\r\n };\r\n\r\n let getRowHeight = params => {\r\n return params.index === 0 ? 30 : rowHeight;\r\n };\r\n\r\n let noContentRenderer = () => {\r\n const emptyDiv = {\r\n height: '100%',\r\n width: '100%',\r\n fontSize: '0.875rem',\r\n backgroundColor: 'white',\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n borderTop: '1px solid rgba(0, 0, 0, 0.12)'\r\n };\r\n const emptySpan = {\r\n display: 'flex',\r\n height: '100%',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n margin: '-1px 0 0 0',\r\n borderBottom: '1px solid rgba(0, 0, 0, 0.12)'\r\n };\r\n if (emptyMessage !== '' && itemSearch === '') {\r\n return (\r\n
    \r\n {emptyMessage}\r\n
    \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n \r\n \r\n {({ height, width }) => (\r\n \r\n this.cellRenderer(row_data, width, data, orderBy, orderASC)\r\n }\r\n ref={grid => (this.gridRef = grid)}\r\n fixedColumnCount={fixedColumns}\r\n fixedRowCount={1}\r\n columnWidth={col => getColumnWidth(col.index, width)}\r\n columnCount={columns.length}\r\n enableFixedColumnScroll\r\n enableFixedRowScroll\r\n height={height}\r\n rowHeight={getRowHeight}\r\n rowCount={data.length}\r\n width={width}\r\n hideTopRightGridScrollbar\r\n hideBottomLeftGridScrollbar\r\n style={{\r\n border: '1px solid #E0E0E0',\r\n color: '#757575',\r\n backgroundColor: '#F5F5F5 !important'\r\n }}\r\n styleTopLeftGrid={{\r\n overflow: 'visible'\r\n }}\r\n styleBottomLeftGrid={{\r\n outline: 'none'\r\n }}\r\n styleBottomRightGrid={{\r\n outline: 'none'\r\n }}\r\n />\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default VirtualizedGrid;\r\n","import withStyles from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport green from '@material-ui/core/colors/green';\r\nimport orange from '@material-ui/core/colors/orange';\r\nimport red from '@material-ui/core/colors/red';\r\n\r\nconst styles = () => ({\r\n containerClass: {},\r\n gridLarge: {},\r\n searchLabel: {},\r\n table: {},\r\n checkboxCell: {\r\n width: '24px',\r\n borderBottom: '0px !important'\r\n },\r\n checkbox: {\r\n padding: '0'\r\n },\r\n greenText: { color: green[500] },\r\n orangeText: { color: orange[500] },\r\n redText: { color: red[500] }\r\n});\r\nconst StatusColorDisplay = withStyles(styles)(({ status, classes }) => {\r\n let optionClass = '';\r\n const statusLookups = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'PENDING', name: 'Pending' },\r\n { id: 'INACTIVE', name: 'Inactive' },\r\n { id: 'A', name: 'Active' },\r\n { id: 'INVITED', name: 'Invited' },\r\n { id: 'OFFLINE', name: 'Offline' },\r\n { id: 'P', name: 'Pending' },\r\n { id: 'SUSPENDED', name: 'Suspended' },\r\n { id: 'S', name: 'Suspended' }\r\n ];\r\n const statusRenderer = statusLookups.find(\r\n statusChoice => status === statusChoice.id\r\n );\r\n switch (statusRenderer?.id) {\r\n case 'ACTIVE':\r\n case 'A':\r\n optionClass = classes.greenText;\r\n break;\r\n case 'INVITED':\r\n case 'INACTIVE':\r\n case 'PENDING':\r\n case 'OFFLINE':\r\n case 'P':\r\n optionClass = classes.orangeText;\r\n break;\r\n case 'SUSPENDED':\r\n case 'S':\r\n optionClass = classes.redText;\r\n break;\r\n default:\r\n break;\r\n }\r\n return (\r\n \r\n {statusRenderer?.name}\r\n \r\n );\r\n});\r\n\r\nexport default StatusColorDisplay;\r\n","import React, { useState, useEffect, useCallback, useMemo } from 'react';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport debounce from 'lodash/debounce';\r\nimport get from 'lodash/get';\r\nimport isNil from 'lodash/isNil';\r\nimport PropTypes from 'prop-types';\r\nimport { useInput, FieldTitle } from 'react-admin';\r\nimport VirtualizedGrid from '../../components/VirtualizedGrid';\r\nimport LightTooltip from '../LightTooltip';\r\nimport StatusColorDisplay from '../StatusColorDisplay';\r\nimport { uniqBy } from 'lodash';\r\nimport { Autocomplete } from '@material-ui/lab';\r\n\r\nconst styles = () => ({\r\n checkboxCell: {\r\n width: '24px',\r\n borderBottom: '0px !important'\r\n },\r\n checkbox: {\r\n padding: '0'\r\n }\r\n});\r\n\r\n/**\r\n * An Input component for a select box, using an array of objects for the options\r\n */\r\nconst GridInput = props => {\r\n const {\r\n format,\r\n onBlur,\r\n onChange,\r\n onFocus,\r\n parse,\r\n resource,\r\n source,\r\n validate,\r\n choices = [],\r\n classes,\r\n hasText,\r\n meta,\r\n isRequired,\r\n optionValue,\r\n optionText,\r\n label,\r\n optionTextLabel,\r\n optionValueLabel,\r\n additionalColumns = [],\r\n sortFunc,\r\n singleSelect,\r\n disableSelectAll,\r\n disableCheckBoxes,\r\n translateChoice,\r\n translate,\r\n height,\r\n emptyMessage,\r\n additionalFilterProps,\r\n showAdditionalFilter,\r\n ...rest\r\n } = props;\r\n\r\n const {\r\n input: { onChange: finalFormOnChange, onBlur: finalFormOnBlur, value }\r\n } = useInput({\r\n format,\r\n onBlur,\r\n onChange,\r\n onFocus,\r\n parse,\r\n resource,\r\n source,\r\n validate,\r\n ...rest\r\n });\r\n const { error, touched } = meta;\r\n const [itemSearch, setItemSearch] = useState('');\r\n const [additionalItemSearch, setAdditionalItemSearch] = useState('');\r\n const [isShiftDown, setIsShiftDown] = useState(false);\r\n const [lastSelectedItem, setLastSelectedItem] = useState(null);\r\n const itemSelection = useMemo(() => value || [], [value]);\r\n\r\n /**\r\n * Set the itemSearch state to filter the right side list\r\n */\r\n const handleItemSearch = debounce(text => {\r\n setItemSearch(text);\r\n }, 500);\r\n\r\n const getAdditionalFilterChoices = useMemo(() => {\r\n if (!isNil(additionalFilterProps)) {\r\n const { attributeToFilter } = additionalFilterProps;\r\n return choices.reduce((acc, curr) => {\r\n if (curr[attributeToFilter]) {\r\n acc.push({\r\n id: curr[attributeToFilter],\r\n name: curr[attributeToFilter]\r\n });\r\n }\r\n return uniqBy(acc, 'id').sort((a, b) =>\r\n a.name.toLowerCase().localeCompare(b.name.toLowerCase())\r\n );\r\n }, []);\r\n }\r\n }, [additionalFilterProps, choices]);\r\n\r\n const handleKeyUp = useCallback(\r\n e => {\r\n if (e.key === 'Shift' && isShiftDown) {\r\n setIsShiftDown(false);\r\n }\r\n },\r\n [isShiftDown]\r\n );\r\n\r\n const handleKeyDown = useCallback(\r\n e => {\r\n if (e.key === 'Shift' && !isShiftDown) {\r\n setIsShiftDown(true);\r\n }\r\n },\r\n [isShiftDown]\r\n );\r\n\r\n useEffect(() => {\r\n document.addEventListener('keyup', handleKeyUp, false);\r\n document.addEventListener('keydown', handleKeyDown, false);\r\n return () => {\r\n document.removeEventListener('keyup', handleKeyUp);\r\n document.removeEventListener('keydown', handleKeyDown);\r\n };\r\n }, [handleKeyDown, handleKeyUp]);\r\n\r\n useEffect(() => {\r\n finalFormOnChange(value || []);\r\n }, [value, finalFormOnChange]);\r\n\r\n useEffect(() => {\r\n return () => {\r\n handleItemSearch.cancel();\r\n };\r\n }, [handleItemSearch]);\r\n\r\n // Sort choices if needed\r\n const sortedChoices = useMemo(\r\n () => (sortFunc ? choices.sort(sortFunc) : choices),\r\n [sortFunc, choices]\r\n );\r\n\r\n const filteredChoices = useMemo(() => {\r\n return sortedChoices.filter(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n const text =\r\n typeof optionText === 'function'\r\n ? optionText(choice)\r\n : get(choice, optionText);\r\n\r\n const additionalColumnValues = additionalColumns.map(column => {\r\n const addValue = get(choice, column.name);\r\n return addValue ? addValue.toString().toLowerCase() : '';\r\n });\r\n\r\n return (\r\n ((!isNil(value) &&\r\n value\r\n .toString()\r\n .toLowerCase()\r\n .includes(itemSearch.toLowerCase())) ||\r\n (!isNil(text) &&\r\n text.toLowerCase().includes(itemSearch.toLowerCase())) ||\r\n (additionalColumns.length > 0 &&\r\n additionalColumnValues.some(val =>\r\n val.includes(itemSearch.toLowerCase())\r\n ))) &&\r\n (additionalItemSearch === ''\r\n ? true\r\n : !!get(choice, additionalFilterProps.attributeToFilter)\r\n ?.toLowerCase()\r\n .includes(additionalItemSearch.toLowerCase()))\r\n );\r\n });\r\n }, [\r\n sortedChoices,\r\n optionValue,\r\n optionText,\r\n itemSearch,\r\n additionalColumns,\r\n additionalFilterProps,\r\n additionalItemSearch\r\n ]);\r\n\r\n const filteredSelectedChoices = useMemo(() => {\r\n return filteredChoices.filter(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n return itemSelection.includes(value);\r\n });\r\n }, [filteredChoices, optionValue, itemSelection]);\r\n\r\n /**\r\n * return the list of items selected with shift\r\n */\r\n const getShiftSelectedItems = useCallback(\r\n val => {\r\n const currentSelectedIndex = choices.findIndex(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n return value === val;\r\n });\r\n const lastSelectedIndex = choices.findIndex(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n return value === lastSelectedItem;\r\n });\r\n\r\n return choices\r\n .slice(\r\n Math.min(lastSelectedIndex, currentSelectedIndex),\r\n Math.max(lastSelectedIndex, currentSelectedIndex) + 1\r\n )\r\n .map(choice => {\r\n return typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n });\r\n },\r\n [choices, lastSelectedItem, optionValue]\r\n );\r\n\r\n const handleChange = useCallback(\r\n value => {\r\n finalFormOnChange(value);\r\n finalFormOnBlur(); // HACK: See https://github.com/final-form/react-final-form/issues/365#issuecomment-515045503\r\n },\r\n [finalFormOnChange, finalFormOnBlur]\r\n );\r\n\r\n /**\r\n * Render item label\r\n */\r\n const renderItemLabel = useCallback(\r\n choice => {\r\n if (React.isValidElement(optionText))\r\n return React.cloneElement(optionText, {\r\n record: choice\r\n });\r\n const choiceName =\r\n typeof optionText === 'function'\r\n ? optionText(choice)\r\n : get(choice, optionText);\r\n\r\n return translateChoice\r\n ? translate(choiceName, { _: choiceName })\r\n : choiceName;\r\n },\r\n [optionText, translate, translateChoice]\r\n );\r\n\r\n /**\r\n * Select list item => add to itemSelection list\r\n */\r\n const handleItemSelected = useCallback(\r\n value => {\r\n let array;\r\n\r\n if (singleSelect) {\r\n array = [...itemSelection];\r\n if (array.includes(value)) {\r\n array = [];\r\n } else {\r\n array = [value];\r\n }\r\n } else {\r\n if (isShiftDown) {\r\n const hasBeenSelected = !itemSelection.includes(value);\r\n const shiftSelectedItems = getShiftSelectedItems(value);\r\n // de-dupe the array using a Set\r\n array = [...new Set([...itemSelection, ...shiftSelectedItems])];\r\n\r\n if (!hasBeenSelected) {\r\n array = array.filter(item => !shiftSelectedItems.includes(item));\r\n }\r\n } else {\r\n array = [...itemSelection];\r\n if (array.includes(value)) {\r\n array.splice(array.indexOf(value), 1);\r\n } else {\r\n array.push(value);\r\n }\r\n }\r\n }\r\n\r\n setLastSelectedItem(value);\r\n handleChange(array);\r\n },\r\n [\r\n getShiftSelectedItems,\r\n handleChange,\r\n isShiftDown,\r\n itemSelection,\r\n singleSelect\r\n ]\r\n );\r\n\r\n /**\r\n * Select all list items => add to itemSelection list\r\n */\r\n const handleAllItemsSelected = useCallback(() => {\r\n const array = [...itemSelection];\r\n\r\n const alreadySelectedChoices = filteredChoices.filter(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n return itemSelection.includes(value);\r\n });\r\n\r\n if (alreadySelectedChoices.length < filteredChoices.length) {\r\n filteredChoices.forEach(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n\r\n const selectedChoice = alreadySelectedChoices.find(item => {\r\n const selectedValue =\r\n typeof optionValue === 'function'\r\n ? optionValue(item)\r\n : get(item, optionValue);\r\n return value === selectedValue;\r\n });\r\n\r\n if (!selectedChoice) {\r\n array.push(value);\r\n }\r\n });\r\n } else {\r\n alreadySelectedChoices.forEach(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n array.splice(array.indexOf(value), 1);\r\n });\r\n }\r\n\r\n handleChange(array);\r\n }, [handleChange, itemSelection, optionValue, filteredChoices]);\r\n\r\n const getItemValue = useCallback(\r\n item => {\r\n return typeof optionValue === 'function'\r\n ? optionValue(item)\r\n : get(item, optionValue);\r\n },\r\n [optionValue]\r\n );\r\n\r\n const getItemStatus = useCallback(\r\n item => {\r\n return typeof optionValue === 'function'\r\n ? optionValue(item)\r\n : get(item, 'status');\r\n },\r\n [optionValue]\r\n );\r\n\r\n const getItemText = useCallback(\r\n item => {\r\n return typeof optionText === 'function'\r\n ? optionText(item)\r\n : get(item, optionText);\r\n },\r\n [optionText]\r\n );\r\n\r\n const columns = useMemo(() => {\r\n const additionalColumnsContains1Column = additionalColumns.length === 1;\r\n const sizeFor2ColumnsOptionLabel =\r\n additionalColumns.length > 1 ? 0.4 : 0.55;\r\n const sizeFor2ColumnsOptionValue =\r\n additionalColumns.length > 1 ? 0.2 : 0.45;\r\n const sizeForOptionLabel = additionalColumnsContains1Column\r\n ? 0.55\r\n : sizeFor2ColumnsOptionLabel;\r\n const sizeForOptionValue = additionalColumnsContains1Column\r\n ? 0.3\r\n : sizeFor2ColumnsOptionValue;\r\n const columns = [\r\n {\r\n id: 'selected',\r\n source: 'isItemSelected',\r\n type: 'checkbox',\r\n width: 30,\r\n onClick: handleAllItemsSelected,\r\n renderer: params => {\r\n const { row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n borderTop: '1px solid #E0E0E0',\r\n fontSize: '14px',\r\n background: 'white',\r\n padding: 0\r\n };\r\n const value = getItemValue(rowVal);\r\n return (\r\n
    \r\n handleItemSelected(value)}\r\n disabled={disableCheckBoxes}\r\n />\r\n
    \r\n );\r\n }\r\n },\r\n {\r\n id: optionTextLabel,\r\n source: 'textColumn',\r\n type: 'text',\r\n widthPercentage: sizeForOptionLabel,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n paddingTop: '4px',\r\n paddingLeft: '8px',\r\n borderTop: '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return (\r\n \r\n \r\n {renderItemLabel(rowVal)}\r\n \r\n \r\n );\r\n }\r\n },\r\n {\r\n id: optionValueLabel,\r\n source: 'valueColumn',\r\n type: 'text',\r\n widthPercentage: sizeForOptionValue,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n paddingTop: '4px',\r\n paddingLeft: '8px',\r\n borderTop: '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return (\r\n \r\n \r\n {rowVal[column.source]}\r\n \r\n \r\n );\r\n }\r\n }\r\n ];\r\n if (additionalColumns) {\r\n additionalColumns.forEach(additionalColumn => {\r\n columns.push({\r\n id: additionalColumn.label,\r\n source: additionalColumn.name,\r\n additionalColumn: true,\r\n type: 'text',\r\n widthPercentage: additionalColumn.isStatusColumn ? 0.15 : 0.25,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n paddingTop: '4px',\r\n paddingLeft: '3px',\r\n borderTop: '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return (\r\n \r\n \r\n {additionalColumn.isStatusColumn && (\r\n \r\n )}\r\n {!additionalColumn.isStatusColumn &&\r\n get(rowVal, column.source)}\r\n \r\n \r\n );\r\n }\r\n });\r\n });\r\n }\r\n return columns;\r\n }, [\r\n classes.root,\r\n getItemValue,\r\n handleAllItemsSelected,\r\n handleItemSelected,\r\n itemSelection,\r\n optionTextLabel,\r\n optionValueLabel,\r\n renderItemLabel,\r\n additionalColumns,\r\n disableCheckBoxes\r\n ]);\r\n\r\n const calculateColumnWidth = useCallback(\r\n (index, width) => {\r\n return columns[index]['source'] === 'isItemSelected'\r\n ? 30\r\n : columns[index]['widthPercentage'] * (width - 48);\r\n },\r\n [columns]\r\n );\r\n\r\n //calculate column values and add to row data\r\n const dataRows = useMemo(() => {\r\n return filteredChoices.map(item => {\r\n return {\r\n ...item,\r\n textColumn: getItemText(item),\r\n valueColumn: getItemValue(item),\r\n statusColumn: getItemStatus(item)\r\n };\r\n });\r\n }, [filteredChoices, getItemText, getItemValue, getItemStatus]);\r\n\r\n //add column row\r\n const columnRow = useMemo(() => {\r\n return columns.reduce((acc, cur) => ({ ...acc, [cur.source]: cur.id }), {});\r\n }, [columns]);\r\n\r\n const gridData = useMemo(() => {\r\n return [columnRow, ...dataRows];\r\n }, [columnRow, dataRows]);\r\n\r\n const isAdditionalFilter =\r\n showAdditionalFilter && getAdditionalFilterChoices.length > 1;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n handleItemSearch(e.target.value)}\r\n />\r\n \r\n {isAdditionalFilter && (\r\n \r\n option.name}\r\n inputValue={additionalItemSearch}\r\n onInputChange={(_event, newInputValue) => {\r\n setAdditionalItemSearch(newInputValue);\r\n }}\r\n renderInput={params => (\r\n \r\n )}\r\n />\r\n \r\n )}\r\n \r\n \r\n {(sortedChoices.length > 0 || emptyMessage !== '') && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {itemSelection.length} item{itemSelection.length > 1 && 's'}{' '}\r\n selected\r\n \r\n \r\n \r\n \r\n {!!(touched && error) && {error}}\r\n \r\n \r\n );\r\n};\r\n\r\nGridInput.propTypes = {\r\n choices: PropTypes.arrayOf(PropTypes.object),\r\n classes: PropTypes.object,\r\n className: PropTypes.string,\r\n input: PropTypes.object,\r\n isRequired: PropTypes.bool,\r\n label: PropTypes.string,\r\n meta: PropTypes.object,\r\n options: PropTypes.object,\r\n optionText: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.func,\r\n PropTypes.element\r\n ]).isRequired,\r\n optionValue: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\r\n .isRequired,\r\n disableValue: PropTypes.string,\r\n resource: PropTypes.string,\r\n sortFunc: PropTypes.func,\r\n source: PropTypes.string,\r\n translate: PropTypes.func,\r\n translateChoice: PropTypes.bool,\r\n optionTextLabel: PropTypes.string,\r\n optionValueLabel: PropTypes.string,\r\n height: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\r\n disableSelectAll: PropTypes.bool,\r\n singleSelect: PropTypes.bool,\r\n disableCheckBoxes: PropTypes.bool,\r\n emptyMessage: PropTypes.string\r\n};\r\n\r\nGridInput.defaultProps = {\r\n classes: {},\r\n choices: [],\r\n options: {},\r\n emptyMessage: '',\r\n optionText: 'name',\r\n optionValue: 'id',\r\n translateChoice: true,\r\n disableValue: 'disabled',\r\n hasText: true,\r\n singleSelect: false,\r\n disableSelectAll: false\r\n};\r\n\r\nexport default withStyles(styles)(GridInput);\r\n","import React, { useCallback, useEffect, useState } from 'react';\r\nimport { useDataProvider } from 'react-admin';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { Typography } from '@material-ui/core';\r\n\r\nconst filterChoices = (choices, usedIds) =>\r\n !usedIds ? choices : choices && choices.filter(ch => !usedIds[ch.id]);\r\n\r\n/**\r\n * Component to block the refresh of the choices received from ReferenceArrayInput\r\n * @param {*} props\r\n */\r\nconst GridInputChoices = props => {\r\n const {\r\n choices = [],\r\n usedIds,\r\n emptyText,\r\n additionalColumns,\r\n ...rest\r\n } = props;\r\n const [extendedChoices, setExtendedChoices] = useState(null);\r\n const [currentChoices, setCurrentChoices] = useState([]);\r\n const dataProvider = useDataProvider();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const extendWithFamilies = useCallback(\r\n fundFamilyIds => {\r\n // Change GET_LIST to getMany so that we can call by chunks to avoid HTT 400: Request header is too large\r\n dataProvider\r\n .getMany('fundfamilies', {\r\n ids: fundFamilyIds,\r\n target: 'id'\r\n })\r\n .then(({ data }) => {\r\n const familiesDict = data.reduce(\r\n (obj, item) => ({\r\n ...obj,\r\n [item['id']]: item\r\n }),\r\n {}\r\n );\r\n\r\n const choicesWithFamily = choices.map(value => {\r\n value.fundFamilyName = value.fundFamilyId\r\n ? familiesDict[value.fundFamilyId].name\r\n : null;\r\n return value;\r\n });\r\n setExtendedChoices(choicesWithFamily);\r\n })\r\n .catch(error => notifyServerError(error, undefined));\r\n },\r\n [dataProvider, choices, notifyServerError]\r\n );\r\n\r\n useEffect(() => {\r\n if (choices.length > 0 && extendedChoices === null) {\r\n if (\r\n additionalColumns &&\r\n additionalColumns.length > 1 &&\r\n additionalColumns[1].name === 'fundFamilyName'\r\n ) {\r\n setExtendedChoices([]);\r\n const fundFamilyIds = [\r\n ...new Set(choices.map(item => item.fundFamilyId))\r\n ];\r\n if (fundFamilyIds.length > 0) {\r\n extendWithFamilies(fundFamilyIds);\r\n } else {\r\n additionalColumns.splice(0, 1);\r\n setExtendedChoices(choices);\r\n }\r\n } else {\r\n setExtendedChoices(choices);\r\n }\r\n }\r\n }, [choices, extendedChoices, additionalColumns, extendWithFamilies]);\r\n\r\n useEffect(() => {\r\n if (extendedChoices && extendedChoices.length > 0) {\r\n const newChoices = filterChoices(extendedChoices, usedIds);\r\n if (\r\n newChoices.length !== currentChoices.length ||\r\n newChoices.some((nc, i) => nc !== currentChoices[i])\r\n ) {\r\n setCurrentChoices(newChoices);\r\n }\r\n }\r\n }, [extendedChoices, currentChoices, usedIds]);\r\n\r\n if (currentChoices && currentChoices.length) {\r\n return React.cloneElement(props.children, {\r\n ...rest,\r\n choices: currentChoices,\r\n additionalColumns: additionalColumns\r\n });\r\n } else {\r\n return {emptyText};\r\n }\r\n};\r\n\r\nexport default GridInputChoices;\r\n","export const validateInvestors = value => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Investor must be selected';\r\n }\r\n if (Array.isArray(value) && value.length > 50) {\r\n return 'You cannot select more than 50 Investors.';\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const validateFunds = value => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Fund must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nexport const referenceArrayInputProps = (isRegular, creation) => {\r\n if (isRegular) {\r\n return {\r\n label: creation\r\n ? 'Select one or more Investors, so you can assign permission groups in the next step.'\r\n : 'To add Investor, select one or multiple items from the list of the Investors below.',\r\n optionTextLabel: 'Investor Name',\r\n optionValueLabel: 'Investor ID',\r\n resource: 'investors',\r\n reference: 'investors',\r\n source: 'investors',\r\n validate: [validateInvestors],\r\n perPage: -1,\r\n sort: { field: 'name', order: 'ASC' },\r\n queryfilter: { orphanVisibility: 'NON_ORPHANS_ONLY' },\r\n additionalColumns: [\r\n { label: 'Status', name: 'status', isStatusColumn: true }\r\n ]\r\n };\r\n } else {\r\n return {\r\n label: creation\r\n ? 'Select one or more Funds, so you can assign permission groups in the next step.'\r\n : 'To add Fund, select one or multiple items from the list of the Funds below.',\r\n optionTextLabel: 'Fund Name',\r\n optionValueLabel: 'Fund ID',\r\n resource: 'funds',\r\n reference: 'funds',\r\n source: 'funds',\r\n validate: [validateFunds],\r\n perPage: -1,\r\n sort: { field: 'name', order: 'ASC' },\r\n additionalColumns: [\r\n { label: 'Status', name: 'status', isStatusColumn: true },\r\n { label: 'Fund Family', name: 'fundFamilyName' }\r\n ]\r\n };\r\n }\r\n};\r\n\r\nexport const getFundFamiliesIds = (fundSelected, arrayToFill) => {\r\n fundSelected.forEach(item => {\r\n if (item.fundFamilyId && !arrayToFill.includes(item.fundFamilyId)) {\r\n arrayToFill.push(item.fundFamilyId);\r\n }\r\n });\r\n};\r\n","import React, { useCallback, useMemo, useRef, useState } from 'react';\r\nimport {\r\n ReferenceArrayInput,\r\n SaveButton,\r\n useDataProvider,\r\n useNotify\r\n} from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport get from 'lodash/get';\r\nimport isEqual from 'lodash/isEqual';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { connect } from 'react-redux';\r\n\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport GridInputChoices from './GridInputChoices';\r\nimport {\r\n getFundFamiliesIds,\r\n referenceArrayInputProps,\r\n validateFunds,\r\n validateInvestors\r\n} from './utils';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst AddAuthorizationDialog = props => {\r\n //NOSONAR javascript:S3776\r\n // when perf debugging, check what's changed in the properties\r\n const {\r\n setOpenDialog,\r\n userTypeRoleCheck,\r\n handleAddAuthorization,\r\n usedIds,\r\n reduxFunds\r\n } = props;\r\n\r\n const [submitting, setSubmitting] = useState(false);\r\n const dataProvider = useDataProvider();\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const [formValues, setFormValues] = useState();\r\n\r\n const allFunds = useMemo(() => Object.values(reduxFunds), [reduxFunds]);\r\n\r\n const formRef = useRef();\r\n\r\n const isDisabledAddButton = useMemo(() => {\r\n const isValidSelectionForInvestors =\r\n formValues && validateInvestors(formValues.investors) === undefined; //NOSONAR cwe\r\n const isValidSelectionForFunds =\r\n formValues && validateFunds(formValues.funds) === undefined;\r\n\r\n return !isValidSelectionForFunds && !isValidSelectionForInvestors;\r\n }, [formValues]);\r\n\r\n const group = userTypeRoleCheck ? 'Investor' : 'Fund';\r\n\r\n const handleClose = useCallback(() => {\r\n setOpenDialog(false);\r\n }, [setOpenDialog]);\r\n\r\n const handleSubmit = useCallback(() => {\r\n const values = formValues;\r\n if (Array.isArray(values.investors) && values.investors.length > 0) {\r\n setSubmitting(true);\r\n dataProvider\r\n .getList('fundinvestors', {\r\n pagination: { perPage: -1 },\r\n filter: { investorId: `[${values.investors}]` }\r\n })\r\n .then(({ data }) => {\r\n handleAddAuthorization(data);\r\n setSubmitting(false);\r\n setOpenDialog(false);\r\n notify('ra.notification.added', {\r\n messageArgs: { smart_count: data.length }\r\n });\r\n })\r\n .catch(error => {\r\n setSubmitting(false);\r\n notifyServerError(error, undefined);\r\n });\r\n } else if (Array.isArray(values.funds) && values.funds.length > 0) {\r\n setSubmitting(true);\r\n const selectedFunds =\r\n allFunds.length === values.funds.length\r\n ? allFunds\r\n : allFunds.filter(item => values.funds.includes(item.id));\r\n\r\n const fundFamiliesIds = [];\r\n getFundFamiliesIds(selectedFunds, fundFamiliesIds);\r\n\r\n if (fundFamiliesIds.length > 0) {\r\n dataProvider\r\n .getMany('fundfamilies', {\r\n ids: fundFamiliesIds,\r\n target: 'id'\r\n })\r\n .then(({ data }) => {\r\n const dataWithFundFamilies = selectedFunds.map(fund => {\r\n const fundFamily = data.find(\r\n item => item.id === fund.fundFamilyId\r\n );\r\n return {\r\n fundId: fund.id,\r\n fundName: fund.name,\r\n fundFamilyId: fundFamily && fundFamily.id,\r\n fundFamilyName: fundFamily && fundFamily.name,\r\n investorId: '*'\r\n };\r\n });\r\n\r\n setOpenDialog(false);\r\n handleAddAuthorization(dataWithFundFamilies);\r\n notify('ra.notification.added', {\r\n messageArgs: {\r\n smart_count: dataWithFundFamilies.length\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n setSubmitting(false);\r\n notifyServerError(error, undefined);\r\n });\r\n } else {\r\n setSubmitting(true);\r\n const dataWithFunds = selectedFunds.map(fund => {\r\n return {\r\n fundId: fund.id,\r\n fundName: fund.name,\r\n investorId: '*'\r\n };\r\n });\r\n setSubmitting(false);\r\n handleAddAuthorization(dataWithFunds);\r\n setOpenDialog(false);\r\n notify('ra.notification.added', {\r\n messageArgs: { smart_count: dataWithFunds.length }\r\n });\r\n }\r\n }\r\n }, [\r\n dataProvider,\r\n allFunds,\r\n handleAddAuthorization,\r\n notify,\r\n setOpenDialog,\r\n formValues,\r\n notifyServerError\r\n ]);\r\n\r\n const isRegular = userTypeRoleCheck;\r\n\r\n const additionalFilterProps = {\r\n attributeToFilter: 'fundFamilyName', // Should be named after the attribute we want to search for\r\n emptyText: 'Fund Families',\r\n placeholder: 'Fund Families'\r\n };\r\n\r\n return (\r\n <>\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n {`Add ${group}`}\r\n \r\n \r\n \r\n \r\n {newFormProps => {\r\n formRef.current = newFormProps.form;\r\n if (!isEqual(formValues, newFormProps.values)) {\r\n setTimeout(() => setFormValues(newFormProps.values), 1);\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n reduxFunds: get(state, 'admin.resources.funds.data', {})\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {})(AddAuthorizationDialog);\r\n","import React from 'react';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport { ChevronDownIcon } from '../../../../core/themes/icons/ChevronDownIcon';\r\nimport { ChevronRightIcon } from '../../../../core/themes/icons/ChevronRightIcon';\r\n\r\nconst styles = () => ({\r\n colTitle: {\r\n textOverflow: 'ellipsis',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n fontSize: '13px',\r\n zIndex: 1\r\n },\r\n centerAndBorder: {\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n borderRight: '1px solid #E0E0E0',\r\n paddingLeft: '8px',\r\n paddingRight: '8px'\r\n },\r\n topLeft: {\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: '1em'\r\n },\r\n rowTitle: {\r\n fontSize: '13px',\r\n height: '100%',\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: '8px',\r\n paddingRight: '8px'\r\n },\r\n rowTitleParent: {\r\n width: '100%!important'\r\n },\r\n indent_1: {\r\n paddingLeft: '30px !important'\r\n },\r\n indent_2: {\r\n paddingLeft: '60px !important'\r\n },\r\n rowTitleLabel: {\r\n fontSize: '13px',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n maxWidth: '200px'\r\n }\r\n});\r\n\r\n/**\r\n * Wrapper to display or not the tooltip\r\n * @param {*} props\r\n */\r\nconst TooltipWrapper = ({ label, children }) => {\r\n if (!label) {\r\n return children;\r\n } else {\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport const TableCellWithCheckbox = withStyles(styles)(\r\n ({\r\n classes,\r\n id,\r\n label,\r\n disabled,\r\n checked,\r\n indeterminate,\r\n handleCheckboxChange\r\n }) => {\r\n const extraProps = disabled\r\n ? { disabled: true }\r\n : { onChange: handleCheckboxChange };\r\n\r\n return (\r\n \r\n el && (el.indeterminate = indeterminate)}\r\n {...extraProps}\r\n id={id}\r\n />\r\n \r\n );\r\n }\r\n);\r\n\r\nexport const RowTitle = withStyles(styles)(({ data, classes, onRowChange }) => {\r\n const { indentation, label, tooltipLabel, displayId, expand } = data;\r\n\r\n const text = (\r\n \r\n \r\n {label}\r\n \r\n \r\n );\r\n\r\n let clName = classes.rowTitle;\r\n if (indentation > 0) {\r\n clName += ' ' + classes[`indent_${indentation}`];\r\n }\r\n return (\r\n
    \r\n {data.children ? (\r\n \r\n \r\n {data.children ? (\r\n expand ? (\r\n \r\n ) : (\r\n \r\n )\r\n ) : null}\r\n \r\n \r\n {text}\r\n \r\n \r\n ) : (\r\n text\r\n )}\r\n
    \r\n );\r\n});\r\n\r\nexport const ColumnTitle = withStyles(styles)(({ label, center, classes }) => (\r\n \r\n
    \r\n
    {label}
    \r\n
    \r\n
    \r\n));\r\n","export const USERTYPE = {\r\n superAdmin: 'SUPER_ADMIN',\r\n fundAdmin: 'FUND_ADMIN',\r\n investorAdmin: 'INVESTOR_ADMIN',\r\n regularContact: 'REGULAR_CONTACT'\r\n};\r\n","import React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState\r\n} from 'react';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n differenceBy,\r\n intersectionBy,\r\n isNil,\r\n omit,\r\n remove,\r\n uniqBy\r\n} from 'lodash';\r\nimport { Button, useNotify, useRefresh } from 'react-admin';\r\nimport { AutoSizer, MultiGrid } from 'react-virtualized';\r\nimport UserApi from '../../../core/apis/UserApi';\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\nimport {\r\n ColumnTitle,\r\n RowTitle,\r\n TableCellWithCheckbox\r\n} from './datagridComponents/TableCells';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { USERTYPE } from '../EnumUserType';\r\n\r\nconst spaceRegex = /[^\\w\\s]/gi;\r\n\r\nconst useStyles = makeStyles({\r\n tableGrid: {\r\n overflow: 'hidden',\r\n backgroundColor: '#ffffff',\r\n maxHeight: '65vh',\r\n height: '65vh',\r\n border: '1px solid #E0E0E0',\r\n width: '100%'\r\n },\r\n tableGridForWizard: {\r\n overflow: 'hidden',\r\n backgroundColor: '#ffffff',\r\n maxHeight: '66vh',\r\n height: '66vh',\r\n border: '1px solid #E0E0E0',\r\n width: '100%'\r\n },\r\n leftGrid: {\r\n borderRight: '1px solid #E0E0E0'\r\n },\r\n topGrid: {\r\n borderBottom: '1px solid #E0E0E0',\r\n backgroundColor: '#f5f5f5',\r\n fontFamily: '\"Segoe UI\",Arial,sans-serif',\r\n fontWeight: 500,\r\n color: '#757575'\r\n },\r\n back_0: {\r\n background: '#f5f5f5'\r\n },\r\n back_1: {\r\n background: '#ffffff'\r\n },\r\n centerContent: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center'\r\n },\r\n saveButtonContainer: {\r\n paddingTop: 10,\r\n paddingBottom: 10\r\n },\r\n closeButton: {\r\n border: '1px solid #E0E0E0',\r\n width: '67px',\r\n height: '30px',\r\n borderRadius: '2px',\r\n backgroundColor: '#FFFFFF',\r\n marginLeft: '10px',\r\n '&:disabled': {\r\n //getting same css rules as the disabled class for the saveButton to be consistent\r\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\r\n color: 'rgba(0, 0, 0, 0.26)',\r\n boxShadow: 'none'\r\n }\r\n },\r\n backButton: {\r\n border: '1px solid #E0E0E0',\r\n width: '67px',\r\n height: '30px',\r\n borderRadius: '2px',\r\n backgroundColor: '#FFFFFF',\r\n marginLeft: '10px'\r\n },\r\n progress: {\r\n position: 'absolute',\r\n top: '55%',\r\n left: '55%'\r\n }\r\n});\r\n\r\nconst isDisabled = (groupId, connectedUserIds, authorization, superAdmin) => {\r\n if (superAdmin) {\r\n return false;\r\n }\r\n // Handle disable for one fund\r\n if (!authorization.children) {\r\n const id = `${authorization.investorId}:${authorization.fundId}:${groupId}`;\r\n const idInvestorLevel = `*:${authorization.fundId}:${groupId}`;\r\n return !(\r\n connectedUserIds.includes(id) ||\r\n connectedUserIds.includes(idInvestorLevel)\r\n );\r\n } else {\r\n // Handle disable for all funds\r\n if (authorization.id === '*') {\r\n return !authorization.children.every(node => {\r\n if (node.children) {\r\n const authorizationsIdsForGroup = node.children.map(item => {\r\n return {\r\n id: `${item.investorId}:${item.fundId}:${groupId}`,\r\n idInvestorLevel: `*:${item.fundId}:${groupId}`\r\n };\r\n });\r\n return authorizationsIdsForGroup.every(\r\n item =>\r\n connectedUserIds.includes(item.id) ||\r\n connectedUserIds.includes(item.idInvestorLevel)\r\n );\r\n } else {\r\n // If there is no children\r\n const id = `${node.investorId}:${node.fundId}:${groupId}`;\r\n const idInvestorLevel = `*:${node.fundId}:${groupId}`;\r\n\r\n return (\r\n connectedUserIds.includes(id) ||\r\n connectedUserIds.includes(idInvestorLevel)\r\n );\r\n }\r\n });\r\n } else {\r\n // Handle disable for group of funds\r\n const authorizationsIdsForGroup = authorization.children.map(item => {\r\n return {\r\n id: `${item.investorId}:${item.fundId}:${groupId}`,\r\n idInvestorLevel: `*:${item.fundId}:${groupId}`\r\n };\r\n });\r\n return !authorizationsIdsForGroup.every(item => {\r\n return (\r\n connectedUserIds.includes(item.id) ||\r\n connectedUserIds.includes(item.idInvestorLevel)\r\n );\r\n });\r\n }\r\n }\r\n};\r\n\r\nconst createChild = (\r\n node,\r\n leafs,\r\n optionValue,\r\n optionText,\r\n parent,\r\n indentation\r\n) => {\r\n const leaf = {\r\n id: `${parent.id}:${node[optionValue]}`,\r\n displayId: node[optionValue],\r\n authId: `${node.investorId}:${node.fundId}`,\r\n investorId: node.investorId,\r\n fundId: node.fundId,\r\n label: node[optionText] || '',\r\n tooltipLabel: `${node[optionValue]} - ${node[optionText]}`,\r\n parent: parent,\r\n indentation: indentation\r\n };\r\n leafs[leaf.authId] = leaf;\r\n return leaf;\r\n};\r\n\r\nconst fieldSort = (a, b) =>\r\n a.label\r\n .replace(spaceRegex, '')\r\n .localeCompare(b.label.replace(spaceRegex, ''));\r\n\r\nconst createAuthTree = (\r\n authorizations,\r\n optionText,\r\n optionValue,\r\n groupBy,\r\n groupByLabel\r\n) => {\r\n const leafs = {};\r\n const groupsDict = {};\r\n let orphans = [];\r\n\r\n // Adds the option \"All\" as parent\r\n const root = {\r\n id: '*',\r\n label: 'All',\r\n indentation: 0\r\n };\r\n\r\n let tree = authorizations.reduce((list, authorization) => {\r\n if (authorization !== undefined) {\r\n const groupId = authorization[groupBy];\r\n if (groupId) {\r\n let group = groupsDict[groupId];\r\n if (!group) {\r\n const label = authorization[groupByLabel] || '' + groupId;\r\n group = {\r\n id: `${root.id}:${groupId}`,\r\n displayId: groupId,\r\n label: label || '',\r\n tooltipLabel: `${groupId} - ${label}`,\r\n parent: root,\r\n indentation: 1\r\n };\r\n group.children = [\r\n createChild(authorization, leafs, optionValue, optionText, group, 2)\r\n ];\r\n\r\n groupsDict[groupId] = group;\r\n list.push(group);\r\n } else {\r\n const child = group.children.find(\r\n item => item.fundId === authorization.fundId\r\n );\r\n if (!child) {\r\n group.children.push(\r\n createChild(\r\n authorization,\r\n leafs,\r\n optionValue,\r\n optionText,\r\n group,\r\n 2\r\n )\r\n );\r\n }\r\n }\r\n } else {\r\n orphans.push(\r\n createChild(authorization, leafs, optionValue, optionText, root, 1)\r\n );\r\n }\r\n }\r\n return list;\r\n }, []);\r\n\r\n // Sort groups\r\n tree.sort(fieldSort);\r\n\r\n // If there are orphans, display them after fund families\r\n if (orphans.length > 0) {\r\n orphans = uniqBy(orphans, item => item.id);\r\n // Sort orphans funds\r\n orphans.sort(fieldSort);\r\n\r\n // Concat orphans and groups, and put the orphans in last positions\r\n tree = tree.concat(orphans);\r\n }\r\n\r\n root.children = tree;\r\n\r\n return [root, leafs];\r\n};\r\n\r\nconst getTreeRoot = node => {\r\n if (node.parent) {\r\n return getTreeRoot(node.parent);\r\n }\r\n return node;\r\n};\r\n\r\nconst getRows = (node, expandedNodeIds) => {\r\n const rows = [node];\r\n expandedNodeIds[node.id] &&\r\n node.children &&\r\n node.children.forEach(child => {\r\n rows.push(...getRows(child, expandedNodeIds));\r\n });\r\n return rows;\r\n};\r\n\r\nconst updateNodeAndChildren = (node, groupId, checked, ids) => {\r\n ids[`${node.id}:${groupId}`] = checked ? 1 : 0;\r\n node.children &&\r\n node.children.forEach(\r\n child => (ids = updateNodeAndChildren(child, groupId, checked, ids))\r\n );\r\n return ids;\r\n};\r\n\r\nconst updateParents = (node, groupId, ids) => {\r\n if (node.parent) {\r\n let val = 0;\r\n if (\r\n node.parent.children.some(child => ids[`${child.id}:${groupId}`] === 2)\r\n ) {\r\n val = 2;\r\n } else {\r\n const selCount = node.parent.children.filter(\r\n child => ids[`${child.id}:${groupId}`] === 1\r\n ).length;\r\n val =\r\n selCount === 0 ? 0 : selCount === node.parent.children.length ? 1 : 2;\r\n }\r\n ids[`${node.parent.id}:${groupId}`] = val;\r\n ids = updateParents(node.parent, groupId, ids);\r\n }\r\n return ids;\r\n};\r\n\r\nconst updateIds = (ids, node, groupId, checked) => {\r\n if (node) {\r\n ids = updateNodeAndChildren(node, groupId, checked, ids);\r\n ids = updateParents(node, groupId, ids);\r\n }\r\n return ids;\r\n};\r\n\r\nconst createSelectedGroups = ids => {\r\n const groups = {};\r\n ids.forEach(id => {\r\n const [, , , groupId] = id.split(':');\r\n groups[groupId] = true;\r\n });\r\n return groups;\r\n};\r\n\r\nconst getColumnWidth = ({ index }) => {\r\n return index === 0 ? 180 : 100;\r\n};\r\n\r\nconst UserAuthorizationDatagrid = props => {\r\n const {\r\n groupByLabel,\r\n optionText,\r\n groupBy,\r\n // userType defines the user we are creating/editing\r\n userType,\r\n authorizations: originalAuthorizations,\r\n groups,\r\n groupsFilter,\r\n optionValue,\r\n id,\r\n onChangeAuthorizations,\r\n hasWriteAuthorizationPermission,\r\n authorizationsConnectedUser,\r\n // userProfile defines the user who is connected\r\n userProfile,\r\n wizardMode,\r\n refreshList,\r\n creation,\r\n createdContactId,\r\n authorizationsGridToDeleteRef,\r\n permissionGroupsUploaded,\r\n setCurrentAuthorizations = () => null,\r\n currentAuthorizations = [],\r\n columnLabel = '',\r\n setPermissionsStaging = () => null,\r\n permissionsStaging = []\r\n } = props;\r\n // when perf debugging, check what's changed in the properties\r\n //useWhyDidYouUpdate('UserAuthorizationDatagrid', props);\r\n\r\n const [rows, setRows] = useState([]);\r\n const [loading, setLoading] = useState(false);\r\n const [openConfirm, setOpenConfirm] = useState(false);\r\n const [chkEvts, setChckEvts] = useState([]);\r\n const [selectedCkIds, setSelectedCkIds] = useState({});\r\n const expandedNodeIds = useRef({ '*': true });\r\n const authorizationsToUpdate = useRef([]);\r\n const refresh = useRefresh();\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const classes = useStyles();\r\n\r\n const superAdmin = userProfile.userType === USERTYPE.superAdmin;\r\n\r\n const globalDisabled = !superAdmin && !hasWriteAuthorizationPermission;\r\n\r\n const connectedUserIds = useMemo(() => {\r\n if (!superAdmin) {\r\n // investorId:fundId:groupId\r\n return authorizationsConnectedUser.map(item => item.id);\r\n }\r\n return [];\r\n }, [authorizationsConnectedUser, superAdmin]);\r\n\r\n const [authTree, leafsById] = useMemo(() => {\r\n const treeAndLeaf = createAuthTree(\r\n originalAuthorizations,\r\n optionText,\r\n optionValue,\r\n groupBy,\r\n groupByLabel\r\n );\r\n setRows(getRows(treeAndLeaf[0], expandedNodeIds.current));\r\n return treeAndLeaf;\r\n }, [originalAuthorizations, optionText, optionValue, groupBy, groupByLabel]);\r\n\r\n // Filter groups\r\n const groupsToShow = useMemo(() => {\r\n if (groupsFilter === 'ONLY_ASSIGNED') {\r\n const selGroups = createSelectedGroups(props.ids);\r\n return groups.filter(group => !!selGroups[group.id]);\r\n } else {\r\n return groups;\r\n }\r\n }, [groups, groupsFilter, props.ids]);\r\n\r\n const updateCks = useCallback(\r\n (ids, checked, forcedCkIds) => {\r\n setSelectedCkIds(selCkIds => {\r\n let ckIds = forcedCkIds ? { ...forcedCkIds } : { ...selCkIds };\r\n ids.forEach(rowId => {\r\n const [, investorId, fundId, groupId] = rowId.split(':'); // first part is userId\r\n ckIds = updateIds(\r\n ckIds,\r\n leafsById[`${investorId}:${fundId}`],\r\n groupId,\r\n checked\r\n );\r\n });\r\n return ckIds;\r\n });\r\n },\r\n [leafsById]\r\n );\r\n\r\n useEffect(() => updateCks(props.ids, true), [props.ids, updateCks]);\r\n\r\n const formReset = useCallback(() => {\r\n if (!creation) {\r\n if (authorizationsToUpdate.current.length !== 0) {\r\n authorizationsToUpdate.current = [];\r\n updateCks(props.ids, true, {});\r\n onChangeAuthorizations(false);\r\n }\r\n }\r\n }, [props.ids, onChangeAuthorizations, updateCks, creation]);\r\n\r\n const handleCheckboxChange = useCallback(\r\n (data, groupId, checked) => {\r\n // Note: checked === true when we UN-TICK a checkbox\r\n\r\n setChckEvts(evts => {\r\n return [...evts, { data, groupId, checked }];\r\n });\r\n\r\n if (creation) {\r\n const browseChildren = checkbox => {\r\n // We loop through the checkbox children until we reach a leaf.\r\n if (checkbox.children) {\r\n checkbox.children.forEach(child => browseChildren(child));\r\n return;\r\n }\r\n\r\n // We reach a leaf, get the index of the authorization in our state of authorization.\r\n const indexAuthorizationsGridRef = currentAuthorizations.findIndex(\r\n authorization =>\r\n authorization.id ===\r\n `${createdContactId}:${checkbox.investorId}:${checkbox.fundId}:${groupId}`\r\n );\r\n const indexPermissionsStaging = permissionsStaging.findIndex(\r\n authorization =>\r\n authorization.id ===\r\n `${createdContactId}:${checkbox.investorId}:${checkbox.fundId}:${groupId}`\r\n );\r\n\r\n const permission = {\r\n id: `${createdContactId}:${checkbox.investorId}:${checkbox.fundId}:${groupId}`,\r\n fundId: checkbox.fundId,\r\n investorId: checkbox.investorId,\r\n groupId,\r\n userId: createdContactId,\r\n checked: !checked\r\n };\r\n\r\n if (indexAuthorizationsGridRef === -1) {\r\n setCurrentAuthorizations(prev => [...prev, permission]);\r\n }\r\n\r\n if (indexPermissionsStaging === -1) {\r\n setPermissionsStaging(prev => [...prev, permission]);\r\n }\r\n\r\n function filterState(setState) {\r\n setState(prev => [\r\n ...prev.filter(\r\n authorization =>\r\n authorization.id !==\r\n `${createdContactId}:${checkbox.investorId}:${checkbox.fundId}:${groupId}`\r\n )\r\n ]);\r\n }\r\n\r\n if (checked && indexAuthorizationsGridRef > -1) {\r\n filterState(setCurrentAuthorizations);\r\n }\r\n\r\n if (checked && indexPermissionsStaging > -1) {\r\n filterState(setPermissionsStaging);\r\n }\r\n\r\n if (permissionGroupsUploaded.length !== 0) {\r\n const indexAuthorizationsGridToDeleteRef = authorizationsGridToDeleteRef.current.findIndex(\r\n authorization =>\r\n authorization.id ===\r\n `${createdContactId}:${checkbox.investorId}:${checkbox.fundId}:${groupId}`\r\n );\r\n const indexPermissionGroupsUploaded = permissionGroupsUploaded.findIndex(\r\n authorization =>\r\n authorization.id ===\r\n `${createdContactId}:${checkbox.investorId}:${checkbox.fundId}:${groupId}`\r\n );\r\n\r\n // Was this authorization already submitted?\r\n if (indexPermissionGroupsUploaded > -1) {\r\n // Is this authorization already in the 'to delete' list ?\r\n if (indexAuthorizationsGridToDeleteRef > -1) {\r\n authorizationsGridToDeleteRef.current.splice(\r\n indexAuthorizationsGridToDeleteRef,\r\n 1\r\n );\r\n } else {\r\n authorizationsGridToDeleteRef.current.push({\r\n userId: createdContactId,\r\n fundId: checkbox.fundId,\r\n investorId: checkbox.investorId,\r\n groupId: groupId,\r\n id: `${createdContactId}:${checkbox.investorId}:${checkbox.fundId}:${groupId}`\r\n });\r\n }\r\n }\r\n }\r\n };\r\n browseChildren(data);\r\n }\r\n },\r\n [\r\n creation,\r\n currentAuthorizations,\r\n permissionGroupsUploaded,\r\n permissionsStaging,\r\n createdContactId,\r\n setCurrentAuthorizations,\r\n setPermissionsStaging,\r\n authorizationsGridToDeleteRef\r\n ]\r\n );\r\n\r\n useEffect(() => {\r\n if (chkEvts.length === 0) {\r\n return;\r\n }\r\n if (chkEvts.length > 1) {\r\n console.error(\r\n 'UserAuthorizationDatagrid.handleCheckboxChange: more than one evt : need to handle them all'\r\n );\r\n }\r\n const { data, groupId, checked } = chkEvts[0];\r\n\r\n // Refresh the checkboxes\r\n setSelectedCkIds(ids => updateIds({ ...ids }, data, groupId, !checked));\r\n\r\n const authorizations = [];\r\n\r\n if (!data.children) {\r\n authorizations.push({\r\n userId: id,\r\n groupId: groupId,\r\n investorId: data.investorId,\r\n fundId: data.fundId,\r\n id: `${data.investorId}:${data.fundId}:${groupId}`,\r\n checked: !checked\r\n });\r\n } else if (data.parent) {\r\n data.children.forEach(node =>\r\n authorizations.push({\r\n userId: id,\r\n groupId: groupId,\r\n investorId: node.investorId,\r\n fundId: node.fundId,\r\n id: `${node.investorId}:${node.fundId}:${groupId}`,\r\n checked: !checked\r\n })\r\n );\r\n } else {\r\n data.children.forEach(node => {\r\n if (node.children) {\r\n node.children.forEach(leaf =>\r\n authorizations.push({\r\n userId: id,\r\n groupId: groupId,\r\n investorId: leaf.investorId,\r\n fundId: leaf.fundId,\r\n id: `${leaf.investorId}:${leaf.fundId}:${groupId}`,\r\n checked: !checked\r\n })\r\n );\r\n } else {\r\n authorizations.push({\r\n userId: id,\r\n groupId: groupId,\r\n investorId: node.investorId,\r\n fundId: node.fundId,\r\n id: `${node.investorId}:${node.fundId}:${groupId}`,\r\n checked: !checked\r\n });\r\n }\r\n });\r\n }\r\n\r\n // Saving in the state the payload structure and add or remove the real changes\r\n let newAuthorizationsToUpdate = [...authorizationsToUpdate.current];\r\n let newAuthorizationsFromAllOption = null;\r\n\r\n // If user clicks on \"All\" option\r\n if (!data.parent) {\r\n // Getting the original authorizations for the group which selected by the user\r\n // And formats the object as the payload\r\n const originalAuthorizationsForThisGroup = originalAuthorizations\r\n .filter(item => item.groupId === groupId)\r\n .map(item => ({\r\n userId: id,\r\n groupId: groupId,\r\n investorId: item.investorId,\r\n fundId: item.fundId,\r\n id: `${item.investorId}:${item.fundId}:${groupId}`,\r\n checked: !checked\r\n }));\r\n // Removing the all authorizations for this group to be safe with the new authorizations\r\n remove(newAuthorizationsToUpdate, item => item.groupId === groupId);\r\n if (checked) {\r\n // If the \"All\" option is unchecked, gets all the items to remove\r\n newAuthorizationsFromAllOption = intersectionBy(\r\n originalAuthorizationsForThisGroup,\r\n authorizations,\r\n item => item.id\r\n );\r\n } else {\r\n // If the \"All\" option is checked, gets all the items to add\r\n newAuthorizationsFromAllOption = differenceBy(\r\n authorizations,\r\n originalAuthorizationsForThisGroup,\r\n item => item.id\r\n );\r\n }\r\n }\r\n\r\n (newAuthorizationsFromAllOption || authorizations).forEach(auth => {\r\n const authAlreadyToUpdate = authorizationsToUpdate.current.find(\r\n item => item.id === auth.id\r\n );\r\n if (!isNil(authAlreadyToUpdate)) {\r\n remove(newAuthorizationsToUpdate, item => item.id === auth.id);\r\n } else {\r\n newAuthorizationsToUpdate = newAuthorizationsToUpdate.concat(auth);\r\n }\r\n });\r\n\r\n setChckEvts([]);\r\n authorizationsToUpdate.current = newAuthorizationsToUpdate;\r\n if (!creation) {\r\n // Notify the parent to prevent navigation if there are changes\r\n onChangeAuthorizations(\r\n newAuthorizationsToUpdate.length > 0,\r\n newAuthorizationsToUpdate\r\n );\r\n }\r\n }, [\r\n id,\r\n onChangeAuthorizations,\r\n originalAuthorizations,\r\n authTree,\r\n chkEvts,\r\n creation\r\n ]);\r\n\r\n const handleClickSave = useCallback(async () => {\r\n setOpenConfirm(false);\r\n setLoading(true);\r\n const authorizationsToCreate = [];\r\n const authorizationsToDelete = [];\r\n authorizationsToUpdate.current.forEach(item =>\r\n item.checked\r\n ? authorizationsToCreate.push(item)\r\n : authorizationsToDelete.push(item)\r\n );\r\n let errors = false;\r\n\r\n // Request for deletion\r\n if (authorizationsToDelete.length > 0) {\r\n // Paylad without 'id' and 'checked' fields\r\n const payload = authorizationsToDelete.map(item =>\r\n omit(item, ['id', 'checked'])\r\n );\r\n await UserApi.deleteUserauthorizations(payload).catch(error => {\r\n notifyServerError(error);\r\n errors = true;\r\n // Revert ids value in error\r\n updateCks(\r\n authorizationsToDelete.map(auth => auth.id),\r\n true\r\n );\r\n });\r\n }\r\n\r\n // Request for creation\r\n if (authorizationsToCreate.length > 0) {\r\n // Paylad without 'id' and 'checked' fields\r\n const payload = authorizationsToCreate.map(item =>\r\n omit(item, ['id', 'checked'])\r\n );\r\n await UserApi.createUserauthorizations(payload).catch(error => {\r\n notifyServerError(error);\r\n errors = true;\r\n // Revert ids value in error\r\n updateCks(\r\n authorizationsToCreate.map(auth => auth.id),\r\n false\r\n );\r\n });\r\n }\r\n\r\n authorizationsToUpdate.current = [];\r\n\r\n if (!creation) {\r\n // Notify the parent to allow navigation\r\n onChangeAuthorizations(false);\r\n\r\n if (!errors) {\r\n notify('ra.notification.custom_updated_message');\r\n if (authorizationsToDelete.length > 0) {\r\n refresh();\r\n } else {\r\n refreshList();\r\n }\r\n }\r\n }\r\n\r\n setLoading(false);\r\n }, [\r\n refresh,\r\n onChangeAuthorizations,\r\n refreshList,\r\n notify,\r\n notifyServerError,\r\n updateCks,\r\n creation\r\n ]);\r\n\r\n // need this callback to workaround a refresh bug for MultiGrid (no render on maingrid when cellRenderer change)\r\n const onSectionRendered = useCallback(\r\n params => {\r\n selectedCkIds || groupsToShow || console.log(params);\r\n },\r\n [selectedCkIds, groupsToShow]\r\n );\r\n\r\n const cellRenderer = useCallback(\r\n ({\r\n columnIndex,\r\n _isScrolling,\r\n isVisible,\r\n key,\r\n _parent,\r\n rowIndex,\r\n style\r\n }) => {\r\n if (!isVisible) {\r\n return null;\r\n }\r\n let content = null;\r\n const clList = [];\r\n if (rowIndex === 0) {\r\n let text;\r\n const first = columnIndex === 0;\r\n if (first) {\r\n if (columnLabel !== '') {\r\n text = columnLabel;\r\n } else {\r\n text =\r\n userType === USERTYPE.regularContact ||\r\n userType === USERTYPE.investorAdmin\r\n ? 'Investors'\r\n : 'Funds';\r\n }\r\n } else {\r\n text = groupsToShow[columnIndex - 1].name;\r\n }\r\n content = ;\r\n } else if (columnIndex === 0) {\r\n const rowData = rows[rowIndex - 1];\r\n const rowDataFinal = {\r\n ...rowData,\r\n expand: !!expandedNodeIds.current[rowData.id]\r\n };\r\n content = (\r\n {\r\n if (expandedNodeIds.current[rowDataFinal.id]) {\r\n delete expandedNodeIds.current[rowDataFinal.id];\r\n } else {\r\n expandedNodeIds.current[rowDataFinal.id] = true;\r\n }\r\n setRows(\r\n getRows(getTreeRoot(rowDataFinal), expandedNodeIds.current)\r\n );\r\n }}\r\n />\r\n );\r\n clList.push(classes['back_' + (rowIndex % 2)]);\r\n } else {\r\n clList.push(classes['back_' + (rowIndex % 2)], classes.centerContent);\r\n const rowData = rows[rowIndex - 1];\r\n const groupData = groupsToShow[columnIndex - 1];\r\n const checkId = `${rowData.id}:${groupData.id}`;\r\n const checked = selectedCkIds[checkId] === 1;\r\n content = (\r\n \r\n handleCheckboxChange(rowData, groupData.id, checked)\r\n }\r\n />\r\n );\r\n }\r\n return (\r\n
    \r\n {content}\r\n
    \r\n );\r\n },\r\n [\r\n rows,\r\n selectedCkIds,\r\n groupsToShow,\r\n handleCheckboxChange,\r\n userType,\r\n classes,\r\n connectedUserIds,\r\n globalDisabled,\r\n superAdmin,\r\n columnLabel\r\n ]\r\n );\r\n return (\r\n <>\r\n {loading && (\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n \r\n \r\n {({ height, width }) => (\r\n \r\n )}\r\n \r\n \r\n {!wizardMode && (\r\n <>\r\n \r\n setOpenConfirm(true)}\r\n label=\"Save\"\r\n variant=\"contained\"\r\n color=\"primary\"\r\n disabled={\r\n loading ||\r\n !hasWriteAuthorizationPermission ||\r\n authorizationsToUpdate.current.length === 0\r\n }\r\n id=\"save\"\r\n >\r\n {loading ? : <>}\r\n \r\n \r\n \r\n \r\n\r\n setOpenConfirm(false)}\r\n />\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nUserAuthorizationDatagrid.defaultProps = {\r\n groupBy: 'investorId',\r\n optionText: 'fundName',\r\n optionValue: 'fundId',\r\n authorizations: []\r\n};\r\n\r\nexport default UserAuthorizationDatagrid;\r\n","import CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { omit, uniq } from 'lodash';\r\nimport React, { memo, useEffect, useMemo } from 'react';\r\nimport { Query, useQueryWithStore } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\n\r\nimport UserAuthorizationDatagrid from './UserAuthorizationDatagrid';\r\nimport { USERTYPE } from '../EnumUserType';\r\n\r\nconst useStyles = makeStyles({\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n }\r\n});\r\n\r\n/**\r\n * Display the circular progress component\r\n */\r\nconst Progress = memo(() => {\r\n const classes = useStyles();\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n});\r\n\r\n/**\r\n * Component to handle which component to be displayed\r\n * @param {*} props\r\n */\r\nconst UserAuthorizationUpdate = memo(props => {\r\n const {\r\n loaded,\r\n loading,\r\n userType,\r\n authorizations = [],\r\n newAuthorizations,\r\n onChangeNewAuthorizations\r\n } = props;\r\n // when perf debugging, check what's changed in the properties\r\n //useWhyDidYouUpdate('UserAuthorizationUpdate', props);\r\n\r\n const classes = useStyles();\r\n useEffect(() => {\r\n // When there are new unsaved authorizations on the local state,\r\n // check if they are really not saved on API and notify if we need to prevent navigation\r\n if (newAuthorizations && newAuthorizations.length) {\r\n const newAuthorizationsNotSavedExists = newAuthorizations.some(newAuth =>\r\n authorizations.every(auth => auth.fundId !== newAuth.fundId)\r\n );\r\n onChangeNewAuthorizations(newAuthorizationsNotSavedExists);\r\n }\r\n }, [authorizations, newAuthorizations, onChangeNewAuthorizations]);\r\n\r\n const totalAfterFilters = authorizations.length;\r\n\r\n if (totalAfterFilters > 0) {\r\n if (\r\n userType === USERTYPE.regularContact ||\r\n userType === USERTYPE.investorAdmin\r\n ) {\r\n return (\r\n \r\n );\r\n } else if (userType === USERTYPE.fundAdmin) {\r\n return (\r\n \r\n );\r\n }\r\n } else if (loading) {\r\n return ;\r\n } else if (loaded && newAuthorizations.length > 0) {\r\n // when no authorizations found and adding a new ones\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n There are no Access Rights to be displayed\r\n \r\n \r\n );\r\n }\r\n});\r\n\r\n/**\r\n * Component to get all data to display the datagrid for regular contact\r\n * @param {*} props\r\n */\r\nexport const UserAuthorizationRegularContact = props => {\r\n const {\r\n userType,\r\n authorizations,\r\n newAuthorizations,\r\n selectedAssignmentMode,\r\n creation,\r\n wizardMode\r\n } = props;\r\n const classes = useStyles();\r\n\r\n const uniqAuthorizations = useMemo(() => {\r\n return uniq(authorizations.map(item => item.fundId));\r\n }, [authorizations]);\r\n\r\n const { loading, data: fundInvestors } = useQueryWithStore({\r\n type: 'getManyReference',\r\n resource: 'fundinvestors',\r\n payload: {\r\n target: 'fundId',\r\n id: uniqAuthorizations,\r\n pagination: { perPage: -1 },\r\n options: { chunk: true }\r\n }\r\n });\r\n\r\n if (loading) {\r\n return ;\r\n } else if (fundInvestors.length > 0) {\r\n var fundMap = new Map(fundInvestors.map(i => [i.fundId, i.fundName]));\r\n var invMap = new Map(\r\n fundInvestors.map(i => [i.investorId, i.investorName])\r\n );\r\n\r\n // Creation of the data to be send to the datagrid\r\n // Adding the fund name and the investor name\r\n const dataWithInvestors = authorizations.map(auth => {\r\n const fundName = fundMap.get(auth.fundId);\r\n const investorName = invMap.get(auth.investorId);\r\n return {\r\n ...auth,\r\n fundName: fundName,\r\n investorName: investorName\r\n };\r\n });\r\n return (\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n There are no Access Rights to be displayed\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Component to get all data to display the datagrid for fund admin contact\r\n * @param {*} props\r\n */\r\nexport const UserAuthorizationFundAdmin = props => {\r\n const {\r\n userType,\r\n authorizations,\r\n selectedAssignmentMode,\r\n newAuthorizations,\r\n funds: allFunds,\r\n creation,\r\n wizardMode\r\n } = props;\r\n // when perf debugging, check what's changed in the properties\r\n //useWhyDidYouUpdate('UserAuthorizationFundAdmin', props);\r\n const classes = useStyles();\r\n\r\n const uniqAuthorizations = useMemo(() => {\r\n return uniq(authorizations.map(item => item.fundId));\r\n }, [authorizations]);\r\n // Query to get all funds then to find theirs fund families\r\n return (\r\n \r\n {({ data: funds, total, loading }) => {\r\n if (loading) {\r\n return ;\r\n } else if (total > 0) {\r\n // Retrieving fund families from funds\r\n const fundFamiliesIds = [];\r\n funds.forEach(item => {\r\n if (item.fundFamilyId) {\r\n fundFamiliesIds.push(item.fundFamilyId);\r\n }\r\n });\r\n\r\n if (fundFamiliesIds.length > 0) {\r\n // Query to get all fund families with the funds concerned\r\n return (\r\n \r\n {({ data: fundFamilies, total, loading, error }) => {\r\n if (loading) {\r\n return ;\r\n } else if (error) {\r\n return (\r\n \r\n There are no Access Rights to be displayed\r\n \r\n );\r\n } else {\r\n // Creation of the data to be send to the datagrid\r\n // Adding the fund name, fund family id and fund family name\r\n const dataWithFundFamilies = authorizations.map(auth => {\r\n const fund = funds.find(item => item.id === auth.fundId);\r\n const fundFamily =\r\n fund &&\r\n fundFamilies.find(\r\n item => item.id === fund.fundFamilyId\r\n );\r\n return {\r\n ...auth,\r\n fundName: fund && fund.name,\r\n fundFamilyId: fundFamily && fundFamily.id,\r\n fundFamilyName: fundFamily && fundFamily.name\r\n };\r\n });\r\n\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n \r\n );\r\n } else {\r\n // return the Datagrid when no fund families found with only the funds\r\n const dataWithFunds = authorizations.map(auth => {\r\n const fund = allFunds.find(item => item.id === auth.fundId);\r\n return {\r\n ...auth,\r\n fundName: fund && fund.name\r\n };\r\n });\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n return (\r\n \r\n There are no Access Rights to be displayed\r\n \r\n );\r\n }}\r\n \r\n );\r\n};\r\n\r\nexport default UserAuthorizationUpdate;\r\n","import { useCallback, useMemo, useEffect, useState, useRef } from 'react';\r\nimport { useSelector, useDispatch, shallowEqual } from 'react-redux';\r\nimport lodashDebounce from 'lodash/debounce';\r\nimport pickBy from 'lodash/pickBy';\r\n\r\nimport { ListParams } from 'ra-core';\r\nimport {\r\n removeEmpty,\r\n SortPayload,\r\n ReduxState,\r\n FilterPayload,\r\n changeListParams,\r\n queryReducer\r\n} from 'react-admin';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { parse } from '../stringify';\r\n\r\ninterface ListParamsOptions {\r\n resource: string;\r\n perPage?: number;\r\n sort?: SortPayload;\r\n // default value for a filter when displayed but not yet set\r\n filterDefaultValues?: FilterPayload;\r\n // permanent filter which always overrides the user entry\r\n filter?: FilterPayload;\r\n debounce?: number;\r\n // Whether to synchronize the list parameters with the current location (URL search parameters)\r\n // This is set to true automatically when a List is used inside a Resource component\r\n syncWithLocation?: boolean;\r\n}\r\n\r\ninterface Parameters extends ListParams {\r\n filterValues: object;\r\n displayedFilters: {\r\n [key: string]: boolean;\r\n };\r\n requestSignature: any[];\r\n}\r\n\r\ninterface Modifiers {\r\n changeParams: (action: any) => void;\r\n setPage: (page: number) => void;\r\n setPerPage: (pageSize: number) => void;\r\n setSort: (sort: string, order?: string) => void;\r\n setFilters: (filters: any, displayedFilters: any) => void;\r\n hideFilter: (filterName: string) => void;\r\n showFilter: (filterName: string, defaultValue: any) => void;\r\n}\r\n\r\n// Copied from queryReducer.\r\n// Importing those do not work in tests\r\nconst SET_SORT = 'SET_SORT';\r\nconst SORT_ASC = 'ASC';\r\nconst SET_PAGE = 'SET_PAGE';\r\nconst SET_PER_PAGE = 'SET_PER_PAGE';\r\nconst SET_FILTER = 'SET_FILTER';\r\nconst SHOW_FILTER = 'SHOW_FILTER';\r\nconst HIDE_FILTER = 'HIDE_FILTER';\r\n\r\nconst emptyObject = {};\r\n\r\nconst defaultSort = {\r\n field: 'id',\r\n order: SORT_ASC\r\n};\r\n\r\nconst defaultParams = {};\r\n\r\n/**\r\n * Get the list parameters (page, sort, filters) and modifiers.\r\n *\r\n * These parameters are merged from 3 sources:\r\n * - the query string from the URL\r\n * - the params stored in the state (from previous navigation)\r\n * - the options passed to the hook (including the filter defaultValues)\r\n *\r\n * @returns {Array} A tuple [parameters, modifiers].\r\n * Destructure as [\r\n * { page, perPage, sort, order, filter, filterValues, displayedFilters, requestSignature },\r\n * { setFilters, hideFilter, showFilter, setPage, setPerPage, setSort }\r\n * ]\r\n *\r\n * @example\r\n *\r\n * const [listParams, listParamsActions] = useListParams({\r\n * resource: 'posts',\r\n * location: location // From react-router. Injected to your component by react-admin inside a List\r\n * filterDefaultValues: {\r\n * published: true\r\n * },\r\n * sort: {\r\n * field: 'published_at',\r\n * order: 'DESC'\r\n * },\r\n * perPage: 25\r\n * });\r\n *\r\n * const {\r\n * page,\r\n * perPage,\r\n * sort,\r\n * order,\r\n * filter,\r\n * filterValues,\r\n * displayedFilters,\r\n * requestSignature\r\n * } = listParams;\r\n *\r\n * const {\r\n * setFilters,\r\n * hideFilter,\r\n * showFilter,\r\n * setPage,\r\n * setPerPage,\r\n * setSort,\r\n * } = listParamsActions;\r\n */\r\nconst useListParams = ({\r\n resource,\r\n filterDefaultValues,\r\n sort = defaultSort,\r\n perPage = 10,\r\n debounce = 500,\r\n syncWithLocation = false\r\n}: ListParamsOptions): [Parameters, Modifiers] => {\r\n const dispatch = useDispatch();\r\n const location = useLocation();\r\n const [localParams, setLocalParams] = useState(defaultParams);\r\n const params = useSelector(\r\n (reduxState: ReduxState) =>\r\n reduxState.admin.resources[resource]\r\n ? reduxState.admin.resources[resource].list.params\r\n : defaultParams,\r\n shallowEqual\r\n );\r\n const tempParams = useRef();\r\n\r\n const requestSignature = [\r\n location.search,\r\n resource,\r\n syncWithLocation ? params : localParams,\r\n filterDefaultValues,\r\n JSON.stringify(sort),\r\n perPage\r\n ];\r\n\r\n const queryFromLocation = syncWithLocation\r\n ? parseQueryFromLocation(location)\r\n : {};\r\n\r\n const query = useMemo(\r\n () =>\r\n getQuery({\r\n queryFromLocation,\r\n params: syncWithLocation ? params : localParams,\r\n filterDefaultValues,\r\n sort,\r\n perPage\r\n }),\r\n requestSignature // eslint-disable-line react-hooks/exhaustive-deps\r\n );\r\n\r\n // On mount, if the location includes params (for example from a link like\r\n // the categories products on the demo), we need to persist them in the\r\n // redux state as well so that we don't lose them after a redirection back\r\n // to the list\r\n useEffect(() => {\r\n if (Object.keys(queryFromLocation).length > 0) {\r\n dispatch(changeListParams(resource, query));\r\n }\r\n }, []); // eslint-disable-line\r\n\r\n const changeParams = useCallback(action => {\r\n if (!tempParams.current) {\r\n // no other changeParams action dispatched this tick\r\n tempParams.current = queryReducer(query, action);\r\n // schedule side effects for next tick\r\n setTimeout(() => {\r\n if (syncWithLocation) {\r\n // history.push({\r\n // search: `?${stringify({\r\n // ...tempParams.current,\r\n // filter: JSON.stringify(tempParams.current.filter),\r\n // displayedFilters: JSON.stringify(\r\n // tempParams.current.displayedFilters\r\n // ),\r\n // })}`,\r\n // state: { _scrollToTop: action.type === SET_PAGE },\r\n // });\r\n dispatch(changeListParams(resource, tempParams.current));\r\n } else {\r\n setLocalParams(tempParams.current);\r\n }\r\n tempParams.current = undefined;\r\n }, 0);\r\n } else {\r\n // side effects already scheduled, just change the params\r\n tempParams.current = queryReducer(tempParams.current, action);\r\n }\r\n }, requestSignature); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const setSort = useCallback(\r\n (sort: string, order?: string) =>\r\n changeParams({\r\n type: SET_SORT,\r\n payload: { sort, order }\r\n }),\r\n requestSignature // eslint-disable-line react-hooks/exhaustive-deps\r\n );\r\n\r\n const setPage = useCallback(\r\n (newPage: number) => changeParams({ type: SET_PAGE, payload: newPage }),\r\n requestSignature // eslint-disable-line react-hooks/exhaustive-deps\r\n );\r\n\r\n const setPerPage = useCallback(\r\n (newPerPage: number) =>\r\n changeParams({ type: SET_PER_PAGE, payload: newPerPage }),\r\n requestSignature // eslint-disable-line react-hooks/exhaustive-deps\r\n );\r\n\r\n const filterValues = query.filter || emptyObject;\r\n const displayedFilterValues = query.displayedFilters || emptyObject;\r\n\r\n const debouncedSetFilters = lodashDebounce((filter, displayedFilters) => {\r\n changeParams({\r\n type: SET_FILTER,\r\n payload: {\r\n filter: removeEmpty(filter),\r\n displayedFilters\r\n }\r\n });\r\n }, debounce);\r\n\r\n const setFilters = useCallback(\r\n (filter, displayedFilters, debounce = true) =>\r\n debounce\r\n ? debouncedSetFilters(filter, displayedFilters)\r\n : changeParams({\r\n type: SET_FILTER,\r\n payload: {\r\n filter: removeEmpty(filter),\r\n displayedFilters\r\n }\r\n }),\r\n requestSignature // eslint-disable-line react-hooks/exhaustive-deps\r\n );\r\n\r\n const hideFilter = useCallback((filterName: string) => {\r\n changeParams({\r\n type: HIDE_FILTER,\r\n payload: filterName\r\n });\r\n }, requestSignature); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n const showFilter = useCallback((filterName: string, defaultValue: any) => {\r\n changeParams({\r\n type: SHOW_FILTER,\r\n payload: {\r\n filterName,\r\n defaultValue\r\n }\r\n });\r\n }, requestSignature); // eslint-disable-line react-hooks/exhaustive-deps\r\n\r\n return [\r\n {\r\n displayedFilters: displayedFilterValues,\r\n filterValues,\r\n requestSignature,\r\n ...query\r\n },\r\n {\r\n changeParams,\r\n setPage,\r\n setPerPage,\r\n setSort,\r\n setFilters,\r\n hideFilter,\r\n showFilter\r\n }\r\n ];\r\n};\r\n\r\nexport const validQueryParams = [\r\n 'page',\r\n 'perPage',\r\n 'sort',\r\n 'order',\r\n 'filter',\r\n 'displayedFilters'\r\n];\r\n\r\nconst parseObject = (query, field) => {\r\n if (query[field] && typeof query[field] === 'string') {\r\n try {\r\n query[field] = JSON.parse(query[field]);\r\n } catch (err) {\r\n delete query[field];\r\n }\r\n }\r\n};\r\n\r\nexport const parseQueryFromLocation = ({ search }): Partial => {\r\n const query = pickBy(\r\n parse(search),\r\n (v, k) => validQueryParams.indexOf(k) !== -1\r\n );\r\n parseObject(query, 'filter');\r\n parseObject(query, 'displayedFilters');\r\n return query;\r\n};\r\n\r\n/**\r\n * Check if user has already set custom sort, page, or filters for this list\r\n *\r\n * User params come from the Redux store as the params props. By default,\r\n * this object is:\r\n *\r\n * { filter: {}, order: null, page: 1, perPage: null, sort: null }\r\n *\r\n * To check if the user has custom params, we must compare the params\r\n * to these initial values.\r\n *\r\n * @param {Object} params\r\n */\r\nexport const hasCustomParams = (params: ListParams) => {\r\n return (\r\n params &&\r\n params.filter &&\r\n (Object.keys(params.filter).length > 0 ||\r\n params.order != null ||\r\n params.page !== 1 ||\r\n params.perPage != null ||\r\n params.sort != null)\r\n );\r\n};\r\n\r\n/**\r\n * Merge list params from 3 different sources:\r\n * - the query string\r\n * - the params stored in the state (from previous navigation)\r\n * - the props passed to the List component (including the filter defaultValues)\r\n */\r\nexport const getQuery = ({\r\n queryFromLocation,\r\n params,\r\n filterDefaultValues,\r\n sort,\r\n perPage\r\n}) => {\r\n const query: Partial =\r\n Object.keys(queryFromLocation).length > 0\r\n ? queryFromLocation\r\n : hasCustomParams(params)\r\n ? { ...params }\r\n : { filter: filterDefaultValues || {} };\r\n\r\n if (!query.sort) {\r\n query.sort = sort.field;\r\n query.order = sort.order;\r\n }\r\n if (query.perPage == null) {\r\n query.perPage = perPage;\r\n }\r\n if (query.page == null) {\r\n query.page = 1;\r\n }\r\n\r\n return {\r\n ...query,\r\n page: getNumberOrDefault(query.page, 1),\r\n perPage: getNumberOrDefault(query.perPage, 10)\r\n } as ListParams;\r\n};\r\n\r\nexport const getNumberOrDefault = (\r\n possibleNumber: string | number | undefined,\r\n defaultValue: number\r\n) => {\r\n const parsedNumber =\r\n typeof possibleNumber === 'string'\r\n ? parseInt(possibleNumber, 10)\r\n : possibleNumber;\r\n\r\n return isNaN(parsedNumber) ? defaultValue : parsedNumber;\r\n};\r\n\r\nexport default useListParams;\r\n","import { isValidElement, ReactElement, useEffect, useMemo } from 'react';\r\nimport { Location } from 'history';\r\n\r\nimport {\r\n SortPayload,\r\n FilterPayload,\r\n RecordMap,\r\n Identifier,\r\n Record,\r\n useCheckMinimumRequiredProps,\r\n useTranslate,\r\n CRUD_GET_LIST,\r\n useRecordSelection,\r\n Exporter,\r\n defaultExporter,\r\n useResourceContext,\r\n useGetMainList,\r\n useGetResourceLabel,\r\n Refetch\r\n} from 'react-admin';\r\n\r\nimport useListParams from './useListParams';\r\nimport useNotifyServerError from '../../../hooks/useNotifyServerError';\r\n\r\n// Copied from queryReducer.\r\n// Importing those do not work in tests\r\nconst SORT_ASC = 'ASC';\r\n\r\nexport interface ListProps {\r\n // the props you can change\r\n filter?: FilterPayload;\r\n filters?: ReactElement | ReactElement[];\r\n filterDefaultValues?: object;\r\n perPage?: number;\r\n sort?: SortPayload;\r\n exporter?: Exporter | false;\r\n // the props managed by react-admin\r\n basePath?: string;\r\n debounce?: number;\r\n hasCreate?: boolean;\r\n hasEdit?: boolean;\r\n hasList?: boolean;\r\n hasShow?: boolean;\r\n location?: Location;\r\n path?: string;\r\n resource?: string;\r\n [key: string]: any;\r\n}\r\n\r\nconst defaultSort = {\r\n field: 'id',\r\n order: SORT_ASC\r\n};\r\n\r\nexport interface ListControllerProps {\r\n basePath: string;\r\n currentSort: SortPayload;\r\n data: RecordMap;\r\n defaultTitle?: string;\r\n displayedFilters: any;\r\n error?: any;\r\n exporter?: Exporter | false;\r\n filter?: FilterPayload;\r\n filterValues: any;\r\n hasCreate?: boolean;\r\n hideFilter: (filterName: string) => void;\r\n ids: Identifier[];\r\n loading: boolean;\r\n loaded: boolean;\r\n onSelect: (ids: Identifier[]) => void;\r\n onToggleItem: (id: Identifier) => void;\r\n onUnselectItems: () => void;\r\n page: number;\r\n perPage: number;\r\n resource: string;\r\n refetch: Refetch;\r\n selectedIds: Identifier[];\r\n setFilters: (filters: any, displayedFilters: any, debounce?: boolean) => void;\r\n setPage: (page: number) => void;\r\n setPerPage: (page: number) => void;\r\n setSort: (sort: string, order?: string) => void;\r\n showFilter: (filterName: string, defaultValue: any) => void;\r\n total: number;\r\n}\r\n\r\n/**\r\n * Prepare data for the List view\r\n *\r\n * @param {Object} props The props passed to the List component.\r\n *\r\n * @return {Object} controllerProps Fetched and computed data for the List view\r\n *\r\n * @example\r\n *\r\n * import { useListController } from 'react-admin';\r\n * import ListView from './ListView';\r\n *\r\n * const MyList = props => {\r\n * const controllerProps = useListController(props);\r\n * return ;\r\n * }\r\n */\r\nconst useListController = (\r\n props: ListProps\r\n): ListControllerProps => {\r\n useCheckMinimumRequiredProps('List', ['basePath'], props);\r\n\r\n const {\r\n basePath,\r\n exporter = defaultExporter,\r\n filterDefaultValues,\r\n hasCreate,\r\n sort = defaultSort,\r\n perPage = 10,\r\n filter,\r\n debounce = 500,\r\n syncWithLocation\r\n } = props;\r\n const resource = useResourceContext(props);\r\n\r\n if (!resource) {\r\n throw new Error(\r\n ` was called outside of a ResourceContext and without a resource prop. You must set the resource prop.`\r\n );\r\n }\r\n\r\n if (filter && isValidElement(filter)) {\r\n throw new Error(\r\n ' received a React element as `filter` props. If you intended to set the list filter elements, use the `filters` (with an s) prop instead. The `filter` prop is internal and should not be set by the developer.'\r\n );\r\n }\r\n\r\n const translate = useTranslate();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const [query, queryModifiers] = useListParams({\r\n resource,\r\n filterDefaultValues,\r\n sort,\r\n perPage,\r\n debounce,\r\n syncWithLocation\r\n });\r\n\r\n const [selectedIds, selectionModifiers] = useRecordSelection(resource);\r\n\r\n /**\r\n * We want the list of ids to be always available for optimistic rendering,\r\n * and therefore we need a custom action (CRUD_GET_LIST) that will be used.\r\n */\r\n const { ids, data, total, error, loading, loaded, refetch } = useGetMainList<\r\n RecordType\r\n >(\r\n resource,\r\n {\r\n page: query.page,\r\n perPage: query.perPage\r\n },\r\n { field: query.sort, order: query.order },\r\n { ...query.filter, ...filter },\r\n {\r\n action: CRUD_GET_LIST,\r\n onFailure: err => {\r\n notifyServerError(err, 'ra.notification.http_error');\r\n }\r\n }\r\n );\r\n\r\n // ext.dmois : Fix to avoid infinite loop when perPage == -1\r\n const totalPages =\r\n (query.perPage <= 0 ? total : Math.ceil(total / query.perPage)) || 1;\r\n\r\n useEffect(() => {\r\n if (query.page <= 0 || (!loading && query.page > 1 && ids.length === 0)) {\r\n // Query for a page that doesn't exist, set page to 1\r\n queryModifiers.setPage(1);\r\n } else if (!loading && query.page > totalPages) {\r\n // Query for a page out of bounds, set page to the last existing page\r\n // It occurs when deleting the last element of the last page\r\n queryModifiers.setPage(totalPages);\r\n }\r\n }, [loading, query.page, ids, queryModifiers, total, totalPages]);\r\n\r\n const currentSort = useMemo(\r\n () => ({\r\n field: query.sort || '',\r\n order: query.order || ''\r\n }),\r\n [query.sort, query.order]\r\n );\r\n\r\n const getResourceLabel = useGetResourceLabel();\r\n const defaultTitle = translate('ra.page.list', {\r\n name: getResourceLabel(resource, 2)\r\n });\r\n\r\n return {\r\n basePath,\r\n currentSort,\r\n data,\r\n defaultTitle,\r\n displayedFilters: query.displayedFilters,\r\n error,\r\n exporter,\r\n filter,\r\n filterValues: query.filterValues,\r\n hasCreate,\r\n hideFilter: queryModifiers.hideFilter,\r\n ids,\r\n loaded: loaded || ids.length > 0,\r\n loading,\r\n onSelect: selectionModifiers.select,\r\n onToggleItem: selectionModifiers.toggle,\r\n onUnselectItems: selectionModifiers.clearSelection,\r\n page: query.page,\r\n perPage: query.perPage,\r\n refetch,\r\n resource,\r\n selectedIds,\r\n setFilters: queryModifiers.setFilters,\r\n setPage: queryModifiers.setPage,\r\n setPerPage: queryModifiers.setPerPage,\r\n setSort: queryModifiers.setSort,\r\n showFilter: queryModifiers.showFilter,\r\n total: total\r\n };\r\n};\r\n\r\nexport const injectedProps = [\r\n 'basePath',\r\n 'currentSort',\r\n 'data',\r\n 'defaultTitle',\r\n 'displayedFilters',\r\n 'error',\r\n 'exporter',\r\n 'filterValues',\r\n 'hasCreate',\r\n 'hideFilter',\r\n 'ids',\r\n 'loading',\r\n 'loaded',\r\n 'onSelect',\r\n 'onToggleItem',\r\n 'onUnselectItems',\r\n 'page',\r\n 'perPage',\r\n 'refetch',\r\n 'refresh',\r\n 'resource',\r\n 'selectedIds',\r\n 'setFilters',\r\n 'setPage',\r\n 'setPerPage',\r\n 'setSort',\r\n 'showFilter',\r\n 'total',\r\n 'totalPages',\r\n 'version'\r\n];\r\n\r\n/**\r\n * Select the props injected by the useListController hook\r\n * to be passed to the List children need\r\n * This is an implementation of pick()\r\n */\r\nexport const getListControllerProps = props =>\r\n injectedProps.reduce((acc, key) => ({ ...acc, [key]: props[key] }), {});\r\n\r\n/**\r\n * Select the props not injected by the useListController hook\r\n * to be used inside the List children to sanitize props injected by List\r\n * This is an implementation of omit()\r\n */\r\nexport const sanitizeListRestProps = props =>\r\n Object.keys(props)\r\n .filter(propName => !injectedProps.includes(propName))\r\n .reduce((acc, key) => ({ ...acc, [key]: props[key] }), {});\r\n\r\nexport default useListController;\r\n","import React, { FC, ReactElement } from 'react';\r\nimport { ListContextProvider, useCheckMinimumRequiredProps } from 'react-admin';\r\nimport { ListView, TitlePropType, ListProps } from 'ra-ui-materialui/lib';\r\nimport { CircularProgress, makeStyles } from '@material-ui/core';\r\nimport PropTypes from 'prop-types';\r\n\r\nimport useListController from './useListController';\r\n\r\nconst useStyles = makeStyles({\r\n progress: {\r\n position: 'absolute',\r\n top: '25%',\r\n left: '55%'\r\n }\r\n});\r\n\r\nconst ForceListRender: FC = ({ forceShowList = false, ...props }) => {\r\n useCheckMinimumRequiredProps('List', ['children'], props);\r\n const controllerProps = useListController(props);\r\n const classes = useStyles();\r\n if (forceShowList && controllerProps.total === 0) {\r\n // React-Admin 3.17.0+ ListView renders an empty page if total = 0\r\n controllerProps.total = 1;\r\n }\r\n\r\n return (\r\n \r\n {controllerProps.loaded && !controllerProps.loading && (\r\n \r\n )}\r\n {controllerProps.loading && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nForceListRender.propTypes = {\r\n // the props you can change\r\n // @ts-ignore-line\r\n actions: PropTypes.oneOfType([PropTypes.bool, PropTypes.element]),\r\n aside: PropTypes.element,\r\n // @ts-ignore-line\r\n bulkActionButtons: PropTypes.oneOfType([PropTypes.element, PropTypes.bool]),\r\n children: PropTypes.element,\r\n classes: PropTypes.object,\r\n className: PropTypes.string,\r\n filter: PropTypes.object,\r\n filterDefaultValues: PropTypes.object,\r\n filters: PropTypes.oneOfType([\r\n PropTypes.element,\r\n PropTypes.arrayOf(PropTypes.element)\r\n ]),\r\n forceShowList: PropTypes.bool,\r\n // @ts-ignore-line\r\n pagination: PropTypes.oneOfType([PropTypes.element, PropTypes.bool]),\r\n perPage: PropTypes.number.isRequired,\r\n //@ts-ignore-line\r\n sort: PropTypes.shape({\r\n field: PropTypes.string,\r\n order: PropTypes.string\r\n }),\r\n title: TitlePropType,\r\n // the props managed by react-admin\r\n authProvider: PropTypes.func,\r\n hasCreate: PropTypes.bool,\r\n hasEdit: PropTypes.bool,\r\n hasList: PropTypes.bool,\r\n hasShow: PropTypes.bool,\r\n location: PropTypes.any,\r\n match: PropTypes.any,\r\n path: PropTypes.string,\r\n resource: PropTypes.string\r\n};\r\n\r\nForceListRender.defaultProps = {\r\n filter: {},\r\n forceShowList: false,\r\n perPage: 10,\r\n hasCreate: false,\r\n hasEdit: false,\r\n hasList: true,\r\n hasShow: false\r\n};\r\n\r\nexport default ForceListRender;\r\n","import React, { useCallback, useContext, useEffect, useState } from 'react';\r\nimport dataProvider from '../../../../../core/providers/IccUserDataProvider';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport useNotifyServerError from '../../../../../core/hooks/useNotifyServerError';\r\nimport { Loading } from 'ra-ui-materialui';\r\nimport { makeStyles, MenuItem } from '@material-ui/core';\r\nimport ImportPermissionsContext from '../ImportPermissionsContext';\r\nimport { AutoSizer, Column, Table } from 'react-virtualized';\r\nimport clsx from 'clsx';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport { FieldTitle } from 'react-admin';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport SelectField from '@material-ui/core/Select';\r\nimport { USERTYPE } from '../../../EnumUserType';\r\n\r\nconst tableHeadCells = [\r\n { label: 'Contact Name', dataKey: 'custom', width: 1.5 * 1200 },\r\n { label: 'Email Address', dataKey: 'email', width: 1.2 * 500 },\r\n { label: 'User ID', dataKey: 'userId', width: 1.5 * 128 }\r\n];\r\nconst useStyles = makeStyles({\r\n loading: {\r\n width: '100%',\r\n height: 'calc(100vh - 230px)'\r\n },\r\n contactContainer: {\r\n flexDirection: 'column',\r\n width: '100%',\r\n justifyContent: 'flex-start'\r\n },\r\n contactContainerForCreation: {\r\n flexDirection: 'column',\r\n width: '100%',\r\n justifyContent: 'flex-start',\r\n height: 'calc(100% - 42px)'\r\n },\r\n text: {\r\n fontSize: '14px',\r\n fontWeight: 400\r\n },\r\n flexContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n boxSizing: 'border-box'\r\n },\r\n gridContainer: {\r\n width: 'calc(100%)',\r\n height: 'calc(100% - 116px)'\r\n },\r\n noMatchContainer: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n border: {\r\n borderTop: '1px solid #E0E0E0',\r\n paddingRight: '0px !important'\r\n },\r\n searchContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n searchBar: {\r\n width: '69%'\r\n },\r\n searchBarFullWidth: {\r\n width: '100%'\r\n },\r\n investorsFilterContainer: {\r\n width: '30%'\r\n },\r\n selectField: {\r\n width: '100%',\r\n margin: '8px 0px 8px 0px'\r\n },\r\n noBorderBottom: {\r\n borderBottom: '0px !important'\r\n },\r\n hoverRow: {\r\n '&:hover': {\r\n backgroundColor: 'rgba(0, 0, 0, 0.04)'\r\n }\r\n }\r\n});\r\nconst headerRenderer = ({ label, classes }) => {\r\n return (\r\n \r\n {label}\r\n \r\n );\r\n};\r\n\r\nconst ContactStep = props => {\r\n const {\r\n creation,\r\n isRegular: isRegularCreation,\r\n userToCopy: userToCopyCreation,\r\n updateUser: updateUserCreation,\r\n userId: userIdCreation,\r\n setSelectedContactForImport,\r\n setIsNewImportToDo\r\n } = props;\r\n const notifyServerError = useNotifyServerError();\r\n const classes = useStyles();\r\n const [contacts, setContacts] = useState([]);\r\n const [investorSelected, setInvestorSelected] = useState('all_Investors');\r\n const [investors, setInvestors] = useState([\r\n { id: 'all_Investors', name: 'All Investors' }\r\n ]);\r\n const [filteredContacts, setFilteredContacts] = useState([]);\r\n const [\r\n filteredContactsForFiltering,\r\n setFilteredContactsForFiltering\r\n ] = useState([]);\r\n const { isRegular, updateUser, userToCopy, userId } = useContext(\r\n ImportPermissionsContext\r\n );\r\n const [selectedRow, setSelectedRow] = useState(null);\r\n const [loaded, setLoaded] = useState(false);\r\n\r\n const fetchUsers = useCallback(\r\n (isUserRegular, IdOfUser) => {\r\n dataProvider('GET_LIST', 'users', {\r\n paginated: false,\r\n filter: {\r\n userType: isUserRegular\r\n ? USERTYPE.regularContact\r\n : USERTYPE.fundAdmin,\r\n\r\n orphanVisibility: 'NON_ORPHANS_ONLY',\r\n orderBy: 'fullName',\r\n orderDirection: 'ASC'\r\n }\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n setContacts(data.filter(contact => contact.userId !== IdOfUser));\r\n setFilteredContacts(\r\n data.filter(contact => contact.userId !== IdOfUser)\r\n );\r\n }\r\n })\r\n .catch(error => notifyServerError(error, undefined))\r\n .finally(() => setLoaded(true));\r\n\r\n isUserRegular &&\r\n dataProvider('GET_LIST', 'investors', {\r\n paginated: false,\r\n filter: {\r\n orphanVisibility: 'NON_ORPHANS_ONLY',\r\n orderBy: 'name',\r\n orderDirection: 'ASC'\r\n }\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n setInvestors(previousStateInvestors =>\r\n previousStateInvestors.concat(data)\r\n );\r\n }\r\n })\r\n .catch(notifyServerError)\r\n .finally(() => setLoaded(true));\r\n },\r\n [notifyServerError]\r\n );\r\n\r\n useEffect(() => {\r\n !creation\r\n ? fetchUsers(isRegular, userId)\r\n : fetchUsers(isRegularCreation, userIdCreation);\r\n }, [\r\n notifyServerError,\r\n isRegular,\r\n fetchUsers,\r\n userId,\r\n creation,\r\n isRegularCreation,\r\n userIdCreation\r\n ]);\r\n\r\n //return true if the selected user is in the array\r\n const isSelected = useCallback(\r\n user =>\r\n !creation\r\n ? user.userId === (userToCopy && userToCopy.userId)\r\n : user.userId === (userToCopyCreation && userToCopyCreation.userId),\r\n [userToCopy, userToCopyCreation, creation]\r\n );\r\n\r\n // Manage the rowClick, to choose one and only one record in the list\r\n const rowClick = useCallback(\r\n user => {\r\n const selectedUser = selectedRow?.userId === user.userId;\r\n let newSelected;\r\n if (selectedUser) {\r\n newSelected = null;\r\n } else {\r\n // add the usertype property if we are filtering the list from investor,\r\n // because the contacts from the investors/contacts api aren't populated with the usertype and it's mandatory for the second step\r\n // override the userType with the same value as before in case we are coming from a FA, since we don't filter by investor for an FA\r\n if (!creation) {\r\n newSelected = {\r\n ...user,\r\n userType: isRegular ? USERTYPE.regularContact : USERTYPE.fundAdmin\r\n };\r\n } else {\r\n newSelected = {\r\n ...user,\r\n userType: isRegularCreation\r\n ? USERTYPE.regularContact\r\n : USERTYPE.fundAdmin\r\n };\r\n }\r\n }\r\n\r\n if (!creation) {\r\n setSelectedRow(newSelected);\r\n } else {\r\n setIsNewImportToDo(true);\r\n setSelectedContactForImport(newSelected);\r\n }\r\n !creation ? updateUser(newSelected) : updateUserCreation(newSelected);\r\n },\r\n [\r\n selectedRow?.userId,\r\n creation,\r\n updateUser,\r\n updateUserCreation,\r\n isRegular,\r\n isRegularCreation,\r\n setIsNewImportToDo,\r\n setSelectedContactForImport\r\n ]\r\n );\r\n\r\n /**\r\n * Set the itemSearch state to filter the right side list\r\n */\r\n const handleItemSearch = useCallback(\r\n text => {\r\n const searchArray =\r\n investorSelected !== 'all_Investors'\r\n ? filteredContactsForFiltering\r\n : contacts;\r\n const searchText = text.toLowerCase();\r\n setFilteredContacts(() => {\r\n let newArray = [];\r\n searchArray.forEach(contact => {\r\n const fullName = `${contact.firstName} ${contact.lastName}`;\r\n if (\r\n fullName.toLowerCase().includes(searchText) ||\r\n contact.userId.toLowerCase().includes(searchText) ||\r\n contact.email.toLowerCase().includes(searchText)\r\n ) {\r\n newArray.push(contact);\r\n }\r\n });\r\n return newArray;\r\n });\r\n },\r\n [contacts, investorSelected, filteredContactsForFiltering]\r\n );\r\n\r\n const cellRenderer = useCallback(\r\n params => {\r\n const { dataKey, rowData, cellData } = params;\r\n const cellValue =\r\n dataKey === 'custom'\r\n ? `${rowData.firstName || ''} ${rowData.lastName || ''}`\r\n : cellData;\r\n const isItemSelected = !creation\r\n ? isSelected(rowData, userToCopy)\r\n : isSelected(rowData, userToCopyCreation);\r\n return (\r\n \r\n \r\n
    {cellValue}
    \r\n
    \r\n
    \r\n );\r\n },\r\n [isSelected, creation, userToCopy, userToCopyCreation]\r\n );\r\n const handleOnChangeInvestorsFilter = useCallback(\r\n value => {\r\n setInvestorSelected(value);\r\n if (value === 'all_Investors') {\r\n setFilteredContacts(contacts);\r\n } else {\r\n dataProvider('GET_LIST', 'investorcontacts', {\r\n paginated: false,\r\n filter: {\r\n investorId: value,\r\n orderBy: 'firstName',\r\n orderDirection: 'ASC'\r\n }\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n setFilteredContacts(data);\r\n setLoaded(true);\r\n setFilteredContactsForFiltering(data);\r\n }\r\n })\r\n .catch(notifyServerError);\r\n }\r\n },\r\n [contacts, notifyServerError]\r\n );\r\n if (!loaded) return ;\r\n return (\r\n \r\n {!creation && (\r\n \r\n Select Contact to copy it's permission groups\r\n \r\n )}\r\n
    \r\n \r\n \r\n \r\n \r\n handleItemSearch(e.target.value)}\r\n />\r\n
    \r\n {(isRegular || isRegularCreation) && (\r\n
    \r\n \r\n \r\n \r\n handleOnChangeInvestorsFilter(e.target.value)}\r\n value={investorSelected}\r\n >\r\n {investors.map(({ id, name }) => (\r\n \r\n {name}\r\n \r\n ))}\r\n \r\n
    \r\n )}\r\n \r\n\r\n
    \r\n {filteredContacts.length === 0 && (\r\n
    \r\n No results found\r\n
    \r\n )}\r\n {filteredContacts.length > 0 && (\r\n \r\n {({ height, width }) => (\r\n filteredContacts[index]}\r\n headerHeight={30}\r\n gridStyle={{ border: '1px solid #E0E0E0', borderTop: '0' }}\r\n rowHeight={30}\r\n rowClassName={clsx(\r\n classes.flexContainer,\r\n classes.border,\r\n classes.hoverRow\r\n )}\r\n estimatedRowSize={30}\r\n overscanRowCount={10}\r\n onRowClick={({ rowData }) => rowClick(rowData)}\r\n >\r\n {tableHeadCells.map(({ dataKey, ...other }) => {\r\n return (\r\n \r\n headerRenderer({\r\n ...headerProps,\r\n classes\r\n })\r\n }\r\n cellRenderer={cellRenderer}\r\n className={classes.flexContainer}\r\n dataKey={dataKey}\r\n {...other}\r\n />\r\n );\r\n })}\r\n \r\n )}\r\n \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ContactStep;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Fund Family API\r\n */\r\nclass FundFamilyApi extends ApiBase {\r\n /**\r\n * Check if fund family ID already exists\r\n * @param {*} fundFamilyId\r\n */\r\n async checkIdExists(fundFamilyId) {\r\n const request = {\r\n url: `${this.API_URL}/fundfamily?id=${fundFamilyId}`,\r\n headers: this.getHeaders(),\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return status === 200 || status === 403 || status === 404;\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200 || response.status === 403) {\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n }\r\n }\r\n\r\n async getAll() {\r\n const request = {\r\n url: `${this.API_URL}/fundfamilies?orderBy=name&orderDirection=ASC`,\r\n method: 'GET',\r\n headers: this.getHeaders()\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new FundFamilyApi();\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\nimport { getManyByChunk } from '../utils';\r\nimport { stringify } from '../components/forked/stringify';\r\n\r\n/**\r\n * FundInvestor API\r\n */\r\nclass FundInvestorApi extends ApiBase {\r\n /**\r\n * create fundInvestors\r\n * @param {*} fundInvestors\r\n */\r\n async create(fundInvestors) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestors`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(fundInvestors)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Get related funds in excel\r\n * @param investorId\r\n * @param {*} filters\r\n */\r\n async getRelatedFundsAsExcel(investorId, filters) {\r\n const queryParameters = stringify(\r\n {\r\n investorId: investorId,\r\n fundName: filters.fundName,\r\n fundId: filters.fundId,\r\n fundInvestorTagId: filters.fundInvestorTagId\r\n },\r\n {\r\n arrayFormat: 'open-ic'\r\n }\r\n );\r\n const request = {\r\n url: `${this.API_URL}/fundinvestor/excel/export?${queryParameters}`,\r\n headers: this.getHeaders(),\r\n method: 'GET',\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async get(fundId, investorId, shouldReturnTags) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestor?fundId=${fundId}&investorId=${investorId}&returnFundInvestorTags=${shouldReturnTags}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async getByInvestorId(investorId) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestors?investorId=${investorId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async update(fundId, investorId, fundInvestor) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestor?fundId=${fundId}&investorId=${investorId}`,\r\n headers: this.getHeaders(),\r\n method: 'PUT',\r\n data: JSON.stringify(fundInvestor)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async delete(fundInvestor) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestors`,\r\n headers: this.getHeaders(),\r\n method: 'DELETE',\r\n data: JSON.stringify(fundInvestor)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async getByFundIds(fundIds, paramsMaxSize) {\r\n const baseUrl = `${this.API_URL}/fundinvestors?fundId=`;\r\n let encodedReqIds = encodeURI(`${fundIds}`);\r\n\r\n return getManyByChunk(baseUrl, encodedReqIds, paramsMaxSize);\r\n }\r\n}\r\n\r\nexport default new FundInvestorApi();\r\n","import { useEffect, useState } from 'react';\r\nimport EntitlementApi from '../../../../core/apis/EntitlementApi';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\nimport { isEmpty, uniq } from 'lodash';\r\nimport FundFamilyApi from '../../../../core/apis/FundFamilyApi';\r\nimport { useDataProvider } from 'react-admin';\r\nimport FundInvestorApi from '../../../../core/apis/FundInvestorApi';\r\n\r\nexport const createUserAuthorizations = (\r\n userAuthorizations,\r\n createdContactId\r\n) => {\r\n return (userAuthorizations || []).map(authorization => ({\r\n ...authorization,\r\n // id: investorId:fundId:groupId\r\n id: createdContactId\r\n ? `${createdContactId}:${authorization.investorId}:${authorization.fundId}:${authorization.groupId}`\r\n : `${authorization.investorId}:${authorization.fundId}:${authorization.groupId}`\r\n }));\r\n};\r\n\r\nexport const setSearch = (setState, contacts, e) => {\r\n const searchInput = e.target.value;\r\n if (searchInput.length > 0) {\r\n const tempFilteredContacts = [];\r\n contacts.forEach(contact => {\r\n const { firstName, lastName, email, userId, status } = contact;\r\n const fullName = `${firstName} ${lastName}`;\r\n if (\r\n fullName.toLowerCase().includes(searchInput.toLowerCase()) ||\r\n email.toLowerCase().includes(searchInput.toLowerCase()) ||\r\n userId.toLowerCase().includes(searchInput.toLowerCase()) ||\r\n status?.toLowerCase().includes(searchInput.toLowerCase())\r\n ) {\r\n tempFilteredContacts.push(contact);\r\n }\r\n });\r\n setState(tempFilteredContacts);\r\n } else {\r\n setState(contacts);\r\n }\r\n};\r\n\r\n/**\r\n * A custom React hook that fetches authorizations for the `` based on the provided parameters.\r\n *\r\n * @param {string} contactId - The ID of the contact for which authorizations will be fetched.\r\n * @param {string} createdContactId - The ID of the created contact associated with the authorizations.\r\n * @param {string} selectedAssignmentMode - The selected assignment mode, e.g., 'import'.\r\n * @param {boolean} isCreatedContactRcOrIa - A boolean indicating whether the created contact is an RC (Regular Contact) or IA (Investor Admin).\r\n * @param {boolean} arePermissionGroupsUploaded - A boolean indicating whether permission groups are uploaded for the contact created.\r\n * @param {boolean} isNewImportToDo - A boolean indicating whether a new import is to be performed.\r\n *\r\n * @returns {Object} An object containing the fetched authorizations and their IDs.\r\n * @property {Array} authorizations - An array of fetched authorizations for the datagrid.\r\n * @property {Array} authorizationsIds - An array of IDs of the fetched authorizations.\r\n */\r\n\r\nexport const useFetchAuthorizationsForDatagrid = (\r\n contactId,\r\n createdContactId,\r\n selectedAssignmentMode,\r\n isCreatedContactRcOrIa,\r\n arePermissionGroupsUploaded,\r\n isNewImportToDo\r\n) => {\r\n const [authorizations, setAuthorizations] = useState([]);\r\n const [authorizationsIds, setAuthorizationsIds] = useState([]);\r\n const notifyServerError = useNotifyServerError();\r\n const dataProvider = useDataProvider();\r\n useEffect(() => {\r\n let auth = [];\r\n\r\n if (!isEmpty(contactId) && arePermissionGroupsUploaded && isNewImportToDo) {\r\n EntitlementApi.getAuthorizationsByUserId(contactId)\r\n .then(fetchedAuthorizations => {\r\n const ids = fetchedAuthorizations.map(\r\n fetchedAuthorization =>\r\n `${createdContactId}:${fetchedAuthorization.investorId}:${fetchedAuthorization.fundId}:${fetchedAuthorization.groupId}`\r\n );\r\n setAuthorizationsIds(ids);\r\n const uniqFundIds = uniq(\r\n fetchedAuthorizations.map(item => item.fundId)\r\n );\r\n\r\n if (isCreatedContactRcOrIa && !isEmpty(uniqFundIds)) {\r\n FundInvestorApi.getByFundIds(uniqFundIds)\r\n .then(fundInvestors => {\r\n const fundMap = new Map(\r\n fundInvestors.map(i => [i.fundId, i.fundName])\r\n );\r\n const investorMap = new Map(\r\n fundInvestors.map(i => [i.investorId, i.investorName])\r\n );\r\n auth = fetchedAuthorizations.map(item => {\r\n const fundName = fundMap.get(item.fundId);\r\n const investorName = investorMap.get(item.investorId);\r\n return {\r\n ...item,\r\n id: `${createdContactId}:${item.investorId}:${item.fundId}:${item.groupId}`,\r\n fundName,\r\n investorName,\r\n userId: createdContactId\r\n };\r\n });\r\n setAuthorizations(auth);\r\n })\r\n .catch(e => notifyServerError(e));\r\n } else {\r\n dataProvider\r\n .getMany('funds', {\r\n ids: uniqFundIds,\r\n target: 'id'\r\n })\r\n .then(({ data: funds }) => {\r\n if (funds.some(fund => fund.fundFamilyId !== null)) {\r\n FundFamilyApi.getAll()\r\n .then(({ pageData: fundFamilies }) => {\r\n auth = fetchedAuthorizations.map(item => {\r\n const fund = funds.find(\r\n fundItem => fundItem.id === item.fundId\r\n );\r\n const fundFamily =\r\n fund &&\r\n fundFamilies.find(ff => ff.id === fund.fundFamilyId);\r\n return {\r\n ...item,\r\n fundName: fund.name,\r\n fundFamilyName: fundFamily?.name,\r\n fundFamilyId: fundFamily?.id,\r\n userId: contactId,\r\n id: `${createdContactId}:${item.investorId}:${item.fundId}:${item.groupId}`\r\n };\r\n });\r\n setAuthorizations(auth);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n });\r\n } else {\r\n auth = fetchedAuthorizations.map(authItem => {\r\n const fund = funds.find(\r\n fundFind => fundFind.id === authItem.fundId\r\n );\r\n return {\r\n ...authItem,\r\n fundName: fund.name,\r\n userId: contactId,\r\n id: `${createdContactId}:${authItem.investorId}:${authItem.fundId}:${authItem.groupId}`\r\n };\r\n });\r\n setAuthorizations(auth);\r\n }\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n });\r\n }\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n });\r\n }\r\n }, [\r\n contactId,\r\n createdContactId,\r\n notifyServerError,\r\n dataProvider,\r\n selectedAssignmentMode,\r\n isCreatedContactRcOrIa,\r\n arePermissionGroupsUploaded,\r\n isNewImportToDo\r\n ]);\r\n\r\n return { authorizations, authorizationsIds };\r\n};\r\n","import React, { useContext, useMemo, useState, useEffect } from 'react';\r\nimport { useFetch } from '../../../../../core/hooks/UseFetch';\r\nimport EntitlementApi from '../../../../../core/apis/EntitlementApi';\r\nimport ImportPermissionsContext from '../ImportPermissionsContext';\r\nimport UserAuthorizationUpdate from '../../UserAuthorizationUpdate';\r\nimport { Loading } from 'ra-ui-materialui';\r\nimport { Grid, makeStyles } from '@material-ui/core';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport { useProfile } from '../../../../../core/hooks/UseProfile';\r\nimport pullAll from 'lodash/pullAll';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport useNotifyServerError from '../../../../../core/hooks/useNotifyServerError';\r\nimport { USERTYPE } from '../../../EnumUserType';\r\nimport { createUserAuthorizations } from '../../stepper/utils';\r\n\r\nconst PermissionGroupsStep = () => {\r\n const notifyServerError = useNotifyServerError();\r\n const [groupsFilter, setGroupsFilter] = useState('ONLY_ASSIGNED');\r\n const [idsUserChosen, setIdsUserChosen] = useState([]);\r\n const [\r\n authorizationsConnectedUser,\r\n setAuthorizationsConnectedUser\r\n ] = useState([]);\r\n const { profile: loggedInUser } = useProfile();\r\n const classes = useStyles();\r\n const {\r\n userToCopy,\r\n groups,\r\n funds,\r\n onChangeAuthorizationsForImport,\r\n setAuthorizationsUserChosen,\r\n userId,\r\n hasWriteAuthorizationPermission\r\n } = useContext(ImportPermissionsContext);\r\n\r\n useEffect(() => {\r\n const { userType, userId: id } = loggedInUser;\r\n userType !== USERTYPE.superAdmin &&\r\n EntitlementApi.getAuthorizationsByUserId(id)\r\n .then(authorizations => {\r\n setAuthorizationsConnectedUser(authorizations);\r\n })\r\n .catch(notifyServerError);\r\n }, [loggedInUser, notifyServerError]);\r\n\r\n const { data = [], loading } = useFetch(\r\n EntitlementApi.getAuthorizationsByUserId,\r\n userToCopy.userId\r\n );\r\n\r\n const [formCtrlLabel1Cls, formCtrlLabel2Cls] = useMemo(\r\n () => [\r\n { root: classes.topToolbar },\r\n { label: classes.radioLabel },\r\n { root: classes.radioLabelRoot, label: classes.radioLabel }\r\n ],\r\n [classes]\r\n );\r\n\r\n const onChangeAuthorizations = (\r\n _newAuthorizationsToUpdateBoolean,\r\n newAuthorizationsToUpdateArray\r\n ) => {\r\n const final = newAuthorizationsToUpdateArray.map(\r\n authorization =>\r\n `${authorization.userId}:${authorization.investorId}:${authorization.fundId}:${authorization.groupId}`\r\n );\r\n\r\n pullAll(idsUserChosen, final);\r\n onChangeAuthorizationsForImport(newAuthorizationsToUpdateArray);\r\n };\r\n\r\n //create userautorizations from the user we choose on the step 1\r\n const authorizationsUserChosen = useMemo(() => {\r\n setAuthorizationsUserChosen(createUserAuthorizations(data));\r\n return createUserAuthorizations(data);\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, [data]);\r\n\r\n //create ids array to filters the authorizations the user chosen have access to\r\n useEffect(() => {\r\n setIdsUserChosen(\r\n (data || []).map(\r\n authorization =>\r\n `${userId}:${authorization.investorId}:${authorization.fundId}:${authorization.groupId}`\r\n )\r\n );\r\n }, [data, userId]);\r\n\r\n if (loading) return ;\r\n return (\r\n
    \r\n \r\n \r\n \r\n Select Permission Groups\r\n \r\n \r\n Below are assigned permissions of the selected contact. Select which\r\n ones you want to import.\r\n \r\n \r\n \r\n \r\n \r\n Contact:{' '}\r\n \r\n {userToCopy.firstName} {userToCopy.lastName}\r\n {' '}\r\n User ID: {userToCopy.userId}\r\n \r\n setGroupsFilter(e.target.value)}\r\n row\r\n style={{ margin: 0 }}\r\n >\r\n }\r\n label=\"Show All\"\r\n classes={formCtrlLabel1Cls}\r\n id=\"show-all\"\r\n />\r\n }\r\n label=\"Show Assigned\"\r\n classes={formCtrlLabel2Cls}\r\n style={{ marginRight: 0 }}\r\n />\r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\nconst useStyles = makeStyles({\r\n container: {\r\n flexDirection: 'column',\r\n width: '100%',\r\n justifyContent: 'flex-start'\r\n },\r\n loading: {\r\n width: '100%',\r\n height: 'calc(100vh - 230px)'\r\n },\r\n topToolbar: {\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n radioLabel: {\r\n fontSize: '14px'\r\n },\r\n radioLabelRoot: {\r\n marginRight: '0px !important'\r\n },\r\n paragraph: {\r\n fontSize: '14px'\r\n },\r\n contactInformation: {\r\n fontSize: '14px',\r\n paddingTop: '15px'\r\n },\r\n bold: {\r\n fontWeight: '600'\r\n }\r\n});\r\n\r\nexport default PermissionGroupsStep;\r\n","import React, { createContext, useCallback, useMemo, useState } from 'react';\r\nimport ContactStep from './steps/ContactStep';\r\nimport PermissionGroupsStep from './steps/PermissionGroupsStep';\r\nimport { useSelector } from 'react-redux';\r\nimport get from 'lodash/get';\r\nimport { orderBy } from 'lodash';\r\n\r\nconst steps = [\r\n {\r\n index: 0,\r\n name: 'contacts',\r\n label: 'Select Contact',\r\n component: ContactStep,\r\n nextButton: true,\r\n backButton: false\r\n },\r\n {\r\n index: 1,\r\n name: 'permissiongroups',\r\n label: 'Select Permission Groups',\r\n component: PermissionGroupsStep,\r\n nextButton: false,\r\n backButton: true\r\n }\r\n];\r\nconst ImportPermissionsContext = createContext({});\r\n\r\nexport const ImportPermissionsProvider = props => {\r\n const {\r\n children,\r\n isRegular,\r\n id,\r\n authorizations,\r\n hasWriteAuthorizationPermission\r\n } = props;\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [authorizationsToImport, setAuthorizationsToImport] = useState([]);\r\n const [authorizationsUserChosen, setAuthorizationsUserChosen] = useState([]);\r\n const [userToCopy, setUserToCopy] = useState(null);\r\n\r\n const funds = useSelector(state => {\r\n return get(state, 'admin.resources.funds.data', {});\r\n });\r\n const finalFunds = useMemo(() => {\r\n return Object.values(funds);\r\n }, [funds]);\r\n\r\n const groups = useSelector(state => {\r\n return get(state, 'admin.resources.groups.data', {});\r\n });\r\n\r\n const finalGroups = useMemo(() => {\r\n const groupsArray = Object.values(groups);\r\n const filteredGroups = groupsArray.filter(item => {\r\n return item.status === 'ACTIVE' && !item.adminGroup;\r\n });\r\n return orderBy(filteredGroups, item => item.name.toLowerCase(), ['ASC']);\r\n }, [groups]);\r\n\r\n const getActiveStep = useCallback(() => {\r\n const step = steps[activeStep];\r\n return ;\r\n }, [activeStep]);\r\n\r\n const updateUser = useCallback(user => {\r\n setUserToCopy(user);\r\n }, []);\r\n\r\n const onChangeAuthorizationsForImport = useCallback(\r\n newAuthorizationsToUpdateArray =>\r\n setAuthorizationsToImport(newAuthorizationsToUpdateArray),\r\n []\r\n );\r\n\r\n const value = {\r\n currentStep: steps[activeStep],\r\n getActiveStep: getActiveStep(),\r\n increaseStep: () => setActiveStep(activeStep + 1),\r\n decreaseStep: () => setActiveStep(activeStep - 1),\r\n setAuthorizationsUserChosen: authorizationsUser =>\r\n setAuthorizationsUserChosen(authorizationsUser),\r\n steps,\r\n onChangeAuthorizationsForImport: newAuthorizationsToUpdate =>\r\n onChangeAuthorizationsForImport(newAuthorizationsToUpdate),\r\n isRegular,\r\n updateUser,\r\n userToCopy,\r\n oldAuthorizations: authorizations,\r\n newAuthorizationsToImport: authorizationsToImport,\r\n authorizationsUserChosen,\r\n groups: finalGroups,\r\n funds: finalFunds,\r\n userId: id,\r\n hasWriteAuthorizationPermission\r\n };\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\nexport default ImportPermissionsContext;\r\n","import React, { useCallback, useContext, useState } from 'react';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\n\r\nimport DialogTitleWithCloseButton from '../../../../core/components/DialogTitleWithCloseButton';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport { CircularProgress, makeStyles } from '@material-ui/core';\r\nimport ImportPermissionsContext from './ImportPermissionsContext';\r\nimport Button from '@material-ui/core/Button';\r\nimport Confirm from '../../../../core/components/forked/layout/Confirm';\r\nimport UserApi from '../../../../core/apis/UserApi';\r\nimport { useNotify, useRefresh } from 'react-admin';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\nimport pullAllBy from 'lodash/pullAllBy';\r\nimport cloneDeep from 'lodash/cloneDeep';\r\nimport map from 'lodash/map';\r\nimport { omit } from 'lodash';\r\n\r\nconst useStyles = makeStyles({\r\n stepper: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '0 0 0px',\r\n display: 'inline-flex'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n button: {\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n backButton: {\r\n marginLeft: '8px',\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n saveButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n root: {\r\n paddingTop: '10px',\r\n paddingBottom: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: '100%',\r\n width: '100%'\r\n },\r\n dialogContent: {\r\n padding: '0px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '80vh'\r\n },\r\n stepperContainer: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '11px 8px',\r\n display: 'flex',\r\n borderBottom: '1px solid #E0E0E0'\r\n },\r\n stepContainer: {\r\n height: '100%',\r\n padding: '16px',\r\n display: 'flex'\r\n },\r\n progressIndicator: {\r\n width: '20px !important',\r\n height: '20px !important',\r\n marginRight: '10px',\r\n color: 'white'\r\n }\r\n});\r\n\r\nconst ImportPermissionsGroupsDialog = props => {\r\n const { open, setOpenImportPermissionGroups } = props;\r\n const [openConfirm, setOpenConfirm] = useState(false);\r\n const [loadingForImport, setLoadingForImport] = useState(false);\r\n const {\r\n currentStep,\r\n steps,\r\n getActiveStep,\r\n userToCopy,\r\n increaseStep,\r\n decreaseStep,\r\n updateUser,\r\n oldAuthorizations,\r\n newAuthorizationsToImport,\r\n userId,\r\n authorizationsUserChosen\r\n } = useContext(ImportPermissionsContext);\r\n const classes = useStyles();\r\n const refresh = useRefresh();\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const handleClickSave = useCallback(() => {\r\n if (currentStep.index === 1) {\r\n decreaseStep();\r\n }\r\n updateUser(null);\r\n setOpenConfirm(false);\r\n setOpenImportPermissionGroups(false);\r\n }, [setOpenImportPermissionGroups, decreaseStep, updateUser, currentStep]);\r\n\r\n const handleClose = useCallback(() => {\r\n if (userToCopy !== null) {\r\n setOpenConfirm(true);\r\n } else {\r\n setOpenImportPermissionGroups(false);\r\n }\r\n }, [setOpenImportPermissionGroups, userToCopy]);\r\n\r\n const handleImportAuthorizations = async () => {\r\n setLoadingForImport(true);\r\n let error = false;\r\n\r\n let authorizationsToDelete = [];\r\n let authorizationsUserChosenCopy = cloneDeep(authorizationsUserChosen);\r\n let authorizationsToCreate = [];\r\n\r\n //map the latest changes array to delete or add new authorizations to the initial array\r\n newAuthorizationsToImport.forEach(newItem =>\r\n newItem.checked\r\n ? authorizationsToCreate.push(omit(newItem, ['checked']))\r\n : authorizationsToDelete.push(omit(newItem, ['checked']))\r\n );\r\n\r\n pullAllBy(authorizationsUserChosenCopy, authorizationsToDelete, 'id');\r\n const finalArrayToImport = map(\r\n oldAuthorizations.concat(\r\n authorizationsUserChosenCopy.concat(authorizationsToCreate)\r\n ),\r\n item => ({\r\n ...item,\r\n userId\r\n })\r\n );\r\n\r\n // Request for creation\r\n if (finalArrayToImport.length > 0) {\r\n await UserApi.createUserauthorizations(finalArrayToImport).catch(err => {\r\n error = true;\r\n notifyServerError(err);\r\n });\r\n }\r\n if (!error) {\r\n notify('ra.notification.importation_permission_groups');\r\n refresh();\r\n setOpenImportPermissionGroups(false);\r\n }\r\n setLoadingForImport(false);\r\n };\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n {'Import Permission Groups From Existing Contact'}\r\n \r\n \r\n
    \r\n \r\n {steps.map(step => (\r\n \r\n {step.label}\r\n \r\n ))}\r\n \r\n
    \r\n
    {getActiveStep}
    \r\n
    \r\n \r\n
    \r\n \r\n Cancel\r\n \r\n\r\n {currentStep.backButton && (\r\n \r\n Back\r\n \r\n )}\r\n
    \r\n\r\n \r\n {loadingForImport && (\r\n \r\n )}\r\n {currentStep.nextButton ? 'Next' : 'Import'}\r\n \r\n
    \r\n setOpenConfirm(false)}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default ImportPermissionsGroupsDialog;\r\n","import { Grid, Typography } from '@material-ui/core/';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { get, orderBy, isEmpty, omit } from 'lodash';\r\nimport React, { useEffect, useState, useMemo, useCallback } from 'react';\r\nimport {\r\n Button,\r\n crudGetList,\r\n TopToolbar,\r\n useDataProvider\r\n //useWhyDidYouUpdate\r\n} from 'react-admin';\r\nimport { connect } from 'react-redux';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nimport EntitlementApi from '../../../core/apis/EntitlementApi';\r\nimport { useFetch } from '../../../core/hooks/UseFetch';\r\nimport AddAuthorizationDialog from './AddAuthorizationDialog';\r\nimport UserAuthorizationUpdate from './UserAuthorizationUpdate';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport ForceListRender from '../../../core/components/forked/list/ForceListRender';\r\nimport ImportPermissionGroupsDialog from './importPermissionsGroups/ImportPermissionsGroupsDialog';\r\nimport { ImportPermissionsProvider } from './importPermissionsGroups/ImportPermissionsContext';\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\nimport { USERTYPE } from '../EnumUserType';\r\n\r\nconst useUserAuthorizationTopToolbarStyles = makeStyles({\r\n headline: {\r\n paddingTop: 0\r\n },\r\n topToolbar: {\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n alignSelf: 'center'\r\n },\r\n importPermissionButton: {\r\n border: '1px solid #E0E0E0',\r\n marginRight: '6px',\r\n background: '#FFFFFF',\r\n alignSelf: 'center'\r\n },\r\n paragraph: {\r\n fontSize: '14px'\r\n },\r\n radioLabel: {\r\n fontSize: '14px'\r\n },\r\n radioLabelRoot: {\r\n marginRight: '0px !important'\r\n },\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block'\r\n }\r\n});\r\n\r\nconst UserAuthorizationTopToolbar = props => {\r\n const {\r\n userType,\r\n groupsFilter,\r\n onGroupsFilterChange,\r\n empty,\r\n hasWriteAuthorizationPermission,\r\n handleAddAuthorization,\r\n ids,\r\n id,\r\n authorizations,\r\n usedIds\r\n } = props;\r\n const classes = useUserAuthorizationTopToolbarStyles();\r\n const [openDialog, setOpenDialog] = useState(false);\r\n const userTypeRoleCheck =\r\n userType === USERTYPE.regularContact || userType === USERTYPE.investorAdmin;\r\n const [openImportPermissionGroups, setOpenImportPermissionGroups] = useState(\r\n false\r\n );\r\n const [\r\n openWarningConfirmForImport,\r\n setOpenWarningConfirmForImport\r\n ] = useState(false);\r\n\r\n const [\r\n topToolBarClasses,\r\n formCtrlLabel1Cls,\r\n formCtrlLabel2Cls\r\n ] = useMemo(\r\n () => [\r\n { root: classes.topToolbar },\r\n { label: classes.radioLabel },\r\n { root: classes.radioLabelRoot, label: classes.radioLabel }\r\n ],\r\n [classes]\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n Access Rights\r\n \r\n {hasWriteAuthorizationPermission && (\r\n \r\n {\r\n // check if there are already userauthorizations assigned to the current user, if ys trigger the confirm warning modal\r\n if (ids.length > 0) {\r\n setOpenWarningConfirmForImport(true);\r\n } else {\r\n setOpenImportPermissionGroups(true);\r\n }\r\n }}\r\n label=\"Import Permission Groups\"\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n className={classes.importPermissionButton}\r\n />\r\n \r\n \r\n \r\n setOpenDialog(true)}\r\n label={userTypeRoleCheck ? 'Add Investor' : 'Add Fund'}\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n className={classes.addButton}\r\n />\r\n {openDialog && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n Here you can view and change access rights. Tick checkboxes to\r\n assign Group Permissions.\r\n \r\n \r\n \r\n \r\n }\r\n label=\"Show All\"\r\n classes={formCtrlLabel1Cls}\r\n id=\"show-all\"\r\n />\r\n }\r\n label=\"Show Assigned\"\r\n classes={formCtrlLabel2Cls}\r\n />\r\n \r\n \r\n \r\n {\r\n setOpenWarningConfirmForImport(false);\r\n setOpenImportPermissionGroups(true);\r\n }}\r\n onClose={() => setOpenWarningConfirmForImport(false)}\r\n />\r\n {empty && (\r\n \r\n \r\n There are no Access Rights to be displayed\r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Component used to get user authorizations for the connected user, not for super admin\r\n * @param {*} props\r\n */\r\nconst UserAuthorizationUpdateComponentWithAuhtorizations = props => {\r\n const { userProfile } = props;\r\n const { data = [] } = useFetch(\r\n EntitlementApi.getAuthorizationsByUserId,\r\n userProfile.userId\r\n );\r\n\r\n const authorizationsConnectedUser = useMemo(\r\n () =>\r\n (data || []).map(authorization => ({\r\n ...authorization,\r\n // id: investorId:fundId:groupId\r\n id: `${authorization.investorId}:${authorization.fundId}:${authorization.groupId}`\r\n })),\r\n [data]\r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst useProgressStyles = makeStyles({\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n }\r\n});\r\n\r\n/**\r\n * Display the circular progress component\r\n */\r\nconst Progress = () => {\r\n const classes = useProgressStyles();\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Component used to wait the profile of the user connected\r\n * And use the right component when user authorizations are needed or not\r\n * @param {*} props\r\n */\r\nconst UserAuthorizationUpdateComponentProfile = props => {\r\n const {\r\n userProfile,\r\n data,\r\n setAuthorizations,\r\n loaded,\r\n loading,\r\n groups = [],\r\n ids\r\n } = props;\r\n\r\n const groupIds = useMemo(() => groups.map(({ id }) => id), [groups]);\r\n\r\n // Filter authorizations for this user and for the non admin groups\r\n const authorizations = useMemo(() => {\r\n if (loaded && !loading && groupIds.length && ids.length) {\r\n return Object.values(data).filter(\r\n item =>\r\n item.userId === props.id &&\r\n ids.includes(item.id) &&\r\n groupIds.includes(item.groupId)\r\n );\r\n }\r\n return [];\r\n }, [loaded, loading, data, ids, groupIds, props.id]);\r\n\r\n useEffect(() => setAuthorizations(authorizations), [\r\n authorizations,\r\n setAuthorizations\r\n ]);\r\n\r\n if (!isEmpty(userProfile)) {\r\n const UserAuthorizationUpdateComponent =\r\n userProfile.userType === USERTYPE.superAdmin\r\n ? UserAuthorizationUpdate\r\n : UserAuthorizationUpdateComponentWithAuhtorizations;\r\n\r\n return (\r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n};\r\n\r\nconst updateUsedIds = (ids, auth) => {\r\n if (auth.fundId) {\r\n ids.funds = ids.funds || {};\r\n ids.funds[auth.fundId] = true;\r\n }\r\n};\r\n\r\nconst useUserAuthorizationStyles = makeStyles({\r\n gridTab: {\r\n marginTop: '-17px !important'\r\n },\r\n mainList: {\r\n overflow: 'hidden'\r\n }\r\n});\r\n\r\nconst noMarginStyle = { margin: '0px', width: '100%' };\r\nconst emptyObject = {};\r\n\r\nconst UserAuthorizationTab = props => {\r\n const {\r\n userType,\r\n crudGetList, //NOSONAR javascript:S1117\r\n onChangeAuthorizations,\r\n permissions,\r\n groups,\r\n funds,\r\n whenBlockNavigation,\r\n location,\r\n ...rest\r\n } = props;\r\n // when perf debugging, check what's changed in the properties\r\n //useWhyDidYouUpdate('UserAuthorizationTab', props);\r\n\r\n const classes = useUserAuthorizationStyles();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const isRegular =\r\n userType === USERTYPE.regularContact || userType === USERTYPE.investorAdmin;\r\n\r\n const mainClasses = useMemo(() => ({ main: classes.mainList }), [classes]);\r\n const listFilter = useMemo(() => ({ userId: props.id }), [props.id]);\r\n\r\n const hasWriteAuthorizationPermission = useMemo(() => {\r\n return permissions.includes('AUTH_WRITE_USER_AUTHORIZATION');\r\n }, [permissions]);\r\n\r\n const dataProvider = useDataProvider();\r\n\r\n const [newAuthorizations, setNewAuthorizations] = useState([]);\r\n const [groupsFilter, setGroupsFilter] = useState('ALL');\r\n const [authorizationsDirty, setAuthorizationsDirty] = useState(false);\r\n const [newAuthorizationsDirty, setNewAuthorizationsDirty] = useState(false);\r\n const [authorizations, setAuthorizations] = useState([]);\r\n\r\n useEffect(() => {\r\n // Prevent navigation, if there are unsaved authorizations or new unsaved authorizations\r\n if (\r\n !whenBlockNavigation &&\r\n (authorizationsDirty || newAuthorizationsDirty)\r\n ) {\r\n onChangeAuthorizations(true);\r\n }\r\n\r\n // Allow navigation, when there is no more unsaved changes\r\n if (\r\n whenBlockNavigation &&\r\n !authorizationsDirty &&\r\n !newAuthorizationsDirty\r\n ) {\r\n onChangeAuthorizations(false);\r\n }\r\n }, [\r\n whenBlockNavigation,\r\n authorizationsDirty,\r\n newAuthorizationsDirty,\r\n onChangeAuthorizations\r\n ]);\r\n\r\n useEffect(() => {\r\n // Refresh the list of \"groups\"\r\n dataProvider\r\n .getList('groups', {\r\n pagination: { page: 1, perPage: -1 },\r\n sort: { field: 'name', order: 'ASC' },\r\n filter: { adminGroup: false, status: 'ACTIVE' }\r\n })\r\n .catch(notifyServerError);\r\n }, [dataProvider, notifyServerError]);\r\n\r\n const refreshList = useCallback(() => {\r\n // Refresh the list\r\n dataProvider\r\n .getList('userauthorizations', {\r\n pagination: { page: 1, perPage: -1 },\r\n sort: {},\r\n filter: { userId: props.id }\r\n })\r\n .catch(notifyServerError);\r\n }, [dataProvider, props.id, notifyServerError]);\r\n\r\n const handleAddAuthorization = useCallback(\r\n newValues => setNewAuthorizations(newAuths => newAuths.concat(newValues)),\r\n []\r\n );\r\n\r\n const onGroupsFilterChange = useCallback(\r\n event => setGroupsFilter(event.target.value),\r\n []\r\n );\r\n\r\n const finalGroups = useMemo(() => {\r\n const groupsArray = Object.values(groups);\r\n const filteredGroups = groupsArray.filter(item => {\r\n return item.status === 'ACTIVE' && !item.adminGroup;\r\n });\r\n return orderBy(filteredGroups, item => item.name.toLowerCase(), ['ASC']);\r\n }, [groups]);\r\n\r\n const finalFunds = useMemo(() => {\r\n return Object.values(funds);\r\n }, [funds]);\r\n\r\n const usedIds = useMemo(() => {\r\n const ids = {};\r\n Object.values(authorizations).forEach(auth => updateUsedIds(ids, auth));\r\n newAuthorizations.forEach(auth => updateUsedIds(ids, auth));\r\n return ids;\r\n }, [authorizations, newAuthorizations]);\r\n\r\n const actionsToolbarProps = {\r\n userType,\r\n groupsFilter,\r\n onGroupsFilterChange,\r\n handleAddAuthorization,\r\n hasWriteAuthorizationPermission,\r\n usedIds,\r\n isRegular,\r\n id: rest.id,\r\n authorizations\r\n };\r\n\r\n return (\r\n }\r\n empty={}\r\n >\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n groups: get(state, 'admin.resources.groups.data', {}),\r\n funds: get(state, 'admin.resources.funds.data', {})\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n crudGetList\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(UserAuthorizationTab);\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * UserRoles API\r\n */\r\nclass UserRolesApi extends ApiBase {\r\n /**\r\n * create user/role links\r\n * @param {*} userRoles List of user/roles\r\n */\r\n async create(userRoles) {\r\n const request = {\r\n url: `${this.API_URL}/roles/userroles`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(userRoles)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async delete(userRoles) {\r\n const request = {\r\n url: `${this.API_URL}/roles/userroles`,\r\n headers: this.getHeaders(),\r\n method: 'DELETE',\r\n data: JSON.stringify(userRoles)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new UserRolesApi();\r\n","import React from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport GridInput from './GridInput';\r\n\r\n/**\r\n * Component to display the GridInput without somes choices\r\n * Filters the list of choices with a function\r\n */\r\nclass GridInputFilter extends React.Component {\r\n render() {\r\n const { choices, filter, ...rest } = this.props;\r\n\r\n // Filters choices with a function\r\n const filteredChoices = filter(choices);\r\n\r\n return ;\r\n }\r\n}\r\n\r\nGridInputFilter.propTypes = {\r\n /**\r\n * Function to filter\r\n */\r\n filter: PropTypes.func.isRequired,\r\n /**\r\n * All choices available\r\n */\r\n choices: PropTypes.arrayOf(PropTypes.object)\r\n};\r\n\r\nexport default GridInputFilter;\r\n","import { createContext } from 'react';\r\n\r\nexport const CreationContactContext = createContext(null);\r\n","import { Grid, withStyles } from '@material-ui/core/';\r\nimport Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport _, { find } from 'lodash';\r\nimport React, { useContext, useRef, useState } from 'react';\r\nimport {\r\n fetchEnd,\r\n fetchStart,\r\n Query,\r\n ReferenceArrayInput,\r\n refreshView,\r\n SaveButton,\r\n useNotify\r\n} from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { connect } from 'react-redux';\r\n\r\nimport UserRolesApi from '../../../core/apis/UserRolesApi';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport SimpleFormWithSave from '../../../core/components/form/SimpleFormWithSave';\r\nimport GridInputFilter from '../../../core/components/inputs/GridInputFilter';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { CreationContactContext } from '../creationsteps/CreationContactContext';\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nconst validateRoles = (value, _allValues, _props, _field) => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Role must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst AddRolesDialog = props => {\r\n const {\r\n creation,\r\n onSubmitEnd,\r\n setAccessRoles,\r\n accessRoles,\r\n setSelectedAccessRoles\r\n } = props;\r\n const [submitting, setSubmitting] = useState(false);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const context = useContext(CreationContactContext);\r\n let formProps = {};\r\n const rolesToDelete = useRef([]);\r\n const formRef = useRef();\r\n\r\n const handleAddClick = event => {\r\n formProps.form.submit(event);\r\n };\r\n\r\n const handleClose = () => {\r\n const { onClose } = props;\r\n if (submitting) return;\r\n formProps.form.reset();\r\n onClose();\r\n };\r\n\r\n const handleSubmit = values => {\r\n const { fetchStart, fetchEnd, onClose, userId, refreshView } = props;\r\n\r\n // Userroles to create\r\n const userRoles = values.roles.map(role => ({\r\n userId: userId,\r\n roleId: role\r\n }));\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n setSubmitting(true);\r\n\r\n // Call API to delete roles unchecked (only if we are creating a user).\r\n if (creation) {\r\n if (rolesToDelete.current.length > 0) {\r\n UserRolesApi.delete(\r\n rolesToDelete.current.map(role => ({\r\n userId: userId,\r\n roleId: role\r\n }))\r\n )\r\n .then(() => formProps.form.reset())\r\n .catch(({ response }) => {\r\n notifyServerError(response, undefined);\r\n formProps.form.reset();\r\n });\r\n }\r\n }\r\n\r\n // Call API to create user/roles links\r\n UserRolesApi.create(userRoles)\r\n .then(res => {\r\n if (!creation) {\r\n setSubmitting(false);\r\n onClose();\r\n refreshView();\r\n notify('ra.notification.added', {\r\n messageArgs: { smart_count: userRoles.length }\r\n });\r\n formProps.form.reset();\r\n }\r\n // Dispatch an action letting react-admin know a API call has ended\r\n if (creation) {\r\n setAccessRoles({ roles: res.map(item => item.roleId) });\r\n onSubmitEnd();\r\n }\r\n fetchEnd();\r\n })\r\n .catch(({ response }) => {\r\n if (!creation) {\r\n onClose();\r\n }\r\n notifyServerError(response);\r\n formProps.form.reset();\r\n fetchEnd();\r\n });\r\n };\r\n\r\n const { open, userId } = props;\r\n\r\n if (!creation) {\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n Add Access Role\r\n \r\n \r\n \r\n \r\n {props => {\r\n formProps = props;\r\n return (\r\n \r\n {({ data, total, loading, error }) => {\r\n if (!loading && !error) {\r\n const filter = choices => {\r\n return choices.filter(\r\n item =>\r\n find(data, ['roleId', item.id]) === undefined\r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n }}\r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n \r\n }\r\n id=\"add\"\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n {props => {\r\n formProps = props;\r\n formRef.current = props.form;\r\n setTimeout(() => {\r\n setSelectedAccessRoles(props.values);\r\n }, 1);\r\n // In order to know what role(s) has to be deleted, we look at the difference between what the user already has and what has been checked.\r\n rolesToDelete.current = _.differenceWith(\r\n accessRoles.roles,\r\n formProps.values.roles,\r\n !_.isEqual\r\n );\r\n\r\n if (context.contactContext.currentForm === undefined) {\r\n context.setContactContext({\r\n ...context.contactContext,\r\n currentForm: formProps.form\r\n });\r\n }\r\n return (\r\n \r\n {({ _data, _total, loading, error }) => {\r\n if (!loading && !error) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else {\r\n return null;\r\n }\r\n }}\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n refreshView\r\n};\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(AddRolesDialog));\r\n","import { withStyles } from '@material-ui/core/styles';\r\nimport React, { useState, useMemo } from 'react';\r\nimport {\r\n Button,\r\n Datagrid,\r\n TextField,\r\n TopToolbar,\r\n linkToRecord,\r\n ReferenceField,\r\n List\r\n} from 'react-admin';\r\nimport BulkActionDeleteButton from '../../../core/components/BulkActionDeleteButton';\r\nimport Empty from '../../../core/components/list/Empty';\r\nimport AddRolesDialog from './AddRolesDialog';\r\n\r\nconst UserRolesActionStyles = {\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginLeft: '10px'\r\n }\r\n};\r\n\r\nconst UserRolesAction = withStyles(\r\n UserRolesActionStyles\r\n)(({ classes, hasWriteUserRolePermission, ...props }) => (\r\n \r\n {hasWriteUserRolePermission && (\r\n \r\n )}\r\n \r\n));\r\n\r\nconst FeatureAccessControlTab = props => {\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleDialogClose = () => setOpen(false);\r\n const handleDialogToggle = () => setOpen(!open);\r\n\r\n const { classes, permissions } = props;\r\n const userId = props.id;\r\n\r\n const { hasWriteUserRolePermission, hasReadRolePermission } = useMemo(() => {\r\n return {\r\n hasWriteUserRolePermission: permissions.includes('AUTH_WRITE_USER_ROLE'),\r\n hasReadRolePermission: permissions.includes('AUTH_READ_ROLE_NA')\r\n };\r\n }, [permissions]);\r\n\r\n return (\r\n <>\r\n setOpen(!open)}\r\n hasWriteUserRolePermission={hasWriteUserRolePermission}\r\n />\r\n }\r\n bulkActionButtons={\r\n hasWriteUserRolePermission && (\r\n \r\n )\r\n }\r\n empty={\r\n \r\n }\r\n >\r\n \r\n `${linkToRecord(`/roles`, record.roleId)}`\r\n : false\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FeatureAccessControlTab;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * FundInvestor API\r\n */\r\nclass UserNotificationApi extends ApiBase {\r\n /**\r\n * update usernotifications\r\n * @param {*} usernotifications\r\n * @param userId\r\n */\r\n async update(usernotifications, userId) {\r\n const request = {\r\n url: `${this.API_URL}/usernotifications/?userId=${userId}`,\r\n headers: this.getHeaders(),\r\n method: 'PUT',\r\n data: JSON.stringify(usernotifications)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new UserNotificationApi();\r\n","const deliveryMethod = [\r\n { id: 'EMAIL', name: 'EMAIL' },\r\n { id: 'MAIL', name: 'MAIL' }\r\n];\r\n\r\nconst deliveryMethodToDisplay = [\r\n { id: 'FAX', name: 'FAX' },\r\n { id: 'FEDEX', name: 'FEDEX' }\r\n];\r\n\r\nexport default { deliveryMethod, deliveryMethodToDisplay };\r\n","import React from 'react';\r\nimport { SelectInput, Create, required, FormDataConsumer } from 'react-admin';\r\nimport { FormSpy, useForm } from 'react-final-form';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport isEqual from 'lodash/isEqual';\r\n\r\nimport SimpleFormWithSave from '../../../core/components/form/SimpleFormWithSave';\r\nimport UserNotificationLookups from './UserNotificationLookups';\r\nimport { CircularProgress } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles({\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nconst selectRequired = [required()];\r\n\r\nconst UserNotificationFormFields = ({\r\n fundsChoices,\r\n documentTypes,\r\n allInvestors,\r\n fundInvestors,\r\n userAddressesTypesAvailable,\r\n loading\r\n}) => {\r\n const classes = useStyles();\r\n const form = useForm();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {({ formData }) => {\r\n let choices = allInvestors;\r\n if (formData.fundId !== '*') {\r\n choices = fundInvestors[formData.fundId] || [];\r\n }\r\n\r\n const currentValue = formData.investorId;\r\n if (!choices.find(item => item.id === currentValue)) {\r\n form.change('investorId', '*');\r\n }\r\n\r\n return (\r\n formData && (\r\n \r\n )\r\n );\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {({ formData }) => {\r\n let parameterChoices = [];\r\n if (formData.deliveryMethod === 'MAIL') {\r\n parameterChoices = userAddressesTypesAvailable;\r\n }\r\n\r\n return (\r\n formData.deliveryMethod &&\r\n formData.deliveryMethod !== 'EMAIL' && (\r\n \r\n )\r\n );\r\n }}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst UserNotificationForm = ({\r\n handleSubmit,\r\n notificationFormRef,\r\n setNotificationFormValues,\r\n notificationFormValues,\r\n operation,\r\n showDialog,\r\n handleDialogToggle,\r\n crudGetManyReference,\r\n fetchEnd,\r\n fetchStart,\r\n crudGetList,\r\n loaded,\r\n currentSort,\r\n setSort,\r\n popupTitle,\r\n okButtonLabel,\r\n investors,\r\n fundsChoices,\r\n documentTypes,\r\n fundInvestors,\r\n allInvestors,\r\n userphonetypes,\r\n userAddressesTypesAvailable,\r\n loading,\r\n ...operationProps\r\n}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n <>\r\n \r\n {loading && }\r\n \r\n {({ form, values }) => {\r\n notificationFormRef.current = form;\r\n if (!isEqual(notificationFormValues, values)) {\r\n setTimeout(() => setNotificationFormValues(values));\r\n }\r\n return null;\r\n }}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default UserNotificationForm;\r\n","export const buildId = item =>\r\n item &&\r\n `${item.fundId}:${item.investorId}:${item.documentTypeId}:${\r\n item.deliveryMethod\r\n }:${item.parameter || ''}`;\r\n","import React, { useCallback, useState, useMemo, useRef } from 'react';\r\nimport { SaveButton, useNotify, useRefresh } from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { omit } from 'lodash';\r\n\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport UserNotificationApi from '../../../core/apis/UserNotificationApi';\r\nimport UserNotificationForm from './UserNotificationForm';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { buildId } from './UserNotificationCommon';\r\n\r\nconst useStyles = makeStyles({\r\n errorAlreadyExists: {\r\n marginTop: 0\r\n }\r\n});\r\n\r\nconst UserNotificationCreate = props => {\r\n const {\r\n operation,\r\n showDialog,\r\n popupTitle,\r\n okButtonLabel,\r\n handleDialogToggle,\r\n notifications = [],\r\n id: userId\r\n } = props;\r\n\r\n const notificationForm = useRef();\r\n const [notificationFormValues, setNotificationFormValues] = useState();\r\n const [isCreating, setIsCreating] = useState(false);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const refresh = useRefresh();\r\n const classes = useStyles();\r\n\r\n const handleSaveClick = useCallback(event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n notificationForm.current && notificationForm.current.submit(event);\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n handleDialogToggle();\r\n }, [handleDialogToggle]);\r\n\r\n const handleSubmit = useCallback(\r\n value => {\r\n const notificationArray = notifications.map(notification =>\r\n omit(notification, ['selected', 'id'])\r\n );\r\n\r\n if (value.deliveryMethod === 'EMAIL') {\r\n notificationArray.push({ ...value, parameter: '' });\r\n } else {\r\n notificationArray.push({ ...value });\r\n }\r\n\r\n setIsCreating(true);\r\n\r\n UserNotificationApi.update(notificationArray, userId)\r\n .then(() => {\r\n notify('ra.notification.created');\r\n setIsCreating(false);\r\n handleDialogToggle();\r\n refresh();\r\n })\r\n .catch(e => {\r\n setIsCreating(false);\r\n notifyServerError(e);\r\n });\r\n },\r\n [\r\n handleDialogToggle,\r\n notifications,\r\n notify,\r\n refresh,\r\n userId,\r\n notifyServerError\r\n ]\r\n );\r\n\r\n const alreadyExists = useMemo(() => {\r\n if (!notificationFormValues) return false;\r\n\r\n const id = buildId(notificationFormValues);\r\n return notifications.some(item => item.id === id);\r\n }, [notifications, notificationFormValues]);\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n {popupTitle}\r\n \r\n \r\n \r\n \r\n {alreadyExists && (\r\n \r\n Notification preference already defined\r\n \r\n )}\r\n \r\n \r\n \r\n }\r\n redirect={false}\r\n disabled={alreadyExists}\r\n id=\"create\"\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default UserNotificationCreate;\r\n","import { createContext } from 'react';\r\n\r\nexport const UserNotificationContext = createContext(null);\r\n","// in src/users.js\r\nimport React, { useCallback, useContext, useMemo } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { LinearProgress } from '@material-ui/core';\r\nimport { SelectInput, Datagrid, FormDataConsumer, required } from 'react-admin';\r\nimport { useFormState, useForm } from 'react-final-form';\r\nimport omit from 'lodash/omit';\r\n\r\nimport UserNotificationLookups from './UserNotificationLookups';\r\nimport { UserNotificationContext } from './UserNotificationContext';\r\nimport { buildId } from './UserNotificationCommon';\r\n\r\nconst useSelectFieldStyles = makeStyles({\r\n selectContainer: {\r\n margin: 0,\r\n '& > *:only-child': {\r\n border: 'none'\r\n }\r\n },\r\n progress: {\r\n marginLeft: 5,\r\n marginRight: 5\r\n }\r\n});\r\n\r\nconst SelectField = props => {\r\n const {\r\n record,\r\n source,\r\n choices,\r\n disableWhen,\r\n formData,\r\n listIsLoading,\r\n cellClassName,\r\n dataLoading,\r\n ...rest\r\n } = props;\r\n const formState = useFormState();\r\n const form = useForm();\r\n const classes = useSelectFieldStyles();\r\n const { notificationContext } = useContext(UserNotificationContext);\r\n\r\n const choicesOverride = useMemo(() => {\r\n if (\r\n source === 'deliveryMethod' &&\r\n record.deliveryMethod !== 'EMAIL' &&\r\n record.deliveryMethod !== 'MAIL'\r\n ) {\r\n return UserNotificationLookups.deliveryMethodToDisplay;\r\n }\r\n return choices;\r\n }, [record, source, choices]);\r\n\r\n const handleChange = useCallback(\r\n evt => {\r\n form.change(evt.target.name, evt.target.value);\r\n },\r\n [form]\r\n );\r\n\r\n if (disableWhen && disableWhen(record, formState.values)) return null;\r\n\r\n if (dataLoading || listIsLoading || notificationContext.saving) {\r\n return ;\r\n }\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst useStyles = makeStyles({\r\n cell: {\r\n padding: '0 !important'\r\n },\r\n row: {\r\n backgroundColor: 'white !important'\r\n }\r\n});\r\n\r\nconst unicity = () => (value, allValues, props) => {\r\n const ids = {};\r\n for (const val of Object.values(allValues)) {\r\n const id = buildId(val);\r\n if (ids[id] && props.name && props.name.startsWith(id + '.')) {\r\n return 'duplicate Notification.';\r\n }\r\n ids[id] = true;\r\n }\r\n return undefined;\r\n};\r\n\r\nconst validateUnicity = [unicity()];\r\n\r\nconst sort = { field: 'id', order: 'ASC' };\r\n\r\nconst UserNotificationDatagrid = props => {\r\n const {\r\n notifications = [],\r\n documentTypes,\r\n userAddressTypesAvailable,\r\n userAddressTypes,\r\n fundChoices,\r\n investorChoices,\r\n data,\r\n fundInvestors,\r\n fundsLoading,\r\n investorsLoading,\r\n fundInvestorsLoading,\r\n userId,\r\n loading,\r\n ...rest\r\n } = props;\r\n const classes = useStyles(props);\r\n\r\n const handleDisableParameter = useCallback((record, formState) => {\r\n const newRecord = formState[record.id] || {};\r\n return newRecord.deliveryMethod !== 'MAIL';\r\n }, []);\r\n\r\n const notIds = useMemo(() => notifications.map(({ id }) => id), [\r\n notifications\r\n ]);\r\n\r\n return (\r\n \r\n \r\n \r\n {formState => {\r\n const { record, formData } = formState;\r\n const currentRecord = Object.values(formData).find(\r\n item => item.id === record.id\r\n );\r\n let choices = investorChoices;\r\n if (currentRecord && currentRecord.fundId !== '*') {\r\n choices = fundInvestors[currentRecord.fundId] || [];\r\n }\r\n\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n {formState => {\r\n const { record } = formState;\r\n const disabled =\r\n record.deliveryMethod !== 'EMAIL' &&\r\n record.deliveryMethod !== 'MAIL';\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n {formState => {\r\n const { record, formData } = formState;\r\n const currentRecord = Object.values(formData).find(\r\n item => item.id === record.id\r\n );\r\n let choices = [];\r\n if (currentRecord) {\r\n if (currentRecord.deliveryMethod === 'MAIL') {\r\n let uatFound = false;\r\n choices = userAddressTypesAvailable.map(item => {\r\n if (currentRecord.parameter === item.id.toString()) {\r\n uatFound = true;\r\n }\r\n return {\r\n id: item.id,\r\n name: item.name\r\n };\r\n });\r\n if (currentRecord.parameter && !uatFound) {\r\n const uat = userAddressTypes.find(\r\n item => item.id.toString() === currentRecord.parameter\r\n );\r\n if (uat) {\r\n choices.push(uat);\r\n }\r\n }\r\n } else if (currentRecord.parameter) {\r\n currentRecord.parameter = '';\r\n }\r\n }\r\n\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default UserNotificationDatagrid;\r\n","import { useEffect, useMemo, useState } from 'react';\r\nimport { useQueryWithStore, useDataProvider } from 'react-admin';\r\n\r\nconst limitToCall = 50;\r\n\r\nconst useUserNotificationsDataProvider = props => {\r\n const dataProvider = useDataProvider();\r\n const [fundsData, setFundsData] = useState({ data: [] });\r\n const [investorsData, setInvestorsData] = useState({ data: [] });\r\n const [fundInvestorsData, setFundInvestorsData] = useState({ data: [] });\r\n\r\n const [fundIdsIn, investorIdsIn] = useMemo(() => {\r\n const _fundIds = {};\r\n const _investorIds = {};\r\n props.notifications &&\r\n Object.values(props.notifications).forEach(notif => {\r\n if (notif.fundId && notif.fundId !== '*') {\r\n _fundIds[notif.fundId] = true;\r\n }\r\n if (notif.investorId && notif.investorId !== '*') {\r\n _investorIds[notif.investorId] = true;\r\n }\r\n });\r\n return [Object.keys(_fundIds), Object.keys(_investorIds)];\r\n }, [props.notifications]);\r\n\r\n const { data: authorizations = [] } = useQueryWithStore({\r\n type: 'GET_LIST',\r\n resource: 'userauthorizations',\r\n payload: {\r\n filter: { userId: props.id }\r\n }\r\n });\r\n\r\n const {\r\n fundIds,\r\n investorIds,\r\n fundsWithAllInvestorsAuthorization\r\n } = useMemo(() => {\r\n const _fundIds = {};\r\n const _investorIds = {};\r\n const _fundsWithAllInvestorsAuthorization = {};\r\n authorizations.forEach(authorization => {\r\n _fundIds[authorization.fundId] = true;\r\n _investorIds[authorization.investorId] = true;\r\n authorization.investorId === '*' &&\r\n (_fundsWithAllInvestorsAuthorization[authorization.fundId] = true);\r\n });\r\n return {\r\n fundIds: Object.keys(_fundIds),\r\n investorIds: Object.keys(_investorIds),\r\n fundsWithAllInvestorsAuthorization: _fundsWithAllInvestorsAuthorization\r\n };\r\n }, [authorizations]);\r\n\r\n useEffect(() => {\r\n if (fundIdsIn.length) {\r\n setFundsData(data => ({ ...data, loading: true }));\r\n dataProvider\r\n .getList('funds', {\r\n filter: { id: `[${fundIdsIn}]` }\r\n })\r\n .then(data => {\r\n setFundsData(data);\r\n });\r\n }\r\n }, [fundIdsIn, dataProvider]);\r\n\r\n useEffect(() => {\r\n if (investorIdsIn.length) {\r\n setInvestorsData(data => ({ ...data, loading: true }));\r\n dataProvider\r\n .getList('investors', {\r\n filter: { id: `[${investorIdsIn}]` }\r\n })\r\n .then(data => {\r\n setInvestorsData(data);\r\n });\r\n }\r\n }, [investorIdsIn, dataProvider]);\r\n\r\n useEffect(() => {\r\n if (fundIds.length) {\r\n setFundInvestorsData(data => ({ ...data, loading: true }));\r\n const payload = {};\r\n if (fundIds.length <= limitToCall) {\r\n payload.filter = { fundId: `[${fundIds}]` };\r\n }\r\n\r\n dataProvider.getList('fundinvestors', payload).then(data => {\r\n const {\r\n loading: isLoadingFundsInvestors,\r\n data: _fundsInvestors = [],\r\n error: errorFundsInvestors\r\n } = data;\r\n let fundInvestors = [];\r\n if (\r\n !isLoadingFundsInvestors &&\r\n !errorFundsInvestors &&\r\n _fundsInvestors.length\r\n ) {\r\n if (fundIds.length > limitToCall) {\r\n fundInvestors = _fundsInvestors.filter(\r\n item =>\r\n fundIds.includes(item.fundId) &&\r\n (investorIds.includes(item.investorId) ||\r\n fundsWithAllInvestorsAuthorization[item.fundId])\r\n );\r\n } else {\r\n fundInvestors = _fundsInvestors.filter(\r\n item =>\r\n investorIds.includes(item.investorId) ||\r\n fundsWithAllInvestorsAuthorization[item.fundId]\r\n );\r\n }\r\n }\r\n data.data = fundInvestors;\r\n setFundInvestorsData(data);\r\n });\r\n }\r\n }, [fundIds, dataProvider, investorIds, fundsWithAllInvestorsAuthorization]);\r\n\r\n return {\r\n fundInvestors: fundInvestorsData,\r\n funds: fundsData,\r\n investors: investorsData\r\n };\r\n};\r\n\r\nexport default useUserNotificationsDataProvider;\r\n","import React, {\r\n useState,\r\n useCallback,\r\n useMemo,\r\n useRef,\r\n useEffect\r\n} from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { Grid, Typography } from '@material-ui/core';\r\nimport { alpha } from '@material-ui/core/styles';\r\nimport ActionDelete from '@material-ui/icons/Delete';\r\nimport inflection from 'inflection';\r\nimport {\r\n Button,\r\n TopToolbar,\r\n useTranslate,\r\n useNotify,\r\n List,\r\n useRefresh,\r\n useQueryWithStore,\r\n useUnselectAll,\r\n RecordContextProvider\r\n} from 'react-admin';\r\nimport omit from 'lodash/omit';\r\nimport pick from 'lodash/pick';\r\nimport isEqual from 'lodash/isEqual';\r\n\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\nimport UserNotificationApi from '../../../core/apis/UserNotificationApi';\r\nimport UserNotificationCreate from './UserNotificationCreate';\r\nimport UserNotificationDatagrid from './UserNotificationDatagrid';\r\nimport useUserNotificationsDataProvider from './UserNotificationDataProvider';\r\nimport { UserNotificationContext } from './UserNotificationContext';\r\nimport EditToolbar from '../../../core/components/edit/EditToolbar';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst useStyles = makeStyles({\r\n listContainer: {\r\n margin: 0,\r\n marginTop: -25\r\n }\r\n});\r\n\r\nconst useCustomFormStyles = makeStyles({\r\n customForm: {\r\n '& > *:first-child': {\r\n padding: 0\r\n }\r\n },\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nconst CustomForm = props => {\r\n const {\r\n data = [],\r\n customRef,\r\n hasBulkActions,\r\n currentsort,\r\n defaultTitle,\r\n displayedFilters,\r\n filtervalues,\r\n hasCreate,\r\n hideFilter,\r\n onToggleItem,\r\n onUnselectItems,\r\n perPage,\r\n selectedIds,\r\n setFilters,\r\n setPage,\r\n setPerPage,\r\n setSort,\r\n showFilter,\r\n totalPages,\r\n filterValues,\r\n setContext,\r\n context,\r\n hasWriteUserNotificationPermission,\r\n refetch,\r\n ...rest\r\n } = props;\r\n const classes = useCustomFormStyles();\r\n\r\n const currentData = pick(data, props.ids);\r\n\r\n return (\r\n \r\n }\r\n >\r\n <>\r\n {/** to prevent div from receiving injected props from parent: basePath */}\r\n
    \r\n {React.cloneElement(props.children, {\r\n ...omit(props, ['children', 'setContext', 'customRef', 'save']),\r\n notifications: Object.values(currentData)\r\n })}\r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nconst useBulkActionsToolbarButtonStyles = makeStyles(theme => ({\r\n deleteButton: {\r\n color: theme.palette.error.main,\r\n '&:hover': {\r\n backgroundColor: alpha(theme.palette.error.main, 0.12),\r\n // Reset on mouse devices\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent'\r\n }\r\n }\r\n }\r\n}));\r\n\r\nconst BulkActionsToolbarButtons = props => {\r\n const { resource, userId, selectedIds, context } = props;\r\n const classes = useBulkActionsToolbarButtonStyles();\r\n const translate = useTranslate();\r\n const refresh = useRefresh();\r\n const unselectAll = useUnselectAll();\r\n const [openConfirmDelete, setOpenConfirmDelete] = useState(false);\r\n const [isDeleting, setIsDeleting] = useState(false);\r\n const { data, ids } = context;\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const currentData = pick(data, ids);\r\n\r\n const handleDelete = useCallback(async () => {\r\n try {\r\n setIsDeleting(true);\r\n const dataToKeep = Object.values(currentData)\r\n .filter(item => !selectedIds.includes(item.id))\r\n .map(item => omit(item, 'id'));\r\n await UserNotificationApi.update(dataToKeep, userId);\r\n\r\n setIsDeleting(false);\r\n setOpenConfirmDelete(false);\r\n unselectAll('usernotifications');\r\n refresh();\r\n } catch (error) {\r\n setIsDeleting(false);\r\n setOpenConfirmDelete(false);\r\n notifyServerError(error);\r\n }\r\n }, [\r\n selectedIds,\r\n userId,\r\n unselectAll,\r\n refresh,\r\n currentData,\r\n notifyServerError\r\n ]);\r\n\r\n return (\r\n <>\r\n setOpenConfirmDelete(true)}\r\n label=\"ra.action.delete\"\r\n >\r\n \r\n \r\n setOpenConfirmDelete(false)}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst useActionsToolbarStyles = makeStyles({\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n alignSelf: 'center'\r\n }\r\n});\r\n\r\nconst ActionsToolbar = props => {\r\n const {\r\n dialogProps,\r\n data = {},\r\n ids,\r\n hasWriteUserNotificationPermission,\r\n disabled\r\n } = props;\r\n const classes = useActionsToolbarStyles();\r\n const [\r\n openNotificationCreateDialog,\r\n setOpenNotificationCreateDialog\r\n ] = useState(false);\r\n\r\n const handleNotificationCreateDialogToggle = useCallback(open => {\r\n setOpenNotificationCreateDialog(open);\r\n }, []);\r\n\r\n const currentData = pick(data, ids);\r\n\r\n return (\r\n \r\n Notifications\r\n \r\n {hasWriteUserNotificationPermission && (\r\n {\r\n setOpenNotificationCreateDialog(true);\r\n }}\r\n label=\"Add Notification\"\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n disableFocusRipple\r\n className={classes.addButton}\r\n disabled={disabled}\r\n id=\"add-notification\"\r\n />\r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst useEmptyStyles = makeStyles({\r\n emptyText: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n display: 'inline-block',\r\n fontFamily: '\"Segoe UI\",Arial,sans-serif'\r\n }\r\n});\r\n\r\nconst Empty = props => {\r\n const classes = useEmptyStyles();\r\n return (\r\n
    \r\n \r\n
    \r\n There are no Notifications to be displayed\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst CustomProvider = customProps => {\r\n const {\r\n data,\r\n ids,\r\n context,\r\n setContext,\r\n providerNotificationContext\r\n } = customProps;\r\n useEffect(() => {\r\n if (!isEqual(context.data, data)) {\r\n setContext({ ...context, data });\r\n }\r\n if (!isEqual(context.ids, ids)) {\r\n setContext({ ...context, ids });\r\n }\r\n }, [data, ids, context, setContext]);\r\n\r\n return (\r\n \r\n {React.cloneElement(customProps.children, {\r\n ...omit(customProps, ['children', 'providerNotificationContext'])\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst UserNotificationTab = props => {\r\n const {\r\n documentTypes,\r\n userphonetypes,\r\n useraddresstypes,\r\n id: userId,\r\n permissions\r\n } = props;\r\n\r\n const classes = useStyles();\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const refresh = useRefresh();\r\n const formProps = useRef(null);\r\n\r\n // need to refresh the useraddress list because if we get it through useSelector it's not fresh\r\n const { data: allAddresses = [] } = useQueryWithStore({\r\n type: 'getList',\r\n resource: 'useraddresses',\r\n payload: {\r\n filter: {\r\n userId: userId\r\n }\r\n }\r\n });\r\n\r\n const [notificationContext, setNotificationContext] = useState({\r\n saving: false\r\n });\r\n\r\n const userAddressTypesAll = useMemo(() => Object.values(useraddresstypes), [\r\n useraddresstypes\r\n ]);\r\n\r\n const userAddressTypesAvailable = useMemo(() => {\r\n const addressesTypesIds = {};\r\n allAddresses.forEach(\r\n address => (addressesTypesIds[address.addressTypeId] = true)\r\n );\r\n return userAddressTypesAll.filter(types => addressesTypesIds[types.id]);\r\n }, [allAddresses, userAddressTypesAll]);\r\n\r\n const docTypeChoices = useMemo(() => Object.values(documentTypes), [\r\n documentTypes\r\n ]);\r\n\r\n const providerNotificationContext = useMemo(\r\n () => ({ notificationContext, setNotificationContext }),\r\n [notificationContext, setNotificationContext]\r\n );\r\n\r\n const { fundInvestors, funds, investors } = useUserNotificationsDataProvider({\r\n id: userId,\r\n notifications: notificationContext.data\r\n });\r\n\r\n const [fundChoices, investorChoices, fundInvestorsMap] = useMemo(() => {\r\n if (fundInvestors.data.length) {\r\n const _funds = {};\r\n const _investors = {};\r\n const _fundInvestorsMap = {};\r\n fundInvestors.data.forEach(item => {\r\n _funds[item.fundId] = {\r\n id: item.fundId,\r\n name: item.fundName\r\n };\r\n const _investor = {\r\n id: item.investorId,\r\n name: item.investorName\r\n };\r\n _investors[item.investorId] = _investor;\r\n if (!_fundInvestorsMap[item.fundId]) {\r\n _fundInvestorsMap[item.fundId] = {};\r\n }\r\n _fundInvestorsMap[item.fundId][item.investorId] = _investor;\r\n });\r\n for (let fundId in _fundInvestorsMap) {\r\n _fundInvestorsMap[fundId] = Object.values(_fundInvestorsMap[fundId]);\r\n }\r\n return [\r\n Object.values(_funds),\r\n Object.values(_investors),\r\n _fundInvestorsMap\r\n ];\r\n } else {\r\n return [funds.data, investors.data, {}];\r\n }\r\n }, [fundInvestors.data, funds.data, investors.data]);\r\n\r\n const hasWriteUserNotificationPermission = useMemo(() => {\r\n return permissions.includes('AUTH_WRITE_USER_NOTIFICATIONS');\r\n }, [permissions]);\r\n\r\n const handleSave = useCallback(\r\n async newData => {\r\n try {\r\n setNotificationContext(context => ({ ...context, saving: true }));\r\n const dataToUpdate = Object.values(newData).map(item =>\r\n omit(item, 'id')\r\n );\r\n await UserNotificationApi.update(dataToUpdate, userId);\r\n notify('ra.notification.custom_updated_message');\r\n setNotificationContext(context => ({ ...context, saving: false }));\r\n refresh();\r\n } catch (error) {\r\n setNotificationContext(context => ({ ...context, saving: false }));\r\n notifyServerError(error);\r\n }\r\n },\r\n [userId, notify, refresh, setNotificationContext, notifyServerError]\r\n );\r\n\r\n const listProps = pick(props, ['hasCreate', 'hasEdit', 'hasList', 'hasShow']);\r\n\r\n const createDialogProps = useMemo(\r\n () => ({\r\n fundsChoices: fundChoices,\r\n fundInvestors: fundInvestorsMap,\r\n allInvestors: investorChoices,\r\n id: userId,\r\n userAddressesTypesAvailable: userAddressTypesAvailable,\r\n documentTypes: docTypeChoices,\r\n loading: fundInvestors.loading\r\n }),\r\n [\r\n fundChoices,\r\n fundInvestorsMap,\r\n investorChoices,\r\n userAddressTypesAvailable,\r\n userId,\r\n docTypeChoices,\r\n fundInvestors.loading\r\n ]\r\n );\r\n\r\n return (\r\n \r\n }\r\n basePath=\"/usernotifications\"\r\n className={classes.listContainer}\r\n exporter={null}\r\n empty={\r\n \r\n }\r\n actions={\r\n \r\n }\r\n bulkActionButtons={\r\n hasWriteUserNotificationPermission && (\r\n \r\n )\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default UserNotificationTab;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\nclass UserActivityApi extends ApiBase {\r\n /**\r\n * add user note activity\r\n * @param {*} note\r\n */\r\n async add(note) {\r\n const request = {\r\n url: `${this.API_URL}/activity/note`,\r\n headers: this.getHeaders(),\r\n method: 'PUT',\r\n data: JSON.stringify(note)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\nexport default new UserActivityApi();\r\n","export default ({\r\n addLabel,\r\n allowEmpty,\r\n basePath,\r\n cellClassName,\r\n className,\r\n formClassName,\r\n headerClassName,\r\n label,\r\n linkType,\r\n locale,\r\n record,\r\n resource,\r\n sortable,\r\n sortBy,\r\n source,\r\n textAlign,\r\n translateChoice,\r\n ...rest\r\n}) => rest;\r\n","import DateFnsUtils from '@date-io/date-fns';\r\nimport { TextFieldProps } from '@material-ui/core/TextField';\r\nimport {\r\n KeyboardTimePicker,\r\n MuiPickersUtilsProvider\r\n} from '@material-ui/pickers';\r\nimport moment from 'moment';\r\nimport PropTypes from 'prop-types';\r\nimport React from 'react';\r\nimport { FieldTitle, InputHelperText, InputProps, useInput } from 'react-admin';\r\n\r\nimport sanitizeRestProps from './sanitizeRestProps';\r\nimport { WrapperVariant } from '@material-ui/pickers/wrappers/Wrapper';\r\n\r\n/**\r\n * Convert Date object to String\r\n *\r\n * @param {Date} value value to convert\r\n * @returns {String} A standardized date (yyyy-MM-dd), to be passed to an \r\n */\r\nconst convertDateToString = (value: Date) => {\r\n if (!(value instanceof Date) || isNaN(value.getDate())) return;\r\n const pad = '00';\r\n const yyyy = value.getFullYear().toString();\r\n const MM = (value.getMonth() + 1).toString();\r\n const dd = value.getDate().toString();\r\n return `${yyyy}-${(pad + MM).slice(-2)}-${(pad + dd).slice(-2)}`;\r\n};\r\n\r\nconst dateRegex = /^\\d{4}-\\d{2}-\\d{2}$/;\r\nconst timeRegex = /^\\d{2}:\\d{2}$/;\r\n\r\nconst getStringFromDate = (value: string | Date) => {\r\n // null, undefined and empty string values should not go through dateFormatter\r\n // otherwise, it returns undefined and will make the input an uncontrolled one.\r\n if (value == null || value === '') {\r\n return '';\r\n }\r\n\r\n if (value instanceof Date) {\r\n return convertDateToString(value);\r\n }\r\n\r\n // valid dates should not be converted\r\n if (dateRegex.test(value)) {\r\n return value;\r\n }\r\n\r\n // if time HH:mm format (ex: 10:20) then convert to Date\r\n if (timeRegex.test(value)) {\r\n const parts = value.split(':');\r\n const date = new Date();\r\n return date.setHours(parseInt(parts[0], 10), parseInt(parts[1], 10));\r\n }\r\n\r\n return convertDateToString(new Date(value));\r\n};\r\n\r\n// return time format HH:mm as value\r\nconst getTimeFromDate = (value: Date) => {\r\n if (value instanceof Date) {\r\n return moment(value).format('HH:mm');\r\n }\r\n return '';\r\n};\r\nexport const TimeInput = (\r\n props: InputProps &\r\n Omit\r\n) => {\r\n const {\r\n format = getStringFromDate,\r\n label,\r\n options,\r\n source,\r\n resource,\r\n helperText,\r\n margin = 'dense',\r\n meta,\r\n onBlur,\r\n onFocus,\r\n onChange,\r\n parse = getTimeFromDate,\r\n validate,\r\n variant = 'inline',\r\n autoOk = false,\r\n disableToolbar = true,\r\n ampm = false,\r\n ...rest\r\n } = props;\r\n\r\n const {\r\n id,\r\n input,\r\n isRequired,\r\n meta: { error, touched }\r\n } = useInput({\r\n format,\r\n onBlur,\r\n onFocus,\r\n onChange,\r\n parse,\r\n resource,\r\n source,\r\n validate,\r\n ...rest\r\n });\r\n\r\n return (\r\n \r\n \r\n }\r\n error={!!(touched && error)}\r\n value={input.value ? input.value : null}\r\n helperText={\r\n error || helperText\r\n ? React.createElement(InputHelperText, {\r\n touched: touched,\r\n error: error,\r\n helperText: helperText\r\n })\r\n : null\r\n }\r\n InputProps={{\r\n autoComplete: 'off'\r\n }}\r\n autoOk={autoOk}\r\n ampm={ampm}\r\n {...sanitizeRestProps(rest as any)}\r\n />\r\n \r\n );\r\n};\r\n\r\nTimeInput.propTypes = {\r\n label: PropTypes.string,\r\n options: PropTypes.object,\r\n resource: PropTypes.string,\r\n source: PropTypes.string\r\n};\r\n\r\nTimeInput.defaultProps = {\r\n options: {}\r\n};\r\n\r\nexport default TimeInput;\r\n","import React from 'react';\r\nimport { Create, required, TextInput } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { Grid, FormLabel, Typography } from '@material-ui/core';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport isEqual from 'lodash/isEqual';\r\nimport pick from 'lodash/pick';\r\nimport SimpleFormWithSave from '../../../core/components/form/SimpleFormWithSave';\r\nimport DateInput from '../../../core/components/forked/input/DateInput';\r\nimport { isValidDate } from '../../../core/utils';\r\nimport TimeInput from '../../../core/components/inputs/TimeInput';\r\nimport RichTextInput from '../../../core/components/inputs/RichTextInput';\r\nimport moment from 'moment';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nconst UserActivityFormFields = props => {\r\n const { operation, record } = props;\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {operation !== 'Create' && (\r\n \r\n \r\n \r\n Created By\r\n \r\n \r\n {record.createdOrUpdatedBy}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst UserActivityForm = props => {\r\n const {\r\n handleSubmit,\r\n setActivityForm,\r\n activityForm,\r\n setActivityFormValues,\r\n activityFormValues,\r\n operation,\r\n classes,\r\n open,\r\n record,\r\n handleClose,\r\n userId,\r\n ...operationProps\r\n } = props;\r\n let editRecord;\r\n if (operation === 'Edit') {\r\n editRecord = {\r\n ...pick(record, ['subject', 'details', 'dateTime', 'activityId', 'time'])\r\n };\r\n if (!editRecord.time) {\r\n const dateTime = record.dateTime;\r\n const hours = moment(dateTime).get('hour');\r\n const minutes = moment(dateTime).get('minute');\r\n editRecord.time =\r\n ('00' + hours.toString()).slice(-2) +\r\n ':' +\r\n ('00' + minutes.toString()).slice(-2);\r\n }\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {({ form, values }) => {\r\n if (!isEqual(activityFormValues, values)) {\r\n setActivityFormValues(values);\r\n }\r\n if (!activityForm && open) {\r\n setActivityForm(form);\r\n }\r\n return null;\r\n }}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(UserActivityForm);\r\n","import React, { useState, useCallback } from 'react';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogContent,\r\n DialogActions,\r\n Grid,\r\n FormLabel\r\n} from '@material-ui/core';\r\nimport {\r\n TextField,\r\n DateField,\r\n RichTextField,\r\n SaveButton,\r\n useNotify,\r\n useRefresh\r\n} from 'react-admin';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport moment from 'moment';\r\n\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport UserActivityApi from '../../../core/apis/UserActivityApi';\r\nimport UserActivityForm from './UserActivityForm';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\n\r\nconst useStyles = makeStyles({\r\n outlined: {\r\n border: '1px solid #E0E0E0',\r\n background: 'white',\r\n 'border-radius': '2px'\r\n },\r\n button: {\r\n color: '#2962FF'\r\n }\r\n});\r\n\r\nconst UserActivityDetailDialog = props => {\r\n const { record, handleClose, open, userId, operation } = props;\r\n const [activityFormValues, setActivityFormValues] = useState();\r\n const [activityForm, setActivityForm] = useState();\r\n const [isCreating, setIsCreating] = useState(false);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const refresh = useRefresh();\r\n const classes = useStyles();\r\n const detailsTitle = record\r\n ? record.activityType === 'EMAIL'\r\n ? 'Email Details'\r\n : record.activityType === 'FILE_ACCESSED'\r\n ? 'File Accessed Details'\r\n : record.activityType === 'NOTE'\r\n ? 'Note Details'\r\n : ''\r\n : 'Add Note';\r\n\r\n const handleSaveClick = useCallback(\r\n event => {\r\n activityForm && activityForm.submit(event); //NOSONAR cwe\r\n },\r\n [activityForm]\r\n );\r\n\r\n const closeDialog = useCallback(() => {\r\n setActivityForm(null);\r\n handleClose();\r\n }, [setActivityForm, handleClose]);\r\n\r\n const handleSubmit = useCallback(\r\n async value => {\r\n try {\r\n setIsCreating(true);\r\n const note = { ...value, userId: userId };\r\n if (note.time) {\r\n const timeParts = note.time.split(':');\r\n note.dateTime = moment(note.dateTime)\r\n .set('hour', timeParts[0])\r\n .set('minute', timeParts[1])\r\n .utc()\r\n .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]');\r\n } else {\r\n note.dateTime = moment(note.dateTime).format(\r\n 'YYYY-MM-DDTHH:mm:ss.SSS[Z]'\r\n );\r\n }\r\n delete note.time;\r\n await UserActivityApi.add(note);\r\n notify('ra.notification.created');\r\n setIsCreating(false);\r\n handleClose();\r\n refresh();\r\n } catch (e) {\r\n setIsCreating(false);\r\n notifyServerError(e);\r\n }\r\n },\r\n [handleClose, notify, refresh, userId, notifyServerError]\r\n );\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n closeDialog();\r\n }}\r\n >\r\n \r\n {detailsTitle}\r\n \r\n \r\n {operation === 'Create' ||\r\n (record && record.activityType === 'NOTE') ? (\r\n \r\n ) : record && record.activityType === 'FILE_ACCESSED' ? (\r\n \r\n \r\n \r\n \r\n Date & Time\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Subject/Document Title\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Batch ID\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Document ID\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Fund ID\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Investor ID\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n Date & Time\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Subject\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Body\r\n \r\n \r\n {\r\n if (e.target.href) {\r\n e.target.target = '_blank';\r\n e.target.rel = 'noreferrer noopener';\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {(operation === 'Create' ||\r\n (record && record.activityType === 'NOTE')) && (\r\n }\r\n redirect={false}\r\n />\r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default UserActivityDetailDialog;\r\n","import React from 'react';\r\n\r\nconst WrapperField = props => {\r\n const { children, ...rest } = props;\r\n return (\r\n \r\n {React.Children.map(children, child =>\r\n React.cloneElement(React.Children.only(child), { ...rest })\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default WrapperField;\r\n","const activityTypes = [\r\n { id: 'LOGIN', name: 'Login' },\r\n { id: 'FILE_ACCESSED', name: 'File Accessed' },\r\n { id: 'EMAIL', name: 'Email' },\r\n { id: 'CALL', name: 'Call' },\r\n { id: 'NOTE', name: 'Note' }\r\n];\r\n\r\nconst documentAccessTypes = [\r\n { id: 'VIEWED', name: 'Viewed' },\r\n { id: 'SAVED', name: 'Saved' },\r\n { id: 'EMAILED', name: 'Emailed' },\r\n { id: 'DOWNLOADED', name: 'Downloaded' },\r\n { id: 'GENERIC', name: 'Generic' }\r\n];\r\nexport { activityTypes, documentAccessTypes };\r\n","import React, { useState, useCallback } from 'react';\r\nimport {\r\n Button,\r\n Datagrid,\r\n TextField,\r\n DateField,\r\n Pagination,\r\n TextInput,\r\n Filter,\r\n SelectInput,\r\n SelectField,\r\n useListContext,\r\n TopToolbar,\r\n List\r\n} from 'react-admin';\r\nimport {\r\n Grid,\r\n Typography,\r\n makeStyles,\r\n CircularProgress\r\n} from '@material-ui/core/';\r\nimport UserActivityDetailDialog from './UserActivityDetailDialog';\r\nimport WrapperField from '../../../core/components/WrapperField';\r\nimport moment from 'moment';\r\nimport DateInput from '../../../core/components/forked/input/DateInput';\r\nimport { activityTypes } from './ActivityLookups';\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingBottom: '8px'\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n },\r\n dateFilterStyle: {\r\n display: 'flex',\r\n marginBottom: '4px'\r\n },\r\n dateInputStyle: { width: '145px', marginRight: '5px' },\r\n dateRangeSeparator: {\r\n marginTop: '25px',\r\n marginRight: '5px',\r\n color: '#757575'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n minHeight: '200px'\r\n },\r\n paddingCheckbox: {\r\n display: 'none'\r\n },\r\n headerCell: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n display: 'none'\r\n }\r\n }\r\n },\r\n tbody: {\r\n '& td:nth-of-type(1)': {\r\n display: 'none'\r\n }\r\n },\r\n listPage: {\r\n margin: '0'\r\n },\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n margin: '8px 0 0 10px'\r\n },\r\n button: {\r\n color: '#2962FF'\r\n }\r\n});\r\n\r\nconst formatUploadDateFilter = (value, type) => {\r\n return value\r\n ? type === 'from'\r\n ? moment(value)\r\n .startOf('day')\r\n .toISOString()\r\n : moment(value)\r\n .endOf('day')\r\n .toISOString()\r\n : null;\r\n};\r\n\r\nconst TabSectionLabel = ({ label }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst SubjectColumn = props => {\r\n const { record } = props;\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst DetailsColumn = props => {\r\n const { record, handleOpen } = props;\r\n const classes = useStyles();\r\n const hasDetails =\r\n record.activityType === 'EMAIL' || record.activityType === 'NOTE';\r\n\r\n if (record.activityType === 'FILE_ACCESSED') {\r\n return (\r\n <>\r\n {'Fund ID: ' +\r\n record.documentActivity.fundId +\r\n ', Investor ID: ' +\r\n record.documentActivity.investorId +\r\n ', Batch ID: ' +\r\n record.documentActivity.batchId +\r\n ', Document ID: ' +\r\n record.documentActivity.reportId}\r\n \r\n );\r\n }\r\n\r\n return hasDetails ? (\r\n handleOpen(record)}\r\n className={classes.button}\r\n label=\"See Details...\"\r\n >\r\n ) : (\r\n \r\n );\r\n};\r\n\r\nconst UserActivityDatagrid = props => {\r\n const { classes, permissions, handleOpen, ...dataGridProps } = props;\r\n const { loading } = useListContext(props);\r\n\r\n return (\r\n <>\r\n {!loading && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {loading && (\r\n
    \r\n \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst setActivityFilters = (value, setFilters, filterValues) => {\r\n if (\r\n (value === 'LOGIN' || value === 'FILE_ACCESSED') &&\r\n filterValues.generalSearchField\r\n ) {\r\n setFilters({\r\n ...filterValues,\r\n activityTypes: value,\r\n generalSearchField: undefined\r\n });\r\n //special case: clear filter if activityTypes filter was LOGIN or FILE_ACCESSED and type specific filter fields were populated\r\n } else if (\r\n (filterValues.activityTypes === 'LOGIN' &&\r\n value !== 'LOGIN' &&\r\n (filterValues.loginIpAddress ||\r\n filterValues.loginBrowser ||\r\n filterValues.loginSystem ||\r\n filterValues.loginSubject)) ||\r\n (filterValues.activityTypes === 'FILE_ACCESSED' &&\r\n value !== 'FILE_ACCESSED' &&\r\n (filterValues.documentReportId ||\r\n filterValues.documentBatchId ||\r\n filterValues.documentTitle ||\r\n filterValues.documentFundId ||\r\n filterValues.documentInvestorId ||\r\n filterValues.documentAccessType))\r\n ) {\r\n setFilters({\r\n ...filterValues,\r\n activityTypes: value,\r\n loginIpAddress: undefined,\r\n loginBrowser: undefined,\r\n loginSystem: undefined,\r\n loginSubject: undefined,\r\n documentReportId: undefined,\r\n documentBatchId: undefined,\r\n documentTitle: undefined,\r\n documentFundId: undefined,\r\n documentInvestorId: undefined,\r\n documentAccessType: undefined\r\n });\r\n }\r\n};\r\n\r\nconst DateRangeFilter = ({ classes }) => (\r\n
    \r\n formatUploadDateFilter(value, 'from')}\r\n />\r\n \r\n -\r\n \r\n formatUploadDateFilter(value, 'to')}\r\n />\r\n
    \r\n);\r\n\r\nconst ActivityFilters = props => {\r\n const classes = useStyles();\r\n const { filterValues, setFilters } = useListContext(props);\r\n\r\n return (\r\n \r\n \r\n setActivityFilters(event.target.value, setFilters, filterValues)\r\n }\r\n />\r\n \r\n {(filterValues.activityTypes === 'EMAIL' ||\r\n filterValues.activityTypes === 'CALL' ||\r\n filterValues.activityTypes === 'NOTE') && (\r\n \r\n )}\r\n {filterValues.activityTypes === 'LOGIN' && (\r\n \r\n )}\r\n {filterValues.activityTypes === 'LOGIN' && (\r\n \r\n )}\r\n {filterValues.activityTypes === 'LOGIN' && (\r\n \r\n )}\r\n {filterValues.activityTypes === 'LOGIN' && (\r\n \r\n )}\r\n {filterValues.activityTypes === 'FILE_ACCESSED' && (\r\n \r\n )}\r\n {filterValues.activityTypes === 'FILE_ACCESSED' && (\r\n \r\n )}\r\n {filterValues.activityTypes === 'FILE_ACCESSED' && (\r\n \r\n )}\r\n {filterValues.activityTypes === 'FILE_ACCESSED' && (\r\n \r\n )}\r\n {filterValues.activityTypes === 'FILE_ACCESSED' && (\r\n \r\n )}\r\n {/* {filterValues.activityTypes === 'FILE_ACCESSED' && (\r\n \r\n )} */}\r\n \r\n );\r\n};\r\n\r\nconst UserActivityAction = props => {\r\n const classes = useStyles();\r\n const { handleActivityAddButtonClick } = props;\r\n return (\r\n \r\n handleActivityAddButtonClick()}\r\n label=\"Add Note\"\r\n className={classes.addButton}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst UserActivityTab = props => {\r\n const { userId, permissions, ...rest } = props;\r\n const classes = useStyles();\r\n const hasAddActivityPermission = permissions.includes(\r\n 'AUTH_CREATE_EDIT_NOTE_USER_ACTIVITY'\r\n );\r\n const [open, setIsOpen] = useState(false);\r\n const [activityDetails, setActivityDetails] = useState(null);\r\n\r\n const handleOpen = useCallback(\r\n record => {\r\n if (record) {\r\n setActivityDetails(record);\r\n } else {\r\n setActivityDetails(null);\r\n }\r\n\r\n setIsOpen(true);\r\n },\r\n [setIsOpen, setActivityDetails]\r\n );\r\n\r\n const handleClose = useCallback(() => {\r\n setIsOpen(false);\r\n setActivityDetails(null);\r\n }, [setIsOpen, setActivityDetails]);\r\n return (\r\n <>\r\n \r\n \r\n }\r\n filter={{\r\n userId: userId\r\n }}\r\n filters={}\r\n sort={{ field: 'dateTime', order: 'DESC' }}\r\n perPage={15}\r\n basePath=\"/activities\"\r\n title=\" \"\r\n actions={\r\n hasAddActivityPermission && (\r\n \r\n )\r\n }\r\n empty={<>}\r\n className={classes.listPage}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default UserActivityTab;\r\n","import React, { FC, ReactElement, ReactNode, useState, useEffect } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport omit from 'lodash/omit';\r\nimport { FormTabHeader } from 'ra-ui-materialui/lib';\r\nimport { FormGroupContextProvider, Record } from 'ra-core';\r\n\r\nconst hiddenStyle = { display: 'none' };\r\n\r\nconst ViewTab: FC = ({\r\n className,\r\n classes = {},\r\n contentClassName,\r\n children,\r\n hidden,\r\n icon,\r\n intent,\r\n label,\r\n margin,\r\n path,\r\n variant,\r\n value,\r\n selected,\r\n ...rest\r\n}) => {\r\n const [tabLoaded, setTabLoaded] = useState(false);\r\n\r\n // mandatory to add the if so it goes only one time inside when we load for the first time.\r\n useEffect(() => {\r\n if (!tabLoaded) {\r\n setTabLoaded(!hidden);\r\n }\r\n }, [hidden, tabLoaded]);\r\n\r\n const renderHeader = () => (\r\n \r\n );\r\n\r\n // By this condition into the renderContent, we can add a lazy loading to not load all of the tabs into the User screen for example.\r\n // So it only call the api where we are currently into the tab.\r\n const renderContent = () => {\r\n if (tabLoaded) {\r\n return (\r\n \r\n \r\n {children}\r\n
    \r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n };\r\n\r\n return intent === 'header' ? renderHeader() : renderContent();\r\n};\r\n\r\nViewTab.propTypes = {\r\n basePath: PropTypes.string,\r\n className: PropTypes.string,\r\n contentClassName: PropTypes.string,\r\n intent: PropTypes.oneOf(['header', 'content']),\r\n hidden: PropTypes.bool,\r\n icon: PropTypes.element,\r\n label: PropTypes.string.isRequired,\r\n margin: PropTypes.oneOf(['none', 'dense', 'normal']),\r\n path: PropTypes.string,\r\n // @ts-ignore\r\n record: PropTypes.object,\r\n resource: PropTypes.string,\r\n value: PropTypes.string,\r\n variant: PropTypes.oneOf(['standard', 'outlined', 'filled'])\r\n};\r\n\r\nexport interface ViewTabProps {\r\n basePath?: string;\r\n className?: string;\r\n classes?: object;\r\n children?: ReactNode;\r\n contentClassName?: string;\r\n hidden?: boolean;\r\n selected?: boolean;\r\n icon?: ReactElement;\r\n intent?: 'header' | 'content';\r\n label: string | ReactElement;\r\n margin?: 'none' | 'normal' | 'dense';\r\n path?: string;\r\n record?: Record;\r\n resource?: string;\r\n syncWithLocation?: boolean;\r\n value?: string;\r\n variant?: 'standard' | 'outlined' | 'filled';\r\n}\r\n\r\nViewTab.displayName = 'ViewTab';\r\n\r\nexport default ViewTab;\r\n","import React, { useRef, forwardRef, useImperativeHandle } from 'react';\r\nimport {\r\n useQuery,\r\n TextInput,\r\n NullableBooleanInput,\r\n SelectInput,\r\n RadioButtonGroupInput,\r\n useNotify,\r\n required,\r\n useMutation\r\n} from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { Grid } from '@material-ui/core/';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport omit from 'lodash/omit';\r\nimport moment from 'moment';\r\n\r\nimport DateInput from '../../../core/components/forked/input/DateInput';\r\nimport { isValidDate } from '../../../core/utils/index';\r\nimport EditToolbar from '../../../core/components/edit/EditToolbar';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../form/CustomSimpleForm';\r\n\r\nconst useStyles = makeStyles({\r\n checkboxGroup: {\r\n marginTop: '0'\r\n },\r\n label: {\r\n fontSize: '14px',\r\n transform: 'none',\r\n color: '#757575'\r\n }\r\n});\r\n\r\nconst formatCheckboxValue = value => {\r\n // converting tRuE/FalSe to lower case since NullableBooleanInput is case sensitive\r\n if (value) return value.toLowerCase();\r\n return '';\r\n};\r\n\r\nconst formatSelectInputValue = (possibleValues, value) => {\r\n value = value.toLowerCase();\r\n for (var i = 0; i < possibleValues.length; i++) {\r\n var nonModifiedCase = possibleValues[i].data;\r\n var valueToLowerCase = possibleValues[i].data.toLowerCase();\r\n if (valueToLowerCase === value) {\r\n if (nonModifiedCase === 'True') return 'Yes';\r\n if (nonModifiedCase === 'False') return 'No';\r\n return nonModifiedCase;\r\n }\r\n }\r\n return '';\r\n};\r\n\r\nconst formatDate = value => {\r\n if (value) {\r\n return moment(value).format('YYYY-MM-DD');\r\n }\r\n};\r\n\r\nconst UdfField = props => {\r\n const { index, udfField, type } = props;\r\n const classes = useStyles();\r\n\r\n if (\r\n props.udfField &&\r\n props.udfField.userUdfValue &&\r\n props.udfField.userUdfValue.value &&\r\n (udfField.fieldType === 'SELECT' || udfField.fieldType === 'RADIO')\r\n ) {\r\n props.udfField.userUdfValue.value = formatSelectInputValue(\r\n props.udfField.possibleValues,\r\n props.udfField.userUdfValue.value\r\n );\r\n }\r\n\r\n const inputProps = {\r\n source: `udfFields[${index}].${type}UdfValue.value`,\r\n label: udfField.fieldName,\r\n id: udfField.fieldName,\r\n variant: 'standard',\r\n helperText: false,\r\n validate: udfField.required ? [required()] : null\r\n };\r\n\r\n return (\r\n (udfField.fieldType === 'CHECKBOX' && (\r\n \r\n )) ||\r\n (udfField.fieldType === 'TEXT' && (\r\n \r\n )) ||\r\n (udfField.fieldType === 'DATE_FIELD' && (\r\n \r\n )) ||\r\n (udfField.fieldType === 'SELECT' && (\r\n \r\n )) ||\r\n (udfField.fieldType === 'RADIO' && (\r\n \r\n ))\r\n );\r\n};\r\n\r\nconst UdfSection = props => {\r\n const { udfFields, type } = props;\r\n\r\n return (\r\n \r\n {udfFields.map((udfField, index) => (\r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nconst UdfTab = forwardRef((props, ref) => {\r\n const {\r\n id,\r\n queryId,\r\n type,\r\n hasEditPermission,\r\n onChangeUDFs,\r\n hideCommands,\r\n setHasUdfs,\r\n ...rest\r\n } = props;\r\n const notify = useNotify();\r\n const [mutate] = useMutation();\r\n const notifyServerError = useNotifyServerError();\r\n let queryFilter = {};\r\n if (Array.isArray(id)) {\r\n queryId.forEach((key, index) => {\r\n queryFilter[key] = id[index];\r\n });\r\n } else {\r\n queryFilter = { [queryId]: id };\r\n }\r\n\r\n const formRef = useRef();\r\n\r\n useImperativeHandle(ref, () => ({\r\n saveUdfs(onSuccess) {\r\n handleSave(formRef.current.getState().values, onSuccess);\r\n }\r\n }));\r\n\r\n const handleSave = (values, onSuccess) => {\r\n const data = values.udfFields\r\n .filter(e => e[`${type}UdfValue`] && e[`${type}UdfValue`].value)\r\n .map(udf => {\r\n return {\r\n ...queryFilter,\r\n udfId: udf.udfId,\r\n value: udf[`${type}UdfValue`].value\r\n };\r\n });\r\n if (!data || data.length === 0) {\r\n // No udfs no needs to save call on success\r\n if (onSuccess) onSuccess();\r\n return;\r\n }\r\n let saveId = id;\r\n if (Array.isArray(saveId)) {\r\n saveId = saveId.join(':');\r\n }\r\n\r\n mutate(\r\n {\r\n type: 'updateMany',\r\n resource: `${type.toLowerCase()}udfs`,\r\n payload: {\r\n id: saveId,\r\n data: data\r\n }\r\n },\r\n {\r\n onSuccess: response => {\r\n //initialize form again with updated values so toolbar buttons are properly enabled/disabled and form pristine\r\n const updatedUdfs = formRef.current\r\n .getState()\r\n .values.udfFields.map(udf => {\r\n let updatedUdf = { ...udf };\r\n const udfNewValue = response.data.find(\r\n e => e.udfId === udf.udfId\r\n );\r\n if (udfNewValue) {\r\n updatedUdf[`${type}UdfValue`] = {\r\n ...updatedUdf[`${type}UdfValue`],\r\n value: udfNewValue.value,\r\n lastModified: udfNewValue.lastModified\r\n };\r\n }\r\n return updatedUdf;\r\n });\r\n formRef.current.initialize({ udfFields: updatedUdfs });\r\n notify('ra.notification.udfs_successfully_updated');\r\n if (onSuccess) {\r\n onSuccess();\r\n }\r\n },\r\n onFailure: () => {\r\n notifyServerError();\r\n }\r\n }\r\n );\r\n };\r\n\r\n const { data, error } = useQuery({\r\n type: 'getList',\r\n resource: `${type.toLowerCase()}udfs`,\r\n payload: {\r\n filter: queryFilter\r\n }\r\n });\r\n if (error) notifyServerError(error);\r\n if (!data) return null;\r\n //filter out udf fields without possible values\r\n const ufdFieldsWithPossibleValues = data.filter(\r\n field =>\r\n !(\r\n (field.fieldType === 'SELECT' || field.fieldType === 'RADIO') &&\r\n field.possibleValues.length === 0\r\n )\r\n );\r\n if (ufdFieldsWithPossibleValues.length > 0 && setHasUdfs) {\r\n setHasUdfs(true);\r\n }\r\n\r\n const toolbar = hideCommands ? null : (\r\n \r\n );\r\n\r\n return (\r\n true}\r\n toolbar={toolbar}\r\n >\r\n \r\n {newFormProps => {\r\n formRef.current = newFormProps.form;\r\n return (\r\n \r\n );\r\n }}\r\n \r\n {onChangeUDFs && (\r\n {\r\n // this was called on render and makes React unhappy (before timeout)\r\n setTimeout(() => onChangeUDFs(props.dirty, props.valid));\r\n }}\r\n />\r\n )}\r\n \r\n );\r\n});\r\n\r\nexport default UdfTab;\r\n","import React, { useCallback, useState, useEffect, useMemo } from 'react';\r\nimport {\r\n Edit,\r\n Button,\r\n FormTab,\r\n TopToolbar,\r\n TabbedForm,\r\n crudGetList,\r\n useNotify\r\n} from 'react-admin';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { connect } from 'react-redux';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { get, defaultTo, omit } from 'lodash';\r\n\r\nimport UserPhoneCreateUpdate from './userphone/UserPhoneCreateUpdate';\r\nimport UserAddressCreateUpdate from './useraddress/UserAddressCreateUpdate';\r\nimport UserAddressDatagrid from './useraddress/UserAddressDatagrid';\r\nimport UserPhoneDatagrid from './userphone/UserPhoneDatagrid';\r\nimport UserDetails from './UserDetails';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport { removePathEnd } from '../../core/utils';\r\nimport UserSecurity from './UserSecurity';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport UserAuthorizationTab from './userauthorization/UserAuthorizationTab';\r\nimport FeatureAccessControlTab from './featureaccesscontrol/FeatureAccessControlTab';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport UserApi from '../../core/apis/UserApi';\r\nimport UserNotificationTab from './usernotification/UserNotificationTab';\r\nimport TenantConfigurationApi from '../../core/apis/TenantConfigurationApi';\r\nimport UserActivityTab from './useractivity/UserActivityTab';\r\nimport ViewTab from '../../core/components/forked/layout/ViewTab';\r\nimport UdfTab from '../../core/components/tab/UdfTab';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport ForceListRender from '../../core/components/forked/list/ForceListRender';\r\n\r\nconst styles = () => ({\r\n gridTab: {\r\n marginTop: '-17px !important'\r\n },\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst UserPhoneAddressActionsStyles = {\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n alignSelf: 'center'\r\n },\r\n headline: {}\r\n};\r\n\r\nconst UserAddressActions = withStyles(UserPhoneAddressActionsStyles)(\r\n ({\r\n classes,\r\n handleAddressCreateDialogToggle,\r\n ids,\r\n useraddresstypeIds,\r\n hasEditPermission\r\n }) => (\r\n \r\n \r\n Addresses\r\n \r\n \r\n {hasEditPermission && ids.length < useraddresstypeIds.length && (\r\n \r\n )}\r\n \r\n \r\n )\r\n);\r\n\r\nconst UserPhoneActions = withStyles(UserPhoneAddressActionsStyles)(\r\n ({\r\n classes,\r\n handlePhoneCreateDialogToggle,\r\n ids,\r\n userphonetypeIds,\r\n hasEditPermission\r\n }) => (\r\n \r\n \r\n Phone Numbers\r\n \r\n \r\n {hasEditPermission && ids.length < userphonetypeIds.length && (\r\n \r\n )}\r\n \r\n \r\n )\r\n);\r\n\r\nconst UserTitle = ({ record, loginUserVisibleFlag }) => {\r\n const loginUserIdVisible =\r\n sessionStorage.getItem('isMupChild') === 'true' && loginUserVisibleFlag;\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst UserEdit = props => {\r\n const {\r\n crudGetList,\r\n classes,\r\n useraddresstypeIds,\r\n userphonetypeIds,\r\n userType,\r\n permissions = [],\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n hasReadPermission,\r\n documentTypes,\r\n userProfile = {},\r\n match,\r\n ...rest\r\n } = props;\r\n const [showPhoneCreateDialog, setShowPhoneCreateDialog] = useState(false);\r\n const [showPhoneEditDialog, setShowPhoneEditDialog] = useState(false);\r\n const [showAddressCreateDialog, setShowAddressCreateDialog] = useState(false);\r\n const [showAddressEditDialog, setShowAddressEditDialog] = useState(false);\r\n const [phoneRecord, setPhoneRecord] = useState({});\r\n const [phoneBasePath, setPhoneBasePath] = useState('');\r\n const [addressRecord, setAddressRecord] = useState({});\r\n const [addressBasePath, setAddressBasePath] = useState('');\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n const [loginUserIdVisible, setLoginUserIdVisible] = useState(false);\r\n\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const checkShowUserLoginIDConfiguration = useCallback(() => {\r\n TenantConfigurationApi.get('ShowUserLoginID').then(info => {\r\n const value =\r\n info &&\r\n info.pageData &&\r\n info.pageData.length > 0 &&\r\n info.pageData[0].value &&\r\n info.pageData[0].value === '1';\r\n setLoginUserIdVisible(value);\r\n });\r\n }, []);\r\n\r\n const handlePhoneCreateDialogToggle = useCallback(\r\n () => setShowPhoneCreateDialog(prevState => !prevState),\r\n []\r\n );\r\n\r\n const handlePhoneEditButtonClick = useCallback(\r\n (phoneRecord, phoneBasePath) => {\r\n setShowPhoneEditDialog(prevState => !prevState);\r\n setPhoneRecord(phoneRecord);\r\n setPhoneBasePath(phoneBasePath);\r\n },\r\n []\r\n );\r\n\r\n const handleAddressCreateDialogToggle = useCallback(\r\n () => setShowAddressCreateDialog(prevState => !prevState),\r\n []\r\n );\r\n\r\n const handleAddressEditButtonClick = useCallback(\r\n (addressRecord, addressBasePath) => {\r\n setShowAddressEditDialog(prevState => !prevState);\r\n setAddressRecord(addressRecord);\r\n setAddressBasePath(addressBasePath);\r\n },\r\n []\r\n );\r\n\r\n const handleResendWelcomeEmail = useCallback(\r\n (userId, formprops, isMupChild) => {\r\n if (isMupChild) {\r\n return;\r\n }\r\n UserApi.sendWelcomeEmail(userId)\r\n .then(() => {\r\n formprops.form.change('welcomeMailHasBeenSent', true);\r\n notify('Welcome email sent');\r\n })\r\n .catch(notifyServerError);\r\n },\r\n [notify, notifyServerError]\r\n );\r\n\r\n const onBeforeDelete = useCallback(() => setWhenBlockNavigation(false), []);\r\n\r\n useEffect(() => {\r\n // Retrieve the list of user phone and address types (only displayed types)\r\n crudGetList(\r\n 'userphonetypes',\r\n { page: 1, perPage: -1 },\r\n {},\r\n { display: true }\r\n );\r\n crudGetList(\r\n 'useraddresstypes',\r\n { page: 1, perPage: -1 },\r\n {},\r\n { display: true }\r\n );\r\n crudGetList('documenttypes', { page: 1, perPage: -1 });\r\n checkShowUserLoginIDConfiguration();\r\n }, [crudGetList, checkShowUserLoginIDConfiguration]);\r\n\r\n const displayToolbar = match.isExact;\r\n const [\r\n hasReadUserAuthorizationPermission,\r\n hasReadUserRolePermission,\r\n hasComposeEmailPermission,\r\n hasReadActivityPermission\r\n ] = useMemo(\r\n () => [\r\n permissions.includes('AUTH_READ_USER_AUTHORIZATION_NA'),\r\n permissions.includes('AUTH_READ_USER_ROLE'),\r\n permissions.includes('AUTH_COMPOSE_EMAIL'),\r\n permissions.includes('AUTH_READ_USER_ACTIVITIES')\r\n ],\r\n [permissions]\r\n );\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n \r\n {\r\n // this was called on render and makes React unhappy (before timeout)\r\n setTimeout(() => setWhenBlockNavigation(props.dirty));\r\n }}\r\n />\r\n \r\n \r\n \r\n }\r\n bulkActionButtons={\r\n hasEditPermission && \r\n }\r\n empty={\r\n \r\n }\r\n >\r\n \r\n \r\n {showPhoneEditDialog && (\r\n \r\n )}\r\n {showPhoneCreateDialog && (\r\n \r\n )}\r\n \r\n \r\n \r\n }\r\n bulkActionButtons={\r\n hasEditPermission && \r\n }\r\n empty={\r\n \r\n }\r\n >\r\n \r\n \r\n {showAddressEditDialog && (\r\n \r\n )}\r\n {showAddressCreateDialog && (\r\n \r\n )}\r\n \r\n {userProfile.userType !== 'INVESTOR_ADMIN' && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {(userType === 'FUND_ADMIN' || userType === 'INVESTOR_ADMIN') &&\r\n hasReadUserRolePermission && (\r\n \r\n \r\n \r\n )}\r\n {userType !== 'SUPER_ADMIN' && hasReadUserAuthorizationPermission && (\r\n \r\n \r\n \r\n )}\r\n {hasReadActivityPermission && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n const user = state.admin.resources.users\r\n ? state.admin.resources.users.data[props.id]\r\n : null;\r\n const userType = get(user, 'userType', '');\r\n\r\n return {\r\n userphonetypeIds: state.admin.resources.userphonetypes\r\n ? state.admin.resources.userphonetypes.list.ids\r\n : [], // List of user phone types\r\n useraddresstypeIds: state.admin.resources.useraddresstypes\r\n ? state.admin.resources.useraddresstypes.list.ids\r\n : [], // List of user address types\r\n userType,\r\n documentTypes: defaultTo(\r\n get(state, 'admin.resources.documenttypes.data'),\r\n []\r\n ),\r\n useraddresstypes: defaultTo(\r\n get(state, 'admin.resources.useraddresstypes.data'),\r\n []\r\n )\r\n };\r\n};\r\n\r\nconst mapDispatchToProps = {\r\n crudGetList\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps\r\n)(withStyles(styles)(UserEdit));\r\n","import { makeStyles } from '@material-ui/core';\r\n\r\nexport const useStyles = makeStyles({\r\n header: {\r\n paddingTop: '0px',\r\n fontSize: 20,\r\n fontWeight: 600\r\n },\r\n descriptionContainer_contactDetails: {\r\n marginBottom: '2em'\r\n },\r\n descriptionContainer_accessRoles: {\r\n marginBottom: 0\r\n },\r\n descriptionContainer_default: {\r\n marginBottom: '1em'\r\n },\r\n description: {\r\n display: 'flex',\r\n marginTop: '7px',\r\n fontSize: 14\r\n },\r\n radioContainer: {\r\n '& span': {\r\n marginTop: '-17px',\r\n fontSize: '14px'\r\n }\r\n },\r\n gridItem: {\r\n height: 'calc(100vh - 400px)'\r\n },\r\n gridLarge: {\r\n maxWidth: '47.83333%',\r\n flexBasis: '47.83333%',\r\n display: 'flex',\r\n flexDirection: 'row'\r\n },\r\n formCheckBox: {\r\n marginTop: '26px'\r\n },\r\n addLabel: {\r\n cursor: 'pointer',\r\n color: '#2962FF',\r\n textDecoration: 'underline',\r\n marginLeft: '2px',\r\n verticalAlign: 'middle'\r\n },\r\n closeIcon: {\r\n paddingTop: '25px'\r\n },\r\n addIcon: {\r\n verticalAlign: 'middle',\r\n color: '#2962FF'\r\n },\r\n ccInput: {\r\n width: '100%'\r\n },\r\n stepper: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '0 0 0px',\r\n display: 'inline-flex'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n button: {\r\n paddingBlock: '0px',\r\n paddingInline: '10px'\r\n },\r\n paddingBlockButton: {\r\n paddingBlock: '0px',\r\n paddingInline: '10px',\r\n marginLeft: 'auto'\r\n },\r\n backButton: {\r\n border: '1px solid #E0E0E0',\r\n padding: 0,\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n saveButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n root: {\r\n paddingTop: '10px',\r\n paddingBottom: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n dialogContent: {\r\n display: 'flex',\r\n flex: 1,\r\n padding: '0px'\r\n },\r\n stepperContainer: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '11px 8px',\r\n height: '24px',\r\n borderBottom: '1px solid #E0E0E0'\r\n },\r\n stepContainer: {\r\n // display: 'flex',\r\n width: '100%',\r\n padding: '16px',\r\n overflowX: 'auto',\r\n '& .simple-form': {\r\n width: '100%',\r\n height: 'unset'\r\n }\r\n },\r\n headerContainer: {\r\n marginBottom: '1em'\r\n },\r\n progress: {\r\n position: 'absolute',\r\n top: '25%',\r\n left: '55%'\r\n },\r\n saveAndCloseContainer: {\r\n display: 'flex',\r\n gap: '5px',\r\n marginLeft: 'auto'\r\n },\r\n formGroup: {\r\n marginBlock: '16px'\r\n }\r\n});\r\n","import React from 'react';\r\nimport { Grid } from '@material-ui/core';\r\nimport AddRolesDialog from '../featureaccesscontrol/AddRolesDialog';\r\n\r\nconst AccessRolesStep = props => {\r\n const {\r\n contactCreated,\r\n creation,\r\n onSubmitEnd,\r\n setAccessRoles,\r\n accessRoles,\r\n setSelectedAccessRoles\r\n } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AccessRolesStep;\r\n","import React, { useContext, useMemo, useRef, useState } from 'react';\r\nimport { ReferenceArrayInput, useDataProvider } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\nimport get from 'lodash/get';\r\nimport isEqual from 'lodash/isEqual';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { connect } from 'react-redux';\r\n\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { CreationContactContext } from '../creationsteps/CreationContactContext';\r\nimport GridInputChoices from './GridInputChoices';\r\nimport { getFundFamiliesIds, referenceArrayInputProps } from './utils';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst AddAuthorization = props => {\r\n const {\r\n userTypeRoleCheck,\r\n onSubmitEnd,\r\n reduxFunds,\r\n selectedPermissionGroups,\r\n setSelectedPermissionGroups,\r\n creation\r\n } = props;\r\n\r\n const [editFormValues, setEditFormValues] = useState();\r\n const dataProvider = useDataProvider();\r\n const notifyServerError = useNotifyServerError();\r\n const context = useContext(CreationContactContext);\r\n const allFunds = useMemo(() => Object.values(reduxFunds), [reduxFunds]);\r\n\r\n const formRef = useRef();\r\n\r\n const handleSubmit = formValues => {\r\n if (\r\n Array.isArray(formValues.investors) &&\r\n formValues.investors.length > 0\r\n ) {\r\n dataProvider\r\n .getList('fundinvestors', {\r\n pagination: { perPage: -1 },\r\n filter: { investorId: `[${formValues.investors}]` }\r\n })\r\n .then(({ data }) => {\r\n context.setContactContext({\r\n permissionGroupSelect: data\r\n });\r\n })\r\n .catch(error => {\r\n notifyServerError(error, undefined);\r\n });\r\n } else if (Array.isArray(formValues.funds) && formValues.funds.length > 0) {\r\n const selectedFunds =\r\n allFunds.length === formValues.funds.length\r\n ? allFunds\r\n : allFunds.filter(item => formValues.funds.includes(item.id));\r\n\r\n const fundFamiliesIds = [];\r\n getFundFamiliesIds(selectedFunds, fundFamiliesIds);\r\n\r\n if (fundFamiliesIds.length > 0) {\r\n dataProvider\r\n .getMany('fundfamilies', {\r\n ids: fundFamiliesIds,\r\n target: 'id'\r\n })\r\n .then(({ data }) => {\r\n const dataWithFundFamilies = selectedFunds.map(fund => {\r\n const fundFamily = data.find(\r\n item => item.id === fund.fundFamilyId\r\n );\r\n return {\r\n fundId: fund.id,\r\n fundName: fund.name,\r\n fundFamilyId: fundFamily && fundFamily.id,\r\n fundFamilyName: fundFamily && fundFamily.name,\r\n investorId: '*'\r\n };\r\n });\r\n context.setContactContext({\r\n permissionGroupSelect: dataWithFundFamilies\r\n });\r\n })\r\n .catch(error => {\r\n notifyServerError(error, undefined);\r\n });\r\n } else {\r\n const dataWithFunds = selectedFunds.map(fund => {\r\n return {\r\n fundId: fund.id,\r\n fundName: fund.name,\r\n investorId: '*'\r\n };\r\n });\r\n\r\n context.setContactContext({\r\n permissionGroupSelect: dataWithFunds\r\n });\r\n }\r\n }\r\n onSubmitEnd();\r\n };\r\n\r\n const isRegular = userTypeRoleCheck;\r\n\r\n const additionalFilterProps = {\r\n attributeToFilter: 'fundFamilyName', // Should be named after the attribute we want to search for\r\n emptyText: 'Fund Families',\r\n placeholder: 'Fund Families'\r\n };\r\n\r\n return (\r\n \r\n \r\n {newFormProps => {\r\n formRef.current = newFormProps.form;\r\n if (!isEqual(editFormValues, newFormProps.values)) {\r\n setTimeout(() => {\r\n setEditFormValues(newFormProps.values);\r\n setSelectedPermissionGroups(newFormProps.values);\r\n }, 1);\r\n }\r\n if (context.contactContext.currentForm === undefined) {\r\n context.setContactContext(prev => ({\r\n ...prev,\r\n currentForm: newFormProps.form\r\n }));\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n reduxFunds: get(state, 'admin.resources.funds.data', {})\r\n };\r\n};\r\n\r\nexport default connect(mapStateToProps, {})(AddAuthorization);\r\n","import React, { useState } from 'react';\r\nimport ContactStep from '../userauthorization/importPermissionsGroups/steps/ContactStep';\r\nimport { USERTYPE } from '../EnumUserType';\r\nimport AddAuthorization from '../userauthorization/AddAuthorization';\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\n\r\nconst SelectPermissionGroupsStep = props => {\r\n const {\r\n onSubmitEnd,\r\n permissions,\r\n contactCreated,\r\n creation,\r\n selectedPermissionGroups,\r\n setSelectedPermissionGroups,\r\n selectedAssignmentMode,\r\n setSelectedContactForImport,\r\n confirmWarningIsOpen,\r\n handleConfirmWarningClose,\r\n setSelectedAssignmentMode,\r\n clearStates,\r\n setIsNewImportToDo\r\n } = props;\r\n const { userType, userId } = contactCreated;\r\n const filter = { userId: userId };\r\n const groupsFilter = 'ALL';\r\n const [userToCopy, setUserToCopy] = useState(null);\r\n\r\n const userTypeRoleCheck =\r\n userType === USERTYPE.regularContact || userType === USERTYPE.investorAdmin;\r\n\r\n const updateUser = user => {\r\n setUserToCopy(user);\r\n };\r\n\r\n if (selectedAssignmentMode === 'manual' || confirmWarningIsOpen) {\r\n return (\r\n <>\r\n \r\n \r\n All Permission Groups assigned to this Contact will be merged with\r\n the ones you import. Do you wish to continue?\r\n

    \r\n }\r\n onConfirm={() => {\r\n handleConfirmWarningClose();\r\n clearStates();\r\n setSelectedAssignmentMode('import');\r\n }}\r\n onClose={handleConfirmWarningClose}\r\n />\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default SelectPermissionGroupsStep;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Groups API\r\n */\r\nclass GroupApi extends ApiBase {\r\n async getActiveNonAdminGroups() {\r\n const request = {\r\n url: `${this.API_URL}/groups?orderBy=name&orderDirection=ASC&adminGroup=false&status=ACTIVE`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new GroupApi();\r\n","import { createContext } from 'react';\r\n\r\nexport const CopyContactsContext = createContext(null);\r\n","import React from 'react';\r\nimport Popover from '@material-ui/core/Popover';\r\nimport Button from '@material-ui/core/Button';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n button: {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n color: '#2962FF',\r\n marginRight: '16px',\r\n '&:hover': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n paper: {\r\n backgroundColor: 'white',\r\n border: '1px solid #E0E0E0',\r\n padding: '16px',\r\n minWidth: 400,\r\n maxWidth: 800,\r\n '& > div': {\r\n maxHeight: 200,\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n }\r\n}));\r\n\r\nexport default function GridPopover(props) {\r\n const { classes: classesOverride, multiple = true, id } = props;\r\n const classes = useStyles({ classes: classesOverride });\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const open = Boolean(anchorEl);\r\n\r\n return (\r\n \r\n {multiple ? (\r\n \r\n ) : (\r\n {props.text}\r\n )}\r\n \r\n {props.popoverContent}\r\n \r\n \r\n );\r\n}\r\n","import React, {\r\n useContext,\r\n useState,\r\n useMemo,\r\n useCallback,\r\n useRef,\r\n useEffect\r\n} from 'react';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { CopyContactsContext } from './CopyContactsContext';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport {\r\n Loading,\r\n ReferenceArrayInput,\r\n useQuery,\r\n useNotify,\r\n useRefresh,\r\n useDataProvider,\r\n RecordContextProvider\r\n} from 'react-admin';\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\nimport EntitlementApi from '../../../core/apis/EntitlementApi';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport GridPopover from '../../../core/components/grid/GridPopover';\r\nimport { uniq, intersectionBy, orderBy } from 'lodash';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = {\r\n button: {\r\n padding: '0'\r\n },\r\n loading: {\r\n width: '100%',\r\n height: '100%',\r\n display: 'content',\r\n marginTop: '0px'\r\n },\r\n paper: {\r\n '& > div': {\r\n maxHeight: 'none'\r\n }\r\n },\r\n tableWrapper: {\r\n maxHeight: 'calc(100vh - 250px)',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n};\r\nconst GridInputTable = ({ groups, index }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nconst ContactsList = ({ classes, userTree, selectedUsers }) => {\r\n const [selectedRows, setSelectedRows] = useState(userTree);\r\n const { contactsContext, setContactsContext } = useContext(\r\n CopyContactsContext\r\n );\r\n selectedUsers.current = selectedRows;\r\n /**\r\n * Calculating number of rows depending of the filter\r\n */\r\n const numSelectedRows = useMemo(() => {\r\n const newArray = [];\r\n userTree.forEach(item => {\r\n if (selectedRows.includes(item)) {\r\n newArray.push(item);\r\n }\r\n });\r\n return newArray.length;\r\n }, [userTree, selectedRows]);\r\n\r\n const rowCount = userTree.length;\r\n\r\n const handleClickAll = useCallback(() => {\r\n if (numSelectedRows === rowCount) {\r\n setContactsContext({\r\n ...contactsContext,\r\n usersSelected: []\r\n });\r\n setSelectedRows([]);\r\n } else if (numSelectedRows !== rowCount) {\r\n setContactsContext({\r\n ...contactsContext,\r\n usersSelected: userTree\r\n });\r\n setSelectedRows(userTree);\r\n }\r\n }, [\r\n numSelectedRows,\r\n rowCount,\r\n setContactsContext,\r\n contactsContext,\r\n userTree\r\n ]);\r\n\r\n /**\r\n * When we click on the checkbox in a row\r\n * @param {*} checked\r\n * @param {*} item\r\n */\r\n const handleRowSelect = useCallback(\r\n (checked, item) => {\r\n if (checked) {\r\n setContactsContext({\r\n ...contactsContext,\r\n usersSelected: selectedRows.concat(item)\r\n });\r\n setSelectedRows(selectedRows => selectedRows.concat(item));\r\n } else {\r\n setContactsContext({\r\n ...contactsContext,\r\n usersSelected: selectedRows.filter(itemRow => item !== itemRow)\r\n });\r\n setSelectedRows(selectedRows =>\r\n selectedRows.filter(itemRow => item !== itemRow)\r\n );\r\n }\r\n },\r\n [contactsContext, selectedRows, setContactsContext]\r\n );\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n \r\n 0 && numSelectedRows < rowCount\r\n }\r\n checked={numSelectedRows === rowCount && rowCount > 0}\r\n onClick={handleClickAll}\r\n />\r\n \r\n Contact Name\r\n Permission Groups\r\n \r\n \r\n \r\n {userTree &&\r\n userTree.map((user, index) => {\r\n return (\r\n \r\n \r\n \r\n handleRowSelect(event.target.checked, user)\r\n }\r\n checked={selectedRows.includes(user)}\r\n />\r\n \r\n {`${user.firstName} ${user.lastName}`}\r\n \r\n \r\n }\r\n />\r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {selectedRows.length} item{selectedRows.length > 1 && 's'} selected\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Custom hook to get authorizations from the logged in user\r\n * But no need for SUPER ADMIN\r\n * @param {*} userProfile\r\n */\r\nexport const useGetAuthorizations = userProfile => {\r\n const dataProvider = useDataProvider();\r\n const notify = useNotify();\r\n const [data, setData] = useState([]);\r\n const [error, setError] = useState();\r\n const [loading, setLoading] = useState(false);\r\n\r\n useEffect(() => {\r\n // If the logged in is a SUPER ADMIN, no need to get its authorizations\r\n if (userProfile.userType !== 'SUPER_ADMIN') {\r\n setLoading(true);\r\n dataProvider\r\n .getManyReference('userauthorizations', {\r\n filter: { userId: userProfile.userId }\r\n })\r\n .then(({ data }) => {\r\n setData(data);\r\n setLoading(false);\r\n })\r\n .catch(error => {\r\n notify(getIcError(error), { type: 'error' });\r\n setError(error);\r\n setLoading(false);\r\n });\r\n }\r\n }, [userProfile.userType, dataProvider, userProfile.userId, notify]);\r\n\r\n return {\r\n data,\r\n loading,\r\n error\r\n };\r\n};\r\n\r\nconst ContactsStep = ({ operation, investorId, userProfile, ...props }) => {\r\n const { contactsContext, setContactsContext } = useContext(\r\n CopyContactsContext\r\n );\r\n //Get ALL the funds related to the investors we choose before\r\n let fundsRelation = useQuery({\r\n type: 'getManyReference',\r\n resource: 'fundinvestors',\r\n payload: {\r\n target: 'investorId',\r\n id: `[${contactsContext.investors}]`\r\n }\r\n });\r\n\r\n const {\r\n data: userConnectedAuthorizations,\r\n loading: userConnectedAuthorizationsLoading\r\n } = useGetAuthorizations(userProfile);\r\n\r\n const userConnectedAuthorizationIds = useMemo(() => {\r\n // If the logged in is a SUPER ADMIN, no need to get ids\r\n if (userProfile.userType === 'SUPER_ADMIN') return null;\r\n return userConnectedAuthorizations.map(auth => {\r\n return `${auth.fundId}:${auth.groupId}`;\r\n });\r\n }, [userConnectedAuthorizations, userProfile.userType]);\r\n\r\n const selectedUsers = useRef([]);\r\n const notify = useNotify();\r\n const refresh = useRefresh();\r\n const onSubmit = useCallback(\r\n async values => {\r\n let userAuthorizationsArray = [];\r\n //map for each relation between the investors we choose to see how much funds they are related to.\r\n (fundsRelation.data || []).forEach(({ fundId, investorId }) => {\r\n //Then we map on all the investors that we choosed before\r\n contactsContext.investors.forEach(investorChoosen => {\r\n //Do a check to see which investor id we are currently on, and select the fundId related to him\r\n if (investorId === investorChoosen) {\r\n //Only choose the users that we have clicked to copy them\r\n intersectionBy(\r\n values.users,\r\n selectedUsers.current,\r\n 'userId'\r\n ).forEach(user => {\r\n // And then create the object with the groupId, investorId, userId and fundId for the userauthorization\r\n user.selectedGroups.forEach(groupId => {\r\n // If ids is null, the logged in is a SUPER ADMIN, so no need to check authorizations\r\n if (userConnectedAuthorizationIds) {\r\n const authId = `${fundId}:${groupId}`;\r\n // Add authorization only when the logged in user has the permission\r\n if (userConnectedAuthorizationIds.includes(authId)) {\r\n let finalUser = {\r\n userId: user.userId,\r\n investorId,\r\n groupId,\r\n fundId\r\n };\r\n userAuthorizationsArray.push(finalUser);\r\n }\r\n } else {\r\n let finalUser = {\r\n userId: user.userId,\r\n investorId,\r\n groupId,\r\n fundId\r\n };\r\n userAuthorizationsArray.push(finalUser);\r\n }\r\n });\r\n });\r\n }\r\n });\r\n });\r\n try {\r\n if (userAuthorizationsArray.length > 0) {\r\n await EntitlementApi.createAuthorizations(\r\n orderBy(userAuthorizationsArray, 'investorId')\r\n );\r\n notify('ra.notification.copy_contacts_successfull');\r\n setContactsContext({\r\n currentForm: undefined\r\n });\r\n await props.onSubmitEnd();\r\n refresh();\r\n }\r\n } catch (e) {\r\n notify(getIcError(e), { type: 'error' });\r\n }\r\n },\r\n [\r\n contactsContext.investors,\r\n fundsRelation,\r\n notify,\r\n props,\r\n refresh,\r\n setContactsContext,\r\n userConnectedAuthorizationIds\r\n ]\r\n );\r\n\r\n const { data: userauthorizations = [] } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'userauthorizations',\r\n payload: {\r\n filter: {\r\n investorId: investorId\r\n }\r\n }\r\n });\r\n\r\n // Render after querying the recipients\r\n const { data, loading } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'investorcontacts',\r\n payload: {\r\n target: 'investorId',\r\n id: investorId,\r\n sort: {\r\n field: 'firstName',\r\n order: 'ASC'\r\n }\r\n }\r\n });\r\n\r\n if (fundsRelation.loading || loading || userConnectedAuthorizationsLoading)\r\n return ;\r\n if (data) {\r\n let userTree;\r\n\r\n userTree = data.reduce((contacts, user) => {\r\n let groups = [];\r\n userauthorizations &&\r\n userauthorizations.forEach(userauthorization => {\r\n if (userauthorization.userId === user.userId) {\r\n groups.push(userauthorization.groupId);\r\n }\r\n });\r\n if (groups.length > 0) {\r\n user.groups = uniq(groups);\r\n user.selectedGroups = uniq(groups);\r\n return contacts.concat(user);\r\n } else {\r\n return contacts;\r\n }\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n {formprops => {\r\n if (contactsContext.currentForm === undefined) {\r\n setContactsContext({\r\n ...contactsContext,\r\n currentForm: formprops.form\r\n });\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(ContactsStep);\r\n","import React, {\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useMemo,\r\n useState\r\n} from 'react';\r\nimport { CreationContactContext } from './CreationContactContext';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { Grid } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport RadioGroup from '@material-ui/core/RadioGroup';\r\nimport FormControlLabel from '@material-ui/core/FormControlLabel';\r\nimport Radio from '@material-ui/core/Radio';\r\nimport GroupApi from '../../../core/apis/GroupApi';\r\nimport { isEmpty } from 'lodash';\r\nimport UserAuthorizationDatagrid from '../userauthorization/UserAuthorizationDatagrid';\r\nimport { useGetAuthorizations } from '../../investors/copyContactsSteps/ContactsStep';\r\nimport {\r\n useFetchAuthorizationsForDatagrid,\r\n createUserAuthorizations\r\n} from '../userauthorization/stepper/utils';\r\n\r\nconst useStyles = makeStyles({\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block'\r\n },\r\n topToolbar: {\r\n paddingTop: 0,\r\n paddingBottom: 0\r\n },\r\n radioLabel: {\r\n fontSize: '14px'\r\n },\r\n radioLabelRoot: {\r\n marginRight: '0px !important'\r\n },\r\n contactInformation: {\r\n fontSize: '14px'\r\n },\r\n bold: {\r\n fontWeight: '600'\r\n }\r\n});\r\n\r\nconst AssignPermissionGroupsStep = props => {\r\n const {\r\n creation,\r\n contactCreated,\r\n permissions,\r\n connectedUserProfile,\r\n selectedAssignmentMode,\r\n selectedContactForImport,\r\n permissionGroupsUploaded,\r\n setPermissionsStaging,\r\n permissionsStaging,\r\n authorizationsGridToDeleteRef,\r\n isNewImportToDo\r\n } = props;\r\n const classes = useStyles();\r\n const notifyServerError = useNotifyServerError();\r\n const [groupsFilter, setGroupsFilter] = useState('ALL');\r\n const {\r\n userType: createdUserType,\r\n userId: createdContactId\r\n } = contactCreated;\r\n const [groups, setGroups] = useState([]);\r\n const { contactContext } = useContext(CreationContactContext);\r\n const isCreatedContactRcOrIa =\r\n contactCreated.userType === 'REGULAR_CONTACT' ||\r\n contactCreated.userType === 'INVESTOR_ADMIN';\r\n const { data: connectedUserAuthorizations } = useGetAuthorizations(\r\n connectedUserProfile\r\n );\r\n const [currentAuthorizationsIds, setCurrentAuthorizationsIds] = useState([]);\r\n const [authorizations, setAuthorizations] = useState([]);\r\n\r\n /**\r\n To prevent unnecessary API calls when using the same custom hook (useFetchAuthorizationsForDatagrid)\r\n for both imported and created contacts:\r\n\r\n -We utilize two boolean props (arePermissionGroupsUploaded and isNewImportToDo) that are passed to these hooks.\r\n\r\n -This approach ensures that we avoid making redundant calls when they are not required.\r\n\r\n -For instance, in the case of the imported contact, we pass true to \"arePermissionGroupsUploaded\" even when it's not\r\n actually uploaded, as this prop is necessary for the created contact.Similarly, for the created contact,\r\n we pass true to \"isNewImportToDo\" even when it's not relevant, as this prop is only useful for the imported contact call.\r\n */\r\n\r\n const {\r\n authorizations: importedAuthorizations,\r\n authorizationsIds: importedAuthorizationsIds\r\n } = useFetchAuthorizationsForDatagrid(\r\n selectedContactForImport?.userId,\r\n createdContactId,\r\n selectedAssignmentMode,\r\n isCreatedContactRcOrIa,\r\n true,\r\n isNewImportToDo\r\n );\r\n\r\n const {\r\n authorizations: createdContactAuthorizations,\r\n authorizationsIds: createdContactAuthorizationsIds\r\n } = useFetchAuthorizationsForDatagrid(\r\n createdContactId,\r\n createdContactId,\r\n selectedAssignmentMode,\r\n isCreatedContactRcOrIa,\r\n !isEmpty(permissionGroupsUploaded),\r\n true\r\n );\r\n\r\n // Determinate ONLY-ASSIGN or ALL (show authorizations)\r\n useEffect(() => {\r\n if (\r\n selectedAssignmentMode === 'import' ||\r\n permissionGroupsUploaded.length > 0\r\n ) {\r\n setGroupsFilter('ONLY_ASSIGNED');\r\n }\r\n }, [selectedAssignmentMode, permissionGroupsUploaded.length]);\r\n\r\n // Fetch Groups and setGroups()\r\n useEffect(() => {\r\n GroupApi.getActiveNonAdminGroups()\r\n .then(({ pageData: groupsFetched }) => {\r\n setGroups(groupsFetched);\r\n })\r\n .catch(e => notifyServerError(e));\r\n }, [notifyServerError]);\r\n\r\n useEffect(() => {\r\n const auths = importedAuthorizations.concat(createdContactAuthorizations);\r\n let ids = [];\r\n\r\n if (isNewImportToDo) {\r\n ids = importedAuthorizationsIds.concat(createdContactAuthorizationsIds);\r\n } else {\r\n ids = createdContactAuthorizationsIds;\r\n }\r\n\r\n if (!isEmpty(contactContext.permissionGroupSelect)) {\r\n setAuthorizations(contactContext.permissionGroupSelect);\r\n setAuthorizations(prev => [...prev, ...auths]);\r\n } else {\r\n setAuthorizations(auths);\r\n }\r\n setPermissionsStaging(auths);\r\n setCurrentAuthorizationsIds(ids);\r\n }, [\r\n contactContext.permissionGroupSelect,\r\n createdContactAuthorizations,\r\n createdContactAuthorizationsIds,\r\n importedAuthorizations,\r\n importedAuthorizationsIds,\r\n isNewImportToDo,\r\n permissionGroupsUploaded,\r\n setPermissionsStaging\r\n ]);\r\n\r\n const onGroupsFilterChange = useCallback(\r\n event => setGroupsFilter(event.target.value),\r\n []\r\n );\r\n\r\n const [formCtrlLabel1Cls, formCtrlLabel2Cls] = useMemo(\r\n () => [\r\n { root: classes.topToolbar },\r\n { label: classes.radioLabel },\r\n { root: classes.radioLabelRoot, label: classes.radioLabel }\r\n ],\r\n [classes]\r\n );\r\n\r\n const hasWriteAuthorizationPermission = useMemo(() => {\r\n return permissions.includes('AUTH_WRITE_USER_AUTHORIZATION');\r\n }, [permissions]);\r\n\r\n if (\r\n selectedAssignmentMode === 'import' &&\r\n importedAuthorizations.length === 0\r\n ) {\r\n return (\r\n \r\n There are no Access Rights to be displayed\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {!!selectedContactForImport && isNewImportToDo && (\r\n \r\n Contact:{' '}\r\n \r\n {selectedContactForImport.firstName}{' '}\r\n {selectedContactForImport.lastName}\r\n {' '}\r\n User ID:{' '}\r\n \r\n {selectedContactForImport.userId}\r\n \r\n \r\n )}\r\n\r\n \r\n }\r\n label=\"Show All\"\r\n classes={formCtrlLabel1Cls}\r\n id=\"show-all\"\r\n />\r\n }\r\n label=\"Show Assigned\"\r\n classes={formCtrlLabel2Cls}\r\n style={{ marginRight: 0 }}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AssignPermissionGroupsStep;\r\n","import React, { useContext, useMemo, useRef, useState } from 'react';\r\nimport Add from '@material-ui/icons/Add';\r\nimport Clear from '@material-ui/icons/Clear';\r\nimport { CREATE, useNotify } from 'react-admin';\r\nimport { CreationContactContext } from './CreationContactContext';\r\nimport { Form, Field, FormSpy } from 'react-final-form';\r\nimport { Button, Grid, IconButton } from '@material-ui/core';\r\nimport { userType, userTypeForIA, userTypeSA } from '../UserLookups';\r\nimport {\r\n fieldLengthValidator,\r\n isStringContainingLessThanOrGreaterThanOrEqualsSign,\r\n isValidEmailLocalPartAndDomainName,\r\n isValidEmailRegex\r\n} from '../../../core/utils';\r\nimport UserApi from '../../../core/apis/UserApi';\r\nimport CheckBoxField from '../../../core/components/CheckBoxField';\r\nimport { useStyles } from './StyleStep';\r\nimport dataProvider from '../../../core/providers/IccUserDataProvider';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { isEmpty } from 'lodash';\r\nimport { USERTYPE } from '../EnumUserType';\r\nimport AccessRolesStep from './AccessRolesStep';\r\nimport SelectPermissionGroupsStep from './SelectPermissionGroupsStep';\r\nimport AssignPermissionGroupsStep from './AssignPermissionGroupsStep';\r\nimport { STEP } from '../UserCreate';\r\nimport { createForm } from 'final-form';\r\nimport { Select, TextField } from 'mui-rff';\r\n\r\nconst MAX_SINGLE_ADDRESS_LENGTH = 100;\r\n\r\nconst checkIfEmailIsValidAndExists = async (value, profile, fieldState) => {\r\n if (\r\n !fieldState.active &&\r\n (!isValidEmailRegex(value) || !isValidEmailLocalPartAndDomainName(value))\r\n ) {\r\n return 'Please enter a valid email';\r\n }\r\n\r\n if (isValidEmailRegex(value) && isValidEmailLocalPartAndDomainName(value)) {\r\n if (fieldState.active && profile.userType !== USERTYPE.investorAdmin) {\r\n let error;\r\n const emailExists = await UserApi.checkIfEmailExists(\r\n encodeURIComponent(value)\r\n );\r\n\r\n if (emailExists) {\r\n for (let i = 0; i < emailExists.totalCount; i++) {\r\n if (\r\n emailExists.pageData[i].email.toUpperCase() === value.toUpperCase()\r\n ) {\r\n error = 'Email address already exists';\r\n break;\r\n } else {\r\n error = undefined;\r\n }\r\n }\r\n }\r\n return error;\r\n }\r\n }\r\n};\r\n\r\nconst validateEmail = field => {\r\n if (!isValidEmailRegex(field)) {\r\n return 'Please enter a valid email address';\r\n } else if (field && field.length > MAX_SINGLE_ADDRESS_LENGTH) {\r\n return (\r\n 'Email address should not contain more than ' +\r\n MAX_SINGLE_ADDRESS_LENGTH +\r\n ' characters.'\r\n );\r\n }\r\n};\r\n\r\nconst UserDetailsStep = props => {\r\n const {\r\n onSubmitEnd,\r\n connectedUserProfile,\r\n variant,\r\n setContactCreated,\r\n setActiveListOfSteps,\r\n contactCreated,\r\n hasReadUserRolesPermission,\r\n hasWriteUserRolesPermission,\r\n hasWriteUserAuthorizationPermission,\r\n hasReadUserAuthorizationNaPermission,\r\n activeListOfSteps,\r\n shouldQuitRef,\r\n handleClose,\r\n setIsSpinnerOnNextButton,\r\n setIsSpinnerOnSaveButton,\r\n userSet,\r\n setLeavingPromptListOfSteps,\r\n leavingPromptListOfSteps\r\n } = props;\r\n const { contactContext, setContactContext } = useContext(\r\n CreationContactContext\r\n );\r\n const notifyServerError = useNotifyServerError();\r\n const classes = useStyles();\r\n const [isDisable, setIsDisable] = useState(false);\r\n const notify = useNotify();\r\n const formStateRef = useRef({});\r\n\r\n // Define the choices in the select input that the connected user will see according to his own userType.\r\n const userTypeChoices = useMemo(() => {\r\n if (isEmpty(contactCreated)) {\r\n if (connectedUserProfile.userType === USERTYPE.superAdmin) {\r\n return userTypeSA;\r\n } else if (connectedUserProfile.userType === USERTYPE.fundAdmin) {\r\n return userType;\r\n } else {\r\n return userTypeForIA;\r\n }\r\n } else {\r\n if (contactCreated.userType === USERTYPE.superAdmin) {\r\n setIsDisable(true);\r\n return userTypeSA;\r\n } else if (contactCreated.userType === USERTYPE.fundAdmin) {\r\n setIsDisable(true);\r\n return userType;\r\n } else if (contactCreated.userType === USERTYPE.investorAdmin) {\r\n setIsDisable(true);\r\n return userTypeForIA;\r\n } else {\r\n return userTypeForIA;\r\n }\r\n }\r\n }, [connectedUserProfile, contactCreated]);\r\n\r\n const initialFormValues = {\r\n userType: isEmpty(contactCreated)\r\n ? USERTYPE.regularContact\r\n : contactCreated.userType,\r\n salutationName: isEmpty(contactCreated)\r\n ? ''\r\n : contactCreated.salutationName,\r\n firstName: isEmpty(contactCreated) ? '' : contactCreated.firstName,\r\n lastName: isEmpty(contactCreated) ? '' : contactCreated.lastName,\r\n company: isEmpty(contactCreated) ? '' : contactCreated.company,\r\n email: isEmpty(contactCreated) ? '' : contactCreated.email,\r\n receiveDailySummary: isEmpty(contactCreated)\r\n ? false\r\n : contactCreated.receiveDailySummary\r\n };\r\n\r\n const onSubmit = values => {\r\n const pristine = formStateRef.current.pristine;\r\n\r\n // If there are ccEmailAddresses in the form values, we store them in one array.\r\n let ccEmailAddresses = [] || null;\r\n for (const [key, value] of Object.entries(values)) {\r\n if (/^ccField/.test(key)) {\r\n ccEmailAddresses.push(value);\r\n }\r\n }\r\n\r\n if (!isEmpty(contactCreated)) {\r\n ccEmailAddresses.push(...contactCreated.ccEmailAddresses);\r\n }\r\n\r\n // We build the payload based on the form values and some default values expected on a contact creation\r\n // isEmpty(ccEmailAddresses) ? null : ccEmailAddresses\r\n const payload = {\r\n status: 'INVITED',\r\n emailOptOut: false,\r\n syncToExternalSource: false,\r\n userType: values.userType,\r\n salutationName: values.salutationName,\r\n firstName: values.firstName,\r\n lastName: values.lastName,\r\n company: values.company,\r\n email: values.email,\r\n ccEmailAddresses: ccEmailAddresses,\r\n receiveDailySummary: values.receiveDailySummary\r\n };\r\n\r\n // If it's the first submission, we make a POST request.\r\n if (!pristine && isEmpty(contactCreated)) {\r\n dataProvider(CREATE, 'users', { data: payload })\r\n .then(res => {\r\n if (!isEmpty(res)) {\r\n setContactCreated(res.data);\r\n userSet.current = res.data;\r\n const updatedListOfStep = leavingPromptListOfSteps.map(step => {\r\n if (step.name === STEP.contactDetails) {\r\n return { ...step, completed: true };\r\n }\r\n return step;\r\n });\r\n setLeavingPromptListOfSteps(updatedListOfStep);\r\n }\r\n })\r\n .then(() => {\r\n if (shouldQuitRef.current === true) {\r\n handleClose();\r\n notify('ra.notification.created_contact_successful');\r\n } else {\r\n onSubmitEnd();\r\n }\r\n })\r\n .finally(() => {\r\n shouldQuitRef.current = false;\r\n setIsSpinnerOnNextButton(false);\r\n setIsSpinnerOnSaveButton(false);\r\n })\r\n .catch(e => notifyServerError(e, undefined));\r\n }\r\n // If the form values have been changed and the contact has already been created then it's an update.\r\n if (!pristine && !isEmpty(contactCreated)) {\r\n const contactId = contactCreated.id;\r\n UserApi.updateUser(contactId, payload)\r\n .then(res => {\r\n if (!isEmpty(res)) {\r\n setContactCreated({ ...res, id: contactCreated.userId });\r\n userSet.current = { ...res, id: contactCreated.userId };\r\n }\r\n })\r\n .then(() => {\r\n if (shouldQuitRef.current === true) {\r\n handleClose();\r\n } else {\r\n onSubmitEnd();\r\n }\r\n })\r\n .finally(() => {\r\n setIsSpinnerOnNextButton(false);\r\n setIsSpinnerOnSaveButton(false);\r\n })\r\n .catch(e => notifyServerError(e, undefined));\r\n }\r\n\r\n // If the contact has already been created and nothing has been changed in the form, we move to next step.\r\n if (pristine && !isEmpty(contactCreated)) {\r\n onSubmitEnd();\r\n }\r\n };\r\n\r\n const formRef = useRef(\r\n createForm({\r\n onSubmit: onSubmit,\r\n initialValues: initialFormValues\r\n })\r\n );\r\n\r\n const handleChangeSelectInput = userTypeSelected => {\r\n if (\r\n userTypeSelected === USERTYPE.investorAdmin ||\r\n userTypeSelected === USERTYPE.fundAdmin ||\r\n userTypeSelected === USERTYPE.regularContact\r\n ) {\r\n if (\r\n hasWriteUserAuthorizationPermission &&\r\n hasReadUserAuthorizationNaPermission\r\n ) {\r\n if (\r\n !activeListOfSteps.some(\r\n step => step.name === STEP.selectPermissionGroups\r\n ) &&\r\n !activeListOfSteps.some(\r\n step => step.name === STEP.assignPermissionGroups\r\n )\r\n ) {\r\n setActiveListOfSteps(currentList =>\r\n [\r\n ...currentList,\r\n {\r\n name: STEP.selectPermissionGroups,\r\n label: 'Permission Groups - Select',\r\n description: null,\r\n component: SelectPermissionGroupsStep,\r\n stepNo: 2\r\n },\r\n {\r\n name: STEP.assignPermissionGroups,\r\n label: 'Permission Groups - Assign',\r\n description: [\r\n 'Select permission groups in the matrix below.',\r\n 'Below are assigned permissions of the selected contact. Select which ones you want to import.'\r\n ],\r\n component: AssignPermissionGroupsStep,\r\n stepNo: 3\r\n }\r\n ].sort((a, b) => (a.stepNo > b.stepNo ? 1 : -1))\r\n );\r\n }\r\n }\r\n if (\r\n hasReadUserRolesPermission &&\r\n hasWriteUserRolesPermission &&\r\n (userTypeSelected === USERTYPE.investorAdmin ||\r\n userTypeSelected === USERTYPE.fundAdmin)\r\n ) {\r\n if (!activeListOfSteps.some(step => step.name === STEP.accessRoles)) {\r\n setActiveListOfSteps(currentList =>\r\n [\r\n ...currentList,\r\n {\r\n name: STEP.accessRoles,\r\n label: 'Access Roles',\r\n description:\r\n 'Select Access Roles from the list below to assign them to the Contact.',\r\n component: AccessRolesStep,\r\n stepNo: 4\r\n }\r\n ].sort((a, b) => (a.stepNo > b.stepNo ? 1 : -1))\r\n );\r\n }\r\n } else if (userTypeSelected === USERTYPE.regularContact) {\r\n setActiveListOfSteps(currentList =>\r\n currentList.filter(step => step.name !== STEP.accessRoles)\r\n );\r\n }\r\n } else {\r\n if (\r\n activeListOfSteps.some(\r\n step => step.name === STEP.selectPermissionGroups\r\n ) &&\r\n activeListOfSteps.some(\r\n step => step.name === STEP.assignPermissionGroups\r\n )\r\n ) {\r\n if (activeListOfSteps.some(step => step.name === STEP.accessRoles)) {\r\n setActiveListOfSteps(currentList =>\r\n currentList.filter(\r\n step =>\r\n step.name !== STEP.selectPermissionGroups &&\r\n step.name !== STEP.assignPermissionGroups &&\r\n step.name !== STEP.accessRoles\r\n )\r\n );\r\n } else {\r\n setActiveListOfSteps(currentList =>\r\n currentList.filter(\r\n step =>\r\n step.name !== STEP.selectPermissionGroups &&\r\n step.name !== STEP.assignPermissionGroups\r\n )\r\n );\r\n }\r\n } else {\r\n setActiveListOfSteps(currentList =>\r\n currentList.filter(step => step.name !== STEP.accessRoles)\r\n );\r\n }\r\n }\r\n };\r\n\r\n function required(value) {\r\n return value ? undefined : 'Required';\r\n }\r\n\r\n const composeValidators = (...validators) => (value, values, fieldState) =>\r\n validators.reduce(\r\n (error, validator) => error || validator(value, values, fieldState),\r\n undefined\r\n );\r\n\r\n const previousActiveField = useRef();\r\n\r\n const handleAddCcField = () =>\r\n formRef.current.change(`ccField-${Date.now()}`, '');\r\n const handleDeleteCcField = ccEmailKey =>\r\n formRef.current.change(ccEmailKey, undefined);\r\n\r\n return (\r\n {\r\n changeValue(state, fieldName, n => n);\r\n });\r\n }\r\n }}\r\n >\r\n {({ handleSubmit, submitting, values }) => (\r\n
    \r\n {\r\n // By default, all the fields are not validated \"onBlur\", but we want one of them to be validated that way.\r\n // We have a reference to store the previous state of the field we want to validate on Blur (\"email\")\r\n // If the previous active field was email but the new one is not, we trigger the validation on the email field.\r\n // The FormSpy component will listen to any \"active\" event being made on the form.\r\n }\r\n \r\n {({ form }) => {\r\n if (\r\n previousActiveField.current === 'email' &&\r\n !form.getFieldState('email')?.active\r\n ) {\r\n form.mutators.triggerValidation(`email`);\r\n }\r\n\r\n previousActiveField.current = form.getFieldState('email')?.active\r\n ? 'email'\r\n : null;\r\n return null;\r\n }}\r\n \r\n {\r\n handleChangeSelectInput(formValues.userType);\r\n }}\r\n />\r\n {\r\n setContactContext({\r\n ...contactContext,\r\n detailsFormState: { pristine, valid, isSubmitting }\r\n });\r\n formStateRef.current = { pristine };\r\n }}\r\n />\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n checkIfEmailIsValidAndExists(\r\n value,\r\n connectedUserProfile,\r\n fieldState\r\n )\r\n )\r\n }}\r\n disabled={submitting}\r\n required\r\n />\r\n \r\n {Object.keys(values)\r\n .filter(key => /^ccField/.test(key))\r\n .map((ccEmailKey, index) => (\r\n \r\n \r\n handleDeleteCcField(ccEmailKey)}\r\n >\r\n \r\n \r\n \r\n ))}\r\n\r\n }\r\n variant=\"text\"\r\n onClick={handleAddCcField}\r\n >\r\n Add CC Email\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default UserDetailsStep;\r\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport { Button, Grid, makeStyles } from '@material-ui/core';\r\nimport MailIcon from '@material-ui/icons/Mail';\r\nimport TenantConfigurationApi from '../../../core/apis/TenantConfigurationApi';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport UserApi from '../../../core/apis/UserApi';\r\nimport { useNotify } from 'react-admin';\r\nimport UserEmailDialog from '../UserEmailDialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\n\r\nconst useStyles = makeStyles({\r\n welcomeEmailDivStyle: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n paddingBottom: '20px'\r\n },\r\n welcomeEmailIcon: {\r\n color: '#2962FF'\r\n },\r\n welcomeEmailIconDisabled: {\r\n color: '#00000061'\r\n },\r\n labelStyle: {\r\n color: '#2962FF',\r\n marginLeft: '9px',\r\n cursor: 'pointer',\r\n paddingBottom: '2px'\r\n },\r\n labelStyleDisabled: {\r\n color: '#00000061',\r\n marginLeft: '9px',\r\n paddingBottom: '2px'\r\n },\r\n composeEmailStyle: {\r\n border: 'solid 1px rgba(0, 0, 0, 0.12)',\r\n marginTop: '18px'\r\n }\r\n});\r\n\r\nconst EmailNotificationsStep = props => {\r\n const { permissions = [], contactCreated, connectedUserProfile } = props;\r\n const notify = useNotify();\r\n const classes = useStyles();\r\n const [welcomeEmailValue, setWelcomeEmailValue] = useState('');\r\n const [openEmailModal, setOpenEmailModal] = useState(false);\r\n const isMupChild = sessionStorage.getItem('isMupChild') === 'true';\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const [hasComposeEmailPermission] = useMemo(\r\n () => [permissions.includes('AUTH_COMPOSE_EMAIL')],\r\n [permissions]\r\n );\r\n\r\n const handleSendWelcomeEmailClick = async () => {\r\n if (isMupChild) {\r\n return;\r\n }\r\n try {\r\n await UserApi.sendWelcomeEmail(contactCreated.userId);\r\n notify('Welcome email sent');\r\n } catch (error) {\r\n notifyServerError(error, undefined);\r\n }\r\n };\r\n\r\n const fetchWelcomeEmailValue = useCallback(() => {\r\n TenantConfigurationApi.get('Welcome-Email-TemplateId')\r\n .then(response => setWelcomeEmailValue(response.pageData[0].value))\r\n .catch(error => notifyServerError(error, undefined));\r\n }, [notifyServerError]);\r\n\r\n useEffect(() => {\r\n fetchWelcomeEmailValue();\r\n }, [fetchWelcomeEmailValue]);\r\n\r\n return (\r\n \r\n \r\n {hasComposeEmailPermission && welcomeEmailValue !== '' && (\r\n handleSendWelcomeEmailClick()}\r\n className={classes.welcomeEmailDivStyle}\r\n >\r\n \r\n \r\n Send Welcome Email\r\n \r\n \r\n )}\r\n \r\n \r\n {hasComposeEmailPermission && (\r\n setOpenEmailModal(true)}\r\n className={classes.composeEmailStyle}\r\n disableFocusRipple\r\n >\r\n Compose Email\r\n \r\n )}\r\n \r\n \r\n setOpenEmailModal(false)}\r\n cc={contactCreated.ccEmailAddresses}\r\n userProfile={connectedUserProfile}\r\n record={contactCreated}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default EmailNotificationsStep;\r\n","import React, { useCallback, useState } from 'react';\r\nimport { Button, CircularProgress, Grid, Typography } from '@material-ui/core';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitleWithCloseButton from '../DialogTitleWithCloseButton';\r\nimport { isEmpty } from 'lodash';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport Confirm from '../forked/layout/Confirm';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport { useStyles } from '../../../features/users/creationsteps/StyleStep';\r\n\r\nconst WizardStepper = props => {\r\n const {\r\n hasRadioButtons,\r\n displayRadiosButtons,\r\n handleClose,\r\n getActiveStep,\r\n handleBackForm,\r\n handleNextForm,\r\n resource,\r\n resourceCreated,\r\n displayResourceCreatedInfo,\r\n shouldDisplayResourceCreatedInfo,\r\n getDescriptionContainerStyle,\r\n isBackDisabled,\r\n isNextAvailable,\r\n activeListOfSteps,\r\n activeStep,\r\n isSpinnerOnNextButton,\r\n isSpinnerOnSaveButton,\r\n isSaveAndCloseStep,\r\n providerFormContext,\r\n customContext,\r\n generateMessageOnLeave,\r\n isFirstStepPristine,\r\n shouldHideBackButton\r\n } = props;\r\n\r\n const classes = useStyles();\r\n\r\n const [confirmDialogIsOpen, setConfirmDialogIsOpen] = useState(false);\r\n\r\n const isLastStep = useCallback(() => {\r\n return !!(\r\n activeListOfSteps.length > 0 &&\r\n activeListOfSteps.length === activeStep + 1\r\n );\r\n }, [activeStep, activeListOfSteps]);\r\n\r\n const getSubmitButtonInfo = useCallback(\r\n currentStep => {\r\n if (!isEmpty(activeListOfSteps)) {\r\n if (isEmpty(resourceCreated) && currentStep === 0) {\r\n return isLastStep() ? 'Create & Close' : 'Create & Continue';\r\n }\r\n\r\n if (!isEmpty(resourceCreated) && currentStep === 0) {\r\n return isFirstStepPristine ? 'Next' : 'Edit & Continue';\r\n }\r\n\r\n return isLastStep() ? 'Save & Close' : 'Next';\r\n }\r\n },\r\n [resourceCreated, activeListOfSteps, isLastStep, isFirstStepPristine]\r\n );\r\n\r\n const displayBackButton = useCallback(() => {\r\n return !!(\r\n activeListOfSteps.length > 1 &&\r\n activeStep > 0 &&\r\n !shouldHideBackButton\r\n );\r\n }, [activeListOfSteps, activeStep, shouldHideBackButton]);\r\n\r\n const handleCloseClick = () => setConfirmDialogIsOpen(true);\r\n const handleConfirmDialogClose = () => setConfirmDialogIsOpen(false);\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n {!isEmpty(resourceCreated) && shouldDisplayResourceCreatedInfo\r\n ? displayResourceCreatedInfo()\r\n : `Create New ${resource}`}\r\n \r\n
    \r\n \r\n {activeListOfSteps.map(step => (\r\n \r\n {step.label}\r\n \r\n ))}\r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {activeListOfSteps[activeStep].label}\r\n \r\n {hasRadioButtons ? (\r\n displayRadiosButtons()\r\n ) : (\r\n \r\n {activeListOfSteps[activeStep].description}\r\n \r\n )}\r\n \r\n \r\n \r\n {getActiveStep()}\r\n \r\n
    \r\n \r\n
    \r\n \r\n {displayBackButton() && (\r\n
    \r\n \r\n Back\r\n \r\n
    \r\n )}\r\n {activeStep === 0 && (\r\n \r\n Cancel\r\n \r\n )}\r\n {isSaveAndCloseStep && (\r\n
    \r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n disabled={\r\n !isNextAvailable ||\r\n isSpinnerOnSaveButton ||\r\n isSpinnerOnNextButton\r\n }\r\n buttonkey={'saveAndClose'}\r\n data-testid=\"saveButton\"\r\n >\r\n Save & close\r\n \r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n disabled={\r\n !isNextAvailable ||\r\n isSpinnerOnSaveButton ||\r\n isSpinnerOnNextButton\r\n }\r\n buttonkey={'next'}\r\n data-testid=\"nextButton\"\r\n >\r\n Next\r\n \r\n
    \r\n )}\r\n {!isSaveAndCloseStep && (\r\n : <>\r\n }\r\n color=\"primary\"\r\n variant=\"contained\"\r\n disabled={!isNextAvailable || isSpinnerOnNextButton}\r\n buttonkey={isLastStep() ? 'saveAndClose' : 'next'}\r\n className={\r\n isLastStep() || shouldHideBackButton\r\n ? classes.paddingBlockButton\r\n : `${classes.button} ${classes.primaryButton}`\r\n }\r\n >\r\n {getSubmitButtonInfo(activeStep)}\r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default WizardStepper;\r\n","import { isEmpty } from 'lodash';\r\nimport React from 'react';\r\n\r\nexport const GenerateMessageOnLeave = ({\r\n listOfSteps,\r\n resource,\r\n resourceName\r\n}) => {\r\n const stepsForgotten = listOfSteps.filter(step => !step.completed);\r\n const isResourceCreated = listOfSteps[0].completed;\r\n\r\n function templateMessage(stepForgotten) {\r\n let lastElement = '';\r\n if (stepForgotten.length > 1) {\r\n lastElement = 'and ' + stepForgotten.pop();\r\n }\r\n\r\n return (\r\n <>\r\n

    \r\n You are about to quit the creation process and return to\r\n {isResourceCreated ? ` ${resource} details ` : ` ${resource} list `}\r\n screen.\r\n
    \r\n Your progress on this step will not be saved.\r\n

    \r\n {!isEmpty(stepForgotten) && isResourceCreated && (\r\n

    \r\n {resourceName} \r\n has been created without {stepForgotten.join(', ')}\r\n {lastElement ? ` ${lastElement}` : ''}.\r\n

    \r\n )}\r\n \r\n );\r\n }\r\n\r\n const stepsName = stepsForgotten.map(item => item.leavingPromptLabel);\r\n return templateMessage(stepsName);\r\n};\r\n","import React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState\r\n} from 'react';\r\nimport { useNotify, useQueryWithStore, useRedirect } from 'react-admin';\r\nimport { useProfile } from '../../core/hooks/UseProfile';\r\nimport {\r\n CircularProgress,\r\n FormControlLabel,\r\n Radio,\r\n RadioGroup\r\n} from '@material-ui/core';\r\nimport { CreationContactContext } from './creationsteps/CreationContactContext';\r\nimport { isEmpty } from 'lodash';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport UserApi from '../../core/apis/UserApi';\r\nimport { useStyles } from './creationsteps/StyleStep';\r\nimport UserDetailsStep from './creationsteps/UserDetailsStep';\r\nimport AssignPermissionGroupsStep from './creationsteps/AssignPermissionGroupsStep';\r\nimport SelectPermissionGroupsStep from './creationsteps/SelectPermissionGroupsStep';\r\nimport EmailNotificationsStep from './creationsteps/EmailNotificationsStep';\r\nimport WizardStepper from '../../core/components/wizardStepper/WizardStepper';\r\nimport { GenerateMessageOnLeave } from '../../core/components/wizardStepper/GenerateMessageOnLeave';\r\n\r\nexport const STEP = {\r\n contactDetails: 'contactDetails',\r\n selectPermissionGroups: 'selectPermissionGroups',\r\n assignPermissionGroups: 'assignPermissionGroups',\r\n accessRoles: 'accessRoles',\r\n emailNotifications: 'emailNotifications'\r\n};\r\nconst UserCreate = props => {\r\n const { permissions = [] } = props;\r\n const classes = useStyles();\r\n const creation = true;\r\n const { profile, loading } = useProfile();\r\n const notifyServerError = useNotifyServerError();\r\n const notify = useNotify();\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [contactContext, setContactContext] = useState({});\r\n const [contactCreated, setContactCreated] = useState({});\r\n const userSet = useRef(null);\r\n const [isNextAvailable, setIsNextAvailable] = useState(true);\r\n const [isBackDisabled, setIsBackDisabled] = useState(false);\r\n const [isSaveAndCloseStep, setIsSaveAndCloseStep] = useState(false);\r\n\r\n const [confirmWarningIsOpen, setConfirmWarningIsOpen] = useState(false);\r\n const [selectedContactForImport, setSelectedContactForImport] = useState(\r\n null\r\n );\r\n const [activeListOfSteps, setActiveListOfSteps] = useState([]);\r\n const [isDefaultListOfStepsSet, setIsDefaultListOfStepsSet] = useState(false);\r\n const redirect = useRedirect();\r\n const [assignedPermissionGroups, setAssignedPermissionGroups] = useState([]);\r\n const [selectedAssignmentMode, setSelectedAssignmentMode] = useState(\r\n 'manual'\r\n );\r\n const [selectedPermissionGroups, setSelectedPermissionGroups] = useState({\r\n funds: [],\r\n investors: []\r\n });\r\n const [accessRoles, setAccessRoles] = useState([]);\r\n const [selectedAccessRoles, setSelectedAccessRoles] = useState({ roles: [] });\r\n const authorizationsGridToDeleteRef = useRef([]);\r\n const [permissionGroupsUploaded, setPermissionGroupsUploaded] = useState([]);\r\n const [isNewImportToDo, setIsNewImportToDo] = useState(false);\r\n const shouldQuitRef = useRef(false);\r\n const [submitButtonClicked, setSubmitButtonClicked] = useState(null);\r\n const [isSpinnerOnNextButton, setIsSpinnerOnNextButton] = useState(false);\r\n const [isSpinnerOnSaveButton, setIsSpinnerOnSaveButton] = useState(false);\r\n const [isFirstStepPristine, setIsFirstStepPristine] = useState(true);\r\n const providerFormContext = useMemo(\r\n () => ({ contactContext, setContactContext }),\r\n [contactContext, setContactContext]\r\n );\r\n const [permissionsStaging, setPermissionsStaging] = useState([]);\r\n const [leavingPromptListOfSteps, setLeavingPromptListOfSteps] = useState([]);\r\n\r\n const [\r\n hasEditUserPermission,\r\n hasWriteUserAuthorizationPermission,\r\n hasReadUserAuthorizationNaPermission,\r\n hasReadUserRolesPermission,\r\n hasWriteUserRolesPermission,\r\n hasComposeEmailPermission\r\n ] = useMemo(\r\n () => [\r\n permissions.includes('AUTH_EDIT_USER'),\r\n permissions.includes('AUTH_WRITE_USER_AUTHORIZATION'),\r\n permissions.includes('AUTH_READ_USER_AUTHORIZATION_NA'),\r\n permissions.includes('AUTH_READ_USER_ROLE'),\r\n permissions.includes('AUTH_WRITE_USER_ROLE'),\r\n permissions.includes('AUTH_COMPOSE_EMAIL')\r\n ],\r\n [permissions]\r\n );\r\n\r\n const isLastStep = useCallback(() => {\r\n return !!(\r\n !isEmpty(activeListOfSteps) && activeListOfSteps.length === activeStep + 1\r\n );\r\n }, [activeStep, activeListOfSteps]);\r\n\r\n const isItSaveAndCloseStep = useCallback(() => {\r\n if (!isEmpty(activeListOfSteps)) {\r\n return !!(\r\n (activeListOfSteps.length === 2 &&\r\n activeStep === 0 &&\r\n activeListOfSteps.find(\r\n step => step.name === STEP.emailNotifications\r\n )) ||\r\n (activeListOfSteps[activeStep].name === STEP.assignPermissionGroups &&\r\n !isLastStep()) ||\r\n (activeListOfSteps[activeStep].name === STEP.accessRoles &&\r\n !isLastStep())\r\n );\r\n }\r\n }, [activeListOfSteps, activeStep, isLastStep]);\r\n\r\n useEffect(() => {\r\n if (activeStep === 0 && contactContext.detailsFormState) {\r\n const {\r\n valid: isDetailsFormValid,\r\n submitting: isDetailsFormSubmitting,\r\n pristine: isDetailsFormPristine\r\n } = contactContext.detailsFormState;\r\n\r\n setIsFirstStepPristine(isDetailsFormPristine);\r\n setIsNextAvailable(isDetailsFormValid && !isDetailsFormSubmitting);\r\n }\r\n\r\n if (\r\n !isEmpty(activeListOfSteps) &&\r\n activeListOfSteps[activeStep].name === STEP.selectPermissionGroups\r\n ) {\r\n // Disable/Enable button on the \"Permission Groups - Select\" step\r\n isEmpty(selectedPermissionGroups.funds) &&\r\n (isEmpty(selectedPermissionGroups.investors) ||\r\n selectedPermissionGroups.investors.length > 50)\r\n ? setIsNextAvailable(false)\r\n : setIsNextAvailable(true);\r\n\r\n if (selectedAssignmentMode === 'import') {\r\n isEmpty(selectedContactForImport)\r\n ? setIsNextAvailable(false)\r\n : setIsNextAvailable(true);\r\n }\r\n }\r\n\r\n if (\r\n !isEmpty(activeListOfSteps) &&\r\n activeListOfSteps[activeStep].name === STEP.assignPermissionGroups\r\n ) {\r\n permissionsStaging.length > 0\r\n ? setIsNextAvailable(true)\r\n : setIsNextAvailable(false);\r\n }\r\n\r\n if (\r\n !isEmpty(activeListOfSteps) &&\r\n activeListOfSteps[activeStep].name === STEP.accessRoles\r\n ) {\r\n isEmpty(selectedAccessRoles.roles)\r\n ? setIsNextAvailable(false)\r\n : setIsNextAvailable(true);\r\n }\r\n\r\n if (\r\n !isEmpty(activeListOfSteps) &&\r\n activeListOfSteps[activeStep].name === STEP.emailNotifications\r\n ) {\r\n setIsNextAvailable(true);\r\n }\r\n\r\n if (activeStep === 1 && !hasEditUserPermission) {\r\n setIsBackDisabled(true);\r\n } else {\r\n setIsBackDisabled(false);\r\n }\r\n\r\n isItSaveAndCloseStep()\r\n ? setIsSaveAndCloseStep(true)\r\n : setIsSaveAndCloseStep(false);\r\n }, [\r\n isItSaveAndCloseStep,\r\n hasEditUserPermission,\r\n selectedPermissionGroups,\r\n selectedAccessRoles,\r\n assignedPermissionGroups,\r\n activeStep,\r\n accessRoles,\r\n activeListOfSteps,\r\n selectedContactForImport,\r\n selectedAssignmentMode,\r\n contactContext,\r\n permissionsStaging.length\r\n ]);\r\n\r\n // Preload fund list. It will be needed by some steps\r\n useQueryWithStore({\r\n type: 'GET_LIST',\r\n resource: 'funds',\r\n payload: {}\r\n });\r\n\r\n const handleClose = useCallback(() => {\r\n userSet.current !== null\r\n ? redirect(`/users/${userSet.current.userId}`)\r\n : redirect('list', '/users');\r\n }, [redirect]);\r\n\r\n const handleConfirmWarningClose = () => setConfirmWarningIsOpen(false);\r\n\r\n const setDefaultListOfSteps = useCallback(() => {\r\n let stepsByDefault = [];\r\n let stepsForLeavingPrompt = [];\r\n stepsByDefault.push({\r\n name: STEP.contactDetails,\r\n label: 'Contact Details',\r\n description:\r\n 'Please fill in the fields to create Contact. All other details, such as addresses, phone numbers, etc, you can edit later.',\r\n component: UserDetailsStep,\r\n stepNo: 1\r\n });\r\n stepsForLeavingPrompt.push({\r\n name: STEP.contactDetails,\r\n leavingPromptLabel: 'Contact Details',\r\n completed: false\r\n });\r\n\r\n if (\r\n hasWriteUserAuthorizationPermission &&\r\n hasReadUserAuthorizationNaPermission\r\n ) {\r\n stepsByDefault.push(\r\n {\r\n name: STEP.selectPermissionGroups,\r\n label: 'Permission Groups - Select',\r\n description: null,\r\n component: SelectPermissionGroupsStep,\r\n stepNo: 2\r\n },\r\n {\r\n name: STEP.assignPermissionGroups,\r\n label: 'Permission Groups - Assign',\r\n description: isNewImportToDo\r\n ? 'Below are assigned permissions of the selected contact. Select which ones you want to import.'\r\n : 'Select permission groups in the matrix below. ',\r\n component: AssignPermissionGroupsStep,\r\n stepNo: 3\r\n }\r\n );\r\n stepsForLeavingPrompt.push({\r\n name: STEP.assignPermissionGroups,\r\n leavingPromptLabel: 'Access Rights',\r\n completed: false\r\n });\r\n }\r\n\r\n if (hasComposeEmailPermission) {\r\n stepsByDefault.push({\r\n name: STEP.emailNotifications,\r\n label: 'Email Notifications',\r\n description: null,\r\n component: EmailNotificationsStep,\r\n stepNo: 5\r\n });\r\n stepsForLeavingPrompt.push({\r\n name: STEP.emailNotifications,\r\n leavingPromptLabel: 'Email Notifications',\r\n completed: false\r\n });\r\n }\r\n return [stepsByDefault, stepsForLeavingPrompt];\r\n }, [\r\n hasWriteUserAuthorizationPermission,\r\n hasReadUserAuthorizationNaPermission,\r\n hasComposeEmailPermission,\r\n isNewImportToDo\r\n ]);\r\n\r\n useEffect(() => {\r\n const [stepsByDefaults, stepsForLeavingPrompt] = setDefaultListOfSteps();\r\n setLeavingPromptListOfSteps(stepsForLeavingPrompt);\r\n if (!isDefaultListOfStepsSet) {\r\n setActiveListOfSteps(stepsByDefaults);\r\n setIsDefaultListOfStepsSet(true);\r\n }\r\n }, [\r\n setActiveListOfSteps,\r\n isDefaultListOfStepsSet,\r\n setIsDefaultListOfStepsSet,\r\n setDefaultListOfSteps\r\n ]);\r\n\r\n const getActiveStep = () => {\r\n const step = activeListOfSteps[activeStep];\r\n return (\r\n \r\n );\r\n };\r\n\r\n const onSubmitEnd = () => {\r\n activeListOfSteps.length === activeStep + 1\r\n ? handleClose()\r\n : setActiveStep(activeStep + 1);\r\n setIsSpinnerOnNextButton(false);\r\n setIsSpinnerOnSaveButton(false);\r\n setConfirmWarningIsOpen(false);\r\n };\r\n\r\n const handleBackForm = () => {\r\n if (activeListOfSteps[activeStep].name === STEP.assignPermissionGroups) {\r\n authorizationsGridToDeleteRef.current = [];\r\n setPermissionsStaging([]);\r\n setSelectedAssignmentMode('manual');\r\n }\r\n\r\n setContactContext(currentContext => ({\r\n ...currentContext,\r\n createContactForm: undefined,\r\n currentForm: undefined\r\n }));\r\n setIsNewImportToDo(false);\r\n setActiveStep(activeStep - 1);\r\n };\r\n\r\n const handleNextForm = async e => {\r\n const buttonClicked = e.currentTarget.getAttribute('buttonkey');\r\n setSubmitButtonClicked(buttonClicked);\r\n\r\n if (activeListOfSteps[activeStep].name !== STEP.contactDetails) {\r\n buttonClicked === 'saveAndClose'\r\n ? setIsSpinnerOnSaveButton(true)\r\n : setIsSpinnerOnNextButton(true);\r\n }\r\n\r\n if (activeListOfSteps[activeStep].name === STEP.emailNotifications) {\r\n onSubmitEnd();\r\n notify('ra.notification.created_contact_successful');\r\n return;\r\n }\r\n\r\n if (activeListOfSteps[activeStep].name === STEP.assignPermissionGroups) {\r\n const permissionToUpload = permissionsStaging.map(item => ({\r\n userId: contactCreated.id,\r\n fundId: item.fundId,\r\n investorId: item.investorId,\r\n groupId: item.groupId\r\n }));\r\n const permissionAlreadyUploaded = permissionGroupsUploaded.map(item => ({\r\n userId: contactCreated.id,\r\n fundId: item.fundId,\r\n investorId: item.investorId,\r\n groupId: item.groupId\r\n }));\r\n\r\n function areObjectsEqual(obj1, obj2) {\r\n return (\r\n obj1.userId === obj2.userId &&\r\n obj1.fundId === obj2.fundId &&\r\n obj1.investorId === obj2.investorId &&\r\n obj1.groupId === obj2.groupId\r\n );\r\n }\r\n\r\n function hasObject(arr, obj) {\r\n return arr.some(item => areObjectsEqual(item, obj));\r\n }\r\n\r\n function getNewPermissionsToUpload(\r\n permissionsAlreadyUploaded,\r\n permissionsToUpload\r\n ) {\r\n return permissionsToUpload.filter(\r\n obj => !hasObject(permissionsAlreadyUploaded, obj)\r\n );\r\n }\r\n\r\n const newPermissionToUpload = getNewPermissionsToUpload(\r\n permissionAlreadyUploaded,\r\n permissionToUpload\r\n );\r\n\r\n try {\r\n if (authorizationsGridToDeleteRef.current.length > 0) {\r\n await UserApi.deleteUserauthorizations(\r\n authorizationsGridToDeleteRef.current\r\n );\r\n authorizationsGridToDeleteRef.current = [];\r\n }\r\n\r\n if (newPermissionToUpload.length > 0) {\r\n const response = await UserApi.createUserauthorizations(\r\n newPermissionToUpload\r\n );\r\n setPermissionGroupsUploaded(\r\n response.map(authorization => ({\r\n userId: contactCreated.id,\r\n fundId: authorization.fundId,\r\n investorId: authorization.investorId,\r\n groupId: authorization.groupId,\r\n id: `${contactCreated.userId}:${authorization.investorId}:${authorization.fundId}:${authorization.groupId}`\r\n }))\r\n );\r\n }\r\n const updatedListOfStep = leavingPromptListOfSteps.map(step => {\r\n if (step.name === STEP.assignPermissionGroups) {\r\n return { ...step, completed: true };\r\n }\r\n return step;\r\n });\r\n setLeavingPromptListOfSteps(updatedListOfStep);\r\n if (buttonClicked === 'saveAndClose') {\r\n handleClose();\r\n notify('ra.notification.created');\r\n } else {\r\n setIsNewImportToDo(false);\r\n onSubmitEnd();\r\n }\r\n } catch (error) {\r\n notifyServerError(error, undefined);\r\n }\r\n }\r\n\r\n if (activeListOfSteps[activeStep].name === STEP.accessRoles) {\r\n if (buttonClicked === 'saveAndClose') {\r\n handleClose();\r\n notify('ra.notification.created_contact_successful');\r\n } else {\r\n onSubmitEnd();\r\n }\r\n }\r\n\r\n if (activeListOfSteps[activeStep].name === STEP.contactDetails) {\r\n if (buttonClicked === 'saveAndClose') {\r\n shouldQuitRef.current = true;\r\n }\r\n document\r\n .getElementById('contactDetailsForm')\r\n .dispatchEvent(new Event('submit', { cancelable: true }));\r\n }\r\n\r\n if (activeListOfSteps[activeStep].name === STEP.selectPermissionGroups) {\r\n if (selectedAssignmentMode === 'import') {\r\n onSubmitEnd();\r\n }\r\n }\r\n\r\n contactContext.currentForm && contactContext.currentForm.submit();\r\n };\r\n\r\n // Display the information of the user created in the top left of the wizard once we reach the step 2\r\n const displayContactCreatedInfo = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n const getDescriptionContainerStyle = useCallback(\r\n (currentStep, currentListOfStep) => {\r\n if (!isEmpty(currentListOfStep)) {\r\n switch (currentListOfStep[currentStep].name) {\r\n case STEP.contactDetails:\r\n return classes.descriptionContainer_contactDetails;\r\n case STEP.accessRoles:\r\n return classes.descriptionContainer_accessRoles;\r\n default:\r\n return classes.descriptionContainer_default;\r\n }\r\n }\r\n },\r\n [\r\n classes.descriptionContainer_contactDetails,\r\n classes.descriptionContainer_accessRoles,\r\n classes.descriptionContainer_default\r\n ]\r\n );\r\n\r\n const clearStates = () => {\r\n setSelectedPermissionGroups({\r\n funds: [],\r\n investors: []\r\n });\r\n setSelectedContactForImport(null);\r\n setAssignedPermissionGroups([]);\r\n setContactContext({ permissionGroupSelect: undefined });\r\n };\r\n\r\n const handleCheckBoxChange = event => {\r\n if (event.target.value === 'import' && !isEmpty(permissionGroupsUploaded)) {\r\n return null;\r\n } else {\r\n clearStates();\r\n setIsNewImportToDo(false);\r\n setSelectedAssignmentMode(event.target.value);\r\n }\r\n };\r\n\r\n const handleImportRadioButtonClick = () => {\r\n if (!isEmpty(permissionGroupsUploaded)) {\r\n setConfirmWarningIsOpen(true);\r\n }\r\n };\r\n\r\n const displayImportPermissionRadioButton = () =>\r\n activeListOfSteps[activeStep].name === STEP.selectPermissionGroups ? (\r\n <>\r\n handleCheckBoxChange(event)}\r\n >\r\n }\r\n label=\"Manually assign permission groups\"\r\n />\r\n console.log(e)}\r\n control={}\r\n label=\"Import permission groups from existing contact\"\r\n />\r\n \r\n {/* In the permission assignment step, we display the correct description according to the selection mode selected in the previous step */}\r\n {activeListOfSteps[activeStep].description &&\r\n activeListOfSteps[activeStep].name === STEP.assignPermissionGroups &&\r\n selectedAssignmentMode === 'manual' && (\r\n \r\n {activeListOfSteps[activeStep].description[0]}\r\n \r\n )}\r\n {activeListOfSteps[activeStep].description &&\r\n activeListOfSteps[activeStep].name === STEP.assignPermissionGroups &&\r\n selectedAssignmentMode === 'import' && (\r\n \r\n {activeListOfSteps[activeStep].description[1]}\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n {activeListOfSteps[activeStep].description}\r\n \r\n );\r\n\r\n if (isEmpty(activeListOfSteps) || loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n }\r\n isFirstStepPristine={isFirstStepPristine}\r\n />\r\n );\r\n }\r\n};\r\n\r\nexport default UserCreate;\r\n","import UserList from './UserList';\r\nimport UserEdit from './UserEdit';\r\nimport UserCreate from './UserCreate';\r\nimport { UserIcon } from '../../core/themes/icons/UserIcon';\r\n\r\nexport default {\r\n list: UserList,\r\n create: UserCreate,\r\n edit: UserEdit,\r\n icon: UserIcon\r\n};\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\nimport { stringify } from '../components/forked/stringify';\r\n\r\n/**\r\n * Fund API\r\n */\r\nclass FundApi extends ApiBase {\r\n /**\r\n * Check if fund ID already exists\r\n * @param {*} fundId\r\n */\r\n async checkIdExists(fundId) {\r\n const request = {\r\n url: `${this.API_URL}/fund?id=${fundId}`,\r\n headers: this.getHeaders(),\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return status === 200 || status === 403 || status === 404;\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200 || response.status === 403) {\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * update funds\r\n * @param {*} funds\r\n */\r\n async update(funds) {\r\n const request = {\r\n url: `${this.API_URL}/funds`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(funds)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async validateImportFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fund/validateimport`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async importFundsFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fund/importexcel`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async downloadFundImportTemplate() {\r\n const request = {\r\n url: `${this.API_URL}/fund/import/template`,\r\n method: 'GET',\r\n headers: this.getHeaders(),\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async exportFundsExcel(fundId, fundName, fundFamilyId, fundTagId, status) {\r\n const queryParameters = stringify(\r\n {\r\n id: fundId,\r\n name: fundName,\r\n fundFamilyId: fundFamilyId,\r\n fundTagId: fundTagId,\r\n status: status\r\n },\r\n {\r\n arrayFormat: 'open-ic'\r\n }\r\n );\r\n\r\n const request = {\r\n url: `${this.API_URL}/funds/excel/export?${queryParameters}`,\r\n method: 'GET',\r\n headers: this.getHeaders(),\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async create(payload, id) {\r\n const request = {\r\n url: `${this.API_URL}/fund?id=${id}`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async edit(payload, id) {\r\n const request = {\r\n url: `${this.API_URL}/fund?id=${id}`,\r\n method: 'PUT',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async getAll() {\r\n const request = {\r\n url: `${this.API_URL}/funds?returnFundTags=true`,\r\n method: 'GET',\r\n headers: this.getHeaders()\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new FundApi();\r\n","import React, { useState } from 'react';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport { Grid, Typography, CircularProgress, Button } from '@material-ui/core/';\r\nimport ButtonMUI from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { ExcelIcon } from '../../../core/themes/icons/ExcelIcon';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport FileInput from '../../../core/components/forked/input/FileInput';\r\nimport FileField from '../../../core/components/forked/field/FileField';\r\nimport { FormDataConsumer, refreshView, Loading } from 'react-admin';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport TabList from '@material-ui/lab/TabList';\r\nimport TabPanel from '@material-ui/lab/TabPanel';\r\nimport TabContext from '@material-ui/lab/TabContext';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport FundApi from '../../../core/apis/FundApi';\r\nimport { useNotify } from 'ra-core';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport { saveAs } from 'file-saver';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = {\r\n avatar: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\r\n height: '36px',\r\n width: '36px',\r\n color: '#757575'\r\n },\r\n errorIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'red'\r\n },\r\n warningIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'orange'\r\n },\r\n toolbarStyle: {\r\n backgroundColor: '#FFFFFF',\r\n borderBottom: '1px solid #E5E5E5',\r\n minHeight: '54px',\r\n paddingTop: '0',\r\n paddingBottom: '0'\r\n },\r\n firstButtonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px'\r\n },\r\n buttonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px',\r\n marginRight: '10px'\r\n },\r\n root: {\r\n flexGrow: 1\r\n },\r\n barTitle: {\r\n flexGrow: 1,\r\n paddingLeft: '8px'\r\n },\r\n label: {\r\n paddingRight: '0px'\r\n },\r\n horisontalRule: {\r\n height: '1px',\r\n backgroundColor: '#E0E0E0',\r\n border: 'none'\r\n },\r\n ButtonMUISpan: {\r\n paddingLeft: '4px'\r\n },\r\n excelIcon: {\r\n verticalAlign: 'middle',\r\n paddingRight: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n validateButton: {\r\n textAlign: 'center',\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)'\r\n },\r\n circularProgress: {\r\n paddingRight: '3px'\r\n },\r\n validateButtonText: {\r\n color: 'grey'\r\n },\r\n validationColumn: {\r\n color: 'red'\r\n },\r\n validationColumnWarning: {\r\n color: 'orange'\r\n },\r\n noRows: {\r\n color: 'red'\r\n },\r\n tabsStyle: {\r\n color: 'black',\r\n background: 'transparent'\r\n },\r\n tableWrapper: {\r\n maxHeight: '70vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n};\r\n\r\nconst AvatarImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ExcelIconImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ErrorImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst WarningImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst ExcelFundImportTitleBarWithDropbox = withStyles(styles)(\r\n ({\r\n classes,\r\n type,\r\n title,\r\n createUrl,\r\n secondTitle,\r\n secondCreateUrl,\r\n icon,\r\n hasExportFundExcelPermission,\r\n hasImportFundExcelPermission,\r\n hasCreatePermission,\r\n filters,\r\n ...rest\r\n }) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [importModelViewToggle, setsViewOfImport] = useState(false);\r\n const [validateButtonVisibile, setValidateButtonVisibility] = useState(\r\n false\r\n );\r\n const [submitting, setSubmitting] = useState(false);\r\n const [downloadingTemplate, setDownloadingTemplate] = useState(false);\r\n const [disableImportButton, setImportButtonDisabled] = useState(true);\r\n const [loaderVisible, setLoaderVisible] = useState(false);\r\n const [showGrid, setShowGrid] = useState(false);\r\n const [showNoDataInExcelError, setShowNoDataInExcelError] = useState(false);\r\n const [isFileFieldDisabled, setIsFileFieldDisabled] = useState(false);\r\n const [value, setValue] = useState('1');\r\n const [order, setOrder] = useState('desc');\r\n const [orderBy, setOrderBy] = useState(-1);\r\n const [response, setResponse] = useState('');\r\n const [excelPayload, setExcelPayload] = useState(null);\r\n const [hasValidationErrors, setHasValidationErrors] = useState(false);\r\n const [tab1ContainsWarning, setTab1ContainsWarning] = useState(false);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleImportClick = () => {\r\n setAnchorEl(null);\r\n setsViewOfImport(true);\r\n };\r\n\r\n const handleCloseImportClick = () => {\r\n setAnchorEl(null);\r\n cleanUpData();\r\n setsViewOfImport(false);\r\n };\r\n\r\n const columnDirectionSort = (sortColumnName, isDesc) => {\r\n return function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowNumber') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n };\r\n };\r\n\r\n const handleRequestSort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowNumber';\r\n break;\r\n case 1:\r\n sortColumnName = 'fundId';\r\n break;\r\n case 2:\r\n sortColumnName = 'fundName';\r\n break;\r\n case 3:\r\n sortColumnName = 'fundType';\r\n break;\r\n case 4:\r\n sortColumnName = 'aka';\r\n break;\r\n case 5:\r\n sortColumnName = 'startDate';\r\n break;\r\n case 6:\r\n sortColumnName = 'closingDate';\r\n break;\r\n case 7:\r\n sortColumnName = 'inceptionDate';\r\n break;\r\n case 8:\r\n sortColumnName = 'contactEmail';\r\n break;\r\n case 9:\r\n sortColumnName = 'currency';\r\n break;\r\n case 10:\r\n sortColumnName = 'alternativeCurrency';\r\n break;\r\n case 11:\r\n sortColumnName = 'fundFamily`';\r\n break;\r\n case 12:\r\n sortColumnName = 'status';\r\n break;\r\n case 13:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNumber';\r\n }\r\n\r\n var sortedTableData = response.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const cleanUpData = value => {\r\n setShowGrid(false);\r\n setTab1ContainsWarning(false);\r\n setImportButtonDisabled(true);\r\n if (value) {\r\n setValidateButtonVisibility(true);\r\n } else {\r\n setValidateButtonVisibility(false);\r\n }\r\n };\r\n\r\n function getExcelPayload(values) {\r\n const payload = new FormData();\r\n if (values.file) {\r\n payload.append('excelFile', values.file.rawFile, values.file.title);\r\n }\r\n return payload;\r\n }\r\n\r\n const handleClickValidation = async values => {\r\n const payload = getExcelPayload(values);\r\n\r\n setValidateButtonVisibility(false);\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setIsFileFieldDisabled(true);\r\n\r\n FundApi.validateImportFromExcel(payload)\r\n .then(responseData => {\r\n var arrayData = responseData;\r\n setResponse(arrayData);\r\n\r\n const validationErrors = arrayData\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n const warningMessage = arrayData\r\n .slice(0)\r\n .filter(r => r.warningMessage !== '');\r\n if (arrayData.length > 0) {\r\n const validationErrorsExist =\r\n validationErrors && validationErrors.length > 0;\r\n setHasValidationErrors(validationErrorsExist);\r\n setTab1ContainsWarning(warningMessage && warningMessage.length > 0);\r\n // couldn't use the hasValidationErrors state...\r\n setImportButtonDisabled(validationErrorsExist);\r\n setShowNoDataInExcelError(false);\r\n } else {\r\n setImportButtonDisabled(true);\r\n setShowNoDataInExcelError(true);\r\n }\r\n\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n setShowGrid(true);\r\n setExcelPayload(payload);\r\n })\r\n .catch(e => {\r\n setExcelPayload(null);\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n notify(getIcError(e), { type: 'error' });\r\n });\r\n };\r\n\r\n const handleImportFundsClick = () => {\r\n if (!excelPayload) {\r\n setImportButtonDisabled(true);\r\n return;\r\n }\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setShowGrid(false);\r\n FundApi.importFundsFromExcel(excelPayload)\r\n .then(() => {\r\n notify('ra.notification.custom_updated_message');\r\n })\r\n .catch(e => {\r\n setLoaderVisible(false);\r\n notifyServerError(e);\r\n })\r\n .finally(() => {\r\n setLoaderVisible(false);\r\n setsViewOfImport(false);\r\n handleCloseImportClick();\r\n refreshView();\r\n });\r\n };\r\n\r\n const handleTemplateDownload = () => {\r\n setDownloadingTemplate(true);\r\n FundApi.downloadFundImportTemplate()\r\n .then(resp => {\r\n const fileName = 'Fund Import Template.xlsx';\r\n saveAs(resp, fileName);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n })\r\n .finally(() => {\r\n setDownloadingTemplate(false);\r\n });\r\n };\r\n\r\n const handleExportClick = filters => {\r\n setSubmitting(true);\r\n FundApi.exportFundsExcel(\r\n filters.id,\r\n filters.name,\r\n filters.fundFamilyId,\r\n filters.fundTagId,\r\n filters.status\r\n )\r\n .then(resp => {\r\n const fileName = 'Funds Export.xlsx';\r\n saveAs(resp, fileName);\r\n setSubmitting(false);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n setSubmitting(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {type}\r\n \r\n {\r\n
    \r\n {(hasImportFundExcelPermission || hasExportFundExcelPermission) && (\r\n \r\n
    \r\n \r\n \r\n Import/Export Funds\r\n \r\n
    \r\n \r\n )}\r\n \r\n {hasImportFundExcelPermission && (\r\n \r\n Import Funds from Excel\r\n \r\n )}\r\n {hasExportFundExcelPermission && (\r\n handleExportClick(filters)}\r\n disabled={submitting}\r\n >\r\n {submitting && (\r\n \r\n \r\n \r\n )}\r\n Export Funds to Excel\r\n \r\n )}\r\n\r\n {hasImportFundExcelPermission && (\r\n
    \r\n
    \r\n \r\n {downloadingTemplate && (\r\n \r\n \r\n \r\n )}\r\n Download Template\r\n \r\n
    \r\n )}\r\n \r\n
    \r\n }\r\n\r\n {hasCreatePermission && title && (\r\n \r\n {title}\r\n \r\n )}\r\n\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseImportClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Import Funds from Excel\r\n \r\n\r\n \r\n
    \r\n \r\n \r\n {({ formData, ...rest }) => (\r\n \r\n {!isFileFieldDisabled && (\r\n cleanUpData(value)}\r\n >\r\n \r\n \r\n )}\r\n {loaderVisible && }\r\n\r\n {validateButtonVisibile && (\r\n
    \r\n

    \r\n No Data To Display\r\n
    \r\n Click 'Validate' to parse and display Excel Data\r\n

    \r\n handleClickValidation(formData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n >\r\n Validate\r\n \r\n
    \r\n )}\r\n\r\n {showGrid && (\r\n
    \r\n \r\n \r\n \r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n {/* evading console errors - should find a better way */}\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Fund ID' },\r\n { id: 'Fund Name' },\r\n { id: 'Fund Type' },\r\n { id: 'A.K.A' },\r\n { id: 'Start Date' },\r\n { id: 'Closing Date/As of Date' },\r\n { id: 'Fund Inception Date' },\r\n { id: 'Fund Contact Email' },\r\n { id: 'Currency' },\r\n { id: 'Alternative Currency' },\r\n { id: 'Fund Family ID' },\r\n { id: 'Status' },\r\n {\r\n id:\r\n 'Validation Error / Warning Message'\r\n }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestSort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {response.map((item, index) => {\r\n return (\r\n \r\n \r\n {item.rowNumber}\r\n \r\n {item.fundId}\r\n {item.fundName}\r\n {item.fundType}\r\n {item.aka}\r\n \r\n {item.startDate}\r\n \r\n \r\n {item.closingDate}\r\n \r\n \r\n {item.inceptionDate}\r\n \r\n \r\n {item.contactEmail}\r\n \r\n {item.currency}\r\n \r\n {item.alternativeCurrency}\r\n \r\n \r\n {item.fundFamily}\r\n \r\n {item.status}\r\n \r\n {hasValidationErrors\r\n ? item.validationError\r\n : item.warningMessage}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There is no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Close\r\n \r\n
    \r\n \r\n Import\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n);\r\n\r\nexport default ExcelFundImportTitleBarWithDropbox;\r\n","const fundStatus = [\r\n { id: 'ACTIVE', value: 'ACTIVE', name: 'Active', label: 'Active' },\r\n { id: 'PENDING', value: 'PENDING', name: 'Pending', label: 'Pending' }\r\n];\r\n\r\nexport { fundStatus };\r\n","import React from 'react';\r\nimport { SelectField } from 'react-admin';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\n\r\nimport green from '@material-ui/core/colors/green';\r\nimport orange from '@material-ui/core/colors/orange';\r\n\r\nconst styles = {\r\n greenText: { color: green[500] },\r\n orangeText: { color: orange[500] }\r\n};\r\n\r\nconst InvestorStatusSelectField = withStyles(styles)(\r\n ({ classes, ...props }) => {\r\n let optionClass = '';\r\n const status = props.record && props.record.investorStatus;\r\n switch (status) {\r\n case 'ACTIVE':\r\n optionClass = classes.greenText;\r\n break;\r\n case 'INACTIVE':\r\n optionClass = classes.orangeText;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return ;\r\n }\r\n);\r\n\r\nexport default InvestorStatusSelectField;\r\n","const fundInvestorStatus = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'INACTIVE', name: 'Inactive' }\r\n];\r\n\r\nexport { fundInvestorStatus };\r\n","import React, { useEffect, useMemo } from 'react';\r\nimport {\r\n FunctionField,\r\n ReferenceField,\r\n Datagrid,\r\n TextField,\r\n useGetOne,\r\n useUnselectAll,\r\n linkToRecord,\r\n LinearProgress\r\n} from 'react-admin';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport InvestorStatusSelectField from '../../core/components/InvestorStatusSelectField';\r\nimport { fundInvestorStatus } from '../fundinvestors/FundInvestorLookups';\r\nimport EditButtonWithOnClick from '../../core/components/EditButtonWithOnClick';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst hideForNow = true; // as short term solution (it should be removed in the future)\r\n\r\nconst styles = () => ({\r\n table: {\r\n '& tbody>.MuiTableRow-root:hover': {\r\n background: 'unset',\r\n cursor: 'default'\r\n }\r\n },\r\n statusColumnStyle: {\r\n width: '68px'\r\n },\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n paddingBottom: '10px'\r\n },\r\n expandLabel: {\r\n color: '#757575',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n transform: 'translateY(-10px)'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n editButton: {\r\n color: '#757575',\r\n minWidth: '24px',\r\n padding: '6px 0',\r\n '& span': {\r\n paddingRight: 0\r\n }\r\n },\r\n editButtonColumnStyle: {\r\n width: '24px'\r\n }\r\n});\r\n\r\n/**\r\n * Special field to return AKA through a getOne call.\r\n * ReferenceField unfortunately uses getMany which is disabled on investors\r\n */\r\nconst AKAField = ({ reference, id }) => {\r\n const { loaded, data } = useGetOne(reference, id);\r\n if (!loaded) {\r\n return ;\r\n }\r\n if (data !== undefined) {\r\n return data.aka;\r\n }\r\n return null;\r\n};\r\n\r\nconst InvestorFundDatagrid = props => {\r\n const {\r\n handleInvestorClick,\r\n handleInvestorFundEditButtonClick,\r\n classes,\r\n expand,\r\n permissions,\r\n hasShow,\r\n userProfile,\r\n hasEdit,\r\n hasList,\r\n ...dataGridProps\r\n } = props;\r\n\r\n //unselecting all the checkboxes from the deleting actions in the ComponenWillUnmount listener\r\n const unSelectAll = useUnselectAll(dataGridProps.resource);\r\n\r\n useEffect(() => () => unSelectAll(), [unSelectAll]);\r\n\r\n const hasReadInvestorPermission = useMemo(() => {\r\n return permissions.includes('AUTH_READ_INVESTOR_NA');\r\n }, [permissions]);\r\n\r\n if (props.total > 0) {\r\n return (\r\n <>\r\n {expand && Related Investors}\r\n \r\n `${linkToRecord(`/investors`, record.investorId)}`\r\n : false\r\n }\r\n >\r\n \r\n \r\n \r\n (\r\n \r\n )}\r\n />\r\n \r\n \r\n {handleInvestorClick || hideForNow ? (\r\n undefined\r\n ) : (\r\n \r\n )}\r\n \r\n \r\n );\r\n } else if (props.loaded) {\r\n return (\r\n \r\n There are no related Investors to be displayed\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(InvestorFundDatagrid);\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nexport const useStyles = makeStyles({\r\n tag: {\r\n color: '#212121',\r\n 'font-size': '12px',\r\n 'line-height': '17px',\r\n textDecoration: 'none',\r\n 'box-sizing': 'border-box',\r\n background: '#F5F5F5',\r\n border: '1px solid #E0E0E0',\r\n 'border-radius': '2px',\r\n padding: '0 5px'\r\n },\r\n tagsContainer: {\r\n display: 'flex',\r\n gap: '5px',\r\n flexWrap: 'wrap',\r\n padding: '5px 0'\r\n }\r\n});\r\n/**\r\n * Render a list of tags.\r\n *\r\n * The component accepts the following props:\r\n *\r\n * - hasRecord {boolean} - must be false if not used in a react-admin context\r\n * - record {object} - react admin object, passed through the ListContextProvider\r\n * - tagType {string} - name of the tag property in the record\r\n * - tags {object} - { tagId1: tagName1, ...} (not needed in a react-admin context)\r\n *\r\n *\r\n * @example\r\n * // React-Admin\r\n * const FundList = (props) => (\r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * \r\n * );\r\n *\r\n *\r\n * @example\r\n * // If not used with react-admin, you must provide an object that will contain the tags:\r\n * const CustomComponent = () => {\r\n * const tags = {\r\n * tagID1: 'tagName1',\r\n * tagID2: 'tagName2,\r\n * };\r\n *\r\n * return \r\n *\r\n * };\r\n */\r\n\r\nconst TagsField = ({ hasRecord = true, record, tagType, tags = {} }) => {\r\n const classes = useStyles();\r\n const tagArray = [];\r\n\r\n if (hasRecord && record) {\r\n Object.entries(record[tagType])\r\n .sort((a, b) => a[1].localeCompare(b[1]))\r\n .forEach(([key, value]) => tagArray.push({ id: key, value }));\r\n } else {\r\n Object.entries(tags).forEach(([key, value]) =>\r\n tagArray.push({ id: key, value })\r\n );\r\n }\r\n\r\n if (tagArray.length > 0) {\r\n return (\r\n
    \r\n {tagArray.map(tag => (\r\n \r\n {tag.value}\r\n \r\n ))}\r\n
    \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nexport default TagsField;\r\n","import React, { useState, useEffect } from 'react';\r\nimport Popover from '@material-ui/core/Popover';\r\nimport {\r\n InputLabel,\r\n Button,\r\n Grid,\r\n makeStyles,\r\n Divider,\r\n Box,\r\n FormControl\r\n} from '@material-ui/core';\r\nimport { AutocompleteArrayInput, useInput, useListContext } from 'react-admin';\r\nimport FilterList from '@material-ui/icons/FilterList';\r\nimport { useStyles as useStylesTag } from '../TagsField';\r\n\r\nconst useStyles = makeStyles(({ palette, typography }) => ({\r\n buttonInputLike: {\r\n border: '1px solid #E0E0E0',\r\n backgroundColor: '#FFF',\r\n display: 'flex',\r\n width: '100%',\r\n top: '15.5%',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n height: '32px',\r\n fontFamily: typography.fontFamily,\r\n fontSize: typography.fontSize,\r\n fontWeight: '400',\r\n padding: '5px 5px 6px',\r\n color: '#757575',\r\n transition: 'none',\r\n '&:hover': {\r\n backgroundColor: 'unset',\r\n borderBottomColor: '#000'\r\n },\r\n '& > span > p': { opacity: '50%' },\r\n '& > span > span': { marginLeft: 'auto' }\r\n },\r\n buttonInputLikeForList: {\r\n marginBottom: '4px', // compensate the text helper that is present on a regular input\r\n marginTop: '16px', // when there is a label on top of the button\r\n minWidth: '172px'\r\n },\r\n popover: {\r\n width: '360px',\r\n padding: '16px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n justifyContent: 'space-between'\r\n },\r\n label: { marginBottom: '5px' },\r\n customButton: {\r\n backgroundColor: '#2962FF',\r\n color: '#ffffff',\r\n '&:hover': { backgroundColor: 'rgb(28, 68, 178)' }\r\n },\r\n box: {\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n open: { color: '#2962FF' },\r\n button: { padding: '0px 15px' },\r\n buttonPrimary: { color: palette.primary.main },\r\n divider: { marginBlock: '14px' },\r\n singleTagInput: { marginLeft: 'unset !important' }\r\n}));\r\n\r\nconst SelectTagArray = props => {\r\n const classes = useStyles();\r\n const {\r\n id,\r\n source,\r\n choices,\r\n selectedTags,\r\n onChange,\r\n selectLabel = ''\r\n } = props;\r\n const [inputLabel, setInputLabel] = useState('Select');\r\n\r\n function getSelectLabel() {\r\n if (selectLabel === '') {\r\n if (source === 'investortags') return 'Investor Tags';\r\n if (source === 'fundtags') return 'Fund Tags';\r\n if (source === 'fundInvestorTagId') return 'Fund-Investor Tags';\r\n return 'Fund-Investor Relationship Tags';\r\n } else {\r\n return selectLabel;\r\n }\r\n }\r\n\r\n const { input, isRequired, meta } = useInput({\r\n id,\r\n onChange,\r\n resource: source,\r\n source\r\n });\r\n\r\n input.value = selectedTags;\r\n\r\n useEffect(() => {\r\n selectedTags.length > 0 || meta.active\r\n ? setInputLabel('')\r\n : setInputLabel('Select');\r\n }, [selectedTags, meta]);\r\n\r\n return (\r\n \r\n \r\n {getSelectLabel()}\r\n \r\n a.name.localeCompare(b.name))}\r\n input={input}\r\n isRequired={isRequired}\r\n meta={meta}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst TagFilter = props => {\r\n const classes = useStyles();\r\n const tagClasses = useStylesTag();\r\n const {\r\n source,\r\n onChange,\r\n tagsList,\r\n selectedTags,\r\n onChangeFundInv,\r\n fundInvTagsList,\r\n fundInvSelectedTags,\r\n displayTagFilter,\r\n displayFundInvTagFilter,\r\n isListFilter = false,\r\n selectLabel = '',\r\n topLabel = '',\r\n filterValues\r\n } = props;\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const handleClick = e => setAnchorEl(e.currentTarget);\r\n const handleClose = () => setAnchorEl(null);\r\n const open = !!anchorEl;\r\n const id = open ? 'tag-popover' : undefined;\r\n\r\n const listContext = useListContext();\r\n\r\n const resetField = () => {\r\n // Clearing the TagFilter in a component\r\n isListFilter &&\r\n listContext.setFilters({\r\n ...filterValues,\r\n [source]: []\r\n });\r\n onChange([]);\r\n onChangeFundInv([]);\r\n };\r\n\r\n const renderTag = () => {\r\n let tagItem;\r\n if (source !== 'fundInvestorTagId') {\r\n tagItem = tagsList.find(tag => tag.id === selectedTags[0]);\r\n } else {\r\n tagItem = fundInvTagsList.find(tag => tag.id === fundInvSelectedTags[0]);\r\n }\r\n return (\r\n \r\n {tagItem.name}\r\n \r\n );\r\n };\r\n\r\n const getPlaceholder = () => {\r\n const selectedTagsCount =\r\n source !== 'fundInvestorTagId'\r\n ? selectedTags.length\r\n : fundInvSelectedTags.length;\r\n if (isListFilter) {\r\n if (selectedTagsCount === 0) return null;\r\n else if (selectedTagsCount === 1) return renderTag();\r\n else\r\n return (\r\n \r\n {selectedTagsCount} tags selected\r\n \r\n );\r\n } else {\r\n return Tags;\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {isListFilter && {topLabel}}\r\n 0 ? classes.open : ''}\r\n />\r\n }\r\n >\r\n {getPlaceholder()}\r\n \r\n \r\n \r\n \r\n {displayTagFilter && (\r\n \r\n )}\r\n {displayFundInvTagFilter && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n Reset\r\n \r\n \r\n Close\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TagFilter;\r\n","import { makeStyles } from '@material-ui/core';\r\nimport { Typography } from '@material-ui/core/';\r\nimport FundIcon from '@material-ui/icons/AccountBalanceWallet';\r\nimport React, { useMemo, useEffect, useState } from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n ReferenceManyField,\r\n Responsive,\r\n TextInput,\r\n SelectInput,\r\n SimpleList,\r\n TextField,\r\n TopToolbar,\r\n Pagination,\r\n useGetList,\r\n Loading,\r\n useQuery\r\n} from 'react-admin';\r\nimport omit from 'lodash/omit';\r\n\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport AutocompleteInput from '../../core/components/forked/input/AutocompleteInput';\r\nimport ListTitleBar from './fundimport/ExcelFundImportTitleBarWithDropbox';\r\n\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport { fundStatus } from './FundLookups';\r\nimport InvestorFundDatagrid from './InvestorFundDatagrid';\r\nimport TagsField from '../../core/components/TagsField';\r\nimport TagFilter from '../../core/components/inputs/TagFilter';\r\n\r\nconst useStyles = makeStyles({\r\n expandOnlyDataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '14px'\r\n }\r\n }\r\n },\r\n expandDataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '14px'\r\n },\r\n '& th:nth-of-type(2)': {\r\n width: '24px'\r\n }\r\n }\r\n },\r\n expandIconCell: {\r\n width: '14px',\r\n '& div': {\r\n width: '14px',\r\n padding: '0'\r\n },\r\n '& div:hover ': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n statusColumnStyle: {\r\n width: '68px'\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n },\r\n autocompleteSuggestions: {\r\n zIndex: 3010,\r\n backgroundColor: '#ffffff'\r\n }\r\n});\r\n\r\nconst useshowStyles = makeStyles({\r\n root: {\r\n padding: '16px 16px 10px 16px'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst FundFilters = ({\r\n filterValues,\r\n setAppliedFilters,\r\n fundTags,\r\n selectedTags,\r\n setSelectedTags,\r\n fundtagsCount,\r\n ...props\r\n}) => {\r\n const { data } = useQuery({\r\n type: 'getList',\r\n resource: 'fundfamilies',\r\n payload: {\r\n orderDirection: 'ASC'\r\n }\r\n });\r\n\r\n const handleTagFilterChange = e => {\r\n setSelectedTags(e);\r\n };\r\n\r\n useEffect(() => {\r\n // Hack to reset filter when a tag is deleted while it was selected previously for filtering the list\r\n filterValues.fundTagId?.forEach(tagId => {\r\n const isTagInDB = Object.values(fundTags).some(\r\n tagChoice => tagChoice.id === tagId\r\n );\r\n if (fundTags.length === 0 || !isTagInDB) {\r\n delete filterValues.fundTagId;\r\n setSelectedTags([]);\r\n }\r\n });\r\n if (filterValues) {\r\n setAppliedFilters(filterValues);\r\n if (filterValues.fundTagId) {\r\n setSelectedTags(filterValues.fundTagId);\r\n }\r\n }\r\n }, [filterValues, fundTags, setAppliedFilters, setSelectedTags]);\r\n\r\n return (\r\n \r\n \r\n {data && data.length > 0 && (\r\n \r\n `autocomplete-input-menu-item-fund-families-${itemIndex}`\r\n }\r\n />\r\n )}\r\n {fundtagsCount > 0 && (\r\n null}\r\n isListFilter={true}\r\n selectLabel=\"Fund Tags\"\r\n topLabel=\"Fund Tags\"\r\n filterValues={filterValues}\r\n />\r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst FundShow = props => {\r\n const classes = useshowStyles();\r\n const { handleInvestorClick, permissions, ...rest } = props;\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst FundsTitle = props => {\r\n return (\r\n }\r\n hasExportFundExcelPermission={props.hasExportFundExcelPermission}\r\n hasImportFundExcelPermission={props.hasImportFundExcelPermission}\r\n hasCreatePermission={props.hasCreatePermission}\r\n filters={props.filters}\r\n props={props}\r\n />\r\n );\r\n};\r\n\r\nconst EmailField = props => {\r\n const { emailAddresses } = props.record;\r\n if (Array.isArray(emailAddresses) && emailAddresses.length > 1) {\r\n return {emailAddresses[0]} ...;\r\n } else if (Array.isArray(emailAddresses) && emailAddresses.length === 1) {\r\n return {emailAddresses[0]};\r\n }\r\n return <>;\r\n};\r\n\r\nconst FundList = props => {\r\n const {\r\n permissions = [],\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n ...rest\r\n } = props;\r\n const classes = useStyles();\r\n const [appliedFilters, setAppliedFilters] = useState([]);\r\n const [selectedTags, setSelectedTags] = useState([]);\r\n\r\n const handleInvestorClick = fundInvestorId => {\r\n const investorId = fundInvestorId.split(':')[1];\r\n return `/investors/${investorId}`;\r\n };\r\n\r\n // Fetch all fundtags. If there is at least one, we need to display the \"Fund Tags\" column.\r\n const {\r\n data: fundTags,\r\n loading: fundTagLoading,\r\n total: fundtagsCount\r\n } = useGetList('fundtags', null, null);\r\n\r\n const { hasImportFundExcelPermission } = useMemo(() => {\r\n return {\r\n hasImportFundExcelPermission: props.permissions\r\n ? props.permissions.includes('AUTH_IMPORT_FUND_FROM_EXCEL')\r\n : false\r\n };\r\n }, [props.permissions]);\r\n\r\n const { hasExportFundExcelPermission } = useMemo(() => {\r\n return {\r\n hasExportFundExcelPermission: props.permissions\r\n ? props.permissions.includes('AUTH_EXPORT_FUND')\r\n : false\r\n };\r\n }, [props.permissions]);\r\n\r\n // Wait for the GET /v1/fundtags response before displaying the grid.\r\n if (fundTagLoading) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n }\r\n filters={\r\n \r\n }\r\n filter={fundtagsCount > 0 && { returnFundTags: true }}\r\n perPage={20}\r\n pagination={}\r\n bulkActionButtons={hasDeletePermission && }\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n (record?.name ? record.name : '')}\r\n secondaryText={record => (record?.id ? record.id : '')}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n {fundtagsCount > 0 && (\r\n \r\n )}\r\n \r\n \r\n }\r\n />\r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default FundList;\r\n","import React from 'react';\r\nimport { Pagination } from 'react-admin';\r\n\r\nexport const ListPagination = props => {\r\n if (props.total > 0) {\r\n return (\r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n};\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Fund Tags Associations API\r\n */\r\nclass FundTagsAssociationsApi extends ApiBase {\r\n /**\r\n * create fundtags/associations relations\r\n * @param {*} ids List of fundTagId/fundId\r\n */\r\n async create(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundtags/associations`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * delete fundtags/associations relations\r\n * @param {*} ids List of fundTagId/fundId\r\n */\r\n async delete(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundtags/associations`,\r\n headers: this.getHeaders(),\r\n method: 'DELETE',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new FundTagsAssociationsApi();\r\n","import React from 'react';\r\nimport { ReferenceArrayInput, useQuery, Loading } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\nimport { find } from 'lodash';\r\n\r\nimport GridInputFilter from '../../core/components/inputs/GridInputFilter';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nconst validateInvestors = (value, allValues, props, field) => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Investor must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst validateFunds = (value, allValues, props, field) => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Fund must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst useStyles = makeStyles({\r\n loading: {\r\n height: 'calc(100vh - 230px)'\r\n }\r\n});\r\n\r\nconst FundInvestorSummary = props => {\r\n const classes = useStyles();\r\n let { data, loading } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'fundinvestors',\r\n payload: {\r\n target: `${props.fundId ? 'fundId' : 'investorId'}`,\r\n id: props.fundId ? props.fundId : props.investorId,\r\n sort: {\r\n order: 'ASC'\r\n }\r\n }\r\n });\r\n if (loading) return ;\r\n const filter = choices => {\r\n return choices.filter(\r\n item =>\r\n find(data, [`${props.fundId ? 'investorId' : 'fundId'}`, item.id]) ===\r\n undefined\r\n );\r\n };\r\n\r\n const ReferenceArrayInputProps = {\r\n label: `${\r\n props.fundId\r\n ? 'To add Investor to this Fund, select one or multiple items from the list of the Investor below.'\r\n : 'To add Fund to this Investor, select one or multiple items from the list of the Funds below.'\r\n }`,\r\n optionTextLabel: `${props.fundId ? 'Investor Name' : 'Fund Name'}`,\r\n optionValueLabel: `${props.fundId ? 'Investor ID' : 'Fund ID'}`,\r\n additionalColumns: [\r\n { label: 'Status', name: 'status', isStatusColumn: true }\r\n ],\r\n resource: `${props.fundId ? 'investors' : 'funds'}`,\r\n reference: `${props.fundId ? 'investors' : 'funds'}`,\r\n source: `${props.fundId ? 'investors' : 'funds'}`\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default FundInvestorSummary;\r\n","import React from 'react';\r\nimport { Edit } from 'react-admin';\r\nimport FundInvestorSummary from './FundInvestorSummary';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { FormSpy } from 'react-final-form';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n },\r\n form: {\r\n '& > div': {\r\n paddingTop: '0px !important',\r\n paddingBottom: '0px !important'\r\n }\r\n }\r\n});\r\n\r\nconst FundInvestorForm = props => {\r\n const {\r\n handleSubmit,\r\n setFundInvestorFormProps,\r\n operation,\r\n investorId,\r\n fundId,\r\n showDialog,\r\n handleDialogToggle,\r\n showNotification,\r\n fetchStart,\r\n fetchEnd,\r\n crudGetList,\r\n loaded,\r\n currentSort,\r\n setSort,\r\n classes,\r\n ...operationProps\r\n } = props;\r\n if (operation === 'Create') {\r\n return (\r\n \r\n \r\n {props => {\r\n setFundInvestorFormProps(props);\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {props => {\r\n setFundInvestorFormProps(props);\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(FundInvestorForm);\r\n","import React from 'react';\r\nimport {\r\n SaveButton,\r\n UPDATE,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n} from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { connect } from 'react-redux';\r\n\r\nimport dataProvider from '../../core/providers/IccUserDataProvider';\r\nimport FundInvestorForm from './FundInvestorForm';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport FundInvestorApi from '../../core/apis/FundInvestorApi';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nclass FundInvestorCreateUpdate extends React.Component {\r\n fundInvestorFormProps;\r\n\r\n state = {\r\n submitting: false\r\n };\r\n\r\n setFundInvestorFormProps = props => {\r\n this.fundInvestorFormProps = props;\r\n };\r\n\r\n handleSaveClick = event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n this.fundInvestorFormProps.form.submit(event);\r\n };\r\n\r\n handleClose = () => {\r\n const { handleDialogToggle } = this.props;\r\n const { submitting } = this.state;\r\n if (submitting) return;\r\n this.fundInvestorFormProps.form.reset();\r\n handleDialogToggle();\r\n };\r\n\r\n handleSubmit = values => {\r\n const {\r\n operation,\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n handleDialogToggle,\r\n refreshView\r\n } = this.props;\r\n\r\n this.setState({ submitting: true });\r\n\r\n // Prepare the list of fundinvestors to create\r\n const fundinvestors = [];\r\n if (operation === 'Create') {\r\n if (values.fundId) {\r\n values.investors.forEach(investorId => {\r\n fundinvestors.push({\r\n fundId: values.fundId,\r\n investorId\r\n });\r\n });\r\n } else {\r\n values.funds.forEach(fundId => {\r\n fundinvestors.push({\r\n fundId,\r\n investorId: values.investorId\r\n });\r\n });\r\n }\r\n }\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n\r\n // As we want to know when the new fundinvestors has been created/updated in order to close the modal, we use the\r\n // dataProvider directly to update, and async api call to create many\r\n const crudOperation =\r\n operation === 'Create'\r\n ? FundInvestorApi.create(fundinvestors)\r\n : dataProvider(UPDATE, 'fundinvestors', {\r\n data: { fundId: values.fundId, investorId: values.investorId }\r\n });\r\n\r\n crudOperation\r\n .then(() => {\r\n refreshView();\r\n handleDialogToggle();\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.fundInvestorFormProps.form.reset();\r\n fetchEnd();\r\n this.setState({ submitting: false });\r\n });\r\n };\r\n\r\n render() {\r\n const { operation, showDialog, fundId } = this.props;\r\n const { submitting } = this.state;\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n this.handleClose();\r\n }}\r\n >\r\n \r\n {operation === 'Create'\r\n ? fundId\r\n ? 'Add Existing Investor to Fund'\r\n : 'Add Existing Fund to Investor'\r\n : operation + ' fund investor'}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(FundInvestorCreateUpdate);\r\n","const investorStatus = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'INACTIVE', name: 'Inactive' }\r\n];\r\n\r\nexport { investorStatus };\r\n","import React, { useMemo } from 'react';\r\nimport { AutocompleteArrayInput, useInput, useGetList } from 'react-admin';\r\nimport {\r\n makeStyles,\r\n Grid,\r\n LinearProgress,\r\n Typography\r\n} from '@material-ui/core';\r\nimport { useFormState } from 'react-final-form';\r\n\r\nconst useStyles = makeStyles({\r\n containerCustom: {\r\n '& > div > label': {\r\n fontSize: '14px',\r\n marginTop: 0,\r\n '& > span:before': {\r\n content: 'none'\r\n }\r\n },\r\n '& > div > div': {\r\n padding: '5px'\r\n }\r\n },\r\n suggestionsCustom: {\r\n top: '5px !important'\r\n },\r\n disabledInput: {\r\n pointerEvents: 'none',\r\n opacity: '0.5'\r\n },\r\n gridContainerCustom: {\r\n marginTop: 8\r\n }\r\n});\r\n\r\nconst SelectTagInput = props => {\r\n const {\r\n classes,\r\n id,\r\n source,\r\n resource,\r\n tagsList,\r\n tagIds,\r\n tagLoading,\r\n hasEditTagPermission\r\n } = props;\r\n\r\n const getAdditionalOptions = useMemo(() => {\r\n if (!hasEditTagPermission) {\r\n return {\r\n InputProps: {\r\n className: classes.disabledInput\r\n }\r\n };\r\n }\r\n }, [hasEditTagPermission, classes]);\r\n\r\n /**\r\n * A function to parse the value from the input to the record value\r\n */\r\n const customParse = value => {\r\n if (typeof value === 'object' && !Array.isArray(value)) {\r\n return value;\r\n }\r\n const formattedValue = {};\r\n Object.entries(tagsList).forEach(([_key, val]) => {\r\n if (value.includes(val.id)) {\r\n formattedValue[val.id] = val.name;\r\n }\r\n });\r\n return formattedValue;\r\n };\r\n\r\n const { input, isRequired, meta } = useInput({\r\n id,\r\n resource,\r\n source,\r\n parse: customParse\r\n });\r\n input.value = tagIds;\r\n\r\n if (tagLoading) return ;\r\n\r\n return (\r\n \r\n a.name.localeCompare(b.name)\r\n )}\r\n input={input}\r\n isRequired={isRequired}\r\n meta={meta}\r\n variant=\"standard\"\r\n classes={{\r\n container: classes.containerCustom,\r\n suggestionsContainer: classes.suggestionsCustom\r\n }}\r\n />\r\n );\r\n};\r\n\r\nfunction getPropertyByPath(obj, path) {\r\n const keys = path.split('.');\r\n let currentObj = obj;\r\n\r\n for (const key of keys) {\r\n if (currentObj.hasOwnProperty(key)) {\r\n currentObj = currentObj[key];\r\n } else {\r\n return undefined;\r\n }\r\n }\r\n return currentObj;\r\n}\r\n\r\nconst TagInput = props => {\r\n const { id, label, resource, source, hasEditTagPermission } = props;\r\n const classes = useStyles();\r\n const formState = useFormState();\r\n\r\n const {\r\n data: tagsList = [],\r\n loading: tagLoading,\r\n total: totalTags\r\n } = useGetList(resource, null, null);\r\n\r\n const tagIds = Object.entries(getPropertyByPath(formState.values, source))\r\n .sort((a, b) => a[1].localeCompare(b[1]))\r\n .map(tag => parseInt(tag[0]));\r\n if (totalTags > 0) {\r\n return (\r\n \r\n {label && (\r\n \r\n {label}\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default TagInput;\r\n","import { makeStyles } from '@material-ui/core';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport React, { useState, useEffect } from 'react';\r\nimport {\r\n FormDataConsumer,\r\n ReferenceInput,\r\n required,\r\n SelectInput,\r\n TextInput\r\n} from 'react-admin';\r\nimport AutocompleteInput from '../../core/components/forked/input/AutocompleteInput';\r\nimport TenantConfigurationApi from '../../core/apis/TenantConfigurationApi';\r\nimport InvestorApi from '../../core/apis/InvestorApi';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nimport {\r\n fieldLengthValidator,\r\n validatePhoneNumber\r\n} from '../../core/utils/index';\r\nimport { investorStatus } from './InvestorLookups';\r\nimport { validateInvestorIdRa, isCountryWithState } from './utils';\r\nimport CheckBoxField from '../../core/components/CheckBoxField';\r\nimport { Field } from 'react-final-form';\r\nimport TagInput from '../../core/components/inputs/TagInput';\r\n\r\nconst useStyles = makeStyles({\r\n autocompleteSuggestions: {\r\n zIndex: 3010,\r\n backgroundColor: '#ffffff'\r\n },\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n }\r\n});\r\n\r\nconst investorNameMaxLength = 256;\r\nconst investorIdMaxLength = 20;\r\nconst investorFaxNumberMaxLength = 32;\r\nconst investorAkaMaxLength = 255;\r\nconst investorPostalCodeMaxLength = 128;\r\nconst investorCityMaxLength = 128;\r\nconst investorAddressMaxLength = 254;\r\nconst investorTaxIdMaxLength = 50;\r\n\r\nconst InvestorDetails = props => {\r\n const notifyServerError = useNotifyServerError();\r\n const [documentHardCopyRecipient, setDocumentHardCopyRecipient] = useState(\r\n false\r\n );\r\n const investorId = props.record?.id;\r\n\r\n const [sendHardCopy, setSendHardCopy] = useState(false);\r\n const [addressCountry, setAddressCountry] = useState('');\r\n const classes = useStyles();\r\n\r\n const changeEnableDocumentTypeSelect = () => {\r\n setSendHardCopy(!sendHardCopy);\r\n };\r\n\r\n const handleCountryChange = e => {\r\n setAddressCountry(e.addressCountry);\r\n if (isCountryWithState(e.addressCountry)) {\r\n return true;\r\n } else {\r\n e.addressStateProvince = null;\r\n return false;\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n TenantConfigurationApi.get('Document_Hard_Copy_Recipient')\r\n .then(response => {\r\n setDocumentHardCopyRecipient(\r\n response.pageData[0] && response.pageData[0].value === '1'\r\n ? true\r\n : false\r\n );\r\n })\r\n .catch(error => notifyServerError(error));\r\n\r\n if (investorId !== undefined) {\r\n InvestorApi.getInvestor(investorId)\r\n .then(response => {\r\n setSendHardCopy(response.investorNotificationModel.sendHardCopy);\r\n })\r\n .catch(error => notifyServerError(error));\r\n }\r\n }, [notifyServerError, investorId]);\r\n // show tooltip that informs the user why Investor Family menu is disabled (in case of an orphan investor)\r\n const showTooltip =\r\n (props.creation && !props.disableTooltip) ||\r\n (props.record && props.record.isOrphan);\r\n\r\n return (\r\n
    \r\n \r\n \r\n Investor Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Address and Phone\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ({ text: searchText + '*' })}\r\n perPage={-1}\r\n variant=\"standard\"\r\n validate={[sendHardCopy ? required() : false]}\r\n >\r\n \r\n `autocomplete-input-menu-item-country-${itemIndex}`\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n {({ formData, ..._rest }) =>\r\n formData &&\r\n formData.addressCountry &&\r\n handleCountryChange(formData) && (\r\n ({ text: searchText + '*' })}\r\n perPage={-1}\r\n variant=\"standard\"\r\n parse={value => {\r\n return value ? value.split(':')[0] : null;\r\n }}\r\n format={value => {\r\n return value + ':' + formData.addressCountry;\r\n }}\r\n >\r\n \r\n `autocomplete-input-menu-item-state-province-${itemIndex}`\r\n }\r\n />\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {() => {\r\n return (\r\n documentHardCopyRecipient && (\r\n
    \r\n \r\n \r\n \r\n Document Hard Copy Configuration\r\n \r\n \r\n \r\n \r\n \r\n {sendHardCopy && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n )\r\n );\r\n }}\r\n
    \r\n {!props.creation && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\nexport default InvestorDetails;\r\n","import React from 'react';\r\nimport {\r\n SaveButton,\r\n CREATE,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n Create,\r\n refreshView\r\n} from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { connect } from 'react-redux';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport dataProvider from '../../core/providers/IccUserDataProvider';\r\nimport InvestorDetails from '../investors/InvestorDetails';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport SimpleFormWithSave from '../../core/components/form/SimpleFormWithSave';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nclass InvestorCreateDialog extends React.Component {\r\n investorFormProps;\r\n\r\n state = {\r\n submitting: false\r\n };\r\n\r\n setInvestorFormProps = props => {\r\n this.investorFormProps = props;\r\n };\r\n\r\n handleSaveClick = event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n this.investorFormProps.form.submit(event);\r\n };\r\n\r\n handleClose = () => {\r\n const { handleDialogToggle } = this.props;\r\n const { submitting } = this.state;\r\n if (submitting) return;\r\n this.investorFormProps.form.reset();\r\n handleDialogToggle();\r\n };\r\n\r\n handleSubmit = values => {\r\n const {\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n handleDialogToggle,\r\n id,\r\n refreshView\r\n } = this.props;\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n this.setState({ submitting: true });\r\n\r\n // As we want to know when the new investor has been created in order to close the modal, we use the\r\n // dataProvider directly\r\n dataProvider(CREATE, 'investors', { data: values })\r\n .then(({ data }) => {\r\n //Create fundinvestors relation with the new created investor\r\n dataProvider(CREATE, 'fundinvestors', {\r\n data: { fundId: id, investorId: data.id }\r\n }).then(() => {\r\n refreshView();\r\n handleDialogToggle();\r\n });\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.investorFormProps.form.reset();\r\n fetchEnd();\r\n this.setState({ submitting: false });\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n showDialog,\r\n showNotification,\r\n fetchStart,\r\n fetchEnd,\r\n classes,\r\n refreshView,\r\n ...createProps\r\n } = this.props;\r\n const { submitting } = this.state;\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n this.handleClose();\r\n }}\r\n >\r\n \r\n Create new investor\r\n \r\n \r\n {/* Override record object that contains investor information */}\r\n \r\n \r\n \r\n {props => {\r\n this.setInvestorFormProps(props);\r\n return ;\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n};\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(InvestorCreateDialog));\r\n","import moment from 'moment';\r\nimport {\r\n isStringAlphaNumericUnderscoreHyphen,\r\n isStringOnlyUnderscoreHyphen,\r\n isValidEmailRegex\r\n} from '../../../core/utils';\r\nimport FundApi from '../../../core/apis/FundApi';\r\nimport { memoize } from 'lodash';\r\n\r\nexport const STEP = {\r\n fundDetails: 'fundDetails',\r\n addRelatedInvestors: 'addRelatedInvestors',\r\n addRelatedContacts: 'addRelatedContacts'\r\n};\r\n\r\n/**\r\n * Form level validation for new funds\r\n * @param {*} values Form values\r\n * @returns errors object\r\n */\r\nexport const validateFund = values => {\r\n const errors = {};\r\n if (values.startDate && values.endDate) {\r\n if (\r\n moment(values.startDate).startOf('day') >\r\n moment(values.endDate).startOf('day')\r\n ) {\r\n errors.startDate =\r\n 'The Closing Date/As of date must be after the Start Date';\r\n\r\n return errors;\r\n }\r\n }\r\n};\r\n\r\n// react admin\r\nexport function validateFundIdRa(value, _allValue, fieldProps) {\r\n let errors = {};\r\n if (fieldProps.active) {\r\n return validateFundId(value);\r\n }\r\n return errors.id;\r\n}\r\n\r\n// rff\r\nexport function validateFundIdRff(value) {\r\n return validateFundId(value);\r\n}\r\n\r\n/*\r\n * Verify that Fund ID is unique and alphanumeric,\r\n * also check if ID is not made just from Underscore and Hyphens\r\n */\r\nconst validateFundId = memoize(async value => {\r\n const idValid = isStringAlphaNumericUnderscoreHyphen(value);\r\n const isValueOnlyUnderscoreHyphen = isStringOnlyUnderscoreHyphen(value);\r\n let error;\r\n\r\n if (!idValid) {\r\n error =\r\n 'Fund ID must be unique and only contain numbers, letters, underscore and hyphen symbols without any spaces';\r\n } else if (!isValueOnlyUnderscoreHyphen) {\r\n error = 'Fund ID must contain at least one number or letter character';\r\n } else {\r\n try {\r\n const idExists = await FundApi.checkIdExists(value);\r\n if (idExists) {\r\n error = 'ID already exists';\r\n }\r\n } catch (e) {\r\n error = 'Cannot validate Fund ID';\r\n }\r\n }\r\n return error;\r\n});\r\n\r\n/**\r\n * Parse a comma separated list of emails as an array\r\n * @param {*} value comma separated list\r\n * @returns array of emails\r\n */\r\nexport const emailParser = value => {\r\n if (value && value.length > 0) {\r\n return value.split(';');\r\n }\r\n return [];\r\n};\r\n\r\nexport const validateEmails = field => {\r\n let message = '';\r\n if (field && field.length > 0) {\r\n field.forEach(element => {\r\n if (!isValidEmailRegex(element) || element.length > 40) {\r\n message =\r\n 'Please enter a valid email address or multiple email addresses separated by semicolon';\r\n }\r\n });\r\n }\r\n return message;\r\n};\r\n\r\n/**\r\n * Format a list of emails as a string (comma separated)\r\n * @param {*} value List of emails\r\n * @returns comma separated list of emails\r\n */\r\nexport const emailFormatter = value => {\r\n if (value && typeof value != 'string' && value.length > 0) {\r\n return value.reduce(\r\n (res, current) => res + (res !== '' ? ';' : '') + current,\r\n ''\r\n );\r\n }\r\n return '';\r\n};\r\n","import { makeStyles, Grid, Typography } from '@material-ui/core/';\r\nimport React from 'react';\r\nimport { ReferenceInput, required, SelectInput, TextInput } from 'react-admin';\r\n\r\nimport DateInput from '../../core/components/forked/input/DateInput';\r\nimport {\r\n fieldLengthValidator,\r\n isValidDate,\r\n formatDate\r\n} from '../../core/utils/index';\r\nimport { fundStatus } from './FundLookups';\r\nimport {\r\n emailFormatter,\r\n emailParser,\r\n validateEmails,\r\n validateFundIdRa\r\n} from './creationSteps/utils';\r\nimport TagInput from '../../core/components/inputs/TagInput';\r\n\r\n// Styling overrides\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n }\r\n});\r\n\r\n/**\r\n * Fund summary component. Shared by fund edit and create\r\n */\r\nconst FundSummary = props => {\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n \r\n \r\n Fund Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!props.creation && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default FundSummary;\r\n","import React, { useCallback, useRef, useState } from 'react';\r\nimport {\r\n Button,\r\n Edit,\r\n Filter,\r\n FormTab,\r\n TextInput,\r\n TabbedForm,\r\n TopToolbar,\r\n List,\r\n useEditController,\r\n useNotify,\r\n useRefresh\r\n} from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { makeStyles, Grid, Typography } from '@material-ui/core';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport omit from 'lodash/omit';\r\n\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport { ListPagination } from '../../core/components/list/ListPagination';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport {\r\n getInitials,\r\n predictiveSearchFormatter,\r\n predictiveSearchParser,\r\n removePathEnd\r\n} from '../../core/utils';\r\n\r\nimport ViewTab from '../../core/components/forked/layout/ViewTab';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport FundApi from '../../core/apis/FundApi';\r\nimport FundTagsAssociationsApi from '../../core/apis/FundTagsAssociationsApi';\r\nimport FundInvestorCreateUpdate from '../fundinvestors/FundInvestorCreateUpdate';\r\nimport InvestorCreateDialog from './InvestorCreateDialog';\r\nimport InvestorFundDatagrid from './InvestorFundDatagrid';\r\nimport { validateFund } from './creationSteps/utils';\r\nimport FundSummary from './FundSummary';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '8px'\r\n }\r\n});\r\n\r\nconst InvestorFundActionStyles = {\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginLeft: '10px'\r\n }\r\n};\r\n\r\nconst InvestorFilters = props => (\r\n \r\n \r\n \r\n \r\n);\r\n\r\nconst InvestorFundAction = withStyles(InvestorFundActionStyles)(\r\n ({\r\n classes,\r\n hasCreateInvestorPermission,\r\n hasWriteFundInvestorPermission,\r\n ...props\r\n }) => (\r\n \r\n {hasCreateInvestorPermission && hasWriteFundInvestorPermission && (\r\n \r\n )}\r\n {hasWriteFundInvestorPermission && (\r\n \r\n )}\r\n \r\n )\r\n);\r\n\r\nconst FundTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst FundRelatedInvestorsLabel = ({ label }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst FundEdit = props => {\r\n const {\r\n classes,\r\n permissions = [],\r\n hasReadPermission,\r\n hasEditPermission,\r\n hasCreatePermission,\r\n hasDeletePermission,\r\n ...rest\r\n } = props;\r\n\r\n const [fundInvestorRecord, setFundInvestorRecord] = useState({});\r\n const [fundInvestorBasePath, setFundInvestorBasePath] = useState({});\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n const [hasErrorOnSubmit, setHasErrorOnSubmit] = useState(false);\r\n const hasModificationSubmittedRef = useRef(false);\r\n\r\n const [showInvestorCreateDialog, setShowInvestorCreateDialog] = useState(\r\n false\r\n );\r\n const [showFundInvestorEditDialog, setShowFundInvestorEditDialog] = useState(\r\n false\r\n );\r\n const [\r\n showFundInvestorCreateDialog,\r\n setShowFundInvestorCreateDialog\r\n ] = useState(false);\r\n\r\n const { record } = useEditController(props);\r\n const notifyServerError = useNotifyServerError();\r\n const notify = useNotify();\r\n const refresh = useRefresh();\r\n\r\n const fundId = props.id;\r\n const displayToolbar = props.match.isExact;\r\n\r\n const hasCreateInvestorPermission = permissions.includes(\r\n 'AUTH_CREATE_INVESTOR'\r\n );\r\n const hasWriteFundInvestorPermission = permissions.includes(\r\n 'AUTH_WRITE_FUND_INVESTOR'\r\n );\r\n const hasDeleteFundInvestorPermission = permissions.includes(\r\n 'AUTH_DELETE_FUND_INVESTOR'\r\n );\r\n const hasEditFundTagPermission = permissions.includes('AUTH_EDIT_FUND_TAG');\r\n\r\n const onBeforeDelete = () => setWhenBlockNavigation(false);\r\n const handleInvestorFundEditButtonClick = (fiRecord, fiBasePath) => {\r\n setShowFundInvestorEditDialog(prev => !prev);\r\n setFundInvestorRecord(fiRecord);\r\n setFundInvestorBasePath(fiBasePath);\r\n };\r\n const handleInvestorCreateDialogToggle = () =>\r\n setShowInvestorCreateDialog(prev => !prev);\r\n const handleFundInvestorEditDialogToggle = () =>\r\n setShowFundInvestorEditDialog(prev => !prev);\r\n const handleFundInvestorCreateButtonClick = () =>\r\n setShowFundInvestorCreateDialog(prev => !prev);\r\n const handleFundInvestorCreateDialogToggle = () =>\r\n setShowFundInvestorCreateDialog(prev => !prev);\r\n\r\n const onSubmitEnd = useCallback(() => {\r\n if (!hasErrorOnSubmit && hasModificationSubmittedRef) {\r\n notify('ra.notification.custom_updated_message');\r\n hasModificationSubmittedRef.current = false;\r\n }\r\n refresh();\r\n }, [hasErrorOnSubmit, notify, refresh]);\r\n\r\n const handleSubmit = useCallback(\r\n async values => {\r\n const recordStringify = JSON.stringify(omit(record, 'fundTags'));\r\n const valuesStringify = JSON.stringify(omit(values, 'fundTags'));\r\n const tagAssociationsToAdd = Object.keys(values.fundTags)\r\n .filter(tagId => !Object.keys(record.fundTags).includes(tagId))\r\n .map(fundTagId => ({ fundId, fundTagId }));\r\n\r\n let tagAssociationsToRemove = [];\r\n Object.entries(values.fundTags).forEach(([fundTagId, name]) => {\r\n if (name === null) {\r\n tagAssociationsToRemove.push({\r\n fundId,\r\n fundTagId\r\n });\r\n }\r\n });\r\n\r\n setWhenBlockNavigation(false);\r\n\r\n try {\r\n if (recordStringify !== valuesStringify) {\r\n hasModificationSubmittedRef.current = true;\r\n await FundApi.edit(omit(values, 'fundTags'), record.id);\r\n }\r\n if (tagAssociationsToAdd.length > 0) {\r\n hasModificationSubmittedRef.current = true;\r\n await FundTagsAssociationsApi.create(tagAssociationsToAdd);\r\n }\r\n if (tagAssociationsToRemove.length > 0) {\r\n hasModificationSubmittedRef.current = true;\r\n await FundTagsAssociationsApi.delete(tagAssociationsToRemove);\r\n }\r\n } catch (err) {\r\n setHasErrorOnSubmit(true);\r\n notifyServerError(err, undefined);\r\n } finally {\r\n onSubmitEnd();\r\n }\r\n },\r\n [fundId, notifyServerError, onSubmitEnd, record]\r\n );\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n\r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n validate={validateFund}\r\n >\r\n \r\n \r\n {\r\n setWhenBlockNavigation(e.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n }\r\n pagination={}\r\n basePath=\"/fundinvestors\"\r\n resource=\"fundinvestors\"\r\n filter={{ fundId }}\r\n sort={{ field: 'investorName', order: 'ASC' }}\r\n title=\" \"\r\n actions={\r\n \r\n }\r\n bulkActionButtons={\r\n hasDeleteFundInvestorPermission && (\r\n \r\n )\r\n }\r\n empty={\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(FundEdit);\r\n","import { createContext } from 'react';\r\n\r\nexport const CreationFundContext = createContext(null);\r\n","import React, { useCallback, useContext, useRef } from 'react';\r\nimport { Box, CircularProgress, Grid, makeStyles } from '@material-ui/core';\r\nimport { createForm } from 'final-form';\r\nimport { Form, FormSpy } from 'react-final-form';\r\nimport { KeyboardDatePicker, Select, TextField } from 'mui-rff';\r\nimport {\r\n fieldLengthValidator,\r\n formatDate,\r\n isValidDate\r\n} from '../../../core/utils';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { TextInput, useGetList } from 'react-admin';\r\nimport {\r\n emailFormatter,\r\n emailParser,\r\n STEP,\r\n validateEmails,\r\n validateFundIdRff\r\n} from './utils';\r\nimport { LocalizedUtils } from '../../../core/components/forked/input/DateInput';\r\nimport { ErrorIcon } from '../../../core/themes/icons/ErrorIcon';\r\nimport { MuiPickersUtilsProvider } from '@material-ui/pickers';\r\nimport FundApi from '../../../core/apis/FundApi';\r\nimport { isEmpty } from 'lodash';\r\nimport { CreationFundContext } from './CreationFundContext';\r\nimport omit from 'lodash/omit';\r\nimport { fundStatus } from '../FundLookups';\r\n\r\nconst fundNameMaxLength = 256;\r\nconst fundIdMaxLength = 20;\r\n\r\nconst useStyle = makeStyles({\r\n formGroup: {\r\n marginBlock: '16px'\r\n },\r\n center: {\r\n display: 'grid',\r\n placeItems: 'center',\r\n height: '66%'\r\n }\r\n});\r\n\r\nconst FundDetailsStep = ({\r\n setIsNextAvailable,\r\n setIsSpinnerOnNextButton,\r\n onSubmitEnd,\r\n setIsFirstStepPristine,\r\n fundCreatedRef,\r\n setListOfSteps,\r\n listOfSteps\r\n}) => {\r\n const classes = useStyle();\r\n const notifyServerError = useNotifyServerError();\r\n const { fundContext, setFundContext } = useContext(CreationFundContext);\r\n const formStateRef = useRef({});\r\n\r\n const onSubmit = useCallback(\r\n async values => {\r\n const pristine = formStateRef.current.pristine;\r\n setIsSpinnerOnNextButton(true);\r\n\r\n // First submission, post request\r\n if (!pristine && fundContext.fund === undefined) {\r\n const id = values.id;\r\n const payload = {\r\n ...values,\r\n inceptionDate: formatDate(values.inceptionDate)\r\n };\r\n try {\r\n const response = await FundApi.create(payload, id);\r\n setFundContext({ ...fundContext, fund: response });\r\n fundCreatedRef.current = response;\r\n setIsNextAvailable(true);\r\n setIsSpinnerOnNextButton(false);\r\n const updatedListOfStep = listOfSteps.map(step => {\r\n if (step.name === STEP.fundDetails) {\r\n return { ...step, completed: true };\r\n }\r\n return step;\r\n });\r\n setListOfSteps(updatedListOfStep);\r\n onSubmitEnd();\r\n } catch (e) {\r\n notifyServerError(e, undefined);\r\n setIsSpinnerOnNextButton(false);\r\n }\r\n }\r\n\r\n // Fund already created\r\n if (!pristine && fundContext.fund !== undefined) {\r\n const id = fundContext.fund.id;\r\n const payload = {\r\n ...omit(values, 'id'),\r\n inceptionDate: formatDate(values.inceptionDate)\r\n };\r\n\r\n try {\r\n const response = await FundApi.edit(payload, id);\r\n setFundContext({ ...fundContext, fund: response });\r\n setIsNextAvailable(true);\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n } catch (e) {\r\n notifyServerError(e, undefined);\r\n setIsSpinnerOnNextButton(false);\r\n }\r\n }\r\n\r\n // If fund has already been created and there is no change in the form.\r\n if (pristine && fundContext.fund !== undefined) {\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n }\r\n },\r\n [\r\n setIsSpinnerOnNextButton,\r\n fundContext,\r\n setFundContext,\r\n fundCreatedRef,\r\n setIsNextAvailable,\r\n listOfSteps,\r\n setListOfSteps,\r\n onSubmitEnd,\r\n notifyServerError\r\n ]\r\n );\r\n\r\n const {\r\n data: dataFundClasses,\r\n loading: fundClassesLoading,\r\n error: fundClassesError\r\n } = useGetList('fundclasses', null, { field: 'description', order: 'ASC' });\r\n\r\n const fundClasses = Object.values(dataFundClasses).map(fundClass => ({\r\n value: fundClass.classCode,\r\n label: fundClass.description\r\n }));\r\n\r\n const {\r\n data: dataCurrencies,\r\n loading: currenciesLoading,\r\n error: currenciesError\r\n } = useGetList('currencies', null, 'ASC');\r\n\r\n const currencies = Object.values(dataCurrencies).map(currency => ({\r\n value: currency.id,\r\n label: currency.code\r\n }));\r\n\r\n const {\r\n data: dataFundFamilies,\r\n loading: fundFamiliesLoading,\r\n error: fundFamiliesError,\r\n total: fundFamilyCount\r\n } = useGetList('fundfamilies', null, undefined, {\r\n orphanVisibility: 'ALL_VISIBLE',\r\n orderBy: 'id',\r\n orderDirection: 'DESC'\r\n });\r\n\r\n const fundFamilies = Object.values(dataFundFamilies).map(fundFamily => ({\r\n value: fundFamily.id,\r\n label: fundFamily.name\r\n }));\r\n\r\n const initialValues = isEmpty(fundContext.fund) ? null : fundContext.fund;\r\n const formRef = useRef(\r\n createForm({\r\n onSubmit: onSubmit,\r\n initialValues\r\n })\r\n );\r\n const required = value => (value ? undefined : 'Required');\r\n const composeValidators = (...validators) => (value, values, fieldState) =>\r\n validators.reduce(\r\n (error, validator) => error || validator(value, values, fieldState),\r\n undefined\r\n );\r\n\r\n if (fundClassesLoading || currenciesLoading || fundFamiliesLoading) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else if (fundClassesError || currenciesError || fundFamiliesError) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n {({ handleSubmit, submitting }) => (\r\n <>\r\n {\r\n setIsNextAvailable(props.valid && !props.submitting);\r\n setIsFirstStepPristine(props.pristine);\r\n formStateRef.current = { pristine: props.pristine };\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {fundFamilyCount > 0 && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default FundDetailsStep;\r\n","import React, { useContext, useRef } from 'react';\r\nimport { createForm } from 'final-form';\r\nimport { Form, FormSpy } from 'react-final-form';\r\nimport { Grid } from '@material-ui/core';\r\nimport { ReferenceArrayInput } from 'react-admin';\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\nimport { CreationFundContext } from './CreationFundContext';\r\nimport FundInvestorApi from '../../../core/apis/FundInvestorApi';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { isEmpty } from 'lodash';\r\nimport { Alert } from '@material-ui/lab';\r\nimport { STEP } from './utils';\r\n\r\nconst validateInvestors = value => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Investor must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst ReferenceArrayInputProps = {\r\n label: '',\r\n optionTextLabel: 'Investor Name',\r\n optionValueLabel: 'Investor ID',\r\n additionalColumns: [\r\n { label: 'Status', name: 'status', isStatusColumn: true }\r\n ],\r\n resource: 'investors',\r\n reference: 'investors',\r\n source: 'investors'\r\n};\r\n\r\nconst AddRelatedInvestors = props => {\r\n const {\r\n setIsNextAvailable,\r\n setIsSpinnerOnNextButton,\r\n onSubmitEnd,\r\n setCurrentAuthorizations,\r\n hasDeleteFundInvestorRelationship,\r\n setListOfSteps,\r\n listOfSteps\r\n } = props;\r\n const notifyServerError = useNotifyServerError();\r\n const { fundContext, setFundContext } = useContext(CreationFundContext);\r\n const initialValues = isEmpty(fundContext.investorIds)\r\n ? { investors: [] }\r\n : { investors: fundContext.investorIds };\r\n\r\n function filterFundInvestorsStates(fi) {\r\n setFundContext(prev => ({\r\n ...prev,\r\n fundInvestors: [\r\n ...prev.fundInvestors.filter(elem => elem.investorId !== fi.investorId)\r\n ],\r\n investorIds: [...prev.investorIds.filter(id => id !== fi.investorId)]\r\n }));\r\n\r\n // We remove any permission that contains the investor removed.\r\n setCurrentAuthorizations(prev => [\r\n ...prev.filter(\r\n authorization => authorization.investorId !== fi.investorId\r\n )\r\n ]);\r\n }\r\n\r\n const onSubmit = async values => {\r\n setIsSpinnerOnNextButton(true);\r\n const fundId = fundContext.fund.id;\r\n let payload = [];\r\n\r\n values.investors.forEach(investorId => {\r\n payload.push({\r\n fundId,\r\n investorId: investorId\r\n });\r\n });\r\n\r\n // First submission, we create fundInvestors\r\n if (isEmpty(fundContext.fundInvestors)) {\r\n setFundContext(prev => ({ ...prev, investorIds: values.investors }));\r\n try {\r\n await FundInvestorApi.create(payload).then(res => {\r\n if (!isEmpty(res)) {\r\n setIsSpinnerOnNextButton(false);\r\n setFundContext(prev => ({ ...prev, fundInvestors: res }));\r\n const updatedListOfStep = listOfSteps.map(step => {\r\n if (step.name === STEP.addRelatedInvestors) {\r\n return { ...step, completed: true };\r\n }\r\n return step;\r\n });\r\n setListOfSteps(updatedListOfStep);\r\n onSubmitEnd();\r\n }\r\n });\r\n } catch (e) {\r\n notifyServerError(e, undefined);\r\n setIsSpinnerOnNextButton(false);\r\n }\r\n } else {\r\n // If not the first submission, we check if there are any fund-investors to delete/add\r\n const fundInvestorToDelete = fundContext.fundInvestors.reduce(\r\n (acc, curr) => {\r\n if (\r\n !payload.some(element => element.investorId === curr.investorId)\r\n ) {\r\n acc = [...acc, curr];\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n\r\n const fundInvestorToAdd = payload.reduce((acc, curr) => {\r\n if (\r\n !fundContext.fundInvestors.some(\r\n element => element.investorId === curr.investorId\r\n )\r\n ) {\r\n acc = [...acc, curr];\r\n }\r\n return acc;\r\n }, []);\r\n\r\n if (\r\n fundInvestorToDelete.length > 0 &&\r\n fundInvestorToAdd.length === 0 &&\r\n hasDeleteFundInvestorRelationship\r\n ) {\r\n await FundInvestorApi.delete(fundInvestorToDelete)\r\n .then(() => {\r\n fundInvestorToDelete.forEach(fi => filterFundInvestorsStates(fi));\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n })\r\n .catch(e => notifyServerError(e));\r\n } else if (\r\n fundInvestorToDelete.length === 0 &&\r\n fundInvestorToAdd.length > 0\r\n ) {\r\n await FundInvestorApi.create(fundInvestorToAdd)\r\n .then(res => {\r\n setFundContext(prev => ({\r\n ...prev,\r\n fundInvestors: [...prev['fundInvestors'], ...res],\r\n investorIds: values.investors\r\n }));\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n })\r\n .catch(e => notifyServerError(e));\r\n } else if (\r\n fundInvestorToDelete.length > 0 &&\r\n fundInvestorToAdd.length > 0\r\n ) {\r\n if (hasDeleteFundInvestorRelationship) {\r\n await FundInvestorApi.delete(fundInvestorToDelete).then(() => {\r\n fundInvestorToDelete.forEach(fi => filterFundInvestorsStates(fi));\r\n });\r\n }\r\n\r\n await FundInvestorApi.create(fundInvestorToAdd).then(res => {\r\n setFundContext(prev => ({\r\n ...prev,\r\n fundInvestors: [...prev.fundInvestors, ...res]\r\n }));\r\n });\r\n fundInvestorToAdd.forEach(fi =>\r\n setFundContext(prev => ({\r\n ...prev,\r\n investorIds: [...prev.investorIds, fi.investorId]\r\n }))\r\n );\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n } else {\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n }\r\n }\r\n };\r\n\r\n const formRef = useRef(\r\n createForm({\r\n onSubmit: onSubmit,\r\n initialValues\r\n })\r\n );\r\n\r\n const displayWarningMessage = () => {\r\n if (\r\n !isEmpty(fundContext.fundInvestors) &&\r\n !hasDeleteFundInvestorRelationship\r\n ) {\r\n return (\r\n \r\n You don't have the permission to remove Related Investors. If\r\n unchecked, they will not be removed.\r\n \r\n );\r\n }\r\n return null;\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n {({ handleSubmit }) => (\r\n <>\r\n {\r\n setIsNextAvailable(\r\n !formStateProps.submitting &&\r\n formStateProps.values.investors.length > 0\r\n );\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {displayWarningMessage()}\r\n \r\n );\r\n};\r\n\r\nexport default AddRelatedInvestors;\r\n","import { useState } from 'react';\r\n\r\nfunction usePagination(data, itemsPerPage) {\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const maxPage = Math.ceil(data.length / itemsPerPage);\r\n\r\n function currentData() {\r\n const begin = (currentPage - 1) * itemsPerPage;\r\n const end = begin + itemsPerPage;\r\n return data.slice(begin, end);\r\n }\r\n\r\n function next() {\r\n setCurrentPage(prevState => Math.min(prevState + 1, maxPage));\r\n }\r\n\r\n function prev() {\r\n setCurrentPage(previousState => Math.max(previousState - 1, 1));\r\n }\r\n\r\n function jump(page) {\r\n const pageNumber = Math.max(1, page);\r\n setCurrentPage(Math.min(pageNumber, maxPage));\r\n }\r\n\r\n return { next, prev, jump, currentData, currentPage, maxPage };\r\n}\r\n\r\nexport default usePagination;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport { useStyles } from '../../creationsteps/StyleStep';\r\nimport omit from 'lodash/omit';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport DialogTitleWithCloseButton from '../../../../core/components/DialogTitleWithCloseButton';\r\nimport Confirm from '../../../../core/components/forked/layout/Confirm';\r\nimport UserAuthorizationDatagrid from '../UserAuthorizationDatagrid';\r\n\r\nconst useDialogStyles = makeStyles({\r\n dialogContent: {\r\n flex: 1,\r\n display: 'flex',\r\n padding: '16px'\r\n }\r\n});\r\nconst ManageAuthorizations = ({\r\n contact,\r\n isManageModalOpen,\r\n setIsManageModalOpen,\r\n groups,\r\n authorizationsConnectedUser,\r\n connectedUserProfile,\r\n authorizationsGridToDeleteRef,\r\n permissionGroupsUploaded,\r\n setCurrentAuthorizations,\r\n currentAuthorizations,\r\n hasAssignUserAuthorization,\r\n contactAuthorizationsIds,\r\n setContactAuthorizationsIds,\r\n setPermissionGroupsUploaded = () => null,\r\n permissionToDelete,\r\n setPermissionToDelete = () => null,\r\n context,\r\n ...props\r\n}) => {\r\n const classes = useStyles();\r\n const classesDialog = useDialogStyles();\r\n const [isConfirmModalOpen, setIsConfirmModalOpen] = useState(false);\r\n const [permissionsStaging, setPermissionsStaging] = useState([]);\r\n\r\n const handleCloseClick = () => {\r\n if (permissionsStaging.length === 0) {\r\n setIsManageModalOpen(false);\r\n } else {\r\n setIsConfirmModalOpen(true);\r\n }\r\n };\r\n\r\n const handleConfirmDialogClose = () => {\r\n setPermissionsStaging([]);\r\n setIsConfirmModalOpen(false);\r\n setIsManageModalOpen(false);\r\n };\r\n\r\n function filter(array, permission) {\r\n return array.filter(\r\n authorization =>\r\n authorization.id !==\r\n `${contact.userId}:${permission.investorId}:${permission.fundId}:${permission.groupId}`\r\n );\r\n }\r\n\r\n function omitCheckedProperty(array, permission) {\r\n return [...array, omit(permission, 'checked')];\r\n }\r\n\r\n const onSubmit = () => {\r\n permissionsStaging.forEach(permission => {\r\n if (permission.checked) {\r\n setCurrentAuthorizations(prev => omitCheckedProperty(prev, permission));\r\n setPermissionToDelete(prev => filter(prev, permission));\r\n } else {\r\n setCurrentAuthorizations(prev => filter(prev, permission));\r\n setPermissionGroupsUploaded(prev => filter(prev, permission));\r\n if (permissionGroupsUploaded.length > 0) {\r\n if (\r\n permissionToDelete.filter(element => element.id === permission.id)\r\n .length === 0\r\n ) {\r\n setPermissionToDelete(prev =>\r\n omitCheckedProperty(prev, permission)\r\n );\r\n }\r\n }\r\n }\r\n });\r\n setPermissionsStaging([]);\r\n setIsManageModalOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n const contactAuthorizations = currentAuthorizations\r\n .filter(authorization => {\r\n return authorization.userId === contact.userId;\r\n })\r\n .concat(\r\n permissionGroupsUploaded.filter(authorization => {\r\n return authorization.userId === contact.userId;\r\n })\r\n );\r\n\r\n setContactAuthorizationsIds(\r\n contactAuthorizations.map(authorization => {\r\n return `${authorization.userId}:${authorization.investorId}:${authorization.fundId}:${authorization.groupId}`;\r\n })\r\n );\r\n }, [\r\n contact.userId,\r\n currentAuthorizations,\r\n permissionGroupsUploaded,\r\n setContactAuthorizationsIds\r\n ]);\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n {`Manage Permissions for ${contact.firstName} ${contact.lastName}`}\r\n \r\n \r\n \r\n\r\n setIsConfirmModalOpen(false)}\r\n confirm=\"ra.action.close\"\r\n />\r\n \r\n \r\n \r\n Done\r\n \r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ManageAuthorizations;\r\n","import React, { useContext, useState } from 'react';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n Button,\r\n Tooltip\r\n} from '@material-ui/core';\r\nimport usePagination from './utils/usePagination';\r\nimport { Pagination } from '@material-ui/lab';\r\nimport { InfoOutlined } from '@material-ui/icons';\r\nimport StatusColorDisplay from '../../../../core/components/StatusColorDisplay';\r\nimport { CreationFundContext } from '../CreationFundContext';\r\nimport ManageAuthorizations from '../../../users/userauthorization/stepper/ManageAuthorizations';\r\n\r\nexport const ContactsTable = ({\r\n contacts,\r\n classes,\r\n displayTooltip,\r\n handleManageClick\r\n}) => {\r\n const PER_PAGE = 25;\r\n const [page, setPage] = useState(1);\r\n const _DATA = usePagination(contacts, PER_PAGE);\r\n const count = Math.ceil(contacts.length / PER_PAGE);\r\n\r\n const handlePaginationChange = (_event, pageSelected) => {\r\n setPage(pageSelected);\r\n _DATA.jump(pageSelected);\r\n };\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n Contact Name\r\n Status\r\n User ID\r\n Email Address\r\n Company\r\n Permission Groups\r\n \r\n \r\n \r\n {_DATA.currentData().length === 0 && (\r\n \r\n \r\n There are no related Contacts to be displayed\r\n \r\n \r\n )}\r\n {_DATA.currentData().map(contact => (\r\n \r\n {`${contact.firstName} ${contact.lastName}`}\r\n \r\n \r\n \r\n {contact.userId}\r\n {contact.email}\r\n {contact.company}\r\n \r\n handleManageClick(contact)}\r\n >\r\n Manage\r\n \r\n {displayTooltip(contact.userId) && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n ))}\r\n \r\n
    \r\n {count > 1 && (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst ContactsList = ({\r\n contacts,\r\n classes,\r\n groups,\r\n authorizationsConnectedUser,\r\n connectedUserProfile,\r\n authorizationsGridToDeleteRef,\r\n permissionGroupsUploaded,\r\n setCurrentAuthorizations,\r\n currentAuthorizations,\r\n onSubmitEnd,\r\n hasAssignUserAuthorization,\r\n ...props\r\n}) => {\r\n const [isManageModalOpen, setIsManageModalOpen] = useState(false);\r\n const [selectedContact, setSelectedContact] = useState(null);\r\n const { fundContext: context } = useContext(CreationFundContext);\r\n\r\n const displayTooltip = contactId => {\r\n return currentAuthorizations.some(\r\n authorization => authorization.userId === contactId\r\n );\r\n };\r\n\r\n const handleManageClick = contact => {\r\n setSelectedContact(contact);\r\n setIsManageModalOpen(true);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {selectedContact && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ContactsList;\r\n","import { makeStyles } from '@material-ui/core';\r\n\r\nexport const useStyles = makeStyles({\r\n button: {\r\n padding: '0'\r\n },\r\n loading: {\r\n width: '100%',\r\n height: '100%',\r\n display: 'content',\r\n marginTop: '0px'\r\n },\r\n paper: {\r\n '& > div': {\r\n maxHeight: 'none'\r\n }\r\n },\r\n tableWrapper: {\r\n maxHeight: 'calc(100vh - 250px)',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n tableCellWrapper: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n pagination: {\r\n '& > .MuiPagination-ul': {\r\n justifyContent: 'flex-end',\r\n marginBlock: '.5em'\r\n }\r\n },\r\n manageButton: {\r\n '.MuiButton-textPrimary': {\r\n root: {\r\n minWidth: '58px'\r\n },\r\n label: {\r\n paddingRight: 0\r\n }\r\n }\r\n }\r\n});\r\n","import React, { useCallback, useContext, useEffect, useState } from 'react';\r\nimport { CreationFundContext } from '../CreationFundContext';\r\nimport { TextField } from '@material-ui/core';\r\nimport { Loading } from 'react-admin';\r\nimport ContactsList from './ContactsList';\r\nimport InvestorApi from '../../../../core/apis/InvestorApi';\r\nimport GroupsApi from '../../../../core/apis/GroupApi';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\nimport { useProfile } from '../../../../core/hooks/UseProfile';\r\nimport { useStyles } from '../../../users/userauthorization/stepper/styles';\r\nimport {\r\n createUserAuthorizations,\r\n setSearch\r\n} from '../../../users/userauthorization/stepper/utils';\r\nimport { useGetAuthorizations } from '../../../investors/copyContactsSteps/ContactsStep';\r\n\r\nconst AddRelatedContacts = ({\r\n authorizationsGridToDeleteRef,\r\n permissionGroupsUploaded,\r\n setCurrentAuthorizations,\r\n currentAuthorizations,\r\n onSubmitEnd,\r\n hasAssignUserAuthorization,\r\n contacts,\r\n ...props\r\n}) => {\r\n const { fundContext } = useContext(CreationFundContext);\r\n const [filteredContacts, setFilteredContacts] = useState([]);\r\n const [groups, setGroups] = useState([]);\r\n const [loading, setIsLoading] = useState(true);\r\n const notifyServerError = useNotifyServerError();\r\n const { profile: connectedUserProfile } = useProfile();\r\n\r\n const classes = useStyles();\r\n\r\n const fetchContactsAndGroups = useCallback(async () => {\r\n const fetchContacts = InvestorApi.getRelatedContacts(\r\n fundContext.investorIds\r\n );\r\n const fetchGroups = GroupsApi.getActiveNonAdminGroups();\r\n return Promise.all([fetchContacts, fetchGroups]);\r\n }, [fundContext.investorIds]);\r\n\r\n const { data: connectedUserAuthorizations } = useGetAuthorizations(\r\n connectedUserProfile\r\n );\r\n\r\n useEffect(() => {\r\n fetchContactsAndGroups()\r\n .then(([fetchedContacts, fetchedGroups]) => {\r\n // In the event that an investor is removed during step 2, it is necessary to remove any permissions associated with the corresponding contact that have been stored.\r\n if (contacts.current.length > 0) {\r\n const contactsRemoved = contacts.current.reduce((acc, curr) => {\r\n if (\r\n !fetchedContacts.some(contact => contact.userId === curr.userId)\r\n ) {\r\n acc = [...acc, curr];\r\n }\r\n return acc;\r\n }, []);\r\n if (contactsRemoved.length > 0) {\r\n setCurrentAuthorizations(prev => [\r\n ...prev.reduce((acc, curr) => {\r\n if (\r\n !contactsRemoved.some(\r\n contact => contact.userId === curr.userId\r\n )\r\n ) {\r\n acc = [...acc, curr];\r\n }\r\n return acc;\r\n }, [])\r\n ]);\r\n }\r\n }\r\n contacts.current = fetchedContacts;\r\n setFilteredContacts(fetchedContacts);\r\n setGroups(fetchedGroups.pageData);\r\n })\r\n .catch(e => notifyServerError(e))\r\n .finally(() => setIsLoading(false));\r\n }, [\r\n contacts,\r\n fetchContactsAndGroups,\r\n notifyServerError,\r\n setCurrentAuthorizations\r\n ]);\r\n\r\n const handleSearchChange = e => {\r\n setSearch(setFilteredContacts, contacts, e);\r\n };\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddRelatedContacts;\r\n","import FundIcon from '@material-ui/icons/AccountBalanceWallet';\r\nimport FundList from './FundList';\r\nimport FundEdit from './FundEdit';\r\nimport FundCreate from './FundCreate';\r\n\r\nexport default {\r\n list: FundList,\r\n edit: FundEdit,\r\n create: FundCreate,\r\n icon: FundIcon\r\n};\r\n","import React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useRef,\r\n useState\r\n} from 'react';\r\nimport { STEP } from './creationSteps/utils';\r\nimport { useNotify, useRedirect } from 'react-admin';\r\nimport WizardStepper from '../../core/components/wizardStepper/WizardStepper';\r\nimport { CreationFundContext } from './creationSteps/CreationFundContext';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport { getInitials } from '../../core/utils';\r\nimport FundDetailsStep from './creationSteps/FundDetailsStep';\r\nimport { isEmpty } from 'lodash';\r\nimport AddRelatedInvestors from './creationSteps/AddRelatedInvestors';\r\nimport AddRelatedContacts from './creationSteps/AddRelatedContacts/AddRelatedContacts';\r\nimport UserApi from '../../core/apis/UserApi';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport { GenerateMessageOnLeave } from '../../core/components/wizardStepper/GenerateMessageOnLeave';\r\n\r\nconst FundCreate = props => {\r\n const [currentAuthorizations, setCurrentAuthorizations] = useState([]);\r\n const contacts = useRef([]);\r\n const [contactAuthorizationsIds, setContactAuthorizationsIds] = useState([]);\r\n const { permissions = [] } = props;\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [fundContext, setFundContext] = useState({});\r\n const redirect = useRedirect();\r\n const providerFormContext = useMemo(() => ({ fundContext, setFundContext }), [\r\n fundContext,\r\n setFundContext\r\n ]);\r\n const [isNextAvailable, setIsNextAvailable] = useState(false);\r\n const [isSaveAndCloseStep, setIsSaveAndCloseStep] = useState(false);\r\n const shouldQuitRef = useRef(false);\r\n const [isSpinnerOnNextButton, setIsSpinnerOnNextButton] = useState(false);\r\n const [shouldHideBackButton, setShouldHideBackButton] = useState(false);\r\n const [isFirstStepPristine, setIsFirstStepPristine] = useState(true);\r\n const authorizationsGridToDeleteRef = useRef([]);\r\n const [permissionGroupsUploaded, setPermissionGroupsUploaded] = useState([]);\r\n const [listOfSteps, setListOfSteps] = useState([\r\n {\r\n name: STEP.fundDetails,\r\n label: 'Fund Details',\r\n leavingPromptLabel: 'Fund Details',\r\n description:\r\n 'Please fill in the mandatory fields to create new fund. All other fund details you can add later.',\r\n component: FundDetailsStep,\r\n completed: false\r\n }\r\n ]);\r\n const notify = useNotify();\r\n const fundCreatedRef = useRef({});\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const [\r\n hasEditFundPermission,\r\n hasAddFundInvestorRelationShip,\r\n hasAssignUserAuthorization,\r\n hasDeleteFundInvestorRelationship\r\n ] = useMemo(\r\n () => [\r\n permissions.includes('AUTH_EDIT_FUND'),\r\n permissions.includes('AUTH_WRITE_FUND_INVESTOR'),\r\n permissions.includes('AUTH_WRITE_USER_AUTHORIZATION'),\r\n permissions.includes('AUTH_DELETE_FUND_INVESTOR')\r\n ],\r\n [permissions]\r\n );\r\n\r\n useEffect(() => {\r\n if (hasAddFundInvestorRelationShip) {\r\n setListOfSteps(prev => [\r\n ...prev,\r\n {\r\n name: STEP.addRelatedInvestors,\r\n label: 'Add Related Investors',\r\n leavingPromptLabel: 'Related Investors',\r\n description:\r\n 'Select one or multiple Investors from the list to add them to the Fund.',\r\n component: AddRelatedInvestors,\r\n completed: false\r\n }\r\n ]);\r\n }\r\n\r\n if (hasAddFundInvestorRelationShip && hasAssignUserAuthorization) {\r\n setListOfSteps(prev => [\r\n ...prev,\r\n {\r\n name: STEP.addRelatedContacts,\r\n label: 'Add Related Contacts',\r\n leavingPromptLabel: 'Related Contacts',\r\n description:\r\n 'Add one or more contacts to the fund from a list below.',\r\n component: AddRelatedContacts,\r\n completed: false\r\n }\r\n ]);\r\n }\r\n }, [hasAddFundInvestorRelationShip, hasAssignUserAuthorization]);\r\n\r\n const isLastStep = useCallback(() => {\r\n return !!(!isEmpty(listOfSteps) && listOfSteps.length === activeStep + 1);\r\n }, [activeStep, listOfSteps]);\r\n\r\n const isItSaveAndCloseStep = useCallback(() => {\r\n if (!isEmpty(listOfSteps)) {\r\n return !!(\r\n listOfSteps[activeStep].name === STEP.addRelatedInvestors &&\r\n !isLastStep()\r\n );\r\n }\r\n }, [listOfSteps, activeStep, isLastStep]);\r\n\r\n useEffect(() => {\r\n if (listOfSteps[activeStep].name === STEP.fundDetails) {\r\n setIsNextAvailable(\r\n !fundContext?.detailsFormState?.pristine &&\r\n fundContext?.detailsFormState?.valid\r\n );\r\n }\r\n if (\r\n listOfSteps[activeStep].name === STEP.addRelatedInvestors &&\r\n !hasEditFundPermission\r\n ) {\r\n setShouldHideBackButton(true);\r\n }\r\n if (listOfSteps[activeStep].name === STEP.addRelatedContacts) {\r\n setIsNextAvailable(true);\r\n setShouldHideBackButton(false);\r\n }\r\n isItSaveAndCloseStep()\r\n ? setIsSaveAndCloseStep(true)\r\n : setIsSaveAndCloseStep(false);\r\n }, [\r\n activeStep,\r\n fundContext.detailsFormState,\r\n hasEditFundPermission,\r\n listOfSteps,\r\n isItSaveAndCloseStep\r\n ]);\r\n\r\n const getActiveStep = () => {\r\n const step = listOfSteps[activeStep];\r\n return (\r\n \r\n );\r\n };\r\n\r\n const handleClose = useCallback(() => {\r\n if (isEmpty(fundCreatedRef.current)) {\r\n redirect('list', '/funds');\r\n } else {\r\n notify('ra.notification.created');\r\n redirect(`/funds/${fundCreatedRef.current.id}`);\r\n }\r\n }, [redirect, notify, fundCreatedRef]);\r\n\r\n const onSubmitEnd = useCallback(() => {\r\n if (activeStep === listOfSteps.length - 1 || shouldQuitRef.current) {\r\n handleClose();\r\n }\r\n if (\r\n listOfSteps[activeStep].name === STEP.fundDetails ||\r\n listOfSteps[activeStep].name === STEP.addRelatedInvestors\r\n ) {\r\n setActiveStep(prev => prev + 1);\r\n }\r\n }, [activeStep, handleClose, listOfSteps]);\r\n\r\n const handleNextForm = e => {\r\n const buttonClicked = e.currentTarget.getAttribute('buttonkey');\r\n if (buttonClicked === 'saveAndClose') {\r\n shouldQuitRef.current = true;\r\n }\r\n\r\n if (listOfSteps[activeStep].name === STEP.fundDetails) {\r\n document\r\n .getElementById('formFundDetails')\r\n .dispatchEvent(new Event('submit', { cancelable: true }));\r\n }\r\n if (listOfSteps[activeStep].name === STEP.addRelatedInvestors) {\r\n document\r\n .getElementById('formAddRelatedInvestors')\r\n .dispatchEvent(new Event('submit', { cancelable: true }));\r\n }\r\n\r\n if (listOfSteps[activeStep].name === STEP.addRelatedContacts) {\r\n UserApi.createUserauthorizations(currentAuthorizations)\r\n .then(res => {\r\n setPermissionGroupsUploaded(res);\r\n const updatedListOfStep = listOfSteps.map(step => {\r\n if (step.name === STEP.addRelatedContacts) {\r\n return { ...step, completed: true };\r\n }\r\n return step;\r\n });\r\n setListOfSteps(updatedListOfStep);\r\n onSubmitEnd();\r\n })\r\n .catch(e => notifyServerError(e));\r\n }\r\n };\r\n\r\n const handleBackForm = () => {\r\n if (\r\n listOfSteps[activeStep].name === STEP.addRelatedInvestors &&\r\n hasEditFundPermission\r\n ) {\r\n setActiveStep(prev => prev - 1);\r\n }\r\n\r\n if (listOfSteps[activeStep].name === STEP.addRelatedContacts) {\r\n setActiveStep(prev => prev - 1);\r\n }\r\n };\r\n\r\n const displayCreatedInfo = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n }\r\n resourceCreated={fundContext.fund}\r\n isNextAvailable={isNextAvailable}\r\n isSpinnerOnNextButton={isSpinnerOnNextButton}\r\n shouldDisplayResourceCreatedInfo={true}\r\n displayResourceCreatedInfo={displayCreatedInfo}\r\n handleBackForm={handleBackForm}\r\n shouldHideBackButton={shouldHideBackButton}\r\n isFirstStepPristine={isFirstStepPristine}\r\n isSaveAndCloseStep={isSaveAndCloseStep}\r\n />\r\n );\r\n};\r\n\r\nexport default FundCreate;\r\n","import React, { useEffect, useMemo, useState } from 'react';\r\nimport {\r\n ReferenceField,\r\n Datagrid,\r\n TextField,\r\n useUnselectAll,\r\n linkToRecord,\r\n DateField,\r\n FunctionField\r\n} from 'react-admin';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport { fundInvestorStatus } from '../fundinvestors/FundInvestorLookups';\r\nimport EditButtonWithOnClick from '../../core/components/EditButtonWithOnClick';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport TenantConfigurationApi from '../../core/apis/TenantConfigurationApi';\r\nimport TagsField from '../../core/components/TagsField';\r\n\r\nconst hideForNow = true; // as short term solution (it should be removed in the future)\r\n\r\nconst styles = () => ({\r\n table: {\r\n '& tbody>.MuiTableRow-root:hover': {\r\n background: 'unset',\r\n cursor: 'default'\r\n }\r\n },\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n paddingBottom: '10px'\r\n },\r\n expandLabel: {\r\n color: '#757575',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n transform: 'translateY(-10px)'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n editButton: {\r\n color: '#757575',\r\n minWidth: '24px',\r\n padding: '6px 0',\r\n '& span': {\r\n paddingRight: 0\r\n }\r\n },\r\n editButtonColumnStyle: {\r\n width: '24px'\r\n }\r\n});\r\n\r\nconst FundInvestorDatagrid = props => {\r\n const {\r\n handleFundClick,\r\n handleInvestorFundEditButtonClick,\r\n classes,\r\n expand,\r\n permissions,\r\n fundInvTagsList,\r\n ...datagridProps\r\n } = props;\r\n\r\n const notifyServerError = useNotifyServerError();\r\n\r\n //unselecting all the checkboxes from the deleting actions in the ComponenWillUnmount listener\r\n const unSelectAll = useUnselectAll(datagridProps.resource);\r\n const YN_FREEZEINVESTORS = 'YN_freezeInvestors';\r\n const [freezeEnabled, setFreezeEnabled] = useState(false);\r\n\r\n const formatNumberWithSeparatorsAndPrecision = (value, precision) => {\r\n //decimal separator is \",\", and thousand separator is \".\"\r\n if (value) {\r\n let number = value.toLocaleString('en-US');\r\n let parts = number.toString().split('.');\r\n let numberPart = parts[0];\r\n numberPart = numberPart.replaceAll(',', '.');\r\n let decimalPart = parts[1];\r\n if (!decimalPart) {\r\n if (precision === null || precision === 2) {\r\n decimalPart = '00';\r\n } else if (precision === 1) {\r\n decimalPart = '0';\r\n }\r\n }\r\n return numberPart + (decimalPart ? ',' + decimalPart : '');\r\n }\r\n return null;\r\n };\r\n\r\n useEffect(() => () => unSelectAll(), [unSelectAll]);\r\n const hasReadFundPermission = useMemo(() => {\r\n return permissions.includes('AUTH_READ_FUND_NA');\r\n }, [permissions]);\r\n\r\n useEffect(() => {\r\n TenantConfigurationApi.get(YN_FREEZEINVESTORS)\r\n .then(response => {\r\n setFreezeEnabled(response?.pageData[0]?.value === 'Y' ? true : false);\r\n })\r\n .catch(error => notifyServerError(error));\r\n }, [notifyServerError]);\r\n\r\n if (props.total > 0) {\r\n return (\r\n <>\r\n {expand && Related Funds}\r\n \r\n \r\n hasReadFundPermission\r\n ? `${linkToRecord(`/funds`, record.fundId)}`\r\n : false\r\n }\r\n sortBy=\"fundName\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {freezeEnabled && (\r\n \r\n )}\r\n {freezeEnabled && (\r\n \r\n )}\r\n \r\n record\r\n ? formatNumberWithSeparatorsAndPrecision(\r\n record['initialCommitment'],\r\n record['commitmentPrecision']\r\n )\r\n : null\r\n }\r\n />\r\n \r\n record\r\n ? formatNumberWithSeparatorsAndPrecision(\r\n record['totalCommitment'],\r\n record['commitmentPrecision']\r\n )\r\n : null\r\n }\r\n />\r\n {fundInvTagsList?.length > 0 && (\r\n \r\n )}\r\n \r\n {handleFundClick || hideForNow ? (\r\n undefined\r\n ) : (\r\n \r\n )}\r\n \r\n \r\n );\r\n } else if (props.loaded) {\r\n return (\r\n \r\n There are no related Funds to be displayed\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(FundInvestorDatagrid);\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * WireInstruction API\r\n */\r\nclass WireInstructionApi extends ApiBase {\r\n async validateImportFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/wireinstructions/validateimport`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async importFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/wireinstructions/importexcel`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n /**\r\n * create Wire Instructions\r\n * @param {*} createWireInstructions\r\n */\r\n async createWireInstructions(createWireInstructions) {\r\n const request = {\r\n url: `${this.API_URL}/wireinstructions`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(createWireInstructions)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Get wire instructions template excel\r\n */\r\n async getWireInstructionsExcelTemplate() {\r\n const request = {\r\n url: `${this.API_URL}/wireinstructions/import/template`,\r\n headers: this.getHeaders(),\r\n method: 'GET',\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Get wire instructions as excel\r\n * @param entityId investor id\r\n */\r\n async getWireInstructionsAsExcel(entityId) {\r\n const request = {\r\n url: `${this.API_URL}/wireinstructions//excel?entityId=${encodeURI(\r\n entityId\r\n )}`,\r\n headers: this.getHeaders(),\r\n method: 'GET',\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Create multiple\r\n * @param {*} wireInstructions\r\n * @returns\r\n */\r\n createMultipleWireInstructions = async wireInstructions => {\r\n const request = {\r\n url: `${this.API_URL}/wireinstructions`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(wireInstructions)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data && response.data.pageData;\r\n };\r\n}\r\nexport default new WireInstructionApi();\r\n","import React, { useState, useCallback, useMemo } from 'react';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n Grid,\r\n makeStyles,\r\n Menu,\r\n MenuItem,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n TableSortLabel,\r\n withStyles\r\n} from '@material-ui/core';\r\nimport { useNotify, FormDataConsumer, useRefresh, Loading } from 'react-admin';\r\nimport { saveAs } from 'file-saver';\r\nimport { get } from 'lodash';\r\n\r\nimport WireInstructionApi from '../../../core/apis/WireInstructionApi';\r\nimport { ExcelIcon } from '../../../core/themes/icons/ExcelIcon';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport FileField from '../../../core/components/forked/field/FileField';\r\nimport FileInput from '../../../core/components/forked/input/FileInput';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport GridPopover from '../../../core/components/grid/GridPopover';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\nimport ButtonMUI from '@material-ui/core/Button';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n flexGrow: 1\r\n },\r\n barTitle: {\r\n flexGrow: 1,\r\n paddingLeft: '8px'\r\n },\r\n horisontalRule: {\r\n height: '1px',\r\n backgroundColor: '#E0E0E0',\r\n border: 'none'\r\n },\r\n ButtonMUISpan: {\r\n paddingLeft: '4px'\r\n },\r\n excelIcon: {\r\n verticalAlign: 'middle',\r\n paddingRight: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n validateButton: {\r\n textAlign: 'center',\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)'\r\n },\r\n validateButtonText: {\r\n color: 'grey'\r\n },\r\n validationColumn: {\r\n color: 'red'\r\n },\r\n noRows: {\r\n color: 'red'\r\n },\r\n tableWrapper: {\r\n maxHeight: '70vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n});\r\n\r\nconst ExcelIconImage = () => {\r\n const classes = useStyles();\r\n return ;\r\n};\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst columnSort = (colName, isDesc) => {\r\n return (a, b) => {\r\n const x = (get(a, colName) || '').toString().toLowerCase();\r\n const y = (get(b, colName) || '').toString().toLowerCase();\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n };\r\n};\r\n\r\nconst colDefsToMap = colDefs => {\r\n const res = {};\r\n colDefs.forEach(col => {\r\n res[col.id] = {\r\n idx: col.index,\r\n name: col.title\r\n };\r\n });\r\n return res;\r\n};\r\n\r\nconst rowIndexCol = 'rowIndex';\r\nconst getColClass = (col, classes) =>\r\n col === 'validationErrors' ? classes.validationColumn : null;\r\n\r\nconst displayArrayInCell = (content, title, buttonClass) => {\r\n if (content && content.length) {\r\n return (\r\n 1 ? `${content.length} ${title}` : content[0]}\r\n classes={{ button: buttonClass }}\r\n multiple={content.length > 1}\r\n popoverContent={\r\n \r\n \r\n \r\n \r\n {title}\r\n \r\n \r\n \r\n {content.map((val, index) => {\r\n return (\r\n \r\n {val}\r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n }\r\n />\r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst WireInstructionsImportFromExcelInterrnal = ({\r\n entityId,\r\n hasImportWireInstructionExcelPermission,\r\n hasExportWireInstructionExcelPermission,\r\n dataAvailable\r\n}) => {\r\n const classes = useStyles();\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [importModelViewToggle, setsViewOfImport] = useState(false);\r\n const [validateButtonVisibile, setValidateButtonVisibility] = useState(false);\r\n const [disableImportButton, setImportButtonDisabled] = useState(true);\r\n const [loaderVisible, setLoaderVisible] = useState(false);\r\n const [showGrid, setShowGrid] = useState(false);\r\n const [showNoDataInExcelError, setShowNoDataInExcelError] = useState(false);\r\n const [isFileFieldDisabled, setIsFileFieldDisabled] = useState(false);\r\n\r\n const [order, setOrder] = useState('desc');\r\n const [orderBy, setOrderBy] = useState(-1);\r\n const [data, setData] = useState([]);\r\n const [columnDefs, setColumnDefs] = useState([]);\r\n const [excelPayload, setExcelPayload] = useState(null);\r\n\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const refresh = useRefresh();\r\n\r\n const colToColName = useMemo(() => {\r\n return colDefsToMap(columnDefs);\r\n }, [columnDefs]);\r\n\r\n const getOrderedColumns = useCallback(\r\n cols => {\r\n const foundCols = [];\r\n const notFoundCols = [];\r\n cols.forEach(col => {\r\n if (colToColName[col]) {\r\n foundCols[colToColName[col].idx] = col;\r\n } else {\r\n notFoundCols.push(col);\r\n }\r\n });\r\n const resCols = [];\r\n foundCols.forEach(col => resCols.push(col));\r\n resCols.push(...notFoundCols);\r\n return resCols;\r\n },\r\n [colToColName]\r\n );\r\n\r\n const columns = useMemo(() => {\r\n return getOrderedColumns(columnDefs.map(col => col.id));\r\n }, [columnDefs, getOrderedColumns]);\r\n\r\n const getColName = useCallback(\r\n col => (colToColName[col] && colToColName[col].name) || col,\r\n [colToColName]\r\n );\r\n\r\n const handleClick = useCallback(event => {\r\n setAnchorEl(event.currentTarget);\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n setAnchorEl(null);\r\n }, []);\r\n\r\n const handleImportClick = useCallback(() => {\r\n setAnchorEl(null);\r\n setsViewOfImport(true);\r\n }, []);\r\n\r\n const cleanUpData = useCallback(value => {\r\n setShowGrid(false);\r\n setImportButtonDisabled(true);\r\n setShowNoDataInExcelError(false);\r\n if (value) {\r\n setValidateButtonVisibility(true);\r\n } else {\r\n setValidateButtonVisibility(false);\r\n }\r\n }, []);\r\n\r\n const handleCloseImportClick = useCallback(() => {\r\n setAnchorEl(null);\r\n cleanUpData();\r\n setsViewOfImport(false);\r\n }, [cleanUpData]);\r\n\r\n const handleRequestSort = useCallback(\r\n index => {\r\n const isDesc = order === 'desc';\r\n setOrder(isDesc ? 'asc' : 'desc');\r\n setOrderBy(index);\r\n\r\n setData(data => data.sort(columnSort(columns[index], isDesc)));\r\n },\r\n [order, columns]\r\n );\r\n\r\n const handleClickValidation = useCallback(\r\n async values => {\r\n const payload = new FormData();\r\n if (values.file) {\r\n payload.append('excelFile', values.file.rawFile, values.file.title);\r\n }\r\n\r\n setValidateButtonVisibility(false);\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setIsFileFieldDisabled(true);\r\n try {\r\n const responseData = await WireInstructionApi.validateImportFromExcel(\r\n payload\r\n );\r\n setData(responseData.data);\r\n\r\n if (Array.isArray(responseData.columnDefinitions)) {\r\n setColumnDefs(responseData.columnDefinitions);\r\n } else {\r\n setColumnDefs([]);\r\n }\r\n if (Array.isArray(responseData.data) && responseData.data.length) {\r\n const validationErrors = responseData.data.some(\r\n elt => elt.validationErrors != null\r\n );\r\n\r\n setImportButtonDisabled(validationErrors);\r\n } else {\r\n setImportButtonDisabled(true);\r\n setShowNoDataInExcelError(true);\r\n }\r\n\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n setShowGrid(true);\r\n setExcelPayload(payload);\r\n } catch (e) {\r\n setExcelPayload(null);\r\n setColumnDefs([]);\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n notifyServerError(e);\r\n }\r\n },\r\n [notifyServerError]\r\n );\r\n\r\n const importWireInstructions = useCallback(\r\n async file => {\r\n try {\r\n await WireInstructionApi.importFromExcel(file);\r\n notify('ra.notification.custom_updated_message');\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n },\r\n [notify, notifyServerError]\r\n );\r\n\r\n const handleImportWireInstructionsClick = useCallback(async () => {\r\n if (!excelPayload) {\r\n return;\r\n }\r\n\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setShowGrid(false);\r\n setIsFileFieldDisabled(true);\r\n\r\n try {\r\n await importWireInstructions(excelPayload);\r\n setShowGrid(false);\r\n setLoaderVisible(false);\r\n setsViewOfImport(false);\r\n setIsFileFieldDisabled(false);\r\n refresh();\r\n } catch (e) {\r\n setLoaderVisible(false);\r\n notifyServerError(e);\r\n }\r\n }, [excelPayload, importWireInstructions, notifyServerError, refresh]);\r\n\r\n const handleExportClick = useCallback(async () => {\r\n setAnchorEl(null);\r\n WireInstructionApi.getWireInstructionsAsExcel(entityId)\r\n .then(resp => {\r\n const fileName = 'Wire Instructions.xlsx';\r\n saveAs(resp, fileName);\r\n })\r\n .catch(notifyServerError);\r\n }, [entityId, notifyServerError]);\r\n\r\n /**\r\n * Click on button 'Download as Excel' to download the excel file\r\n */\r\n const handleClickDownloadAsExcel = useCallback(async () => {\r\n setAnchorEl(null);\r\n WireInstructionApi.getWireInstructionsExcelTemplate()\r\n .then(resp => {\r\n const fileName = 'Wire Instructions Import Template.xlsx';\r\n saveAs(resp, fileName);\r\n })\r\n .catch(notifyServerError);\r\n }, [notifyServerError]);\r\n\r\n const [excelMenu, menuTitle] = useMemo(() => {\r\n const res = [];\r\n const title = [];\r\n if (hasImportWireInstructionExcelPermission) {\r\n res.push(\r\n \r\n Import Wire Instructions\r\n ,\r\n
    ,\r\n \r\n Download Wire Instructions Template\r\n \r\n );\r\n\r\n title.push('Wire Instructions');\r\n }\r\n\r\n if (hasExportWireInstructionExcelPermission && dataAvailable) {\r\n res.push(\r\n \r\n Export to Excel\r\n \r\n );\r\n title.push('Export Wire Instructions');\r\n }\r\n return [res, title.join(' ')];\r\n }, [\r\n classes.horisontalRule,\r\n handleClickDownloadAsExcel,\r\n handleExportClick,\r\n handleImportClick,\r\n hasExportWireInstructionExcelPermission,\r\n hasImportWireInstructionExcelPermission,\r\n dataAvailable\r\n ]);\r\n\r\n if (!excelMenu.length) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n {menuTitle}\r\n
    \r\n \r\n \r\n {excelMenu}\r\n \r\n\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseImportClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse\r\n }}\r\n >\r\n \r\n Import Wire Instructions from Excel\r\n \r\n\r\n \r\n
    \r\n \r\n \r\n {({ formData }) => (\r\n \r\n {!isFileFieldDisabled && (\r\n cleanUpData(value)}\r\n >\r\n \r\n \r\n )}\r\n {loaderVisible && }\r\n {validateButtonVisibile && (\r\n
    \r\n

    \r\n No Data To Display\r\n
    \r\n Click 'Validate' to parse and display Excel Data\r\n

    \r\n {\r\n handleClickValidation(formData);\r\n }}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n >\r\n Validate\r\n \r\n
    \r\n )}\r\n\r\n {showGrid && (\r\n
    \r\n
    \r\n \r\n \r\n \r\n {columns.map((col, index) => (\r\n \r\n handleRequestSort(index)}\r\n >\r\n {getColName(col)}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {data.map(item => (\r\n \r\n {columns.map(col => {\r\n let content = get(item, col, '');\r\n if (Array.isArray(content)) {\r\n content = displayArrayInCell(\r\n content,\r\n getColName(col),\r\n getColClass(col, classes)\r\n );\r\n }\r\n return (\r\n \r\n {content}\r\n \r\n );\r\n })}\r\n \r\n ))}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be validated.\r\n Please, provide excel file with data.\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Close\r\n \r\n
    \r\n \r\n Import\r\n \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nconst WireInstructionsImportFromExcel = props =>\r\n props.hasImportWireInstructionExcelPermission ||\r\n props.hasExportWireInstructionExcelPermission ? (\r\n \r\n ) : null;\r\n\r\nexport default WireInstructionsImportFromExcel;\r\n","import React, { useState } from 'react';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport { Grid, Typography, Button, CircularProgress } from '@material-ui/core/';\r\nimport ButtonMUI from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { ExcelIcon } from '../../../core/themes/icons/ExcelIcon';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport FileInput from '../../../core/components/forked/input/FileInput';\r\nimport FileField from '../../../core/components/forked/field/FileField';\r\nimport { FormDataConsumer, refreshView, Loading } from 'react-admin';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport TabList from '@material-ui/lab/TabList';\r\nimport TabPanel from '@material-ui/lab/TabPanel';\r\nimport TabContext from '@material-ui/lab/TabContext';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport InvestorApi from '../../../core/apis/InvestorApi';\r\nimport { useNotify } from 'ra-core';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport { saveAs } from 'file-saver';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\nimport WireInstructionsImportFromExcel from '../wireinstructions/WireInstructionsImportFromExcel';\r\n\r\nconst styles = {\r\n avatar: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\r\n height: '36px',\r\n width: '36px',\r\n color: '#757575'\r\n },\r\n errorIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'red'\r\n },\r\n warningIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'orange'\r\n },\r\n toolbarStyle: {\r\n backgroundColor: '#FFFFFF',\r\n borderBottom: '1px solid #E5E5E5',\r\n minHeight: '54px',\r\n paddingTop: '0',\r\n paddingBottom: '0'\r\n },\r\n firstButtonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px'\r\n },\r\n buttonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px',\r\n marginRight: '10px'\r\n },\r\n root: {\r\n flexGrow: 1\r\n },\r\n barTitle: {\r\n flexGrow: 1,\r\n paddingLeft: '8px'\r\n },\r\n label: {\r\n paddingRight: '0px'\r\n },\r\n horisontalRule: {\r\n height: '1px',\r\n backgroundColor: '#E0E0E0',\r\n border: 'none'\r\n },\r\n ButtonMUISpan: {\r\n paddingLeft: '4px'\r\n },\r\n excelIcon: {\r\n verticalAlign: 'middle',\r\n paddingRight: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n validateButton: {\r\n textAlign: 'center',\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)'\r\n },\r\n validateButtonText: {\r\n color: 'grey'\r\n },\r\n validationColumn: {\r\n color: 'red'\r\n },\r\n validationColumnWarning: {\r\n color: 'orange'\r\n },\r\n noRows: {\r\n color: 'red'\r\n },\r\n tabsStyle: {\r\n color: 'black',\r\n background: 'transparent'\r\n },\r\n tableWrapper: {\r\n maxHeight: '70vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n};\r\n\r\nconst AvatarImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ExcelIconImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ErrorImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\nconst WarningImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst ExcelInvestorImportTitleBarWithDropbox = withStyles(styles)(\r\n ({\r\n classes,\r\n type,\r\n title,\r\n createUrl,\r\n secondTitle,\r\n secondCreateUrl,\r\n icon,\r\n hasCreatePermission,\r\n hasExportInvestorsExcelPermission,\r\n hasImportInvestorExcelPermission,\r\n hasImportWireInstructionExcelPermission,\r\n hasCreateWireInstructionPermission,\r\n filters,\r\n ...rest\r\n }) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [importModelViewToggle, setsViewOfImport] = useState(false);\r\n const [validateButtonVisibile, setValidateButtonVisibility] = useState(\r\n false\r\n );\r\n const [submitting, setSubmitting] = useState(false);\r\n const [disableImportButton, setImportButtonDisabled] = useState(true);\r\n const [loaderVisible, setLoaderVisible] = useState(false);\r\n const [showGrid, setShowGrid] = useState(false);\r\n const [showNoDataInExcelError, setShowNoDataInExcelError] = useState(false);\r\n const [isFileFieldDisabled, setIsFileFieldDisabled] = useState(false);\r\n const [value, setValue] = useState('1');\r\n const [order, setOrder] = useState('desc');\r\n const [orderBy, setOrderBy] = useState(-1);\r\n const [response, setResponse] = useState('');\r\n const [responseTab2, setResponseTab2] = useState('');\r\n const [responseTab3, setResponseTab3] = useState('');\r\n const [responseTab4, setResponseTab4] = useState('');\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const [tab1ContainsErrors, setTab1ContainsErrors] = useState(false);\r\n const [tab1ContainsWarning, setTab1ContainsWarning] = useState(false);\r\n const [tab2ContainsErrors, setTab2ContainsErrors] = useState(false);\r\n const [tab3ContainsErrors, setTab3ContainsErrors] = useState(false);\r\n const [tab4ContainsErrors, setTab4ContainsErrors] = useState(false);\r\n const [tab4ContainsWarning, setTab4ContainsWarning] = useState(false);\r\n const [excelPayload, setExcelPayload] = useState(null);\r\n const [downloadingTemplate, setDownloadingTemplate] = useState(false);\r\n\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleImportClick = () => {\r\n setAnchorEl(null);\r\n setsViewOfImport(true);\r\n };\r\n\r\n const handleCloseImportClick = () => {\r\n setAnchorEl(null);\r\n cleanUpData();\r\n setsViewOfImport(false);\r\n };\r\n\r\n const columnDirectionSort = (sortColumnName, isDesc) => {\r\n return function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowIndex') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n };\r\n };\r\n\r\n const handleRequestSort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 2:\r\n sortColumnName = 'investorName';\r\n break;\r\n case 3:\r\n sortColumnName = 'aka';\r\n break;\r\n case 4:\r\n sortColumnName = 'taxId';\r\n break;\r\n case 5:\r\n sortColumnName = 'status';\r\n break;\r\n case 6:\r\n sortColumnName = 'addressLine1';\r\n break;\r\n case 7:\r\n sortColumnName = 'addressLine2';\r\n break;\r\n case 8:\r\n sortColumnName = 'addressLine3';\r\n break;\r\n case 9:\r\n sortColumnName = 'country';\r\n break;\r\n case 10:\r\n sortColumnName = 'phoneNumber';\r\n break;\r\n case 11:\r\n sortColumnName = 'stateProvince';\r\n break;\r\n case 12:\r\n sortColumnName = 'zipPostalCode';\r\n break;\r\n case 13:\r\n sortColumnName = 'city';\r\n break;\r\n case 14:\r\n sortColumnName = 'faxNumber';\r\n break;\r\n case 15:\r\n sortColumnName = 'matchingFieldTaxId';\r\n break;\r\n case 16:\r\n sortColumnName = 'matchingFieldAkaInvestorName';\r\n break;\r\n case 17:\r\n sortColumnName = 'matchingFieldAkaInvestorId';\r\n break;\r\n case 18:\r\n sortColumnName = 'matchingFieldCrossReference';\r\n break;\r\n case 19:\r\n sortColumnName = 'matchingFieldAlternateTaxId';\r\n break;\r\n case 20:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n var sortedTableData = response.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab2Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 2:\r\n sortColumnName = 'fundId';\r\n break;\r\n case 3:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNum';\r\n }\r\n\r\n var sortedTableData = responseTab2.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab3Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 2:\r\n sortColumnName = 'fundId';\r\n break;\r\n case 3:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNum';\r\n }\r\n\r\n var sortedTableData = responseTab3.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab4Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 2:\r\n sortColumnName = 'fundId';\r\n break;\r\n case 3:\r\n sortColumnName = 'investorFreezeStartDate';\r\n break;\r\n case 4:\r\n sortColumnName = 'investorFreezeEndDate';\r\n break;\r\n case 5:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNum';\r\n }\r\n\r\n var sortedTableData = responseTab4.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const cleanUpData = value => {\r\n setTab1ContainsErrors(false);\r\n setTab1ContainsWarning(false);\r\n setTab2ContainsErrors(false);\r\n setTab3ContainsErrors(false);\r\n setTab4ContainsErrors(false);\r\n setTab4ContainsWarning(false);\r\n setShowGrid(false);\r\n setImportButtonDisabled(true);\r\n if (value) {\r\n setValidateButtonVisibility(true);\r\n } else {\r\n setValidateButtonVisibility(false);\r\n }\r\n };\r\n\r\n const handleClickValidation = async values => {\r\n var payload = new FormData();\r\n if (values.file) {\r\n payload.append('excelFile', values.file.rawFile, values.file.title);\r\n }\r\n\r\n setValidateButtonVisibility(false);\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setIsFileFieldDisabled(true);\r\n\r\n InvestorApi.validateImportFromExcel(payload)\r\n .then(responseData => {\r\n var arrayData = responseData['validatedInvestorDetails'];\r\n setResponse(arrayData);\r\n\r\n var arrayDataTab2 = responseData['validatedAddingInvestorFundImport'];\r\n setResponseTab2(arrayDataTab2);\r\n\r\n var arrayDataTab3 =\r\n responseData['validatedDeletingInvestorFundImport'];\r\n setResponseTab3(arrayDataTab3);\r\n\r\n var arrayDataTab4 = responseData['validatedInvestorFreezeImport'];\r\n setResponseTab4(arrayDataTab4);\r\n\r\n const validationErrors = arrayData\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab1ContainsErrors(validationErrors.length > 0);\r\n\r\n const validationWarningTab1 = arrayData\r\n .slice(0)\r\n .filter(r => r.warningMessage !== '');\r\n\r\n const validationErrorsTab2 = arrayDataTab2\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab2ContainsErrors(validationErrorsTab2.length > 0);\r\n\r\n const validationErrorsTab3 = arrayDataTab3\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab3ContainsErrors(validationErrorsTab3.length > 0);\r\n\r\n const validationErrorsTab4 = arrayDataTab4\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab4ContainsErrors(validationErrorsTab4.length > 0);\r\n\r\n const validationWarningTab4 = arrayDataTab4\r\n .slice(0)\r\n .filter(r => r.validationWarning !== '');\r\n\r\n if (\r\n arrayData.length > 0 ||\r\n arrayDataTab2.length > 0 ||\r\n arrayDataTab3.length > 0 ||\r\n arrayDataTab4.length > 0\r\n ) {\r\n var errors = false;\r\n if (\r\n arrayData.length > 0 &&\r\n validationErrors &&\r\n validationErrors.length > 0\r\n ) {\r\n errors = true;\r\n } else if (\r\n arrayData.length &&\r\n validationWarningTab1 &&\r\n validationWarningTab1.length > 0\r\n ) {\r\n setTab1ContainsWarning(true);\r\n }\r\n if (\r\n arrayDataTab2.length > 0 &&\r\n validationErrorsTab2 &&\r\n validationErrorsTab2.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab3.length > 0 &&\r\n validationErrorsTab3 &&\r\n validationErrorsTab3.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab4.length > 0 &&\r\n validationErrorsTab4 &&\r\n validationErrorsTab4.length > 0\r\n ) {\r\n errors = true;\r\n } else if (\r\n arrayDataTab4.length &&\r\n validationWarningTab4 &&\r\n validationWarningTab4.length > 0\r\n ) {\r\n setTab4ContainsWarning(true);\r\n }\r\n setImportButtonDisabled(errors);\r\n } else {\r\n setImportButtonDisabled(false);\r\n setShowNoDataInExcelError(true);\r\n }\r\n\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n setShowGrid(true);\r\n setExcelPayload(payload);\r\n })\r\n .catch(e => {\r\n setExcelPayload(null);\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n notify(getIcError(e), { type: 'error' });\r\n });\r\n };\r\n\r\n const handleImportInvestorsClick = () => {\r\n setImportButtonDisabled(true);\r\n if (!excelPayload) {\r\n return;\r\n }\r\n setLoaderVisible(true);\r\n setShowGrid(false);\r\n InvestorApi.importInvestorsFromExcel(excelPayload)\r\n .then(() => {\r\n notify('ra.notification.custom_updated_message');\r\n })\r\n .catch(e => {\r\n setLoaderVisible(false);\r\n notifyServerError(e);\r\n })\r\n .finally(() => {\r\n setLoaderVisible(false);\r\n setsViewOfImport(false);\r\n handleCloseImportClick();\r\n refreshView();\r\n });\r\n };\r\n\r\n const handleTemplateDownload = () => {\r\n setDownloadingTemplate(true);\r\n InvestorApi.downloadInvestorImportTemplate()\r\n .then(resp => {\r\n const fileName = 'Investor Import Template.xlsx';\r\n saveAs(resp, fileName);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n })\r\n .finally(() => {\r\n setDownloadingTemplate(false);\r\n });\r\n };\r\n\r\n const handleExportClick = filters => {\r\n setSubmitting(true);\r\n InvestorApi.exportInvestorsExcel(\r\n filters.id,\r\n filters.name,\r\n filters.status,\r\n filters.investorTagId,\r\n filters.fundFamilyId\r\n )\r\n .then(resp => {\r\n const fileName = 'Investors Export.xlsx';\r\n saveAs(resp, fileName);\r\n setSubmitting(false);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n setSubmitting(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {type}\r\n \r\n {(hasImportInvestorExcelPermission ||\r\n hasExportInvestorsExcelPermission) && (\r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n Import/Export Investors\r\n \r\n
    \r\n \r\n \r\n {hasImportInvestorExcelPermission && (\r\n \r\n Import Investors from Excel\r\n \r\n )}\r\n {hasExportInvestorsExcelPermission && (\r\n handleExportClick(filters)}\r\n disabled={submitting}\r\n >\r\n {submitting && (\r\n \r\n \r\n \r\n )}\r\n Export Investors to Excel\r\n \r\n )}\r\n {hasImportInvestorExcelPermission && (\r\n
    \r\n
    \r\n \r\n {downloadingTemplate && (\r\n \r\n \r\n \r\n )}\r\n Download Template\r\n \r\n
    \r\n )}\r\n \r\n
    \r\n )}\r\n\r\n {hasCreatePermission && title && (\r\n \r\n {title}\r\n \r\n )}\r\n\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseImportClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Import Investors from Excel\r\n \r\n\r\n \r\n
    \r\n \r\n \r\n {({ formData, ...rest }) => (\r\n \r\n {!isFileFieldDisabled && (\r\n cleanUpData(value)}\r\n >\r\n \r\n \r\n )}\r\n {loaderVisible && }\r\n\r\n {validateButtonVisibile && (\r\n
    \r\n

    \r\n No Data To Display\r\n
    \r\n Click 'Validate' to parse and display Excel Data\r\n

    \r\n handleClickValidation(formData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n >\r\n Validate\r\n \r\n
    \r\n )}\r\n\r\n {showGrid && (\r\n
    \r\n \r\n \r\n \r\n {\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n {\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n {\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n {\r\n return (\r\n \r\n );\r\n }}\r\n />\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Investor ID' },\r\n { id: 'Investor Name' },\r\n { id: 'A.K.A' },\r\n { id: 'Tax ID' },\r\n { id: 'Status' },\r\n { id: 'Address Line 1' },\r\n { id: 'Address Line 2' },\r\n { id: 'Address Line 3' },\r\n { id: 'Country' },\r\n { id: 'Phone Number' },\r\n { id: 'State/Province' },\r\n { id: 'Zip/Postal Code' },\r\n { id: 'City' },\r\n { id: 'Fax Number' },\r\n { id: 'Matching Field - Tax ID' },\r\n {\r\n id:\r\n 'Matching Field - A.K.A Investor Name'\r\n },\r\n {\r\n id: 'Matching Field - AKA Investor ID'\r\n },\r\n {\r\n id: 'Matching Field - Cross Reference'\r\n },\r\n {\r\n id:\r\n 'Matching Field - Alternative Tax ID'\r\n },\r\n {\r\n id:\r\n 'Validation Error / Warning Message'\r\n }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestSort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {response.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n \r\n {item.investorId}\r\n \r\n \r\n {item.investorName}\r\n \r\n {item.aka}\r\n {item.taxId}\r\n {item.status}\r\n \r\n {item.addressLine1}\r\n \r\n \r\n {item.addressLine2}\r\n \r\n \r\n {item.addressLine3}\r\n \r\n {item.country}\r\n \r\n {item.phoneNumber}\r\n \r\n \r\n {item.stateProvince}\r\n \r\n \r\n {item.zipPostalCode}\r\n \r\n {item.city}\r\n \r\n {item.faxNumber}\r\n \r\n \r\n {item.matchingFieldTaxId}\r\n \r\n \r\n {item.matchingFieldAkaInvestorName}\r\n \r\n \r\n {item.matchingFieldAkaInvestorId}\r\n \r\n \r\n {item.matchingFieldCrossReference}\r\n \r\n \r\n {item.matchingFieldAlternateTaxId}\r\n \r\n \r\n {tab1ContainsErrors\r\n ? item.validationError\r\n : item.warningMessage}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Fund ID' },\r\n { id: 'Investor ID' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab2Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab2.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.fundId}\r\n \r\n {item.investorId}\r\n \r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Fund ID' },\r\n { id: 'Investor ID' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab3Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab3.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.fundId}\r\n \r\n {item.investorId}\r\n \r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Fund ID' },\r\n { id: 'Investor ID' },\r\n { id: 'Investor Freeze Start Date' },\r\n { id: 'Investor Freeze End Date' },\r\n {\r\n id:\r\n 'Validation Error / Warning Message'\r\n }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab4Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab4.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.fundId}\r\n \r\n {item.investorId}\r\n \r\n \r\n {item.investorFreezeStartDate}\r\n \r\n \r\n {item.investorFreezeEndDate}\r\n \r\n \r\n {tab4ContainsErrors\r\n ? item.validationError\r\n : item.validationWarning}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Close\r\n \r\n
    \r\n \r\n Import\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n);\r\n\r\nexport default ExcelInvestorImportTitleBarWithDropbox;\r\n","import { makeStyles } from '@material-ui/core';\r\nimport InvestorIcon from '@material-ui/icons/People';\r\nimport React, { useMemo, useEffect, useState } from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n ReferenceManyField,\r\n Responsive,\r\n TextInput,\r\n SelectInput,\r\n SimpleList,\r\n TextField,\r\n TopToolbar,\r\n Pagination,\r\n useGetList,\r\n useQuery,\r\n Loading\r\n} from 'react-admin';\r\n\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport AutocompleteInput from '../../core/components/forked/input/AutocompleteInput';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport FundInvestorDatagrid from './FundInvestorDatagrid';\r\nimport { investorStatus } from './InvestorLookups';\r\nimport ListTitleBar from './importinvestors/ExcelInvestorImportTitleBarWithDropbox';\r\nimport TagsField from '../../core/components/TagsField';\r\nimport TagFilter from '../../core/components/inputs/TagFilter';\r\n\r\nconst useStyles = makeStyles({\r\n expandOnlyDataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '14px'\r\n }\r\n }\r\n },\r\n expandDataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '14px'\r\n },\r\n '& th:nth-of-type(2)': {\r\n width: '24px'\r\n }\r\n }\r\n },\r\n expandIconCell: {\r\n width: '14px',\r\n '& div': {\r\n width: '14px',\r\n padding: '0'\r\n },\r\n '& div:hover ': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n statusColumnStyle: {\r\n width: '68px'\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n }\r\n});\r\n\r\nconst useshowStyles = makeStyles({\r\n root: {\r\n padding: '16px 16px 10px 16px'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst InvestorFilters = ({\r\n filterValues,\r\n setAppliedFilters,\r\n tagsList,\r\n selectedTags,\r\n setSelectedTags,\r\n investorTagsCount,\r\n ...props\r\n}) => {\r\n const { data } = useQuery({\r\n type: 'getList',\r\n resource: 'fundfamilies',\r\n payload: {\r\n filter: {\r\n orderBy: 'name',\r\n orderDirection: 'ASC'\r\n }\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n // Hack to reset filter when a tag is deleted while it was selected previously for filtering the list\r\n filterValues.investorTagId?.forEach(tagId => {\r\n const isTagInDB = Object.values(tagsList).some(\r\n tagChoice => tagChoice.id === tagId\r\n );\r\n if (tagsList.length === 0 || !isTagInDB) {\r\n delete filterValues.investorTagId;\r\n setSelectedTags([]);\r\n }\r\n });\r\n if (filterValues) {\r\n setAppliedFilters(filterValues);\r\n if (filterValues.investorTagId) {\r\n setSelectedTags(filterValues.investorTagId);\r\n }\r\n }\r\n }, [filterValues, tagsList, setAppliedFilters, setSelectedTags]);\r\n\r\n return (\r\n \r\n \r\n {data && data.length > 0 && (\r\n \r\n )}\r\n {investorTagsCount > 0 && (\r\n setSelectedTags(e)}\r\n displayTagFilter={true}\r\n onChangeFundInv={() => null}\r\n displayFundInvTagFilter={false}\r\n isListFilter={true}\r\n selectLabel=\"Investor Tags\"\r\n topLabel=\"Investor Tags\"\r\n filterValues={filterValues}\r\n />\r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst InvestorShow = props => {\r\n const classes = useshowStyles();\r\n const { handleFundClick, permissions, ...rest } = props;\r\n\r\n const { data } = useGetList('fundinvestortags', null, null);\r\n const fundInvTagsList = Object.values(data);\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst InvestorsTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n hasImportInvestorExcelPermission={props.hasImportInvestorExcelPermission}\r\n hasExportInvestorsExcelPermission={\r\n props.hasExportInvestorsExcelPermission\r\n }\r\n hasImportWireInstructionExcelPermission={\r\n props.hasImportWireInstructionExcelPermission\r\n }\r\n hasCreateWireInstructionPermission={\r\n props.hasCreateWireInstructionPermission\r\n }\r\n filters={props.filters}\r\n />\r\n );\r\n};\r\n\r\nconst InvestorList = props => {\r\n const handleFundClick = fundInvestorId => {\r\n const fundId = fundInvestorId.split(':')[0];\r\n return `/funds/${fundId}`;\r\n };\r\n const classes = useStyles();\r\n const {\r\n permissions = [],\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n ...rest\r\n } = props;\r\n\r\n const [appliedFilters, setAppliedFilters] = useState([]);\r\n const [selectedTags, setSelectedTags] = useState([]);\r\n\r\n const { hasImportInvestorExcelPermission } = useMemo(() => {\r\n return {\r\n hasImportInvestorExcelPermission: props.permissions\r\n ? props.permissions.includes('AUTH_IMPORT_INVESTOR_EXCEL')\r\n : false\r\n };\r\n }, [props.permissions]);\r\n\r\n const { hasExportInvestorsExcelPermission } = useMemo(() => {\r\n return {\r\n hasExportInvestorsExcelPermission: props.permissions\r\n ? props.permissions.includes('AUTH_EXPORT_INVESTORS')\r\n : false\r\n };\r\n }, [props.permissions]);\r\n\r\n const { hasImportWireInstructionExcelPermission } = useMemo(() => {\r\n return {\r\n hasImportWireInstructionExcelPermission: props.permissions\r\n ? props.permissions.includes('AUTH_IMPORT_WIRE_INSTRUCTION_EXCEL')\r\n : false\r\n };\r\n }, [props.permissions]);\r\n\r\n const { hasCreateWireInstructionPermission } = useMemo(() => {\r\n return {\r\n hasCreateWireInstructionPermission: props.permissions\r\n ? props.permissions.includes('AUTH_CREATE_WIRE_INSTRUCTION')\r\n : false\r\n };\r\n }, [props.permissions]);\r\n\r\n // Fetch all investortags. If there is at least one, we need to display the \"Investor Tags\" column.\r\n const {\r\n data: tagsList,\r\n loading: investorTagLoading,\r\n total: investorTagsCount\r\n } = useGetList('investortags', null, null);\r\n\r\n // Wait for the GET /v1/investortags response before displaying the grid.\r\n if (investorTagLoading) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n }\r\n title={\r\n \r\n }\r\n exporter={false}\r\n sort={{ field: 'name', order: 'ASC' }}\r\n perPage={20}\r\n pagination={}\r\n filter={{\r\n orphanVisibility: 'ALL_VISIBLE',\r\n returnInvestorTags: investorTagsCount > 0\r\n }}\r\n bulkActionButtons={hasDeletePermission && }\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n (record?.name ? record.name : '')}\r\n secondaryText={record => (record?.id ? record.id : '')}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n {investorTagsCount > 0 && (\r\n \r\n )}\r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default InvestorList;\r\n","import { createContext } from 'react';\r\n\r\nexport const CreationInvestorContext = createContext(null);\r\n","import React, { useCallback, useContext, useRef } from 'react';\r\nimport { Form, FormSpy } from 'react-final-form';\r\nimport { createForm } from 'final-form';\r\nimport { Grid, makeStyles } from '@material-ui/core';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { isEmpty, omit } from 'lodash';\r\nimport { validateInvestorIdRff } from '../utils';\r\nimport { Select, TextField } from 'mui-rff';\r\nimport { fieldLengthValidator } from '../../../core/utils';\r\nimport InvestorApi from '../../../core/apis/InvestorApi';\r\nimport { CreationInvestorContext } from './CreationInvestorContext';\r\nimport { STEP } from '../InvestorCreate';\r\n\r\nconst investorNameMaxLength = 256;\r\nconst investorIdMaxLength = 20;\r\nconst investorAkaMaxLength = 255;\r\nconst investorTaxIdMaxLength = 50;\r\n\r\nconst useStyle = makeStyles({\r\n formGroup: {\r\n marginBlock: '16px'\r\n }\r\n});\r\n\r\nconst InvestorDetailsStep = ({\r\n onSubmitEnd,\r\n setIsNextAvailable,\r\n setActiveListOfSteps,\r\n activeListOfSteps\r\n}) => {\r\n const classes = useStyle();\r\n const { investorContext, setInvestorContext } = useContext(\r\n CreationInvestorContext\r\n );\r\n const notifyServerError = useNotifyServerError();\r\n const formStateRef = useRef({});\r\n\r\n const initialFormValues = isEmpty(investorContext.investor)\r\n ? null\r\n : investorContext.investor;\r\n\r\n const onSubmit = useCallback(\r\n async formValues => {\r\n const pristine = formStateRef.current.pristine;\r\n // If it's the first submission, we make a POST request.\r\n if (!pristine && investorContext.investor === undefined) {\r\n try {\r\n const response = await InvestorApi.create(formValues.id, formValues);\r\n setInvestorContext({ ...investorContext, investor: response });\r\n setIsNextAvailable(true);\r\n onSubmitEnd();\r\n } catch (e) {\r\n notifyServerError(e, undefined);\r\n }\r\n }\r\n // If the investor has already been created before then we make a PUT request.\r\n if (!pristine && investorContext.investor !== undefined) {\r\n const investorId = investorContext.investor.id;\r\n const payload = omit(formValues, 'id');\r\n try {\r\n const response = await InvestorApi.updateInvestor(\r\n investorId,\r\n payload\r\n );\r\n setInvestorContext({ ...investorContext, investor: response });\r\n setIsNextAvailable(true);\r\n onSubmitEnd();\r\n } catch (e) {\r\n notifyServerError(e, undefined);\r\n }\r\n }\r\n // If the user has already been created and there is no changes on the form, we move to next step.\r\n if (pristine && investorContext.investor !== undefined) {\r\n onSubmitEnd();\r\n }\r\n const updatedListOfStep = activeListOfSteps.map(step => {\r\n if (step.name === STEP.investorDetails) {\r\n return { ...step, completed: true };\r\n }\r\n return step;\r\n });\r\n setActiveListOfSteps(updatedListOfStep);\r\n },\r\n [\r\n investorContext,\r\n activeListOfSteps,\r\n setActiveListOfSteps,\r\n setInvestorContext,\r\n setIsNextAvailable,\r\n onSubmitEnd,\r\n notifyServerError\r\n ]\r\n );\r\n\r\n const formRef = useRef(\r\n createForm({\r\n onSubmit: onSubmit,\r\n initialValues: initialFormValues\r\n })\r\n );\r\n\r\n const required = value => (value ? undefined : 'Required');\r\n\r\n const composeValidators = (...validators) => value =>\r\n validators.reduce(\r\n (error, validator) => error || validator(value),\r\n undefined\r\n );\r\n\r\n return (\r\n
    \r\n {({ handleSubmit, submitting }) => (\r\n <>\r\n {\r\n setInvestorContext({\r\n ...investorContext,\r\n detailsFormState: props\r\n });\r\n formStateRef.current = { pristine: props.pristine };\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default InvestorDetailsStep;\r\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\r\nimport { ReferenceArrayInput } from 'react-admin';\r\nimport { Form, FormSpy } from 'react-final-form';\r\nimport GridInputChoices from '../../users/userauthorization/GridInputChoices';\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\nimport get from 'lodash/get';\r\nimport { connect } from 'react-redux';\r\nimport { CircularProgress, Grid } from '@material-ui/core';\r\nimport { CreationInvestorContext } from './CreationInvestorContext';\r\nimport FundInvestorApi from '../../../core/apis/FundInvestorApi';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { isEmpty } from 'lodash';\r\nimport { Alert } from '@material-ui/lab';\r\nimport { STEP } from '../InvestorCreate';\r\n\r\nconst AddRelatedFundsStep = props => {\r\n const {\r\n reduxFunds,\r\n onSubmitEnd,\r\n hasDeleteFundInvestorPermission,\r\n relatedFundsUploaded,\r\n setCurrentAuthorizations,\r\n setIsNextAvailable,\r\n setIsSpinnerOnNextButton,\r\n setActiveListOfSteps,\r\n activeListOfSteps,\r\n setRelatedFundsUploaded\r\n } = props;\r\n const { investorContext, setInvestorContext } = useContext(\r\n CreationInvestorContext\r\n );\r\n const notifyServerError = useNotifyServerError();\r\n const [loading, setLoading] = useState(true);\r\n\r\n const getInitialValues = () => {\r\n if (investorContext.relatedFunds !== undefined) {\r\n return investorContext.relatedFunds;\r\n } else {\r\n return null;\r\n }\r\n };\r\n\r\n function filterFundInvestorsStates(fi) {\r\n setInvestorContext(prev => ({\r\n ...prev,\r\n fundInvestors: [\r\n ...prev.fundInvestors.filter(elem => elem.fundId !== fi.fundId)\r\n ],\r\n fundIds: [...prev.fundIds.filter(id => id !== fi.fundId)]\r\n }));\r\n\r\n // We remove any permission that contains the investor removed.\r\n setCurrentAuthorizations(prev => [\r\n ...prev.filter(authorization => authorization.fundId !== fi.fundId)\r\n ]);\r\n setRelatedFundsUploaded(prev => [\r\n ...prev.filter(fund => fund.fundId !== fi.fundId)\r\n ]);\r\n }\r\n\r\n useEffect(() => {\r\n FundInvestorApi.getByInvestorId(investorContext.investor.id)\r\n .then(({ pageData }) => {\r\n const fundIds = pageData.map(fund => fund.fundId);\r\n setInvestorContext(prev => ({\r\n ...prev,\r\n relatedFunds: {\r\n funds: fundIds\r\n }\r\n }));\r\n })\r\n .catch(e => notifyServerError(e, undefined))\r\n .finally(() => setLoading(false));\r\n }, [investorContext.investor.id, setInvestorContext, notifyServerError]);\r\n\r\n const allFunds = useMemo(() => Object.values(reduxFunds), [reduxFunds]);\r\n\r\n const referenceArrayInputProps = {\r\n label: '',\r\n optionTextLabel: 'Fund Name',\r\n optionValueLabel: 'Fund ID',\r\n resource: 'funds',\r\n reference: 'funds',\r\n source: 'funds',\r\n perPage: -1,\r\n sort: { field: 'name', order: 'ASC' },\r\n additionalColumns: [\r\n { label: 'Status', name: 'status', isStatusColumn: true }\r\n ]\r\n };\r\n\r\n const onSubmit = async values => {\r\n setIsSpinnerOnNextButton(true);\r\n\r\n const investorId = investorContext.investor.id;\r\n let payload = [];\r\n values.funds.forEach(fund => {\r\n payload = [\r\n ...payload,\r\n {\r\n investorId,\r\n fundId: fund\r\n }\r\n ];\r\n });\r\n\r\n // First submission, we create fundInvestors\r\n if (isEmpty(investorContext.fundInvestors)) {\r\n setInvestorContext(prev => ({ ...prev, fundIds: values.funds }));\r\n try {\r\n await FundInvestorApi.create(payload).then(res => {\r\n if (!isEmpty(res)) {\r\n setIsSpinnerOnNextButton(false);\r\n setInvestorContext(prev => ({ ...prev, fundInvestors: res }));\r\n setRelatedFundsUploaded(res);\r\n onSubmitEnd();\r\n }\r\n });\r\n } catch (e) {\r\n notifyServerError(e, undefined);\r\n setIsSpinnerOnNextButton(false);\r\n }\r\n } else {\r\n // If not the first submission, we check if there are any fund-investors to delete/add\r\n const fundInvestorToDelete = investorContext.fundInvestors.reduce(\r\n (acc, curr) => {\r\n if (!payload.some(element => element.fundId === curr.fundId)) {\r\n acc = [...acc, curr];\r\n }\r\n return acc;\r\n },\r\n []\r\n );\r\n const fundInvestorToAdd = payload.reduce((acc, curr) => {\r\n if (\r\n !investorContext.fundInvestors.some(\r\n element => element.fundId === curr.fundId\r\n )\r\n ) {\r\n acc = [...acc, curr];\r\n }\r\n return acc;\r\n }, []);\r\n\r\n if (\r\n fundInvestorToDelete.length > 0 &&\r\n fundInvestorToAdd.length === 0 &&\r\n hasDeleteFundInvestorPermission\r\n ) {\r\n await FundInvestorApi.delete(fundInvestorToDelete)\r\n .then(() => {\r\n fundInvestorToDelete.forEach(fi => filterFundInvestorsStates(fi));\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n })\r\n .catch(e => notifyServerError(e));\r\n } else if (\r\n fundInvestorToDelete.length === 0 &&\r\n fundInvestorToAdd.length > 0\r\n ) {\r\n await FundInvestorApi.create(fundInvestorToAdd)\r\n .then(res => {\r\n setInvestorContext(prev => ({\r\n ...prev,\r\n fundInvestors: [...prev['fundInvestors'], ...res],\r\n fundIds: values.funds\r\n }));\r\n setRelatedFundsUploaded(prev => [...prev, ...res]);\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n })\r\n .catch(e => notifyServerError(e));\r\n } else if (\r\n fundInvestorToDelete.length > 0 &&\r\n fundInvestorToAdd.length > 0\r\n ) {\r\n if (hasDeleteFundInvestorPermission) {\r\n await FundInvestorApi.delete(fundInvestorToDelete).then(() => {\r\n fundInvestorToDelete.forEach(fi => filterFundInvestorsStates(fi));\r\n });\r\n }\r\n\r\n await FundInvestorApi.create(fundInvestorToAdd).then(res => {\r\n setInvestorContext(prev => ({\r\n ...prev,\r\n fundInvestors: [...prev.fundInvestors, ...res]\r\n }));\r\n setRelatedFundsUploaded(prev => [...prev, ...res]);\r\n });\r\n fundInvestorToAdd.forEach(fi =>\r\n setInvestorContext(prev => ({\r\n ...prev,\r\n fundIds: [...prev.fundIds, fi.fundIds]\r\n }))\r\n );\r\n\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n } else {\r\n setIsSpinnerOnNextButton(false);\r\n onSubmitEnd();\r\n }\r\n }\r\n\r\n const updatedListOfStep = activeListOfSteps.map(step => {\r\n if (step.name === STEP.addRelatedFunds) {\r\n return { ...step, completed: true };\r\n }\r\n return step;\r\n });\r\n setActiveListOfSteps(updatedListOfStep);\r\n };\r\n\r\n const displayWarningMessage = () => {\r\n if (!isEmpty(relatedFundsUploaded) && !hasDeleteFundInvestorPermission) {\r\n return (\r\n \r\n You don't have the permission to remove Related Funds. If unchecked,\r\n they will not be removed.\r\n \r\n );\r\n } else return null;\r\n };\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n
    \r\n {({ handleSubmit }) => (\r\n \r\n {\r\n setIsNextAvailable(\r\n !formStateProps.submitting &&\r\n formStateProps.values.funds.length > 0\r\n );\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n {displayWarningMessage()}\r\n
    \r\n
    \r\n );\r\n }\r\n};\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n reduxFunds: get(state, 'admin.resources.funds.data', {})\r\n };\r\n};\r\nexport default connect(mapStateToProps, {})(AddRelatedFundsStep);\r\n","const typeChoices = [\r\n { id: 'ARCHIVE_ALREADY_SPLIT', code: 4, name: 'Already Split' },\r\n { id: 'SINGLE_FILE_WITH_SPLIT_TAGS', code: 1, name: 'Coordinates' }\r\n];\r\n\r\nconst matchingFields = [\r\n { id: 1, name: 'Tax ID' },\r\n { id: 2, name: 'A.K.A Investor Name' },\r\n { id: 3, name: 'A.K.A Investor ID' },\r\n { id: 4, name: 'Cross Reference' },\r\n { id: 5, name: 'Alternative Tax ID' }\r\n];\r\n\r\nexport { typeChoices, matchingFields };\r\n","import React, { useCallback, useContext, useRef } from 'react';\r\nimport { Form, FormSpy } from 'react-final-form';\r\nimport { createForm } from 'final-form';\r\nimport { Grid, makeStyles } from '@material-ui/core';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { TextField } from 'mui-rff';\r\nimport { fieldLengthValidator } from '../../../core/utils';\r\nimport { CreationInvestorContext } from './CreationInvestorContext';\r\nimport { isEmpty } from 'lodash';\r\nimport InvestorApi from '../../../core/apis/InvestorApi';\r\nimport { useNotify } from 'react-admin';\r\nimport { matchingFields } from '../../splitmethods/SplitMethodTypeLookups';\r\n\r\nconst maxFieldLength = 255;\r\n\r\nconst useStyle = makeStyles({\r\n formGroup: {\r\n marginBlock: '16px'\r\n }\r\n});\r\n\r\nconst MatchingFieldsStep = ({ handleClose }) => {\r\n const classes = useStyle();\r\n const notifyServerError = useNotifyServerError();\r\n const notify = useNotify();\r\n const { investorContext, setInvestorContext } = useContext(\r\n CreationInvestorContext\r\n );\r\n\r\n const onSubmit = useCallback(\r\n async formValues => {\r\n if (!isEmpty(formValues)) {\r\n const {\r\n externalId1,\r\n externalId2,\r\n externalId3,\r\n externalId4,\r\n externalId5\r\n } = formValues;\r\n const payload = {\r\n ...investorContext.investor,\r\n externalId1,\r\n externalId2,\r\n externalId3,\r\n externalId4,\r\n externalId5\r\n };\r\n\r\n InvestorApi.updateInvestor(investorContext.investor.id, payload)\r\n .then(() => {\r\n handleClose();\r\n notify('ra.notification.created_investor_successful');\r\n })\r\n .catch(e => notifyServerError(e, undefined));\r\n }\r\n handleClose();\r\n notify('ra.notification.created_investor_successful');\r\n },\r\n [handleClose, notify, notifyServerError, investorContext.investor]\r\n );\r\n\r\n const formRef = useRef(\r\n createForm({\r\n onSubmit: onSubmit\r\n })\r\n );\r\n\r\n return (\r\n
    \r\n {({ handleSubmit, submitting }) => (\r\n <>\r\n {\r\n setInvestorContext({\r\n ...investorContext,\r\n matchingFieldFormState: props\r\n });\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default MatchingFieldsStep;\r\n","import React, { useCallback, useContext, useState } from 'react';\r\nimport { CreationInvestorContext } from '../CreationInvestorContext';\r\nimport ManageAuthorizations from '../../../users/userauthorization/stepper/ManageAuthorizations';\r\nimport { isEqual } from 'lodash';\r\nimport { ContactsTable } from '../../../funds/creationSteps/AddRelatedContacts/ContactsList';\r\n\r\nconst ContactsList = ({\r\n contacts,\r\n classes,\r\n groups,\r\n authorizationsConnectedUser,\r\n connectedUserProfile,\r\n permissionGroupsUploaded,\r\n setCurrentAuthorizations,\r\n currentAuthorizations,\r\n onSubmitEnd,\r\n hasAssignUserAuthorization,\r\n relatedFundsUploaded,\r\n setIsNextAvailable,\r\n setPermissionGroupsUploaded,\r\n authorizationsGridToDeleteRef,\r\n permissionToDelete,\r\n setPermissionToDelete,\r\n originalPermissions,\r\n ...props\r\n}) => {\r\n const [isManageModalOpen, setIsManageModalOpen] = useState(false);\r\n const [selectedContact, setSelectedContact] = useState(null);\r\n const { investorContext: context } = useContext(CreationInvestorContext);\r\n\r\n const displayTooltip = useCallback(\r\n contactId => {\r\n const currentUserAuthorization = currentAuthorizations.filter(\r\n authorization => authorization.userId === contactId\r\n );\r\n const currentUserAuthorizationToDelete = permissionToDelete.filter(\r\n authorization => authorization.userId === contactId\r\n );\r\n const currentUserPermissionUploaded = originalPermissions.filter(\r\n authorization => authorization.userId === contactId\r\n );\r\n\r\n if (\r\n currentUserAuthorization.length > 0 &&\r\n currentUserAuthorizationToDelete.length > 0\r\n ) {\r\n return !isEqual(\r\n currentUserAuthorization,\r\n currentUserAuthorizationToDelete\r\n );\r\n }\r\n\r\n if (\r\n currentUserAuthorization.length > 0 &&\r\n currentUserPermissionUploaded.length > 0\r\n ) {\r\n return !isEqual(\r\n currentUserAuthorization,\r\n currentUserPermissionUploaded\r\n );\r\n }\r\n\r\n if (\r\n currentUserAuthorization.length > 0 &&\r\n currentUserAuthorizationToDelete.length === 0\r\n ) {\r\n return true;\r\n }\r\n\r\n if (\r\n currentUserAuthorization.length === 0 &&\r\n currentUserAuthorizationToDelete.length > 0\r\n ) {\r\n return true;\r\n }\r\n },\r\n [currentAuthorizations, originalPermissions, permissionToDelete]\r\n );\r\n\r\n const handleManageClick = contact => {\r\n setSelectedContact(contact);\r\n setIsManageModalOpen(true);\r\n };\r\n return (\r\n <>\r\n \r\n {selectedContact && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ContactsList;\r\n","import React, { useCallback, useEffect, useState } from 'react';\r\nimport { Error, Loading, useGetList, useDataProvider } from 'react-admin';\r\nimport ContactsList from './ContactsList';\r\nimport { TextField } from '@material-ui/core';\r\nimport { useProfile } from '../../../../core/hooks/UseProfile';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\nimport { useStyles } from '../../../users/userauthorization/stepper/styles';\r\nimport {\r\n createUserAuthorizations,\r\n setSearch\r\n} from '../../../users/userauthorization/stepper/utils';\r\nimport { useGetAuthorizations } from '../../copyContactsSteps/ContactsStep';\r\n\r\nconst AddRelatedContactsStep = ({\r\n currentAuthorizations,\r\n contacts,\r\n setContacts,\r\n permissionGroupsUploaded,\r\n relatedFundsUploaded,\r\n setContactAuthorizationsIds,\r\n contactAuthorizationsIds,\r\n setIsNextAvailable,\r\n authorizationsGridToDeleteRef,\r\n setCurrentAuthorizations,\r\n onSubmitEnd,\r\n hasAssignUserAuthorization,\r\n setPermissionGroupsUploaded,\r\n ...props\r\n}) => {\r\n const [filteredContacts, setFilteredContacts] = useState([]);\r\n const classes = useStyles();\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n const { profile: connectedUserProfile } = useProfile();\r\n const notifyServerError = useNotifyServerError();\r\n const dataProvider = useDataProvider();\r\n\r\n const { data: rcData, error: rcError, loading: rcLoading } = useGetList(\r\n 'users',\r\n {},\r\n { field: 'fullName', order: 'ASC' },\r\n { userType: 'REGULAR_CONTACT' }\r\n );\r\n const { data: iaData, error: iaError, loading: iaLoading } = useGetList(\r\n 'users',\r\n {},\r\n { field: 'fullName', order: 'ASC' },\r\n { userType: 'INVESTOR_ADMIN' }\r\n );\r\n\r\n const [groups, setGroups] = useState();\r\n const [groupsLoading, setGroupsLoading] = useState(true);\r\n const [groupsError, setGroupsError] = useState();\r\n useEffect(() => {\r\n dataProvider\r\n .getList('groups', {\r\n pagination: { page: 1, perPage: -1 },\r\n sort: { field: 'name', order: 'ASC' },\r\n filter: { adminGroup: false, status: 'ACTIVE' }\r\n })\r\n .then(res => {\r\n setGroups(res.data);\r\n setGroupsLoading(false);\r\n })\r\n .catch(err => {\r\n setGroupsError(err);\r\n notifyServerError(err, null);\r\n });\r\n }, [dataProvider, notifyServerError]);\r\n\r\n const { data: connectedUserAuthorizations } = useGetAuthorizations(\r\n connectedUserProfile\r\n );\r\n\r\n useEffect(() => {\r\n const allContactsSorted = [\r\n ...Object.values(rcData),\r\n ...Object.values(iaData)\r\n ].sort((a, b) =>\r\n a.firstName.toLowerCase().localeCompare(b.firstName.toLowerCase())\r\n );\r\n setContacts(allContactsSorted);\r\n setFilteredContacts(allContactsSorted);\r\n setError(iaError || rcError || groupsError);\r\n setLoading(iaLoading || rcLoading || groupsLoading);\r\n }, [\r\n groupsError,\r\n groupsLoading,\r\n iaData,\r\n iaError,\r\n iaLoading,\r\n rcData,\r\n rcError,\r\n rcLoading,\r\n setContacts\r\n ]);\r\n\r\n const handleSearchChange = useCallback(\r\n e => {\r\n setSearch(setFilteredContacts, contacts, e);\r\n },\r\n [contacts]\r\n );\r\n\r\n if (loading) {\r\n return ;\r\n }\r\n if (error) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AddRelatedContactsStep;\r\n","import React, {\r\n useCallback,\r\n useEffect,\r\n useMemo,\r\n useState,\r\n useRef\r\n} from 'react';\r\nimport { useNotify, useRedirect } from 'react-admin';\r\nimport { CreationInvestorContext } from './creationSteps/CreationInvestorContext';\r\nimport WizardStepper from '../../core/components/wizardStepper/WizardStepper';\r\nimport InvestorDetailsStep from './creationSteps/InvestorDetailsStep';\r\nimport { isEmpty } from 'lodash';\r\nimport { CircularProgress } from '@material-ui/core';\r\nimport { useStyles } from '../users/creationsteps/StyleStep';\r\nimport AddRelatedFundsStep from './creationSteps/AddRelatedFundsStep';\r\nimport MatchingFieldsStep from './creationSteps/MatchingFieldsStep';\r\nimport { investorStatus } from './InvestorLookups';\r\nimport { getInitials } from '../../core/utils';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport AddRelatedContactsStep from './creationSteps/addRelatedContacts/AddRelatedContactsStep';\r\nimport UserApi from '../../core/apis/UserApi';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport { GenerateMessageOnLeave } from '../../core/components/wizardStepper/GenerateMessageOnLeave';\r\n\r\nexport const STEP = {\r\n investorDetails: 'investorDetails',\r\n addRelatedFunds: 'addRelatedFunds',\r\n addRelatedContacts: 'addRelatedContacts',\r\n matchingFields: 'matchingFields'\r\n};\r\n\r\nconst InvestorCreate = props => {\r\n const [investorContext, setInvestorContext] = useState({});\r\n const [currentAuthorizations, setCurrentAuthorizations] = useState([]);\r\n const [contactAuthorizationsIds, setContactAuthorizationsIds] = useState([]);\r\n const [contacts, setContacts] = useState([]);\r\n const authorizationsGridToDeleteRef = useRef([]);\r\n const { permissions = [] } = props;\r\n const classes = useStyles();\r\n const redirect = useRedirect();\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [isDefaultListOfStepsSet, setIsDefaultListOfStepsSet] = useState(false);\r\n const [activeListOfSteps, setActiveListOfSteps] = useState([]);\r\n const [isBackDisabled, setIsBackDisabled] = useState(false);\r\n const [relatedFundsUploaded, setRelatedFundsUploaded] = useState([]);\r\n const providerFormContext = useMemo(\r\n () => ({ investorContext, setInvestorContext }),\r\n [investorContext, setInvestorContext]\r\n );\r\n const [isNextAvailable, setIsNextAvailable] = useState(false);\r\n const [isFirstStepPristine, setIsFirstStepPristine] = useState(true);\r\n const [isSaveAndCloseStep, setIsSaveAndCloseStep] = useState(false);\r\n const [permissionGroupsUploaded, setPermissionGroupsUploaded] = useState([]);\r\n const [originalPermissions, setOriginalPermissions] = useState([]);\r\n const [permissionToDelete, setPermissionToDelete] = useState([]);\r\n const shouldQuitRef = useRef(false);\r\n const notifyServerError = useNotifyServerError();\r\n const [isSpinnerOnNextButton, setIsSpinnerOnNextButton] = useState(false);\r\n const notify = useNotify();\r\n\r\n const [\r\n hasEditInvestorPermission,\r\n hasWriteFundInvestorPermission,\r\n hasDeleteFundInvestorPermission,\r\n hasAssignUserAccessRights\r\n ] = useMemo(\r\n () => [\r\n permissions.includes('AUTH_EDIT_INVESTOR'),\r\n permissions.includes('AUTH_WRITE_FUND_INVESTOR'),\r\n permissions.includes('AUTH_DELETE_FUND_INVESTOR'),\r\n permissions.includes('AUTH_WRITE_USER_AUTHORIZATION')\r\n ],\r\n [permissions]\r\n );\r\n\r\n const isLastStep = useCallback(() => {\r\n return !!(\r\n !isEmpty(activeListOfSteps) && activeListOfSteps.length === activeStep + 1\r\n );\r\n }, [activeStep, activeListOfSteps]);\r\n\r\n const isItSaveAndCloseStep = useCallback(() => {\r\n if (!isEmpty(activeListOfSteps)) {\r\n return !!(\r\n (activeListOfSteps[activeStep].name === STEP.addRelatedFunds &&\r\n !isLastStep()) ||\r\n (activeListOfSteps[activeStep].name === STEP.addRelatedContacts &&\r\n !isLastStep())\r\n );\r\n }\r\n }, [activeListOfSteps, activeStep, isLastStep]);\r\n\r\n useEffect(() => {\r\n if (\r\n !isEmpty(activeListOfSteps) &&\r\n activeListOfSteps[activeStep].name === STEP.investorDetails &&\r\n investorContext.detailsFormState\r\n ) {\r\n const {\r\n valid: isDetailsFormValid,\r\n submitting: isDetailsFormSubmitting,\r\n pristine: isDetailsFormPristine\r\n } = investorContext.detailsFormState;\r\n\r\n setIsFirstStepPristine(isDetailsFormPristine);\r\n setIsNextAvailable(isDetailsFormValid && !isDetailsFormSubmitting);\r\n }\r\n\r\n if (\r\n !isEmpty(activeListOfSteps) &&\r\n activeListOfSteps[activeStep].name === STEP.addRelatedFunds &&\r\n investorContext.relatedFundsFormState\r\n ) {\r\n const {\r\n valid: isRelatedFundsFormValid,\r\n submitting: isRelatedFundFormSubmitting\r\n } = investorContext.relatedFundsFormState;\r\n\r\n setIsNextAvailable(\r\n isRelatedFundsFormValid && !isRelatedFundFormSubmitting\r\n );\r\n }\r\n\r\n if (\r\n !isEmpty(activeListOfSteps) &&\r\n activeListOfSteps[activeStep].name === STEP.addRelatedContacts\r\n ) {\r\n setIsNextAvailable(true);\r\n }\r\n\r\n if (\r\n !isEmpty(activeListOfSteps) &&\r\n activeListOfSteps[activeStep].name === STEP.matchingFields &&\r\n investorContext.matchingFieldFormState\r\n ) {\r\n setIsNextAvailable(!investorContext.matchingFieldFormState.submitting);\r\n }\r\n\r\n isItSaveAndCloseStep()\r\n ? setIsSaveAndCloseStep(true)\r\n : setIsSaveAndCloseStep(false);\r\n }, [investorContext, activeStep, isItSaveAndCloseStep, activeListOfSteps]);\r\n\r\n const handleClose = useCallback(() => {\r\n investorContext.investor\r\n ? redirect(`/investors/${investorContext.investor.id}`)\r\n : redirect('list', '/investors');\r\n }, [investorContext, redirect]);\r\n\r\n const setDefaultListOfSteps = useCallback(() => {\r\n const stepsByDefault = [\r\n {\r\n name: STEP.investorDetails,\r\n label: 'Investor Details',\r\n leavingPromptLabel: 'Investor Details',\r\n description:\r\n 'Please fill in the mandatory fields to create new Investor. All other details, such as addresses, phone numbers, etc, you can add later.',\r\n component: InvestorDetailsStep,\r\n stepNo: 1,\r\n completed: false\r\n }\r\n ];\r\n\r\n if (hasWriteFundInvestorPermission) {\r\n stepsByDefault.push({\r\n name: STEP.addRelatedFunds,\r\n label: 'Add Related Funds',\r\n leavingPromptLabel: 'Related Funds',\r\n description:\r\n 'Select one or multiple Funds from the list to add them to the Investor.',\r\n component: AddRelatedFundsStep,\r\n stepNo: 2,\r\n completed: false\r\n });\r\n }\r\n\r\n if (hasWriteFundInvestorPermission && hasAssignUserAccessRights) {\r\n stepsByDefault.push({\r\n name: STEP.addRelatedContacts,\r\n label: 'Add Related Contacts',\r\n leavingPromptLabel: 'Related Contacts',\r\n description:\r\n 'Add one or more contacts to the investor from a list below.',\r\n component: AddRelatedContactsStep,\r\n stepNo: 3,\r\n completed: false\r\n });\r\n }\r\n\r\n if (hasEditInvestorPermission) {\r\n stepsByDefault.push({\r\n name: STEP.matchingFields,\r\n label: 'Matching Fields',\r\n leavingPromptLabel: 'Matching Fields',\r\n description: '',\r\n component: MatchingFieldsStep,\r\n stepNo: 4,\r\n completed: false\r\n });\r\n }\r\n\r\n return stepsByDefault;\r\n }, [\r\n hasWriteFundInvestorPermission,\r\n hasEditInvestorPermission,\r\n hasAssignUserAccessRights\r\n ]);\r\n\r\n useEffect(() => {\r\n if (isDefaultListOfStepsSet === false) {\r\n setActiveListOfSteps(setDefaultListOfSteps());\r\n setIsDefaultListOfStepsSet(true);\r\n }\r\n }, [\r\n setActiveListOfSteps,\r\n isDefaultListOfStepsSet,\r\n setIsDefaultListOfStepsSet,\r\n setDefaultListOfSteps\r\n ]);\r\n\r\n useEffect(() => {\r\n if (activeStep === 1 && !hasEditInvestorPermission) {\r\n setIsBackDisabled(true);\r\n } else {\r\n setIsBackDisabled(false);\r\n }\r\n }, [activeStep, hasEditInvestorPermission]);\r\n\r\n const getActiveStep = () => {\r\n const step = activeListOfSteps[activeStep];\r\n return (\r\n \r\n );\r\n };\r\n\r\n const onSubmitEnd = () => {\r\n if (activeStep === activeListOfSteps.length - 1 || shouldQuitRef.current) {\r\n notify('ra.notification.created');\r\n handleClose();\r\n } else {\r\n setActiveStep(activeStep + 1);\r\n }\r\n };\r\n\r\n const handleBackForm = () => {\r\n setActiveStep(activeStep - 1);\r\n };\r\n\r\n function permissionSetter(array, perm) {\r\n return [\r\n ...array,\r\n {\r\n id: `${perm.userId}:${perm.investorId}:${perm.fundId}:${perm.groupId}`,\r\n ...perm\r\n }\r\n ];\r\n }\r\n\r\n const createPermissions = permissionsToCreate => {\r\n UserApi.createUserauthorizations(permissionsToCreate)\r\n .then(res => {\r\n res.forEach(item => {\r\n setPermissionGroupsUploaded(prev => permissionSetter(prev, item));\r\n setOriginalPermissions(prev => permissionSetter(prev, item));\r\n });\r\n setCurrentAuthorizations([]);\r\n })\r\n .catch(e => notifyServerError(e));\r\n };\r\n\r\n const handleNextForm = e => {\r\n const buttonClicked = e.currentTarget.getAttribute('buttonkey');\r\n if (buttonClicked === 'saveAndClose') {\r\n shouldQuitRef.current = true;\r\n }\r\n\r\n if (activeListOfSteps[activeStep].name === STEP.investorDetails) {\r\n document\r\n .getElementById('investorDetailsForm')\r\n .dispatchEvent(new Event('submit', { cancelable: true }));\r\n }\r\n\r\n if (activeListOfSteps[activeStep].name === STEP.addRelatedFunds) {\r\n document\r\n .getElementById('addRelatedFundsForm')\r\n .dispatchEvent(new Event('submit', { cancelable: true }));\r\n }\r\n\r\n if (activeListOfSteps[activeStep].name === STEP.addRelatedContacts) {\r\n if (currentAuthorizations.length > 0) {\r\n createPermissions(currentAuthorizations);\r\n const updatedListOfStep = activeListOfSteps.map(step => {\r\n if (step.name === STEP.addRelatedContacts) {\r\n return { ...step, completed: true };\r\n }\r\n return step;\r\n });\r\n setActiveListOfSteps(updatedListOfStep);\r\n }\r\n if (permissionToDelete.length > 0) {\r\n UserApi.deleteUserauthorizations(permissionToDelete)\r\n .then(() => {\r\n setPermissionToDelete([]);\r\n })\r\n .catch(error => notifyServerError(error));\r\n }\r\n shouldQuitRef.current ? handleClose() : onSubmitEnd();\r\n }\r\n\r\n if (activeListOfSteps[activeStep].name === STEP.matchingFields) {\r\n document\r\n .getElementById('matchingFieldsForm')\r\n .dispatchEvent(new Event('submit', { cancelable: true }));\r\n }\r\n };\r\n\r\n // Display the information about the Investor created in the top left of the Wizard once we reach the step 2\r\n const displayInvestorCreatedInfo = () => {\r\n return (\r\n status.id === investorContext.investor.status)\r\n .name.toUpperCase()}\r\n statusLabel={'Status:'}\r\n showAvatar={true}\r\n avatarContent={getInitials(investorContext.investor.name)}\r\n />\r\n );\r\n };\r\n\r\n if (isEmpty(activeListOfSteps)) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n }\r\n resourceCreated={investorContext.investor}\r\n displayResourceCreatedInfo={displayInvestorCreatedInfo}\r\n shouldDisplayResourceCreatedInfo={true}\r\n isFirstStepPristine={isFirstStepPristine}\r\n isSpinnerOnNextButton={isSpinnerOnNextButton}\r\n />\r\n );\r\n }\r\n};\r\n\r\nexport default InvestorCreate;\r\n","import { createContext } from 'react';\r\n\r\nexport const ManageContactContext = createContext(null);\r\n","import React, { useContext, useCallback } from 'react';\r\nimport { FormSpy } from 'react-final-form';\r\nimport FundInvestorSummary from '../FundInvestorSummary';\r\nimport { ManageContactContext } from './ManageContactContext';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst ManageStep = props => {\r\n const { investorId, fundId, onSubmitEnd } = props;\r\n const { contactsContext, setContactsContext } = useContext(\r\n ManageContactContext\r\n );\r\n\r\n const setFundInvestors = useCallback(\r\n values => {\r\n setContactsContext({\r\n ...contactsContext,\r\n currentForm: undefined,\r\n funds: values.funds,\r\n investors: values.investors\r\n });\r\n onSubmitEnd(values);\r\n },\r\n [contactsContext, onSubmitEnd, setContactsContext]\r\n );\r\n\r\n return (\r\n \r\n \r\n {formprops => {\r\n if (contactsContext.currentForm === undefined) {\r\n setContactsContext({\r\n ...contactsContext,\r\n currentForm: formprops.form\r\n });\r\n }\r\n\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ManageStep;\r\n","import React, {\r\n useContext,\r\n useState,\r\n useMemo,\r\n useCallback,\r\n useRef\r\n} from 'react';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { ManageContactContext } from './ManageContactContext';\r\nimport {\r\n Grid,\r\n Table,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n Checkbox,\r\n Typography\r\n} from '@material-ui/core/';\r\nimport {\r\n Loading,\r\n ReferenceArrayInput,\r\n useQuery,\r\n fetchStart,\r\n useNotify,\r\n fetchEnd,\r\n useRefresh,\r\n RecordContextProvider\r\n} from 'react-admin';\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\nimport EntitlementApi from '../../../core/apis/EntitlementApi';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport GridPopover from '../../../core/components/grid/GridPopover';\r\nimport FundInvestorApi from '../../../core/apis/FundInvestorApi';\r\nimport { uniq, intersectionBy } from 'lodash';\r\nimport { useDispatch } from 'react-redux';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = {\r\n button: {\r\n padding: '0'\r\n },\r\n loading: {\r\n width: '100%',\r\n height: '100%',\r\n display: 'content',\r\n marginTop: '0px'\r\n },\r\n paper: {\r\n '& > div': {\r\n maxHeight: 'none'\r\n }\r\n },\r\n tableWrapper: {\r\n maxHeight: 'calc(100vh - 250px)',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n};\r\nconst GridInputTable = ({ groups, index }) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\nconst ContactsList = ({ classes, userTree, selectedUsers }) => {\r\n const [selectedRows, setSelectedRows] = useState([]);\r\n selectedUsers.current = selectedRows;\r\n\r\n /**\r\n * Calculating number of rows depending of the filter\r\n */\r\n const numSelectedRows = useMemo(() => {\r\n let newArray = [];\r\n userTree.forEach(item => {\r\n if (selectedRows.includes(item)) {\r\n newArray.push(item);\r\n }\r\n });\r\n return newArray.length;\r\n }, [userTree, selectedRows]);\r\n\r\n const rowCount = userTree.length;\r\n\r\n const handleClickAll = useCallback(() => {\r\n if (numSelectedRows === rowCount) {\r\n setSelectedRows([]);\r\n } else if (numSelectedRows !== rowCount) {\r\n setSelectedRows(userTree);\r\n }\r\n }, [numSelectedRows, userTree, rowCount]);\r\n\r\n /**\r\n * When we click on the checkbox in a row\r\n * @param {*} checked\r\n * @param {*} item\r\n */\r\n const handleRowSelect = useCallback((checked, item) => {\r\n if (checked) {\r\n setSelectedRows(selectedRows => selectedRows.concat(item));\r\n } else {\r\n setSelectedRows(selectedRows =>\r\n selectedRows.filter(itemRow => item !== itemRow)\r\n );\r\n }\r\n }, []);\r\n\r\n if (userTree.length === 0)\r\n return <>There are no related Contacts to be displayed;\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n \r\n 0 && numSelectedRows < rowCount\r\n }\r\n checked={numSelectedRows === rowCount && rowCount > 0}\r\n onClick={handleClickAll}\r\n />\r\n \r\n Contact Name\r\n Company\r\n Permission Groups\r\n \r\n \r\n \r\n {userTree &&\r\n userTree.map((user, index) => {\r\n return (\r\n \r\n \r\n \r\n handleRowSelect(event.target.checked, user)\r\n }\r\n checked={selectedRows.includes(user)}\r\n />\r\n \r\n {`${user.firstName} ${user.lastName}`}\r\n {user.company}\r\n \r\n {user.groups.length > 0 ? (\r\n \r\n }\r\n />\r\n ) : (\r\n 'No permission Groups'\r\n )}\r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n {selectedRows.length} item{selectedRows.length > 1 && 's'} selected\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst ContactsStep = ({ operation, ...props }) => {\r\n const { contactsContext, setContactsContext } = useContext(\r\n ManageContactContext\r\n );\r\n\r\n const selectedUsers = useRef([]);\r\n const dispatch = useDispatch();\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const refresh = useRefresh();\r\n\r\n const onSubmit = async values => {\r\n dispatch(fetchStart()); // start the global loading indicator\r\n const fundinvestors = [];\r\n if (props.fundId) {\r\n contactsContext.investors.forEach(investorId => {\r\n fundinvestors.push({\r\n fundId: props.fundId,\r\n investorId\r\n });\r\n });\r\n } else {\r\n contactsContext.funds.forEach(fundId => {\r\n fundinvestors.push({\r\n fundId,\r\n investorId: props.investorId\r\n });\r\n });\r\n }\r\n try {\r\n await FundInvestorApi.create(fundinvestors);\r\n } catch (e) {\r\n notifyServerError(e);\r\n }\r\n\r\n let userNotificationsArray = [];\r\n if (contactsContext.funds.length > 0) {\r\n contactsContext.funds.forEach(fundId => {\r\n intersectionBy(values.users, selectedUsers.current, 'userId').forEach(\r\n user => {\r\n user.selectedGroups.forEach(groupId => {\r\n let finalUser = {\r\n userId: user.userId,\r\n fundId: fundId,\r\n investorId: props.investorId,\r\n groupId\r\n };\r\n userNotificationsArray.push(finalUser);\r\n });\r\n }\r\n );\r\n });\r\n } else if (contactsContext.investors.length > 0) {\r\n contactsContext.investors.forEach(investorId => {\r\n intersectionBy(values.users, selectedUsers.current, 'userId').forEach(\r\n user => {\r\n user.selectedGroups.forEach(groupId => {\r\n let finalUser = {\r\n userId: user.userId,\r\n fundId: props.id,\r\n investorId: investorId,\r\n groupId\r\n };\r\n userNotificationsArray.push(finalUser);\r\n });\r\n }\r\n );\r\n });\r\n }\r\n\r\n if (userNotificationsArray.length > 0) {\r\n try {\r\n await EntitlementApi.createAuthorizations(userNotificationsArray);\r\n notify('ra.notification.custom_updated_message');\r\n setContactsContext({\r\n currentForm: undefined\r\n });\r\n await props.onSubmitEnd();\r\n refresh();\r\n } catch (e) {\r\n notifyServerError(e);\r\n } finally {\r\n dispatch(fetchEnd()); // finish the global loading indicator\r\n }\r\n } else {\r\n notify('ra.notification.created');\r\n setContactsContext({\r\n currentForm: undefined\r\n });\r\n await props.onSubmitEnd();\r\n refresh();\r\n }\r\n };\r\n\r\n const { data: userauthorizations = [] } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'userauthorizations',\r\n payload: {\r\n filter: {\r\n investorId: props.fundId\r\n ? `[${contactsContext.investors}]`\r\n : props.investorId\r\n }\r\n }\r\n });\r\n\r\n // Render after querying the recipients\r\n const { data, loading } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'investorcontacts',\r\n payload: {\r\n target: 'investorId',\r\n id: props.fundId ? `[${contactsContext.investors}]` : props.investorId,\r\n sort: {\r\n field: 'firstName',\r\n order: 'ASC'\r\n }\r\n }\r\n });\r\n\r\n if (loading) return ;\r\n if (data) {\r\n let userTree;\r\n\r\n userTree = data.reduce((contacts, user) => {\r\n let groups = [];\r\n userauthorizations &&\r\n userauthorizations.forEach(userauthorization => {\r\n if (userauthorization.userId === user.userId) {\r\n groups.push(userauthorization.groupId);\r\n }\r\n });\r\n user.groups = uniq(groups);\r\n user.selectedGroups = uniq(groups);\r\n return contacts.concat(user);\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n {formprops => {\r\n if (contactsContext.currentForm === undefined) {\r\n setContactsContext({\r\n ...contactsContext,\r\n currentForm: formprops.form\r\n });\r\n }\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(ContactsStep);\r\n","import Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport React, { useState, useMemo, useCallback } from 'react';\r\nimport { useRefresh, useNotify } from 'react-admin';\r\nimport FundInvestorApi from '../../core/apis/FundInvestorApi';\r\n\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport Confirm from '../../core/components/forked/layout/Confirm';\r\nimport ManageStep from './contactssteps/ManageStep.js';\r\nimport ContactsStep from './contactssteps/ContactsStep.js';\r\nimport { ManageContactContext } from './contactssteps/ManageContactContext';\r\nimport { StepConnector } from '@material-ui/core';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst styles = () => ({\r\n stepper: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '0 0 0px',\r\n display: 'inline-flex'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n button: {\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n backButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n saveButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n root: {\r\n paddingTop: '10px',\r\n paddingBottom: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n dialogContent: {\r\n padding: '0px',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n },\r\n stepperContainer: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '11px 8px',\r\n display: 'flex',\r\n borderBottom: '1px solid #E0E0E0'\r\n },\r\n stepContainer: {\r\n padding: '16px',\r\n display: 'flex',\r\n '& .simple-form': {\r\n display: 'flex',\r\n maxHeight: '100%',\r\n width: '100%',\r\n '& > div': {\r\n width: '100%'\r\n }\r\n }\r\n }\r\n});\r\n\r\nconst FundInvestorStepper = props => {\r\n const [activeStep, setActiveStep] = useState(0);\r\n const { ids = [] } = props;\r\n const [confirmDialogIsOpen, setConfirmDialogIsOpen] = useState(false);\r\n const [contactsContext, setContactsContext] = useState({});\r\n const providerContactsContext = useMemo(\r\n () => ({ contactsContext, setContactsContext }),\r\n [contactsContext, setContactsContext]\r\n );\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const refresh = useRefresh();\r\n const { classes, operation, showDialog, handleDialogToggle, ...rest } = props;\r\n // List of steps\r\n const steps = useMemo(\r\n () => [\r\n {\r\n name: 'fundinvestors',\r\n label: props.fundId ? 'Select Investors' : 'Select Funds',\r\n component: ManageStep,\r\n nextButton: ids.length > 0,\r\n backButton: false,\r\n shouldDisplay: true\r\n },\r\n {\r\n name: 'contacts',\r\n label: 'Manage Contacts',\r\n component: ContactsStep,\r\n nextButton: false,\r\n backButton: true,\r\n shouldDisplay: ids.length > 0\r\n }\r\n ],\r\n [props.fundId, ids.length]\r\n );\r\n\r\n const hasNext = steps[activeStep] ? steps[activeStep].nextButton : false;\r\n const hasBack = steps[activeStep] ? steps[activeStep].backButton : false;\r\n\r\n const handleCloseClick = useCallback(() => {\r\n setConfirmDialogIsOpen(true);\r\n }, []);\r\n\r\n const handleConfirmDialogClose = useCallback(() => {\r\n setConfirmDialogIsOpen(false);\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n setConfirmDialogIsOpen(false);\r\n handleDialogToggle();\r\n refresh();\r\n }, [handleDialogToggle, refresh]);\r\n\r\n const onSubmitEnd = useCallback(\r\n async values => {\r\n if (ids.length === 0) {\r\n const fundinvestors = [];\r\n if (props.fundId) {\r\n values.investors.forEach(investorId => {\r\n fundinvestors.push({\r\n fundId: props.fundId,\r\n investorId\r\n });\r\n });\r\n } else {\r\n values.funds.forEach(fundId => {\r\n fundinvestors.push({\r\n fundId,\r\n investorId: props.investorId\r\n });\r\n });\r\n }\r\n try {\r\n await FundInvestorApi.create(fundinvestors);\r\n notify('ra.notification.created');\r\n handleClose();\r\n } catch (e) {\r\n notifyServerError(e);\r\n }\r\n } else if (activeStep === 1) {\r\n handleClose();\r\n } else {\r\n setActiveStep(activeStep + 1);\r\n }\r\n },\r\n [\r\n activeStep,\r\n handleClose,\r\n ids.length,\r\n notify,\r\n props.fundId,\r\n props.investorId,\r\n notifyServerError\r\n ]\r\n );\r\n\r\n const getActiveStep = useCallback(() => {\r\n const step = steps[activeStep];\r\n return (\r\n \r\n );\r\n }, [activeStep, onSubmitEnd, rest, steps]);\r\n\r\n const handleNextForm = useCallback(() => {\r\n // Trigger a submit to active form\r\n // This is needed because our modal action buttons are oustide the form\r\n contactsContext.currentForm && contactsContext.currentForm.submit();\r\n }, [contactsContext.currentForm]);\r\n\r\n const handleBackForm = useCallback(() => {\r\n if (activeStep > 0) {\r\n setContactsContext({ ...contactsContext, currentForm: undefined });\r\n setActiveStep(activeStep - 1);\r\n }\r\n }, [activeStep, contactsContext]);\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n {props.fundId\r\n ? 'Add Existing Investor to Fund'\r\n : 'Add Existing Fund to Investor'}\r\n \r\n \r\n <>\r\n
    \r\n : }\r\n >\r\n {steps.map(step => (\r\n \r\n {step.shouldDisplay && {step.label}}\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n \r\n {getActiveStep()}\r\n \r\n
    \r\n \r\n

    \r\n You are about to quit the create operation, and return to\r\n {props.fundId ? ' Fund' : ' Investor'} page.\r\n

    \r\n
    \r\n Your progress on this step will not be saved.\r\n \r\n }\r\n onConfirm={handleClose}\r\n onClose={handleConfirmDialogClose}\r\n confirm=\"ra.action.close\"\r\n />\r\n \r\n
    \r\n \r\n
    \r\n {hasBack && (\r\n \r\n Back\r\n \r\n )}\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n {hasNext ? 'Next' : 'Save'}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(FundInvestorStepper);\r\n","import React from 'react';\r\nimport {\r\n SaveButton,\r\n CREATE,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n Create,\r\n refreshView\r\n} from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { connect } from 'react-redux';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport dataProvider from '../../core/providers/IccUserDataProvider';\r\nimport { validateFund } from '../funds/creationSteps/utils';\r\nimport FundSummary from '../funds/FundSummary';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport SimpleFormWithSave from '../../core/components/form/SimpleFormWithSave';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nclass FundCreateDialog extends React.Component {\r\n fundFormProps;\r\n\r\n state = {\r\n submitting: false\r\n };\r\n\r\n setFundFormProps = props => {\r\n this.fundFormProps = props;\r\n };\r\n\r\n handleSaveClick = event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n this.fundFormProps.form.submit(event);\r\n };\r\n\r\n handleClose = () => {\r\n const { handleDialogToggle } = this.props;\r\n const { submitting } = this.state;\r\n if (submitting) return;\r\n this.fundFormProps.form.reset();\r\n handleDialogToggle();\r\n };\r\n\r\n handleSubmit = values => {\r\n const {\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n handleDialogToggle,\r\n id,\r\n refreshView\r\n } = this.props;\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n this.setState({ submitting: true });\r\n\r\n // As we want to know when the new fund has been created in order to close the modal, we use the\r\n // dataProvider directly\r\n dataProvider(CREATE, 'funds', { data: values })\r\n .then(({ data }) => {\r\n //Create fundinvestors relation with the new created fund\r\n dataProvider(CREATE, 'fundinvestors', {\r\n data: { fundId: data.id, investorId: id }\r\n }).then(() => {\r\n refreshView();\r\n handleDialogToggle();\r\n });\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.fundFormProps.form.reset();\r\n fetchEnd();\r\n this.setState({ submitting: false });\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n showDialog,\r\n showNotification,\r\n fetchStart,\r\n fetchEnd,\r\n classes,\r\n refreshView,\r\n ...createProps\r\n } = this.props;\r\n const { submitting } = this.state;\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n this.handleClose();\r\n }}\r\n >\r\n \r\n Create new fund\r\n \r\n \r\n {/* Override record object that contains investor information */}\r\n \r\n \r\n \r\n {props => {\r\n this.setFundFormProps(props);\r\n return ;\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n};\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(FundCreateDialog));\r\n","import { makeStyles } from '@material-ui/core';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport React from 'react';\r\nimport {\r\n useGetList,\r\n required,\r\n SelectInput,\r\n TextInput,\r\n RadioButtonGroupInput,\r\n useQuery,\r\n Loading,\r\n maxLength\r\n} from 'react-admin';\r\n\r\n// Styling overrides\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n }\r\n});\r\n\r\nconst DisplayForm = props => {\r\n const classes = useStyles();\r\n\r\n const fundIds = props.fundinvestors.map(item => item.fundId);\r\n\r\n const { data: fundsChoices = [], loading } = useGetList('funds', null, null, {\r\n id: `[${fundIds}]`\r\n });\r\n if (loading) return ;\r\n\r\n return (\r\n \r\n \r\n \r\n General Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Beneficiary Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Beneficiary Bank Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Intermediary/Receiving Bank Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Further Credit & Notes\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst WireInstructionSummary = props => {\r\n const { data = [], loading } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'fundinvestors',\r\n payload: {\r\n target: 'investorId',\r\n id: props.investorId,\r\n sort: {\r\n order: 'ASC'\r\n }\r\n }\r\n });\r\n if (loading) return ;\r\n return ;\r\n};\r\n\r\nexport default WireInstructionSummary;\r\n","import React, { useState, useCallback, useRef } from 'react';\r\nimport {\r\n SaveButton,\r\n CREATE,\r\n UPDATE,\r\n Edit,\r\n Create,\r\n useRefresh,\r\n useNotify\r\n} from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport dataProvider from '../../../core/providers/IccUserDataProvider';\r\nimport WireInstruction from '../../../core/apis/WireInstructionApi';\r\nimport WireInstructionSummary from './WireInstructionSummary';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport SimpleFormWithSave from '../../../core/components/form/SimpleFormWithSave';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { useSelector } from 'react-redux';\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n },\r\n leftButtons: {\r\n display: 'flex',\r\n flex: 'auto'\r\n }\r\n});\r\n\r\nconst WireInstructionCreateDialog = props => {\r\n const refresh = useRefresh();\r\n const notify = useNotify();\r\n const [submitting, setSubmitting] = useState(false);\r\n const [confirmDialog, setConfirmDialog] = useState(false);\r\n const [dirty, setDirty] = useState(false);\r\n const notifyServerError = useNotifyServerError();\r\n const wireInstructionFormProps = useRef({});\r\n\r\n const {\r\n handleDialogToggle,\r\n investorId,\r\n classes,\r\n operation,\r\n popupTitle,\r\n okButtonLabel,\r\n hasDeleteWireInstructionPermission,\r\n hasCreateWireInstructionPermission,\r\n ...operationProps\r\n } = props;\r\n const setWireInstructionFormProps = useCallback(formProps => {\r\n wireInstructionFormProps.current = formProps;\r\n }, []);\r\n const fundsRelated = useSelector(\r\n state => state.admin.resources.fundinvestors.data\r\n );\r\n const wireinstructions = useSelector(\r\n state => state.admin.resources.wireinstructions\r\n );\r\n\r\n const handleSaveClick = useCallback(() => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n wireInstructionFormProps.current.form.submit();\r\n }, []);\r\n\r\n const checkIfExistOtherFundsToCopyWireInstructionTo = () => {\r\n return Object.values(fundsRelated).some(\r\n item => item.fundId !== operationProps.record.fundId\r\n );\r\n };\r\n\r\n const copyWiresInstructionsToAllFunds = async () => {\r\n const multipleWiToCreate = [];\r\n Object.values(fundsRelated).forEach(item => {\r\n if (item.fundId !== operationProps.record.fundId) {\r\n multipleWiToCreate.push({\r\n ...operationProps.record,\r\n fundId: item.fundId,\r\n id: null\r\n });\r\n }\r\n });\r\n const deleteWireinstructionsArray = Object.values(\r\n wireinstructions.data\r\n ).filter(item => item.fundId !== operationProps.record.fundId);\r\n const idsToDelete = [];\r\n deleteWireinstructionsArray.forEach(item => {\r\n if (wireinstructions.list.ids.includes(item.id)) {\r\n idsToDelete.push(item.id);\r\n }\r\n });\r\n\r\n try {\r\n if (idsToDelete.length > 0) {\r\n await dataProvider('DELETE_MANY', 'wireinstructions', {\r\n ids: idsToDelete\r\n });\r\n }\r\n await WireInstruction.createMultipleWireInstructions(multipleWiToCreate);\r\n refresh();\r\n handleDialogToggle();\r\n notify('ra.notification.copy_wire_instructions');\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n };\r\n const handleClose = useCallback(() => {\r\n if (submitting) return;\r\n wireInstructionFormProps.current.form.reset();\r\n handleDialogToggle();\r\n }, [handleDialogToggle, submitting]);\r\n\r\n const handleSubmit = useCallback(\r\n async values => {\r\n setSubmitting(true);\r\n\r\n // As we want to know when the new investor has been created in order to close the modal, we use the\r\n // dataProvider directly\r\n const crudOperation = operation === 'Create' ? CREATE : UPDATE;\r\n\r\n try {\r\n await dataProvider(crudOperation, 'wireinstructions', {\r\n data: {\r\n ...values,\r\n entityId: investorId\r\n }\r\n });\r\n refresh();\r\n handleDialogToggle();\r\n notify(\r\n operation === 'Create'\r\n ? 'ra.notification.created'\r\n : 'ra.notification.custom_updated_message'\r\n );\r\n setSubmitting(false);\r\n } catch (error) {\r\n notifyServerError(error);\r\n setSubmitting(false);\r\n }\r\n },\r\n [\r\n handleDialogToggle,\r\n investorId,\r\n notify,\r\n notifyServerError,\r\n operation,\r\n refresh\r\n ]\r\n );\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n {popupTitle}\r\n \r\n \r\n {operation === 'Create' && (\r\n \r\n \r\n \r\n {props => {\r\n setWireInstructionFormProps(props);\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n )}\r\n {operation === 'Update' && (\r\n \r\n \r\n \r\n {props => {\r\n setWireInstructionFormProps(props);\r\n setDirty(props.dirty);\r\n return ;\r\n }}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {operation === 'Update' &&\r\n hasDeleteWireInstructionPermission &&\r\n hasCreateWireInstructionPermission &&\r\n checkIfExistOtherFundsToCopyWireInstructionTo() && (\r\n
    \r\n setConfirmDialog(true)}\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n disabled={dirty}\r\n disableFocusRipple\r\n >\r\n Copy wire instruction to all funds\r\n \r\n
    \r\n )}\r\n setConfirmDialog(false)}\r\n confirm=\"ra.action.confirm\"\r\n />\r\n }\r\n />\r\n \r\n Cancel\r\n \r\n
    \r\n \r\n );\r\n};\r\nexport default withStyles(styles)(WireInstructionCreateDialog);\r\n","import React, { useEffect, useMemo } from 'react';\r\nimport {\r\n ReferenceField,\r\n FunctionField,\r\n Datagrid,\r\n TextField,\r\n useUnselectAll,\r\n linkToRecord\r\n} from 'react-admin';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { userStatus } from '../users/UserLookups';\r\n\r\nconst styles = () => ({\r\n statusColumnStyle: {\r\n width: '68px'\r\n },\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n paddingBottom: '10px'\r\n },\r\n expandLabel: {\r\n color: '#757575',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n transform: 'translateY(-10px)'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n }\r\n});\r\n\r\nconst InvestorContactsDatagrid = props => {\r\n const {\r\n handleFundClick,\r\n handleInvestorFundEditButtonClick,\r\n classes,\r\n expand,\r\n permissions,\r\n ...datagridProps\r\n } = props;\r\n\r\n //unselecting all the checkboxes from the deleting actions in the ComponenWillUnmount listener\r\n const unSelectAll = useUnselectAll(datagridProps.resource);\r\n\r\n const hasReadUserPermission = useMemo(() => {\r\n return permissions.includes('AUTH_READ_USER_NA');\r\n }, [permissions]);\r\n\r\n useEffect(() => () => unSelectAll(), [unSelectAll]);\r\n\r\n if (props.total > 0) {\r\n return (\r\n <>\r\n {expand && Related Contacts}\r\n \r\n \r\n hasReadUserPermission\r\n ? `${linkToRecord(`/${reference}`, record.userId)}`\r\n : false\r\n }\r\n >\r\n `${record.firstName} ${record.lastName}`}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (props.loaded) {\r\n return (\r\n \r\n There are no related Contacts to be displayed\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(InvestorContactsDatagrid);\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { ReferenceField, SelectField, Datagrid, TextField } from 'react-admin';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport EditButtonWithOnClick from '../../../core/components/EditButtonWithOnClick';\r\n\r\nconst preferredMethodLookups = [\r\n { id: 0, name: 'Wire' },\r\n { id: 1, name: 'Check' }\r\n];\r\n\r\nconst styles = () => ({\r\n statusColumnStyle: {\r\n width: '68px'\r\n },\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n paddingBottom: '10px'\r\n },\r\n expandLabel: {\r\n color: '#757575',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n transform: 'translateY(-10px)'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n editButtonColumnStyle: {\r\n width: '24px'\r\n },\r\n editButton: {\r\n color: '#757575',\r\n width: '24px',\r\n padding: '6px 0',\r\n '& span': {\r\n paddingRight: 0\r\n }\r\n }\r\n});\r\n\r\nconst DisplayFundRecord = props => {\r\n if (props.record.fundId === '*') {\r\n return (\r\n \r\n Use for All Funds\r\n \r\n );\r\n }\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst DetailsColumn = props => {\r\n const { record, handleOpen, classes } = props;\r\n return (\r\n handleOpen(record)}\r\n />\r\n );\r\n};\r\n\r\nconst WireInstructionsDatagrid = props => {\r\n const {\r\n classes,\r\n expand,\r\n handleOpen,\r\n permissions,\r\n hasEditPermission,\r\n setDataAvailable,\r\n ...datagridProps\r\n } = props;\r\n const hasEditWireInstructionPermission = permissions.includes(\r\n 'AUTH_EDIT_WIRE_INSTRUCTION'\r\n );\r\n const dataAvailableMemo = useRef(false);\r\n\r\n const dataAvailable = props.total && props.total > 0;\r\n\r\n useEffect(() => {\r\n if (dataAvailable !== dataAvailableMemo.current) {\r\n dataAvailableMemo.current = dataAvailable;\r\n setDataAvailable(dataAvailable);\r\n }\r\n }, [dataAvailable, setDataAvailable]);\r\n\r\n if (dataAvailable) {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {hasEditPermission && hasEditWireInstructionPermission && (\r\n \r\n )}\r\n \r\n \r\n );\r\n } else if (props.loaded) {\r\n return (\r\n \r\n There are no related Wire Instructions to be displayed\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(WireInstructionsDatagrid);\r\n","import React from 'react';\r\nimport { ReferenceArrayInput, useQuery, Loading } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\nimport { find } from 'lodash';\r\n\r\nimport GridInputFilter from '../../../core/components/inputs/GridInputFilter';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nconst validateInvestors = (value, allValues, props, field) => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Investor must be selected';\r\n }\r\n if (Array.isArray(value) && value.length > 50) {\r\n return 'You cannot select more than 50 Investors.';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst useStyles = makeStyles({\r\n loading: {\r\n height: 'calc(100vh - 230px)'\r\n }\r\n});\r\n\r\nconst InvestorDatagrid = props => {\r\n const classes = useStyles();\r\n let { data, loading } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'fundinvestors',\r\n payload: {\r\n target: 'investorId',\r\n id: props.investorId,\r\n sort: {\r\n order: 'ASC'\r\n }\r\n }\r\n });\r\n if (loading) return ;\r\n const filter = choices => {\r\n return choices.filter(\r\n item => find(data, ['investorId', item.id]) === undefined\r\n );\r\n };\r\n\r\n const ReferenceArrayInputProps = {\r\n label:\r\n 'To copy Contacts to Investors, select one or multiple items from the list of the investors below.',\r\n optionTextLabel: 'Investor Name',\r\n optionValueLabel: 'Investor ID',\r\n resource: 'investors',\r\n reference: 'investors',\r\n source: 'investors'\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default InvestorDatagrid;\r\n","import React, { useContext, useCallback } from 'react';\r\nimport { FormSpy } from 'react-final-form';\r\nimport InvestorDatagrid from './InvestorDatagrid';\r\nimport { CopyContactsContext } from './CopyContactsContext';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst InvestorsStep = props => {\r\n const { investorId, onSubmitEnd } = props;\r\n const { contactsContext, setContactsContext } = useContext(\r\n CopyContactsContext\r\n );\r\n\r\n const setInvestors = useCallback(\r\n values => {\r\n setContactsContext({\r\n ...contactsContext,\r\n currentForm: undefined,\r\n investors: values.investors\r\n });\r\n onSubmitEnd(values);\r\n },\r\n [contactsContext, onSubmitEnd, setContactsContext]\r\n );\r\n\r\n return (\r\n \r\n \r\n {formprops => {\r\n if (contactsContext.currentForm === undefined) {\r\n setContactsContext({\r\n ...contactsContext,\r\n currentForm: formprops.form\r\n });\r\n }\r\n\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default InvestorsStep;\r\n","import Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport React, { useState, useMemo, useCallback } from 'react';\r\nimport { useRefresh } from 'react-admin';\r\n\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport Confirm from '../../core/components/forked/layout/Confirm';\r\nimport InvestorsStep from './copyContactsSteps/InvestorsStep.js';\r\nimport ContactsStep from './copyContactsSteps/ContactsStep.js';\r\nimport { CopyContactsContext } from './copyContactsSteps/CopyContactsContext';\r\nimport { StepConnector } from '@material-ui/core';\r\n\r\nconst styles = () => ({\r\n stepper: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '0 0 0px',\r\n display: 'inline-flex'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n button: {\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n backButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n saveButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n root: {\r\n paddingTop: '10px',\r\n paddingBottom: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n dialogContent: {\r\n padding: '0px',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n },\r\n stepperContainer: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '11px 8px',\r\n display: 'flex',\r\n borderBottom: '1px solid #E0E0E0'\r\n },\r\n stepContainer: {\r\n padding: '16px',\r\n display: 'flex',\r\n '& .simple-form': {\r\n display: 'flex',\r\n maxHeight: '100%',\r\n width: '100%',\r\n '& > div': {\r\n width: '100%'\r\n }\r\n }\r\n }\r\n});\r\n\r\nconst CopyContactStepper = props => {\r\n const [activeStep, setActiveStep] = useState(0);\r\n const { ids = [] } = props;\r\n const [confirmDialogIsOpen, setConfirmDialogIsOpen] = useState(false);\r\n const [contactsContext, setContactsContext] = useState({});\r\n const providerContactsContext = useMemo(\r\n () => ({ contactsContext, setContactsContext }),\r\n [contactsContext, setContactsContext]\r\n );\r\n\r\n const refresh = useRefresh();\r\n const { classes, operation, showDialog, handleDialogToggle, ...rest } = props;\r\n // List of steps\r\n const steps = useMemo(\r\n () => [\r\n {\r\n name: 'contacts',\r\n label: 'Select Investors',\r\n component: InvestorsStep,\r\n nextButton: true,\r\n backButton: false,\r\n shouldDisplay: true\r\n },\r\n {\r\n name: 'investors',\r\n label: 'Select Contacts',\r\n component: ContactsStep,\r\n nextButton: false,\r\n backButton: true,\r\n shouldDisplay: true\r\n }\r\n ],\r\n []\r\n );\r\n\r\n const hasNext = steps[activeStep] ? steps[activeStep].nextButton : false;\r\n const hasBack = steps[activeStep] ? steps[activeStep].backButton : false;\r\n\r\n const handleCloseClick = useCallback(() => {\r\n setConfirmDialogIsOpen(true);\r\n }, []);\r\n\r\n const handleConfirmDialogClose = useCallback(() => {\r\n setConfirmDialogIsOpen(false);\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n setConfirmDialogIsOpen(false);\r\n handleDialogToggle();\r\n refresh();\r\n }, [handleDialogToggle, refresh]);\r\n\r\n const onSubmitEnd = useCallback(async () => {\r\n if (activeStep === 1) {\r\n handleClose();\r\n } else {\r\n setActiveStep(activeStep + 1);\r\n }\r\n }, [activeStep, handleClose]);\r\n\r\n const getActiveStep = useCallback(() => {\r\n const step = steps[activeStep];\r\n return (\r\n \r\n );\r\n }, [activeStep, onSubmitEnd, rest, steps]);\r\n\r\n const handleNextForm = useCallback(() => {\r\n // Trigger a submit to active form\r\n // This is needed because our modal action buttons are oustide the form\r\n contactsContext.currentForm && contactsContext.currentForm.submit();\r\n }, [contactsContext.currentForm]);\r\n\r\n const handleBackForm = useCallback(() => {\r\n if (activeStep > 0) {\r\n setContactsContext({ ...contactsContext, currentForm: undefined });\r\n setActiveStep(activeStep - 1);\r\n }\r\n }, [activeStep, contactsContext]);\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Copy Contacts\r\n \r\n \r\n <>\r\n
    \r\n : }\r\n >\r\n {steps.map(step => (\r\n \r\n {step.shouldDisplay && {step.label}}\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n \r\n {getActiveStep(steps)}\r\n \r\n
    \r\n \r\n

    \r\n You are about to quit the create operation, and return to\r\n Investor page.\r\n

    \r\n
    \r\n Your progress on this step will not be saved.\r\n \r\n }\r\n onConfirm={handleClose}\r\n onClose={handleConfirmDialogClose}\r\n confirm=\"ra.action.close\"\r\n />\r\n \r\n
    \r\n \r\n
    \r\n {hasBack && (\r\n \r\n Back\r\n \r\n )}\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n {hasNext ? 'Next' : 'Save'}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(CopyContactStepper);\r\n","import React from 'react';\r\nimport { TextInput } from 'react-admin';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport { matchingFields } from '../splitmethods/SplitMethodTypeLookups';\r\nimport { fieldLengthValidator } from '../../core/utils/index';\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n }\r\n});\r\n\r\nconst matchingFieldMaxLength = 150;\r\n\r\nconst MatchingFields = ({ variant }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n
    \r\n \r\n \r\n Matching Fields\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default MatchingFields;\r\n","import React, { FC, Fragment, useState, ReactElement } from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport ActionDelete from '@material-ui/icons/Delete';\r\nimport { makeStyles, alpha } from '@material-ui/core/styles';\r\nimport inflection from 'inflection';\r\nimport {\r\n Identifier,\r\n useTranslate,\r\n useDeleteMany,\r\n useRefresh,\r\n useNotify,\r\n useUnselectAll,\r\n CRUD_DELETE_MANY,\r\n useRedirect\r\n} from 'ra-core';\r\nimport { Confirm, Button, ButtonProps } from 'ra-ui-materialui/lib';\r\nimport useNotifyServerError from '../hooks/useNotifyServerError';\r\n\r\nconst useStyles = makeStyles(\r\n theme => ({\r\n deleteButton: {\r\n color: theme.palette.error.main,\r\n '&:hover': {\r\n backgroundColor: alpha(theme.palette.error.main, 0.12),\r\n // Reset on mouse devices\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent'\r\n }\r\n }\r\n }\r\n }),\r\n { name: 'RaBulkDeleteWithConfirmButton' }\r\n);\r\n\r\nconst defaultIcon = ;\r\n\r\nconst DeleteButtonWithRedirect: FC = props => {\r\n const {\r\n basePath,\r\n classes: classesOverride,\r\n confirmTitle = 'ra.message.bulk_delete_title',\r\n confirmContent = 'ra.message.bulk_delete_content',\r\n icon = defaultIcon,\r\n label,\r\n onClick,\r\n resource,\r\n selectedIds,\r\n redirectPath,\r\n ...rest\r\n } = props;\r\n const [isOpen, setOpen] = useState(false);\r\n const classes = useStyles(props);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const unselectAll = useUnselectAll();\r\n const refresh = useRefresh();\r\n const translate = useTranslate();\r\n const redirectTo = useRedirect();\r\n const [deleteMany, { loading }] = useDeleteMany(resource, selectedIds, {\r\n action: CRUD_DELETE_MANY,\r\n onSuccess: () => {\r\n if (props.redirect && props.redirectPath) {\r\n redirectTo(props.redirect, props.redirectPath);\r\n } else {\r\n refresh();\r\n }\r\n notify('ra.notification.deleted', {\r\n type: 'info',\r\n messageArgs: { smart_count: selectedIds.length }\r\n });\r\n unselectAll(resource);\r\n },\r\n onFailure: error => {\r\n notifyServerError(error, 'ra.notification.http_error');\r\n setOpen(false);\r\n }\r\n });\r\n\r\n const handleClick = e => {\r\n setOpen(true);\r\n e.stopPropagation();\r\n };\r\n\r\n const handleDialogClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleDelete = e => {\r\n deleteMany();\r\n\r\n if (typeof onClick === 'function') {\r\n onClick(e);\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {icon}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst sanitizeRestProps = ({\r\n basePath,\r\n classes,\r\n filterValues,\r\n label,\r\n ...rest\r\n}: Omit<\r\n BulkDeleteWithConfirmButtonProps,\r\n 'resource' | 'selectedIds' | 'icon'\r\n>) => rest;\r\n\r\nexport interface BulkDeleteWithConfirmButtonProps\r\n extends BulkActionProps,\r\n ButtonProps {\r\n confirmContent?: string;\r\n confirmTitle?: string;\r\n icon?: ReactElement;\r\n redirectPath?: string;\r\n}\r\n\r\nexport interface BulkActionProps {\r\n basePath?: string;\r\n filterValues?: any;\r\n resource?: string;\r\n selectedIds?: Identifier[];\r\n}\r\n\r\nDeleteButtonWithRedirect.propTypes = {\r\n basePath: PropTypes.string,\r\n classes: PropTypes.object,\r\n confirmTitle: PropTypes.string,\r\n confirmContent: PropTypes.string,\r\n label: PropTypes.string,\r\n resource: PropTypes.string.isRequired,\r\n selectedIds: PropTypes.arrayOf(PropTypes.any).isRequired,\r\n icon: PropTypes.element\r\n};\r\n\r\nDeleteButtonWithRedirect.defaultProps = {\r\n label: 'ra.action.delete'\r\n};\r\n\r\nexport default DeleteButtonWithRedirect;\r\n","import React, { Fragment } from 'react';\r\nimport { Button } from 'react-admin';\r\nimport { makeStyles, alpha } from '@material-ui/core';\r\nimport DeleteButtonWithRedirect from '../../core/components/DeleteButtonWithRedirect';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n button: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginRight: '9px'\r\n },\r\n deleteButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n color: theme.palette.primary.main,\r\n '&:hover': {\r\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\r\n // Reset on mouse devices\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n marginRight: '9px',\r\n '& svg': { display: 'none' }\r\n }\r\n}));\r\n\r\nconst InvestorListBulkActions = props => {\r\n const {\r\n handleRelationshipOpen,\r\n hasReadFundInvestorPermission,\r\n hasDeleteFundInvestorPermission,\r\n selectedIds,\r\n showLoader,\r\n setShowLoader,\r\n ...rest\r\n } = props;\r\n const classes = useStyles();\r\n const handleRelationshipClick = async () => {\r\n const { selectedIds } = props;\r\n await handleRelationshipOpen(selectedIds[0]);\r\n };\r\n\r\n /* In case all IDs are selected, we should do a redirection to main grid after deletion.\r\n By doing this, we're avoiding the 'Element does not exist' message in case the investor\r\n becomes unavailable to the FA user (TFS-144613).\r\n */\r\n const allSelected = selectedIds.length === props.total;\r\n\r\n return (\r\n \r\n {hasReadFundInvestorPermission && selectedIds.length < 2 && (\r\n \r\n )}\r\n {hasDeleteFundInvestorPermission && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default InvestorListBulkActions;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Fund-Investor Tags Associations API\r\n */\r\nclass FundInvestorTagsAssociationsApi extends ApiBase {\r\n /**\r\n * create fundinvestortags/associations relations\r\n * @param {*} ids List of fundTagId/fundId-investorId\r\n */\r\n async create(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestortags/associations`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * delete fundinvestortags/associations relations\r\n * @param {*} ids List of fundTagId/fundId-investorId\r\n */\r\n async delete(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestortags/associations`,\r\n headers: this.getHeaders(),\r\n method: 'DELETE',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new FundInvestorTagsAssociationsApi();\r\n","import React, { useState, useRef } from 'react';\r\nimport {\r\n RadioButtonGroupInput,\r\n SaveButton,\r\n SelectInput,\r\n useNotify\r\n} from 'react-admin';\r\nimport {\r\n Grid,\r\n Typography,\r\n makeStyles,\r\n Dialog,\r\n DialogContent,\r\n InputAdornment,\r\n TextField\r\n} from '@material-ui/core/';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport Button from '@material-ui/core/Button';\r\nimport DateInput from '../../core/components/forked/input/DateInput';\r\nimport { isValidDate, formatDate } from '../../core/utils';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport moment from 'moment';\r\nimport HelpOutlineIcon from '@material-ui/icons/HelpOutline';\r\nimport LightTooltip from '../../core/components/LightTooltip';\r\nimport FundInvestorApi from '../../core/apis/FundInvestorApi';\r\nimport NumberFormat from 'react-number-format';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport UdfTab from '../../core/components/tab/UdfTab';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\nimport TagInput from '../../core/components/inputs/TagInput';\r\nimport omit from 'lodash/omit';\r\nimport FundInvestorTagsAssociationsApi from '../../core/apis/FundInvestorTagsAssociationsApi';\r\n\r\nconst fundInvestorRelationshipStyles = makeStyles({\r\n root: {\r\n width: '120px'\r\n },\r\n relationshipName: {\r\n wordBreak: 'break-word'\r\n },\r\n relationshipLabel: {\r\n color: 'grey'\r\n },\r\n fieldLabelMargin: {\r\n marginTop: '-15px'\r\n },\r\n helpIcon: {\r\n color: '#757575',\r\n paddingLeft: '6px'\r\n },\r\n helpIconWidthMargin: {\r\n color: '#757575',\r\n paddingLeft: '6px',\r\n paddingTop: '6px'\r\n },\r\n sectionHeaderStyle: {\r\n display: 'flex',\r\n marginTop: '15px'\r\n },\r\n containerStyle: {\r\n display: 'block'\r\n },\r\n flexStyle: {\r\n display: 'flex'\r\n },\r\n simpleForm: {\r\n '& > div': {\r\n '& > div:first-of-type': {\r\n height: '0'\r\n }\r\n }\r\n },\r\n adornmentStyle: {\r\n paddingLeft: '5px'\r\n },\r\n label: {\r\n color: 'grey',\r\n fontSize: 18,\r\n fontWeight: 400\r\n }\r\n});\r\n\r\nconst InvestorFundRelationshipDialog = props => {\r\n const {\r\n handleClose,\r\n fundInvestor,\r\n hasWriteFundInvestorPermission,\r\n hasEditFundInvestorTagPermission,\r\n openDialog,\r\n freezeEnabled\r\n } = props;\r\n const classes = fundInvestorRelationshipStyles();\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const [currentForm, setCurrentForm] = useState(undefined);\r\n const [additionalFieldsChanged, setAdditionalFieldsChanged] = useState(false);\r\n const [formFieldsChanged, setFormFieldsChanged] = useState(false);\r\n const [udfFieldChanged, setUdfFieldChanged] = useState(false);\r\n const [udfFieldsInvalid, setUdfFieldsInvalid] = useState(false);\r\n const [hasUdfs, setHasUdfs] = useState(false);\r\n\r\n const [formFieldsInvalid, setFormFieldsInvalid] = useState(true);\r\n const [formsumbitting, setFormSumbitting] = useState(false);\r\n const udftabRef = useRef();\r\n\r\n const handleSubmit = async () => {\r\n setFormSumbitting(true);\r\n const fundInvestorUpdated = currentForm.getState().values.fundInvestor;\r\n const fundInvestorStringify = JSON.stringify(\r\n omit(fundInvestor, 'fundInvestorTags')\r\n );\r\n const fundInvestorUpdatedStringify = JSON.stringify(\r\n omit(fundInvestorUpdated, 'fundInvestorTags')\r\n );\r\n let hasError = false;\r\n let hasModifications = false;\r\n\r\n function filterAndMapTags(tagList, updatedTagList, fundInvestor) {\r\n return Object.keys(tagList)\r\n .filter(tagId => !Object.keys(updatedTagList).includes(tagId))\r\n .map(fiTag => ({\r\n fundInvestorTagId: fiTag,\r\n fundInvestor: {\r\n fundId: fundInvestor.fundId,\r\n investorId: fundInvestor.investorId\r\n }\r\n }));\r\n }\r\n\r\n const tagAssociationsToAdd = filterAndMapTags(\r\n fundInvestorUpdated.fundInvestorTags,\r\n fundInvestor.fundInvestorTags,\r\n fundInvestor\r\n );\r\n\r\n const tagAssociationsToRemove = filterAndMapTags(\r\n fundInvestor.fundInvestorTags,\r\n fundInvestorUpdated.fundInvestorTags,\r\n fundInvestor\r\n );\r\n\r\n // If the form values of the fund-investor details are different from the existing record, we update it.\r\n if (fundInvestorStringify !== fundInvestorUpdatedStringify) {\r\n const data = {\r\n startDate: fundInvestorUpdated.startDate,\r\n endDate: fundInvestorUpdated.endDate,\r\n status: fundInvestorUpdated.status,\r\n commitment: fundInvestorUpdated.totalCommitment\r\n ? fundInvestorUpdated.totalCommitment\r\n : null,\r\n placementFee: fundInvestorUpdated.placementFee\r\n ? fundInvestorUpdated.placementFee\r\n : null,\r\n managementFee: fundInvestorUpdated.managementFee\r\n ? fundInvestorUpdated.managementFee\r\n : null,\r\n commitmentPrecision: fundInvestorUpdated.commitmentPrecision,\r\n lpSharingPercent: fundInvestorUpdated.lpSharingPercent\r\n ? fundInvestorUpdated.lpSharingPercent\r\n : null\r\n };\r\n\r\n try {\r\n await FundInvestorApi.update(\r\n fundInvestorUpdated.fundId,\r\n fundInvestorUpdated.investorId,\r\n data\r\n );\r\n notify('ra.notification.custom_updated_message');\r\n } catch (e) {\r\n notifyServerError(e);\r\n }\r\n }\r\n\r\n if (tagAssociationsToAdd.length > 0) {\r\n hasModifications = true;\r\n FundInvestorTagsAssociationsApi.create(tagAssociationsToAdd).catch(e => {\r\n hasError = true;\r\n notifyServerError(e);\r\n });\r\n }\r\n\r\n if (tagAssociationsToRemove.length > 0) {\r\n hasModifications = true;\r\n FundInvestorTagsAssociationsApi.delete(tagAssociationsToRemove).catch(\r\n e => {\r\n hasError = true;\r\n notifyServerError(e);\r\n }\r\n );\r\n }\r\n\r\n if (!hasError && hasModifications) {\r\n notify('ra.notification.custom_updated_message');\r\n }\r\n udftabRef.current.saveUdfs(handleClose);\r\n setFormSumbitting(false);\r\n };\r\n\r\n const validateFundInvestorDates = values => {\r\n const errors = { fundInvestor: { profileData: {} } };\r\n if (values.fundInvestor.startDate && values.fundInvestor.endDate) {\r\n if (\r\n moment(values.fundInvestor.startDate).startOf('day') >=\r\n moment(values.fundInvestor.endDate).startOf('day')\r\n ) {\r\n errors.fundInvestor.endDate = 'End Date must be after Start Date';\r\n }\r\n }\r\n return errors;\r\n };\r\n\r\n const validatePercentageFields = values => {\r\n if (values.value) {\r\n return values.value >= 0 && values.value <= 100;\r\n } else return true;\r\n };\r\n\r\n const onAdditionalTextFieldChange = (field, values) => {\r\n const { value } = values;\r\n currentForm.change(field, value);\r\n\r\n //check if any of fileds from custom NumberFormat fields are changed\r\n const currentValue = currentForm.getState().values.fundInvestor;\r\n const initialValue = currentForm.getState().initialValues.fundInvestor;\r\n const additionalFieldsList = [\r\n 'totalCommitment',\r\n 'managementFee',\r\n 'lpSharingPercent',\r\n 'placementFee'\r\n ];\r\n let additionalFeldsChanged = false;\r\n additionalFeldsChanged = additionalFieldsList.some(field => {\r\n return (currentValue[field] || '') !== (initialValue[field] || '');\r\n });\r\n setAdditionalFieldsChanged(additionalFeldsChanged);\r\n };\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n Edit Fund-Investor Relationship\r\n \r\n \r\n <>\r\n validateFundInvestorDates(values)}\r\n >\r\n {\r\n setFormFieldsChanged(!props.pristine);\r\n setFormFieldsInvalid(!props.valid);\r\n }}\r\n />\r\n \r\n {formprops => {\r\n if (currentForm === undefined) {\r\n setCurrentForm(formprops.form);\r\n }\r\n const {\r\n commitmentPrecision,\r\n fundCurrency\r\n } = formprops.form.getState().values.fundInvestor;\r\n return (\r\n <>\r\n Relationship Details\r\n \r\n \r\n Relationship Status\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n Fund Name\r\n \r\n \r\n \r\n \r\n Investor Name\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {fundInvestor.fundName}\r\n
    \r\n
    \r\n \r\n
    \r\n {fundInvestor.investorName}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n Commitment and Fees\r\n
    \r\n \r\n \r\n
    \r\n \r\n Decimal Places\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n {fundCurrency}\r\n \r\n \r\n )\r\n }}\r\n onValueChange={values => {\r\n onAdditionalTextFieldChange(\r\n 'fundInvestor.totalCommitment',\r\n values\r\n );\r\n }}\r\n />\r\n \r\n \r\n validatePercentageFields(values)}\r\n InputProps={{\r\n endAdornment: (\r\n \r\n \r\n %\r\n \r\n \r\n )\r\n }}\r\n onValueChange={values => {\r\n onAdditionalTextFieldChange(\r\n 'fundInvestor.managementFee',\r\n values\r\n );\r\n }}\r\n />\r\n \r\n \r\n validatePercentageFields(values)}\r\n InputProps={{\r\n endAdornment: (\r\n \r\n \r\n %\r\n \r\n \r\n )\r\n }}\r\n onValueChange={values => {\r\n onAdditionalTextFieldChange(\r\n 'fundInvestor.lpSharingPercent',\r\n values\r\n );\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {fundCurrency}\r\n \r\n \r\n )\r\n }}\r\n onValueChange={values => {\r\n onAdditionalTextFieldChange(\r\n 'fundInvestor.placementFee',\r\n values\r\n );\r\n }}\r\n />\r\n \r\n
    \r\n {freezeEnabled && (\r\n <>\r\n
    \r\n Investor Freeze\r\n \r\n \r\n \r\n
    \r\n \r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }}\r\n
    \r\n \r\n <>\r\n {hasUdfs && (\r\n
    \r\n Properties\r\n
    \r\n )}\r\n \r\n \r\n {\r\n setUdfFieldChanged(dirty);\r\n setUdfFieldsInvalid(!valid);\r\n }}\r\n setHasUdfs={setHasUdfs}\r\n //hasEditPermission={hasEditPermission}\r\n />\r\n \r\n \r\n \r\n \r\n
    \r\n \r\n }\r\n disabled={\r\n formFieldsInvalid ||\r\n udfFieldsInvalid ||\r\n !(formFieldsChanged || additionalFieldsChanged || udfFieldChanged)\r\n }\r\n />\r\n \r\n Close\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default InvestorFundRelationshipDialog;\r\n","import React, {\r\n useMemo,\r\n useCallback,\r\n useState,\r\n useRef,\r\n useEffect\r\n} from 'react';\r\nimport {\r\n Dialog,\r\n DialogContent,\r\n DialogActions,\r\n Button,\r\n CircularProgress,\r\n Grid,\r\n Typography\r\n} from '@material-ui/core/';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n LinearProgress,\r\n useGetList,\r\n useGetOne,\r\n useNotify,\r\n useRefresh,\r\n SaveButton,\r\n Datagrid,\r\n SelectInput,\r\n FunctionField,\r\n ListContextProvider,\r\n ListView\r\n} from 'react-admin';\r\nimport { useForm, useFormState } from 'react-final-form';\r\n\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport InvestorApi from '../../../core/apis/InvestorApi';\r\nimport SimpleFormWithSave from '../../../core/components/form/SimpleFormWithSave';\r\nimport useListController from '../../../core/components/forked/list/useListController';\r\n\r\nconst useStyles = makeStyles({\r\n selectContainer: {\r\n margin: 0,\r\n '& > *:only-child': {\r\n border: 'none'\r\n }\r\n },\r\n row: {\r\n backgroundColor: 'white !important'\r\n },\r\n table: {\r\n width: '100%'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center',\r\n marginTop: '25px',\r\n minHeight: '50px'\r\n },\r\n noshow: {\r\n display: 'none !important'\r\n },\r\n dialog: {\r\n minHeight: '75px'\r\n }\r\n});\r\n\r\nconst selectOptions = { label: null, helperText: null };\r\nconst USER_ID = ':userId';\r\nconst DOCUMENT_TYPE_ID = ':documentTypeId';\r\n\r\nconst PrimaryContacts = ({\r\n investorId,\r\n formRef,\r\n setDisableSubmit,\r\n setSubmitting,\r\n onSubmitEnd,\r\n handleDialogToggle\r\n}) => {\r\n const requestProps = useMemo(\r\n () => ({\r\n basePath: '/primarycontacts',\r\n resource: 'primarycontacts',\r\n filter: { investorId: investorId },\r\n perPage: -1,\r\n exporter: false,\r\n bulkActionButtons: false,\r\n title: ' ', // this is necessary because framework was adding defaultTitle to form header\r\n pagination: null,\r\n action: null\r\n }),\r\n [investorId]\r\n );\r\n\r\n const controllerProps = useListController(requestProps);\r\n const notifyServerError = useNotifyServerError();\r\n const notify = useNotify();\r\n const refresh = useRefresh();\r\n const validData = useRef([{}, {}, {}]);\r\n const classes = useStyles();\r\n\r\n const {\r\n data: investor,\r\n loading: iLoading,\r\n error: iError,\r\n loaded: iLoaded\r\n } = useGetOne('investors', investorId);\r\n const {\r\n data: documentTypes,\r\n loading: dtLoading,\r\n error: dtError,\r\n loaded: dtLoaded\r\n } = useGetList(\r\n 'documenttypes',\r\n { perPage: -1 },\r\n { field: 'description', order: 'ASC' }\r\n );\r\n const {\r\n data: contactsData,\r\n loading: cLoading,\r\n error: cError,\r\n loaded: cLoaded\r\n } = useGetList(\r\n 'investorcontacts',\r\n { perPage: -1 },\r\n { field: 'firstName', order: 'ASC' },\r\n { investorId: investorId }\r\n );\r\n\r\n const contacts = useMemo(() => {\r\n return (\r\n (cLoaded &&\r\n Object.values(contactsData).map(ct => ({\r\n id: ct.userId,\r\n name: `${ct.firstName} ${ct.lastName}`\r\n }))) ||\r\n []\r\n );\r\n }, [cLoaded, contactsData]);\r\n\r\n const [newControllerProps, initialValues] = useMemo(() => {\r\n if (!controllerProps.loaded || !iLoaded || !dtLoaded) {\r\n return validData.current;\r\n }\r\n const nIds = [...controllerProps.ids];\r\n const pcs = { ...controllerProps.data };\r\n Object.values(documentTypes).forEach(dt => {\r\n const id = `${investorId}:${dt.id}:P`;\r\n if (!pcs[id]) {\r\n pcs[id] = {\r\n investorId: investorId,\r\n documentTypeId: dt.id,\r\n userId: null,\r\n id: id\r\n };\r\n nIds.push(id);\r\n }\r\n });\r\n const iv = {};\r\n iv['primaryContactNumber'] = investor.primaryContactNumber;\r\n Object.values(pcs).forEach(pc => {\r\n iv[`${pc.id}${DOCUMENT_TYPE_ID}`] = pc.documentTypeId;\r\n pc.userId && (iv[`${pc.id}${USER_ID}`] = pc.userId);\r\n });\r\n validData.current = [\r\n {\r\n ...controllerProps,\r\n data: pcs,\r\n ids: nIds,\r\n total: nIds.length,\r\n loading: controllerProps.loading || dtLoading\r\n },\r\n iv,\r\n { ...controllerProps.data }\r\n ];\r\n return validData.current;\r\n }, [\r\n dtLoaded,\r\n iLoaded,\r\n dtLoading,\r\n documentTypes,\r\n controllerProps,\r\n investorId,\r\n investor\r\n ]);\r\n\r\n const renderDocumentType = useCallback(\r\n record =>\r\n documentTypes[record.documentTypeId]\r\n ? documentTypes[record.documentTypeId].description\r\n : 'Unknown Document Type',\r\n [documentTypes]\r\n );\r\n\r\n const [dgClasses, selClasses] = useMemo(\r\n () => [\r\n { row: classes.row, table: classes.table },\r\n { input: classes.selectContainer }\r\n ],\r\n [classes]\r\n );\r\n\r\n const onSubmit = useCallback(\r\n values => {\r\n const payload = [];\r\n Object.keys(values).forEach(key => {\r\n if (key.endsWith(USER_ID)) {\r\n const id = key.substr(0, key.length - USER_ID.length);\r\n const fetchedData = validData.current[2][id];\r\n if (!fetchedData || values[key] !== fetchedData.userId) {\r\n payload.push({\r\n investorId: investorId,\r\n documentTypeId: values[id + DOCUMENT_TYPE_ID],\r\n type: 'P',\r\n userId: values[key] || ''\r\n });\r\n }\r\n }\r\n });\r\n setSubmitting && setSubmitting(true);\r\n const promises = [];\r\n if (payload.length) {\r\n promises.push(InvestorApi.updatePrimaryContacts(investorId, payload));\r\n }\r\n if (investor.primaryContactNumber !== values.primaryContactNumber) {\r\n investor.primaryContactNumber = values.primaryContactNumber;\r\n promises.push(InvestorApi.update([investor]));\r\n }\r\n Promise.all(promises)\r\n .then(() => {\r\n setSubmitting && setSubmitting(false);\r\n notify('ra.notification.update_primary_contacts_successfull');\r\n onSubmitEnd && onSubmitEnd();\r\n handleDialogToggle && handleDialogToggle();\r\n refresh();\r\n })\r\n .catch(notifyServerError);\r\n },\r\n [\r\n investorId,\r\n investor,\r\n onSubmitEnd,\r\n notify,\r\n notifyServerError,\r\n handleDialogToggle,\r\n setSubmitting,\r\n refresh\r\n ]\r\n );\r\n\r\n useEffect(() => {\r\n if (dtError || cError || iError) {\r\n notifyServerError(dtError || cError || iError);\r\n }\r\n }, [dtError, cError, iError, notifyServerError]);\r\n\r\n return (\r\n \r\n \r\n {controllerProps.loading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n newControllerProps.loaded &&\r\n !newControllerProps.loading && (\r\n \r\n }\r\n >\r\n {newControllerProps.ids.length ? (\r\n \r\n \r\n {cLoading && !contacts.length ? (\r\n <>\r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n ) : (\r\n \r\n There are no Document Types to be displayed\r\n \r\n )}\r\n \r\n )\r\n )}\r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nconst DefaultPrimaryContact = ({ contacts = [], loading, showTitle }) => {\r\n return (\r\n <>\r\n \r\n \r\n Default Primary Contact\r\n \r\n \r\n {loading && !contacts.length ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n {showTitle && (\r\n \r\n \r\n Primary Contact for Document Type\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n};\r\n\r\nconst FormWrapper = ({ formRef, setDisableSubmit }) => {\r\n const form = useForm();\r\n const formState = useFormState();\r\n if (formRef && formRef.current !== form) {\r\n formRef.current = form;\r\n }\r\n useEffect(() => {\r\n // compare formState.values & initialValues\r\n setDisableSubmit(formState.pristine);\r\n }, [formState, setDisableSubmit]);\r\n return null;\r\n};\r\nconst SelectField = props => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst PrimaryContactsDialog = ({\r\n investorId,\r\n onSubmitEnd,\r\n showDialog,\r\n handleDialogToggle\r\n}) => {\r\n const formRef = useRef(null);\r\n const [disableSubmit, setDisableSubmit] = useState(true);\r\n const [submitting, setSubmitting] = useState(false);\r\n const classes = useStyles();\r\n\r\n const onSubmit = useCallback(() => {\r\n formRef.current && formRef.current.submit();\r\n }, []);\r\n\r\n const onCancel = useCallback(() => {\r\n formRef.current && formRef.current.reset();\r\n handleDialogToggle();\r\n }, [handleDialogToggle]);\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleDialogToggle();\r\n }}\r\n >\r\n \r\n Manage Primary Contacts\r\n \r\n \r\n \r\n \r\n \r\n }\r\n redirect={false}\r\n disabled={disableSubmit}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PrimaryContactsDialog;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Investor Tags Associations API\r\n */\r\nclass InvestorTagsAssociationsApi extends ApiBase {\r\n /**\r\n * create investortags/associations relations\r\n * @param {*} ids List of investorTagId/investorId\r\n */\r\n async create(payload) {\r\n const request = {\r\n url: `${this.API_URL}/investortags/associations`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * delete investortags/associations relations\r\n * @param {*} ids List of investorTagId/investorId\r\n */\r\n async delete(payload) {\r\n const request = {\r\n url: `${this.API_URL}/investortags/associations`,\r\n headers: this.getHeaders(),\r\n method: 'DELETE',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new InvestorTagsAssociationsApi();\r\n","import React, { useCallback, useRef, useState } from 'react';\r\nimport { Grid, Typography, CircularProgress } from '@material-ui/core/';\r\nimport { withStyles, makeStyles } from '@material-ui/core/styles';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\nimport ButtonMUI from '@material-ui/core/Button';\r\nimport {\r\n Edit,\r\n Filter,\r\n FormTab,\r\n TextInput,\r\n TabbedForm,\r\n TopToolbar,\r\n List,\r\n Button as ButtonReactAdmin,\r\n useGetList,\r\n useEditController,\r\n useNotify,\r\n useRefresh\r\n} from 'react-admin';\r\nimport { FormSpy, useFormState } from 'react-final-form';\r\nimport omit from 'lodash/omit';\r\nimport get from 'lodash/get';\r\nimport { saveAs } from 'file-saver';\r\n\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport { ListPagination } from '../../core/components/list/ListPagination';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport WrapperField from '../../core/components/WrapperField';\r\nimport {\r\n getInitials,\r\n predictiveSearchFormatter,\r\n predictiveSearchParser,\r\n removePathEnd\r\n} from '../../core/utils';\r\nimport FundInvestorStepper from '../fundinvestors/FundInvestorStepper';\r\nimport FundCreateDialog from './FundCreateDialog';\r\nimport WireInstructionCreateUpdateDialog from './wireinstructions/WireInstructionCreateUpdateDialog';\r\nimport FundInvestorDatagrid from './FundInvestorDatagrid';\r\nimport InvestorContactsDatagrid from './InvestorContactsDatagrid';\r\nimport InvestorDetails from './InvestorDetails';\r\nimport WireInstructionsDatagrid from './wireinstructions/WireInstructionsDatagrid';\r\nimport CopyContactStepper from './CopyContactStepper';\r\nimport MatchingFields from './MatchingFields';\r\nimport InvestorListBulkActions from './InvestorListBulkActions';\r\nimport FundInvestorApi from '../../core/apis/FundInvestorApi';\r\nimport TenantConfigurationApi from '../../core/apis/TenantConfigurationApi';\r\nimport ViewTab from '../../core/components/forked/layout/ViewTab';\r\nimport InvestorFundRelationshipDialog from '../investors/InvestorFundRelationshipDialog';\r\nimport { ExcelIcon } from '../../core/themes/icons/ExcelIcon';\r\nimport InvestorApi from '../../core/apis/InvestorApi';\r\nimport UdfTab from '../../core/components/tab/UdfTab';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport WireInstructionsImportFromExcel from './wireinstructions/WireInstructionsImportFromExcel';\r\nimport PrimaryContactsDialog from './primarycontacts/PrimaryContactsDialog';\r\nimport ForceListRender from '../../core/components/forked/list/ForceListRender';\r\nimport TagFilter from '../../core/components/inputs/TagFilter';\r\nimport { isEmpty } from 'lodash';\r\nimport InvestorTagsAssociationsApi from '../../core/apis/InvestorTagsAssociationsApi';\r\n\r\nconst RELATED_FUNDS_TAB_PATH = '1';\r\nconst RELATED_CONTACTS_TAB_PATH = '2';\r\nconst RELATED_WIRE_INSTRUCTIONS = '4';\r\nconst INVESTOR_UDF_TAB_PATH = '5';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n },\r\n simpleForm: {\r\n '& > div': {\r\n '& > .ra-input': {\r\n height: 'auto !important',\r\n '& > div': {\r\n width: '100%'\r\n }\r\n }\r\n }\r\n },\r\n progress: {\r\n position: 'absolute',\r\n top: '25%',\r\n left: '55%'\r\n }\r\n});\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '8px'\r\n },\r\n ButtonMUISpan: {\r\n paddingLeft: '4px'\r\n },\r\n circularProgress: {\r\n paddingRight: '3px'\r\n },\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginLeft: '10px'\r\n }\r\n});\r\n\r\nconst ActionsStyles = {\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginLeft: '10px'\r\n }\r\n};\r\n\r\nconst useActionsStyles = makeStyles(ActionsStyles);\r\n\r\nconst YN_FREEZEINVESTORS = 'YN_freezeInvestors';\r\n\r\nconst FundFilters = ({\r\n fundInvTagsList,\r\n fundInvSelectedTags,\r\n setFundInvSelectedTags,\r\n filterValues,\r\n ...props\r\n}) => {\r\n return (\r\n \r\n \r\n \r\n {fundInvTagsList.length > 0 && (\r\n null}\r\n displayTagFilter={false}\r\n onChangeFundInv={e => setFundInvSelectedTags(e)}\r\n displayFundInvTagFilter={true}\r\n isListFilter={true}\r\n selectLabel=\"Fund-Investor Tags\"\r\n topLabel=\"Fund-Investor Tags\"\r\n filterValues={filterValues}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nconst ContactFilters = props => (\r\n \r\n \r\n \r\n);\r\n\r\nconst FundInvestorActions = withStyles(ActionsStyles)(\r\n ({\r\n classes,\r\n hasExportInvestorFundsPermission,\r\n hasCreateFundPermission,\r\n hasWriteFundInvestorPermission,\r\n investorId,\r\n filterValues,\r\n ...props\r\n }) => {\r\n const [submitting, setSubmitting] = useState(false);\r\n const classesExportButton = useStyles();\r\n\r\n const handleClickDownloadRelatedFundsAsExcel = async (\r\n investorId,\r\n filters\r\n ) => {\r\n setSubmitting(true);\r\n FundInvestorApi.getRelatedFundsAsExcel(investorId, filters).then(resp => {\r\n const fileName = 'Investor Related Funds.xlsx';\r\n saveAs(resp, fileName);\r\n setSubmitting(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n {hasExportInvestorFundsPermission && (\r\n
    \r\n \r\n handleClickDownloadRelatedFundsAsExcel(investorId, filterValues)\r\n }\r\n >\r\n
    \r\n {submitting && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n Export Funds to Excel\r\n \r\n
    \r\n \r\n
    \r\n )}\r\n {hasCreateFundPermission && hasWriteFundInvestorPermission && (\r\n \r\n )}\r\n {hasWriteFundInvestorPermission && (\r\n \r\n )}\r\n
    \r\n );\r\n }\r\n);\r\n\r\nconst CreateWireInstructionButton = ({\r\n handleWireInstructionCreateButtonClick,\r\n hasEditPermission,\r\n hasCreateWireInstructionPermission\r\n}) => {\r\n const classes = useActionsStyles();\r\n const formState = useFormState();\r\n if (hasEditPermission && hasCreateWireInstructionPermission) {\r\n const isOrphan = get(formState, 'values.isOrphan', true);\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n }\r\n\r\n return null;\r\n};\r\n\r\nconst WireInstructionsActions = withStyles(ActionsStyles)(\r\n ({\r\n entityId,\r\n handleWireInstructionCreateButtonClick,\r\n hasEditPermission,\r\n hasCreateWireInstructionPermission,\r\n hasExportWireInstructionExcelPermission,\r\n dataAvailable\r\n }) => (\r\n \r\n \r\n \r\n \r\n )\r\n);\r\n\r\nconst ExcelIconImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst InvestorContactsActions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n hasExportInvestorContactsPermission,\r\n showCopyContactsStepper,\r\n showFilter,\r\n showPrimaryContacts,\r\n investorId,\r\n hasEditPermission,\r\n hasWriteAuthorizationPermission,\r\n userProfile = {},\r\n ids = [],\r\n ...rest\r\n}) => {\r\n const [submitting, setSubmitting] = useState(false);\r\n const classes = useStyles();\r\n /**\r\n * Click on button 'Download as Excel' to download the excel file\r\n */\r\n const handleClickDownloadAsExcel = async (investorId, filters) => {\r\n setSubmitting(true);\r\n InvestorApi.getRelatedContactsAsExcel(investorId, filters).then(resp => {\r\n const fileName = 'Investor Related Contacts.xlsx';\r\n saveAs(resp, fileName);\r\n setSubmitting(false);\r\n });\r\n };\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n {ids.length > 0 && hasExportInvestorContactsPermission && (\r\n
    \r\n handleClickDownloadAsExcel(investorId, filterValues)}\r\n >\r\n
    \r\n {submitting && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n Export Contacts to Excel\r\n \r\n
    \r\n \r\n
    \r\n )}\r\n {ids.length > 0 &&\r\n hasEditPermission &&\r\n userProfile.userType !== 'INVESTOR_ADMIN' && (\r\n \r\n )}\r\n {ids.length > 0 &&\r\n hasEditPermission &&\r\n hasWriteAuthorizationPermission &&\r\n userProfile.userType !== 'INVESTOR_ADMIN' && (\r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nconst TabSectionLabel = ({ label }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst InvestorTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst RelatedFundsWrapper = props => {\r\n const [openDialog, setOpenDialog] = useState(false);\r\n const [fundInvestor, setFundInvestor] = useState({});\r\n const [freezeEnabled, setFreezeEnabled] = useState(false);\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const [fundInvSelectedTags, setFundInvSelectedTags] = useState([]);\r\n const { data, loading } = useGetList('fundinvestortags', null, null);\r\n const fundInvTagsList = Object.values(data);\r\n\r\n const handleDialogOpen = async selectedId => {\r\n const ids = selectedId.split(':');\r\n const shouldReturnTags = !isEmpty(data);\r\n try {\r\n const fetchedFundInvestor = await FundInvestorApi.get(\r\n ids[0],\r\n ids[1],\r\n shouldReturnTags\r\n );\r\n const freezeEnabledConfigInfo = await TenantConfigurationApi.get(\r\n YN_FREEZEINVESTORS\r\n ); //.then(info => {\r\n const freezeValue =\r\n freezeEnabledConfigInfo &&\r\n freezeEnabledConfigInfo.pageData[0] &&\r\n freezeEnabledConfigInfo.pageData[0].value === 'Y';\r\n setFundInvestor(fetchedFundInvestor);\r\n setFreezeEnabled(freezeValue);\r\n setOpenDialog(true);\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n };\r\n const { handleReload, classes } = props;\r\n\r\n const handleClose = () => {\r\n setOpenDialog(false);\r\n handleReload();\r\n };\r\n\r\n if (loading) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n }\r\n pagination={}\r\n filter={{\r\n investorId: props.investorId,\r\n returnFundInvestorTags: fundInvTagsList.length > 0\r\n }}\r\n sort={{ field: 'fundName', order: 'ASC' }}\r\n basePath=\"/fundinvestors\"\r\n resource=\"fundinvestors\"\r\n forceShowList={!!props.showFundInvestorCreateDialog} // React-Admin 3.17+ ListView renders an empty page if total fetched = 0, we need to let it know that we have things to render\r\n title=\" \" // this is necessary because framework was adding defaultTitle to form header\r\n actions={\r\n \r\n }\r\n bulkActionButtons={\r\n (props.hasDeleteFundInvestorPermission ||\r\n props.hasReadFundInvestorPermission) && (\r\n \r\n )\r\n }\r\n empty={\r\n \r\n }\r\n >\r\n \r\n {openDialog ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst firstNameSort = { field: 'firstName', order: 'ASC' };\r\n\r\nconst InvestorEdit = props => {\r\n const {\r\n classes,\r\n permissions = [],\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n onFormInit,\r\n ...rest\r\n } = props;\r\n const [showFundCreateDialog, setShowFundCreateDialog] = useState(false);\r\n const [\r\n showWireInstructionCreateDialog,\r\n setShowWireInstructionCreateDialog\r\n ] = useState(false);\r\n const [\r\n showWireInstructionUpdateDialog,\r\n setShowWireInstructionUpdateDialog\r\n ] = useState(false);\r\n const [\r\n showFundInvestorCreateDialog,\r\n setShowFundInvestorCreateDialog\r\n ] = useState(false);\r\n const [showCopyContactsStepper, setShowCopyContactsStepper] = useState(false);\r\n const [showPrimaryContacts, setShowPrimaryContacts] = useState(false);\r\n const [wireInstructionRecord, setWireInstructionRecord] = useState({});\r\n const [wireInstructionPresent, setWireInstructionPresent] = useState(false);\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n const [reload, setReload] = useState(false);\r\n const [hasErrorOnSubmit, setHasErrorOnSubmit] = useState(false);\r\n const hasModificationSubmittedRef = useRef(false);\r\n\r\n const { record } = useEditController(props);\r\n const notifyServerError = useNotifyServerError();\r\n const notify = useNotify();\r\n const refresh = useRefresh();\r\n\r\n const investorId = rest.id;\r\n const hideToolbar =\r\n !props.match.isExact &&\r\n (rest.location.pathname.slice(-1) === RELATED_FUNDS_TAB_PATH || // Hide save/cancel toolbar in case of related funds/contacts tab\r\n rest.location.pathname.slice(-1) === RELATED_CONTACTS_TAB_PATH ||\r\n rest.location.pathname.slice(-1) === RELATED_WIRE_INSTRUCTIONS ||\r\n rest.location.pathname.slice(-1) === INVESTOR_UDF_TAB_PATH);\r\n const handleShowCopyContactsStepper = () =>\r\n setShowCopyContactsStepper(prev => !prev);\r\n const handleShowPrimaryContacts = () => setShowPrimaryContacts(prev => !prev);\r\n const handleFundCreateDialogToggle = () =>\r\n setShowFundCreateDialog(prev => !prev);\r\n const handleWireInstructionCreateDialogToggle = () =>\r\n setShowWireInstructionCreateDialog(prev => !prev);\r\n const handleWireInstructionUpdateDialogToggle = record => {\r\n setShowWireInstructionUpdateDialog(prev => !prev);\r\n setWireInstructionRecord(record);\r\n };\r\n const handleWireInstructionPresent = present =>\r\n setWireInstructionPresent(present);\r\n const handleReload = () => setReload(prev => !prev);\r\n const handleFundInvestorCreateDialogToggle = () =>\r\n setShowFundInvestorCreateDialog(prev => !prev);\r\n const handleFundInvestorCreateButtonClick = () =>\r\n setShowFundInvestorCreateDialog(prev => !prev);\r\n\r\n // Unblock navigation before deleting\r\n const onBeforeDelete = () => setWhenBlockNavigation(false);\r\n\r\n const hasCreateFundPermission = permissions.includes('AUTH_CREATE_FUND');\r\n const hasReadFundInvestorPermission = permissions.includes(\r\n 'AUTH_READ_FUND_INVESTOR'\r\n );\r\n const hasWriteFundInvestorPermission = permissions.includes(\r\n 'AUTH_WRITE_FUND_INVESTOR'\r\n );\r\n const hasDeleteFundInvestorPermission = permissions.includes(\r\n 'AUTH_DELETE_FUND_INVESTOR'\r\n );\r\n const hasExportInvestorContactsPermission = permissions.includes(\r\n 'AUTH_EXPORT_INVESTOR_CONTACTS'\r\n );\r\n const hasReadWireInstructionsPermission = permissions.includes(\r\n 'AUTH_READ_WIRE_INSTRUCTION'\r\n );\r\n const hasCreateWireInstructionPermission = permissions.includes(\r\n 'AUTH_CREATE_WIRE_INSTRUCTION'\r\n );\r\n const hasExportInvestorFundsPermission = permissions.includes(\r\n 'AUTH_EXPORT_INVESTOR_FUNDS'\r\n );\r\n const hasDeleteWireInstructionPermission = permissions.includes(\r\n 'AUTH_DELETE_WIRE_INSTRUCTION'\r\n );\r\n const hasExportWireInstructionExcelPermission = permissions.includes(\r\n 'AUTH_EXPORT_WIRE_INSTRUCTION_EXCEL'\r\n );\r\n const hasWriteAuthorizationPermission = permissions.includes(\r\n 'AUTH_WRITE_USER_AUTHORIZATION'\r\n );\r\n const hasReadUserPermission = permissions.includes('AUTH_READ_USER_NA');\r\n const hasEditInvestorTagPermission = permissions.includes(\r\n 'AUTH_EDIT_INVESTOR_TAG'\r\n );\r\n const hasEditFundInvestorTagPermission = permissions.includes(\r\n 'AUTH_EDIT_FUND_INVESTOR_TAG'\r\n );\r\n\r\n const onSubmitEnd = useCallback(() => {\r\n if (!hasErrorOnSubmit && hasModificationSubmittedRef) {\r\n notify('ra.notification.custom_updated_message');\r\n hasModificationSubmittedRef.current = false;\r\n }\r\n refresh();\r\n }, [hasErrorOnSubmit, notify, refresh]);\r\n\r\n const handleSubmit = useCallback(\r\n async values => {\r\n const recordStringify = JSON.stringify(omit(record, 'investorTags'));\r\n const valuesStringify = JSON.stringify(omit(values, 'investorTags'));\r\n const tagAssociationsToAdd = Object.keys(values.investorTags)\r\n .filter(tagId => !Object.keys(record.investorTags).includes(tagId))\r\n .map(investorTagId => ({ investorId, investorTagId }));\r\n\r\n let tagAssociationsToRemove = [];\r\n Object.entries(values.investorTags).forEach(([investorTagId, name]) => {\r\n if (name === null) {\r\n tagAssociationsToRemove.push({\r\n investorId,\r\n investorTagId\r\n });\r\n }\r\n });\r\n\r\n setWhenBlockNavigation(false);\r\n\r\n try {\r\n if (recordStringify !== valuesStringify) {\r\n hasModificationSubmittedRef.current = true;\r\n await InvestorApi.updateInvestor(\r\n record.id,\r\n omit(values, 'investorTags')\r\n );\r\n }\r\n if (tagAssociationsToAdd.length > 0) {\r\n hasModificationSubmittedRef.current = true;\r\n await InvestorTagsAssociationsApi.create(tagAssociationsToAdd);\r\n }\r\n if (tagAssociationsToRemove.length > 0) {\r\n hasModificationSubmittedRef.current = true;\r\n await InvestorTagsAssociationsApi.delete(tagAssociationsToRemove);\r\n }\r\n } catch (err) {\r\n setHasErrorOnSubmit(true);\r\n notifyServerError(err, undefined);\r\n } finally {\r\n onSubmitEnd();\r\n }\r\n },\r\n [investorId, notifyServerError, onSubmitEnd, record]\r\n );\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n\r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n ) : (\r\n \r\n )\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n \r\n {\r\n setWhenBlockNavigation(props.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n {(userProfile.userType !== 'INVESTOR_ADMIN' ||\r\n (userProfile.userType === 'INVESTOR_ADMIN' &&\r\n hasReadUserPermission)) && (\r\n \r\n \r\n }\r\n pagination={}\r\n filter={{ investorId }}\r\n basePath=\"/investorscontacts\"\r\n sort={firstNameSort}\r\n resource=\"investorcontacts\"\r\n title=\" \" // this is necessary because framework was adding defaultTitle to form header\r\n actions={\r\n \r\n }\r\n bulkActionButtons={false}\r\n empty={\r\n \r\n }\r\n syncWithLocation\r\n >\r\n \r\n \r\n \r\n {showPrimaryContacts && (\r\n \r\n )}\r\n \r\n )}\r\n {userProfile.userType !== 'INVESTOR_ADMIN' && (\r\n \r\n \r\n \r\n )}\r\n {hasReadWireInstructionsPermission && (\r\n \r\n \r\n {/**\r\n * Using custom List component to avoid Redux filter issues\r\n * in cases when two List components use the filter prop.\r\n * Issue described and resolved in:\r\n * https://stackoverflow.com/questions/59883643/how-to-not-change-the-url-on-list-filtering-with-react-admin\r\n */}\r\n }\r\n resource=\"wireinstructions\"\r\n basePath=\"/wireinstructions\"\r\n target=\"investorId\"\r\n filter={{\r\n investorId\r\n }}\r\n title=\" \" // this is necessary because framework was adding defaultTitle to form header\r\n actions={\r\n \r\n }\r\n bulkActionButtons={\r\n hasEditPermission &&\r\n hasDeleteWireInstructionPermission && (\r\n \r\n )\r\n }\r\n empty={\r\n ,\r\n \r\n ]}\r\n />\r\n }\r\n >\r\n \r\n \r\n\r\n {showWireInstructionCreateDialog && (\r\n \r\n )}\r\n {showWireInstructionUpdateDialog && (\r\n \r\n )}\r\n \r\n )}\r\n \r\n \r\n {\r\n setWhenBlockNavigation(props.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(InvestorEdit);\r\n","import InvestorIcon from '@material-ui/icons/People';\r\n\r\nimport InvestorList from './InvestorList';\r\nimport InvestorCreate from './InvestorCreate';\r\nimport InvestorEdit from './InvestorEdit';\r\n\r\nexport default {\r\n list: InvestorList,\r\n edit: InvestorEdit,\r\n create: InvestorCreate,\r\n icon: InvestorIcon\r\n};\r\n","import React from 'react';\r\n\r\nexport const DocumentIcon = () => {\r\n return (\r\n \r\n );\r\n};\r\n","import React from 'react';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport { Typography, Button } from '@material-ui/core/';\r\n\r\nconst styles = {\r\n avatar: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\r\n height: '36px',\r\n width: '36px',\r\n color: '#757575'\r\n },\r\n toolbarStyle: {\r\n backgroundColor: '#FFFFFF',\r\n borderBottom: '1px solid #E5E5E5',\r\n minHeight: '54px',\r\n paddingTop: '0',\r\n paddingBottom: '0'\r\n },\r\n firstButtonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px'\r\n },\r\n buttonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px',\r\n marginRight: '10px'\r\n },\r\n root: {\r\n flexGrow: 1\r\n },\r\n barTitle: {\r\n flexGrow: 1,\r\n paddingLeft: '8px'\r\n },\r\n label: {\r\n paddingRight: '0px'\r\n }\r\n};\r\n\r\nconst AvatarImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ListTitleBar = withStyles(styles)(\r\n ({\r\n classes,\r\n type,\r\n title,\r\n createUrl,\r\n secondTitle,\r\n secondCreateUrl,\r\n icon,\r\n hasCreatePermission,\r\n buttonId,\r\n ...rest\r\n }) => {\r\n return (\r\n \r\n \r\n \r\n {type}\r\n \r\n {hasCreatePermission && secondTitle && (\r\n \r\n {secondTitle}\r\n \r\n )}\r\n {hasCreatePermission && title && (\r\n \r\n {title}\r\n \r\n )}\r\n \r\n );\r\n }\r\n);\r\n\r\nexport default ListTitleBar;\r\n","const documentStatus = [\r\n { id: 'A', name: 'Active' },\r\n { id: 'P', name: 'Pending' },\r\n { id: 'S', name: 'Suspended' }\r\n];\r\nconst documentFilterStatus = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'PENDING', name: 'Pending' },\r\n { id: 'SUSPENDED', name: 'Suspended' }\r\n];\r\n\r\nconst matchingStatus = [\r\n { id: 'MATCHED', name: 'Matched' },\r\n { id: 'MANUALLY_SELECTED', name: 'Manually Selected' },\r\n { id: 'MISMATCH', name: 'Mismatch' },\r\n { id: 'MATCH_NOT_IN_FUND', name: 'Match Not In Fund' },\r\n { id: 'INACTIVE_INVESTOR', name: 'Inactive Investor' },\r\n { id: 'MULTIPLE_INVESTORS', name: 'Multiple Investors' },\r\n { id: 'MULTIPLE_FUNDS', name: 'Multiple Funds' }\r\n];\r\n\r\nconst batchTitleVariables = [\r\n { label: 'Investor Id', value: '!investorid' },\r\n { label: 'Investor Name', value: '!investorname' },\r\n { label: 'Fund Id', value: '!fundid' },\r\n { label: 'Fund Name', value: '!fundname' },\r\n { label: 'Fund family', value: '!fundfamily' },\r\n { label: 'Year', value: '!year' },\r\n { label: 'Quarter', value: '!quarter' },\r\n { label: 'Quarter (Qq)', value: '!quarter(Qq)' },\r\n {\r\n label: 'Document Date',\r\n value: '!docdate',\r\n values: [\r\n { label: 'docdate(M.d.yyyy)', value: '!docdate(M.d.yyyy)' },\r\n { label: 'docdate(MM/dd/yyyy)', value: '!docdate(MM/dd/yyyy)' },\r\n { label: 'docdate(MM/dd/yy)', value: '!docdate(MM/dd/yy)' },\r\n { label: 'docdate(dd/MM/yyyy)', value: '!docdate(dd/MM/yyyy)' },\r\n { label: 'docdate(yyyy-MM-dd)', value: '!docdate(yyyy-MM-dd)' },\r\n { label: 'docdate(MM-dd-yy)', value: '!docdate(MM-dd-yy)' },\r\n { label: 'docdate(dd-MM-yy)', value: '!docdate(dd-MM-yy)' },\r\n { label: 'docdate(MM-dd-yyyy)', value: '!docdate(MM-dd-yyyy)' },\r\n { label: 'docdate(yyyy/MM/dd)', value: '!docdate(yyyy/MM/dd)' },\r\n { label: 'docdate(yyyy/dd/MM)', value: '!docdate(yyyy/dd/MM)' },\r\n { label: 'docdate(yyyy-dd-MM)', value: '!docdate(yyyy-dd-MM)' },\r\n { label: 'docdate(MMMM-d-yyyy)', value: '!docdate(MMMM-d-yyyy)' },\r\n { label: 'docdate(MMMM d,yyyy)', value: '!docdate(MMMM d,yyyy)' },\r\n { label: 'docdate(MMMM d, yyyy)', value: '!docdate(MMMM d, yyyy)' },\r\n { label: 'docdate(MMMM/d/yyyy)', value: '!docdate(MMMM/d/yyyy)' },\r\n { label: 'docdate(MM d,yyyy)', value: '!docdate(MM d,yyyy)' },\r\n { label: 'docdate(MM d, yyyy)', value: '!docdate(MM d, yyyy)' },\r\n { label: 'docdate(MM.dd.yy)', value: '!docdate(MM.dd.yy)' },\r\n { label: 'docdate(MM dd,yyyy)', value: '!docdate(MM dd,yyyy)' },\r\n { label: 'docdate(MM dd, yyyy)', value: '!docdate(MM dd, yyyy)' },\r\n { label: 'docdate(MM/dd/yyyy)', value: '!docdate(MM/dd/yyyy)' },\r\n { label: 'docdate(dd MMMM yyyy)', value: '!docdate(dd MMMM yyyy)' }\r\n ]\r\n },\r\n {\r\n label: 'Document Due Date',\r\n value: '!duedate',\r\n values: [\r\n { label: 'duedate(M.d.yyyy)', value: '!duedate(M.d.yyyy)' },\r\n { label: 'duedate(MM/dd/yyyy)', value: '!duedate(MM/dd/yyyy)' },\r\n { label: 'duedate(MM/dd/yy)', value: '!duedate(MM/dd/yy)' },\r\n { label: 'duedate(dd/MM/yyyy)', value: '!duedate(dd/MM/yyyy)' },\r\n { label: 'duedate(yyyy-MM-dd)', value: '!duedate(yyyy-MM-dd)' },\r\n { label: 'duedate(MM-dd-yy)', value: '!duedate(MM-dd-yy)' },\r\n { label: 'duedate(dd-MM-yy)', value: '!duedate(dd-MM-yy)' },\r\n { label: 'duedate(MM-dd-yyyy)', value: '!duedate(MM-dd-yyyy)' },\r\n { label: 'duedate(yyyy/MM/dd)', value: '!duedate(yyyy/MM/dd)' },\r\n { label: 'duedate(yyyy/dd/MM)', value: '!duedate(yyyy/dd/MM)' },\r\n { label: 'duedate(yyyy-dd-MM)', value: '!duedate(yyyy-dd-MM)' },\r\n { label: 'duedate(MMMM-d-yyyy)', value: '!duedate(MMMM-d-yyyy)' },\r\n { label: 'duedate(MMMM d,yyyy)', value: '!duedate(MMMM d,yyyy)' },\r\n { label: 'duedate(MMMM d, yyyy)', value: '!duedate(MMMM d, yyyy)' },\r\n { label: 'duedate(MMMM/d/yyyy)', value: '!duedate(MMMM/d/yyyy)' },\r\n { label: 'duedate(MM d,yyyy)', value: '!duedate(MM d,yyyy)' },\r\n { label: 'duedate(MM d, yyyy)', value: '!duedate(MM d, yyyy)' },\r\n { label: 'duedate(MM.dd.yy)', value: '!duedate(MM.dd.yy)' },\r\n { label: 'duedate(MM dd,yyyy)', value: '!duedate(MM dd,yyyy)' },\r\n { label: 'duedate(MM dd, yyyy)', value: '!duedate(MM dd, yyyy)' },\r\n { label: 'duedate(MM/dd/yyyy)', value: '!duedate(MM/dd/yyyy)' },\r\n { label: 'duedate(dd MMMM yyyy)', value: '!duedate(dd MMMM yyyy)' }\r\n ]\r\n }\r\n];\r\n\r\nexport {\r\n documentStatus,\r\n matchingStatus,\r\n documentFilterStatus,\r\n batchTitleVariables\r\n};\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\nimport { stringify } from '../components/forked/stringify';\r\n\r\n/**\r\n * Resource upload API\r\n */\r\nclass ResourceUploadApi extends ApiBase {\r\n /**\r\n * Upload batch\r\n * @param {*} formData Form Data\r\n * @param progress\r\n */\r\n async upload(formData, progress) {\r\n // Get headers for form-data upload\r\n const headers = this.getHeaders();\r\n delete headers['Content-Type'];\r\n headers.Accept = 'application/json';\r\n\r\n const request = {\r\n url: `${this.API_URL}/resourceupload`,\r\n method: 'POST',\r\n headers: headers,\r\n onUploadProgress: progressEvent => {\r\n if (progressEvent.lengthComputable) {\r\n if (typeof progress === 'function') {\r\n progress(progressEvent.loaded, progressEvent.total);\r\n }\r\n }\r\n },\r\n data: formData\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status !== 201) {\r\n throw new Error(response.statusText);\r\n }\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Update batch\r\n * @param {*} formData\r\n * @param progress\r\n */\r\n async updateResourceUpload(formData, progress) {\r\n // Get headers for form-data upload\r\n const headers = this.getHeaders();\r\n delete headers['Content-Type'];\r\n headers.Accept = 'application/json';\r\n\r\n const request = {\r\n url: `${this.API_URL}/resourceupload`,\r\n headers: headers,\r\n method: 'PUT',\r\n data: formData,\r\n onUploadProgress: progressEvent => {\r\n if (progressEvent.lengthComputable) {\r\n if (typeof progress === 'function') {\r\n progress(progressEvent.loaded, progressEvent.total);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Download uploaded file\r\n * @param {*} resourceUploadId\r\n * @param progress\r\n */\r\n async download(resourceUploadId, progress) {\r\n const request = {\r\n url: `${this.API_URL}/resourceupload/download?resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET',\r\n responseType: 'blob',\r\n onDownloadProgress: progressEvent => {\r\n if (progressEvent.lengthComputable) {\r\n if (typeof progress === 'function') {\r\n progress(progressEvent.loaded, progressEvent.total);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Start split of bulk upload\r\n * @param {*} resourceUploadId\r\n * @param {*} splitMethodId\r\n */\r\n async split(resourceUploadId, splitMethodId) {\r\n const request = {\r\n url: `${this.API_URL}/resourceupload/split?splitMethodId=${splitMethodId}&resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders(),\r\n method: 'POST'\r\n };\r\n\r\n // Start split\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 202) {\r\n }\r\n }\r\n\r\n /**\r\n * Get split job status\r\n * @param {*} resourceUploadId\r\n */\r\n async getSplitStatus(resourceUploadId) {\r\n const request = {\r\n url: `${\r\n this.API_URL\r\n }/resourceupload/split/status?resourceUploadId=${resourceUploadId}×tamp=${new Date().getTime()}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n // Start split\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 404) {\r\n // Special case : split not started yet\r\n return;\r\n }\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set batch status\r\n * @param {*} resourceUploadId\r\n * @param {*} newStatus\r\n */\r\n async setBatchStatus(resourceUploadId, newStatus) {\r\n let setAction = '';\r\n switch (newStatus) {\r\n case 'A':\r\n setAction = 'setactive';\r\n break;\r\n case 'P':\r\n setAction = 'setpending';\r\n break;\r\n case 'S':\r\n setAction = 'setsuspended';\r\n break;\r\n default:\r\n setAction = 'setactive';\r\n break;\r\n }\r\n var params = new URLSearchParams();\r\n params.append('resourceUploadId', resourceUploadId);\r\n\r\n const request = {\r\n url: `${this.API_URL}/resourceupload/${setAction}?${params.toString()}`,\r\n headers: this.getHeaders(),\r\n method: 'POST'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set mulitple batches status to ACTIVE\r\n * @param data\r\n */\r\n async setMultipleActive(data) {\r\n const headers = this.getHeaders();\r\n const request = {\r\n url: `${this.API_URL}/resourceuploads/setactive`,\r\n headers: headers,\r\n method: 'POST',\r\n data: data\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set mulitple batches status to PENDING\r\n * @param data\r\n */\r\n async setMultiplePending(data) {\r\n const headers = this.getHeaders();\r\n const request = {\r\n url: `${this.API_URL}/resourceuploads/setpending`,\r\n headers: headers,\r\n method: 'POST',\r\n data: data\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set mulitple batches status to SUSPENDED\r\n * @param data\r\n */\r\n async setMultipleSuspended(data) {\r\n const headers = this.getHeaders();\r\n const request = {\r\n url: `${this.API_URL}/resourceuploads/setsuspended`,\r\n headers: headers,\r\n method: 'POST',\r\n data: data\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Associate fund/investor\r\n * @param fundInvestors\r\n */\r\n async setFundinvestors(fundInvestors) {\r\n const request = {\r\n url: `${this.API_URL}/resourcefundinvestors`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(fundInvestors)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Get fund/investor\r\n * @param {*} resourceUploadId\r\n */\r\n async getFundinvestors(resourceUploadId) {\r\n const request = {\r\n url: `${this.API_URL}/resourcefundinvestors?resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Delete fund/investor\r\n * @param fundInvestors\r\n */\r\n async deleteFundinvestors(fundInvestors) {\r\n const request = {\r\n url: `${this.API_URL}/resourcefundinvestors`,\r\n headers: this.getHeaders(),\r\n method: 'DELETE',\r\n data: JSON.stringify(fundInvestors)\r\n };\r\n\r\n await axios.request(request);\r\n }\r\n\r\n /**\r\n * Start proof of bulk upload\r\n * @param {*} resourceUploadId\r\n */\r\n async proof(resourceUploadId) {\r\n const request = {\r\n url: `${this.API_URL}/resourceupload/proof?resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders(),\r\n method: 'POST'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 202) {\r\n }\r\n }\r\n\r\n /**\r\n * Get proof job status\r\n * @param {*} resourceUploadId\r\n */\r\n async getProofStatus(resourceUploadId) {\r\n const request = {\r\n url: `${\r\n this.API_URL\r\n }/resourceupload/proof/status?resourceUploadId=${resourceUploadId}×tamp=${new Date().getTime()}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 404) {\r\n // Special case : proofing not started yet\r\n return;\r\n }\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Download proofing file\r\n * @param {*} resourceUploadId\r\n * @param progress\r\n */\r\n async downloadProofFile(resourceUploadId, progress) {\r\n const request = {\r\n url: `${this.API_URL}/resourceupload/proof/download?resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET',\r\n responseType: 'blob',\r\n onDownloadProgress: progressEvent => {\r\n if (progressEvent.lengthComputable) {\r\n if (typeof progress === 'function') {\r\n progress(progressEvent.loaded, progressEvent.total);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response;\r\n }\r\n\r\n /**\r\n * Notify by mail\r\n * @param {*} resourceUploadId\r\n */\r\n async notify(resourceUploadId) {\r\n const request = {\r\n method: 'POST',\r\n url: `${this.API_URL}/resourceupload/notify?resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders()\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response;\r\n }\r\n\r\n /**\r\n * Get proof job status\r\n * @param {*} resourceUploadId\r\n */\r\n async getBatchWithDocuments(resourceUploadId) {\r\n const batchRequest = {\r\n url: `${this.API_URL}/resourceupload?resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const documentRequest = {\r\n url: `${this.API_URL}/resourceupload/documents?resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const batchForEdit = await axios\r\n .all([axios.request(batchRequest), axios.request(documentRequest)])\r\n .then(\r\n axios.spread((batchResponse, documentsResponse) => {\r\n const batch = batchResponse.data;\r\n const documents = documentsResponse.data;\r\n return { batch, documents };\r\n })\r\n );\r\n\r\n return batchForEdit;\r\n }\r\n\r\n /**\r\n * Get recipients excel file by distribution resource upload id\r\n * @param params\r\n */\r\n async getResourceUploadDistributionListExcel(params) {\r\n const request = {\r\n url: `${this.API_URL}/resourceupload/distributionlist/excel?${stringify(\r\n params\r\n )}`,\r\n headers: this.getHeaders(),\r\n responseType: 'blob',\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Send fundids and excel file, validate content and return\r\n * fund investor combination with validation message.\r\n * @param fundIds\r\n * @param value\r\n */\r\n async fundInvestorValidateImport(fundIds, value) {\r\n const formData = new FormData();\r\n\r\n const fundIdMetaDataDto = {\r\n fundIds: fundIds\r\n };\r\n\r\n formData.append('fundIdMetaData', JSON.stringify(fundIdMetaDataDto));\r\n formData.append('excelFile', value, value.name);\r\n const request = {\r\n url: `${this.API_URL}/resourceupload/fundinvestor/validateimport`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: formData\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async downloadDocumentUploadImportTemplate() {\r\n const request = {\r\n url: `${this.API_URL}/resourceupload/fundinvestor/import/template`,\r\n method: 'GET',\r\n responseType: 'blob',\r\n headers: this.getHeaders()\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Change title of the batch\r\n * @param {*} resourceUploadId\r\n * @param {*} resourceUploadTitle\r\n */\r\n async updateResourceUploadTitle(resourceUploadId, resourceUploadTitle) {\r\n const request = {\r\n url: `${this.API_URL}/resourceupload/title?resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders(),\r\n method: 'PUT',\r\n data: resourceUploadTitle\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new ResourceUploadApi();\r\n","import React, { Fragment, useState } from 'react';\r\nimport {\r\n Button,\r\n useRefresh,\r\n useNotify,\r\n useUnselectAll,\r\n useDeleteMany,\r\n CRUD_DELETE_MANY\r\n} from 'react-admin';\r\nimport { makeStyles, alpha } from '@material-ui/core';\r\nimport ResourceUploadApi from '../../core/apis/ResourceUploadApi';\r\nimport Confirm from '../../core/components/forked/layout/Confirm';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n button: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginRight: '9px'\r\n },\r\n deleteButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n color: theme.palette.primary.main,\r\n '&:hover': {\r\n backgroundColor: alpha(theme.palette.primary.main, 0.12),\r\n // Reset on mouse devices\r\n '@media (hover: none)': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n marginRight: '9px',\r\n '& svg': { display: 'none' }\r\n }\r\n}));\r\n\r\nconst ResourceUploadListBulkActions = props => {\r\n const {\r\n handleManageDocumentPropertiesOpen,\r\n hasDeletePermission,\r\n hasEditPermission,\r\n hasApprovePermission,\r\n selectedIds,\r\n setShowLoader,\r\n resource,\r\n showLoader\r\n } = props;\r\n const classes = useStyles();\r\n const refresh = useRefresh();\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const unselectAll = useUnselectAll();\r\n const [openConfirmSuspend, setOpenConfirmSuspend] = useState(false);\r\n const [openConfirmApprove, setOpenConfirmApprove] = useState(false);\r\n const [openConfirmDelete, setopenConfirmDelete] = useState(false);\r\n const [openConfirmPending, setOpenConfirmPending] = useState(false);\r\n\r\n const handleApprove = async () => {\r\n setOpenConfirmApprove(false);\r\n if (showLoader) return;\r\n setShowLoader(true);\r\n try {\r\n const data = {\r\n batchIds: selectedIds\r\n };\r\n await ResourceUploadApi.setMultipleActive(data);\r\n refresh();\r\n unselectAll(resource);\r\n } catch (e) {\r\n notifyServerError(e);\r\n } finally {\r\n setShowLoader(false);\r\n }\r\n };\r\n\r\n const handlePending = async () => {\r\n setOpenConfirmPending(false);\r\n if (showLoader) return;\r\n setShowLoader(true);\r\n try {\r\n const data = {\r\n batchIds: selectedIds\r\n };\r\n await ResourceUploadApi.setMultiplePending(data);\r\n refresh();\r\n unselectAll(resource);\r\n } catch (e) {\r\n notifyServerError(e);\r\n } finally {\r\n setShowLoader(false);\r\n }\r\n };\r\n const handleSuspend = async () => {\r\n setOpenConfirmSuspend(false);\r\n if (showLoader) return;\r\n setShowLoader(true);\r\n try {\r\n const data = {\r\n batchIds: selectedIds\r\n };\r\n await ResourceUploadApi.setMultipleSuspended(data);\r\n refresh();\r\n unselectAll(resource);\r\n } catch (e) {\r\n notifyServerError(e);\r\n } finally {\r\n setShowLoader(false);\r\n }\r\n };\r\n const handleEditClick = async () => {\r\n await handleManageDocumentPropertiesOpen(selectedIds[0]);\r\n refresh();\r\n unselectAll(resource);\r\n };\r\n\r\n const [deleteMany] = useDeleteMany(resource, selectedIds, {\r\n action: CRUD_DELETE_MANY,\r\n onSuccess: () => {\r\n refresh();\r\n notify('ra.notification.deleted', {\r\n messageArgs: { smart_count: selectedIds.length }\r\n });\r\n unselectAll(resource);\r\n setShowLoader(false);\r\n },\r\n onFailure: error => {\r\n notifyServerError(error, 'ra.notification.http_error');\r\n setShowLoader(false);\r\n }\r\n });\r\n\r\n const handleDeleteClick = async () => {\r\n //Close the confirm dialog\r\n setopenConfirmDelete(false);\r\n //Show loader\r\n setShowLoader(true);\r\n deleteMany(selectedIds);\r\n };\r\n\r\n const editVisible = selectedIds && selectedIds.length === 1;\r\n return (\r\n \r\n {editVisible && hasEditPermission && (\r\n \r\n )}\r\n {hasApprovePermission && (\r\n <>\r\n setOpenConfirmApprove(true)}\r\n />\r\n setOpenConfirmApprove(false)}\r\n />\r\n setOpenConfirmPending(true)}\r\n />\r\n setOpenConfirmPending(false)}\r\n />\r\n setOpenConfirmSuspend(true)}\r\n //onClick={handleSuspend}\r\n />\r\n setOpenConfirmSuspend(false)}\r\n />\r\n \r\n )}\r\n {hasDeletePermission && (\r\n <>\r\n setopenConfirmDelete(true)}\r\n />\r\n setopenConfirmDelete(false)}\r\n />\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default ResourceUploadListBulkActions;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\nimport { saveAs } from 'file-saver';\r\n\r\n/**\r\n * Document API (related to report table)\r\n */\r\nclass DocumentApi extends ApiBase {\r\n /**\r\n * Soft delete documents\r\n * @param {*} documents List of documents\r\n */\r\n async deleteDocuments(documents) {\r\n const request = {\r\n url: `${this.API_URL}/document/setstatuses`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(documents)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 404) {\r\n return;\r\n }\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Assign split document data\r\n * @param {*} resourceUploadId\r\n * @param {*} documents\r\n */\r\n async assignDocuments(resourceUploadId, documents) {\r\n const request = {\r\n url: `${this.API_URL}/documents?resourceUploadId=${resourceUploadId}`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(documents),\r\n validateStatus: function(status) {\r\n return (status >= 200 && status < 300) || status === 400;\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 400) {\r\n throw new Error(response.data.errorMessage);\r\n }\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set single document status\r\n * @param {*} documentId\r\n * @param {*} data\r\n */\r\n async setSingleStatus(documentId, data) {\r\n const headers = this.getHeaders();\r\n const request = {\r\n url: `${this.API_URL}/document/setstatus?documentId=${documentId}`,\r\n headers: headers,\r\n method: 'POST',\r\n data: data\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set mulitple documents status\r\n * @param orignalDocumentId\r\n * @param {*} data\r\n */\r\n async copyToAnotherInvestors(orignalDocumentId, data) {\r\n const headers = this.getHeaders();\r\n const request = {\r\n url: `${this.API_URL}/document/copytoanotherinvestors?id=${orignalDocumentId}`,\r\n headers: headers,\r\n method: 'POST',\r\n data: JSON.stringify(data)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Set mulitple documents status\r\n * @param {*} data\r\n */\r\n async setMultipleStatus(data) {\r\n const headers = this.getHeaders();\r\n const request = {\r\n url: `${this.API_URL}/document/setstatuses`,\r\n headers: headers,\r\n method: 'POST',\r\n data: data\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Download uploaded file\r\n * @param {*} documentId\r\n * @param progress\r\n */\r\n async download(documentId, progress) {\r\n const request = {\r\n url: `${this.API_URL}/document/download?documentId=${documentId}&accessType=DOWNLOAD`,\r\n headers: this.getHeaders(),\r\n method: 'GET',\r\n responseType: 'blob',\r\n onDownloadProgress: progressEvent => {\r\n if (progressEvent.lengthComputable) {\r\n if (typeof progress === 'function') {\r\n progress(progressEvent.loaded, progressEvent.total);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response;\r\n }\r\n\r\n async downloadDocumentAsFile(documentId, fileName) {\r\n const response = await this.download(documentId);\r\n saveAs(response.data, fileName);\r\n }\r\n}\r\n\r\nexport default new DocumentApi();\r\n","const SummaryStepStyles = () => ({\r\n checkbox: {\r\n marginLeft: '-7px',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n tableWrapper: {\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n dialogActions: {\r\n background: 'transparent',\r\n padding: '8px 0px'\r\n },\r\n container: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n alignItems: 'center',\r\n paddingTop: '5px'\r\n },\r\n actionBarContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n proofSelect: {\r\n minWidth: '150px'\r\n },\r\n blueItem: {\r\n color: '#2962FF'\r\n },\r\n progressText: {\r\n fontSize: '0.875rem',\r\n marginRight: '7px'\r\n },\r\n progressIcon: {\r\n marginRight: '4px'\r\n },\r\n doneText: {\r\n fontSize: '12px',\r\n color: '#2E7D32',\r\n marginRight: '7px'\r\n },\r\n doneIcon: {\r\n fontSize: '14px',\r\n color: '#2E7D32',\r\n marginRight: '4px'\r\n },\r\n errorText: {\r\n fontSize: '12px',\r\n color: '#f44336',\r\n marginRight: '7px'\r\n },\r\n errorIcon: {\r\n color: '#f44336',\r\n fontSize: '14px',\r\n marginRight: '4px'\r\n },\r\n indicatorsContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n marginTop: '17px',\r\n marginBottom: '8px'\r\n },\r\n batchIndicators: {\r\n fontSize: 15,\r\n fontWeight: 400\r\n },\r\n helper: {\r\n width: '100%'\r\n },\r\n button: {\r\n border: '1px solid #E0E0E0',\r\n minWidth: '160px',\r\n background: '#ffffff',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n disableButton: {\r\n background: '#F5F5F5',\r\n border: '1px solid #EEEEEE !important',\r\n minWidth: '160px',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n loading: {\r\n width: '100%',\r\n height: '100%',\r\n alignSelf: 'center'\r\n },\r\n tag: {\r\n color: '#212121',\r\n 'font-size': '12px',\r\n 'line-height': '12px',\r\n textDecoration: 'none',\r\n 'box-sizing': 'border-box',\r\n background: '#F5F5F5',\r\n border: '1px solid #E0E0E0',\r\n 'border-radius': '2px',\r\n padding: '0 5px'\r\n }\r\n});\r\n\r\nexport default SummaryStepStyles;\r\n","import { useEffect, useRef } from 'react';\r\n\r\n//https://www.aaron-powell.com/posts/2019-09-23-recursive-settimeout-with-react-hooks/\r\nfunction useInterval(callback, delay) {\r\n const savedCallback = useRef(callback);\r\n\r\n // Remember the latest callback.\r\n useEffect(() => {\r\n savedCallback.current = callback;\r\n }, [callback]);\r\n\r\n // Set up the timeout loop.\r\n useEffect(() => {\r\n let id;\r\n function tick() {\r\n const ret = savedCallback.current();\r\n\r\n if (ret instanceof Promise) {\r\n ret.then(() => {\r\n if (delay !== null) {\r\n id = setTimeout(tick, delay);\r\n }\r\n });\r\n } else {\r\n if (delay !== null) {\r\n id = setTimeout(tick, delay);\r\n }\r\n }\r\n }\r\n if (delay !== null) {\r\n id = setTimeout(tick, delay);\r\n return () => id && clearTimeout(id);\r\n }\r\n }, [delay]);\r\n}\r\n\r\nexport default useInterval;\r\n","import React, { useState, useCallback, useEffect, useMemo } from 'react';\r\nimport { Loading, Error, useQueryWithStore } from 'react-admin';\r\nimport {\r\n Grid,\r\n Table,\r\n Paper,\r\n Button,\r\n TableRow,\r\n TableCell,\r\n TableBody,\r\n TableHead,\r\n Typography,\r\n DialogActions,\r\n CircularProgress\r\n} from '@material-ui/core/';\r\nimport ErrorIcon from '@material-ui/icons/ErrorOutline';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport capitalize from 'lodash/capitalize';\r\n\r\nimport { FormSpy, Field } from 'react-final-form';\r\nimport CheckBoxField from '../../../core/components/CheckBoxField';\r\nimport SummaryStepStyles from './SummaryStepStyles';\r\nimport ResourceUploadApi from '../../../core/apis/ResourceUploadApi';\r\nimport dataProvider from '../../../core/providers/IccUserDataProvider';\r\nimport useInterval from '../../../core/hooks/UseInterval';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst MAX_COUNTER = 50; // 50 * 5 sec = 4.16 min\r\n\r\nconst DocumentTable = withStyles(SummaryStepStyles)(({ classes, ...props }) => {\r\n const { documents, resourceUploadId, allInvestors, tagName } = props;\r\n const tableHeadCells = [\r\n { id: 'Document Title' },\r\n { id: 'Investors' },\r\n { id: 'Funds' },\r\n ...(tagName ? [{ id: 'Document Tag' }] : []),\r\n { id: 'Category' },\r\n { id: 'Document Status' }\r\n ];\r\n const totalLabel =\r\n documents.length === 1\r\n ? documents.length + ' document'\r\n : documents.length + ' documents';\r\n return (\r\n
    \r\n \r\n \r\n Total: {totalLabel}\r\n \r\n Batch ID: {resourceUploadId}\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {documents.map(doc => {\r\n return (\r\n \r\n \r\n {doc.documentTitle}\r\n \r\n \r\n {allInvestors ? 'All Investors' : doc.investorName}\r\n \r\n {doc.fundName}\r\n {tagName ? (\r\n \r\n {tagName}\r\n \r\n ) : (\r\n <>\r\n )}\r\n {doc.categoryName}\r\n \r\n {capitalize(doc.status)}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n});\r\n\r\nconst ErrorBadge = withStyles(SummaryStepStyles)(({ classes, ...props }) => {\r\n return (\r\n
    \r\n \r\n Proof Error\r\n
    \r\n );\r\n});\r\n\r\nconst EnhancedTableHead = props => {\r\n const { tableHeadCells } = props;\r\n\r\n return (\r\n \r\n \r\n {tableHeadCells.map(headCell => (\r\n \r\n {headCell.id}\r\n \r\n ))}\r\n \r\n \r\n );\r\n};\r\n\r\nexport const SummaryActionBar = withStyles(SummaryStepStyles)(\r\n ({\r\n classes,\r\n handleProofActionChange,\r\n proofStatus,\r\n isPreviewLoading,\r\n showSendEmail,\r\n bulkMode,\r\n batchStatus,\r\n hasUnMatchedDocs = false,\r\n ...props\r\n }) => {\r\n return (\r\n \r\n
    \r\n {showSendEmail && (\r\n \r\n )}\r\n
    \r\n {bulkMode && proofStatus === 'ERROR' && }\r\n\r\n {bulkMode && (\r\n handleProofActionChange(e.currentTarget.value)}\r\n disabled={\r\n !proofStatus || proofStatus === 'PROCESSING' || hasUnMatchedDocs\r\n }\r\n >\r\n {proofStatus !== 'PROCESSING' ? (\r\n 'Generate PDF Proof'\r\n ) : (\r\n <>\r\n \r\n Generating...\r\n \r\n )}\r\n \r\n )}\r\n {bulkMode && (\r\n handleProofActionChange(e.currentTarget.value)}\r\n >\r\n {!isPreviewLoading ? (\r\n 'Preview PDF Proof'\r\n ) : (\r\n <>\r\n \r\n Generating...\r\n \r\n )}\r\n \r\n )}\r\n
    \r\n );\r\n }\r\n);\r\n\r\nconst SummaryStep = props => {\r\n const [proofStatus, setProofStatus] = useState('');\r\n const [isPreviewLoading, setIsPreviewLoading] = useState(false);\r\n const [showSendEmail, setShowSendEmail] = useState(false);\r\n const [counter, setCounter] = useState(0);\r\n const [tagName, setTagName] = useState('');\r\n const notifyServerError = useNotifyServerError();\r\n const {\r\n resourceupload = {},\r\n hasSendEmailPermission,\r\n bulkMode,\r\n classes,\r\n onSubmitEnd,\r\n formName,\r\n onFormInit\r\n } = props;\r\n const {\r\n profileData = {},\r\n resourceUploadId = '',\r\n allInvestors = false,\r\n fundInvestorTagId\r\n } = resourceupload;\r\n const { categoryId = '' } = profileData;\r\n const [delay, setDelay] = useState(bulkMode ? 5000 : null);\r\n const { loading, error, data } = useQueryWithStore({\r\n type: 'getManyReference',\r\n resource: 'resourceuploaddocuments',\r\n payload: {\r\n target: 'resourceUploadId',\r\n id: resourceUploadId,\r\n pagination: { page: 0, perPage: 10000 },\r\n sort: {},\r\n // adding an options parameter to trigger the query to be called once again\r\n options: { batchStatus: resourceupload.batchStatus }\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n if (hasSendEmailPermission && data && data.length > 0 && categoryId) {\r\n const crudOperation = 'GET_ONE';\r\n dataProvider(crudOperation, 'categories', {\r\n id: categoryId\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n setShowSendEmail(data.triggerEmail);\r\n }\r\n })\r\n .catch(notifyServerError);\r\n }\r\n }, [\r\n hasSendEmailPermission,\r\n categoryId,\r\n data,\r\n notifyServerError,\r\n setShowSendEmail\r\n ]);\r\n\r\n // Note : for actual buisness requirement,\r\n // only one fund-investor tag can be assigned to a batch (step 2)\r\n // the same selected tag is assigned to all documents (step 3)\r\n // so we call only one time GET /v1/fundinvestortag?id=batchTagId to get the tag name\r\n useEffect(() => {\r\n const crudOperation = 'GET_ONE';\r\n if (fundInvestorTagId) {\r\n dataProvider(crudOperation, 'fundinvestortags', {\r\n id: fundInvestorTagId\r\n })\r\n .then(({ data }) => setTagName(data.name))\r\n .catch(notifyServerError);\r\n }\r\n }, [fundInvestorTagId, notifyServerError]);\r\n\r\n const maxCounterReached = useMemo(() => {\r\n return counter >= MAX_COUNTER - 1;\r\n }, [counter]);\r\n\r\n const getProofStatus = useCallback(async () => {\r\n setCounter(count => count + 1);\r\n try {\r\n const newProofStatus = await ResourceUploadApi.getProofStatus(\r\n resourceUploadId\r\n );\r\n if (\r\n (newProofStatus && newProofStatus.status !== 'PROCESSING') ||\r\n maxCounterReached\r\n ) {\r\n setDelay(null);\r\n setCounter(0);\r\n }\r\n setProofStatus(newProofStatus.status);\r\n } catch (error) {\r\n setDelay(null);\r\n setProofStatus('ERROR');\r\n notifyServerError(error);\r\n }\r\n }, [\r\n resourceUploadId,\r\n setProofStatus,\r\n maxCounterReached,\r\n setCounter,\r\n notifyServerError\r\n ]);\r\n\r\n useInterval(() => {\r\n if (bulkMode) {\r\n getProofStatus();\r\n }\r\n }, delay);\r\n\r\n const handleProof = async () => {\r\n setProofStatus('PROCESSING');\r\n try {\r\n await ResourceUploadApi.proof(resourceUploadId);\r\n setDelay(5000);\r\n } catch (error) {\r\n setProofStatus('ERROR');\r\n notifyServerError(error);\r\n }\r\n };\r\n\r\n /**\r\n * Download the proof file and open it in a new tab\r\n */\r\n const downloadProofFile = async () => {\r\n setIsPreviewLoading(true);\r\n try {\r\n const response = await ResourceUploadApi.downloadProofFile(\r\n resourceUploadId\r\n );\r\n setIsPreviewLoading(false);\r\n const url = window.URL.createObjectURL(response.data);\r\n window.open(url);\r\n } catch (error) {\r\n setIsPreviewLoading(false);\r\n notifyServerError(error);\r\n }\r\n };\r\n\r\n const handleProofActionChange = async value => {\r\n switch (value) {\r\n case 'Generate':\r\n await handleProof();\r\n break;\r\n case 'Review':\r\n await downloadProofFile();\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n const approveDocuments = useCallback(\r\n async values => {\r\n if (onSubmitEnd) {\r\n try {\r\n await onSubmitEnd(resourceupload, values.metadata.sendEmails);\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n }\r\n },\r\n [onSubmitEnd, resourceupload, notifyServerError]\r\n );\r\n\r\n if (loading) return ;\r\n if (error) return ;\r\n return (\r\n \r\n \r\n {formprops => {\r\n if (onFormInit !== undefined) {\r\n onFormInit(formprops.form);\r\n }\r\n const hasUnMatchedDocs =\r\n data.findIndex(doc => doc.matchingStatus === 'MISMATCH') !== -1;\r\n return (\r\n \r\n \r\n {data.length > 0 && (\r\n \r\n )}\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(SummaryStepStyles)(SummaryStep);\r\n","import { createContext } from 'react';\r\n\r\nexport const CopyInvestorContext = createContext(null);\r\n","import React, { useContext, useCallback } from 'react';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { CopyInvestorContext } from './CopyInvestorContext';\r\nimport { ReferenceArrayInput, useQuery, Loading } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\n\r\nimport GridInputFilter from '../../../core/components/inputs/GridInputFilter';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst useStyles = makeStyles({\r\n loading: {\r\n height: 'calc(100vh - 230px)'\r\n }\r\n});\r\n\r\nconst validateInvestors = (value, allValues, props, field) => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Investor must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst InvestorGrid = props => {\r\n const { relatedInvestorIds } = props;\r\n const classes = useStyles();\r\n let { data, loading } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'fundinvestors',\r\n payload: {\r\n target: 'fundId',\r\n id: props.fundId,\r\n sort: {\r\n order: 'ASC'\r\n }\r\n }\r\n });\r\n if (loading) return ;\r\n const filter = choices => {\r\n //filter only available investors and ones that are not already matched with fundId\r\n return choices.filter(\r\n item =>\r\n data.findIndex(obj => obj.investorId === item.id) !== -1 &&\r\n relatedInvestorIds.indexOf(item.id) === -1\r\n );\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst SelectInvestorsStep = props => {\r\n const { fundId, onSubmitEnd, relatedInvestorIds } = props;\r\n const { investorContext, setInvestorsContext } = useContext(\r\n CopyInvestorContext\r\n );\r\n\r\n const setFundInvestors = useCallback(\r\n values => {\r\n setInvestorsContext({\r\n ...investorContext,\r\n currentForm: undefined,\r\n investors: values.investors\r\n });\r\n onSubmitEnd(values);\r\n },\r\n [investorContext, onSubmitEnd, setInvestorsContext]\r\n );\r\n\r\n return (\r\n \r\n \r\n {formprops => {\r\n if (investorContext.currentForm === undefined) {\r\n setInvestorsContext({\r\n ...investorContext,\r\n currentForm: formprops.form\r\n });\r\n }\r\n\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default SelectInvestorsStep;\r\n","import { Grid } from '@material-ui/core';\r\nimport moment from 'moment';\r\nimport React, { useMemo, useContext, useEffect, useState } from 'react';\r\nimport { required, SelectInput, TextInput } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport DateInput from '../../../core/components/forked/input/DateInput';\r\nimport { isValidDate, formatDate } from '../../../core/utils/index';\r\nimport setFieldTouched from 'final-form-set-field-touched';\r\nimport { CopyInvestorContext } from './CopyInvestorContext';\r\nimport DocumentApi from '../../../core/apis/DocumentApi';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst translateWatermarkRecordToInput = v => {\r\n if (v === null) {\r\n return -1;\r\n }\r\n return v;\r\n};\r\n\r\nconst DetailsSummary = props => {\r\n const { batchLookups, formApi } = props;\r\n const allSubcategories = useMemo(\r\n () => (batchLookups && batchLookups.allSubcategories) || [],\r\n [batchLookups]\r\n );\r\n const [useWatermark, setUseWatermark] = useState(false);\r\n const [subcategories, setSubcategories] = useState([]);\r\n\r\n // This two effet and the \"change\" after should be refactor slightly to avoid this ugly code duplication\r\n useEffect(() => {\r\n if (formApi) {\r\n const documentValue = formApi.getState().values.document;\r\n const subcategories =\r\n allSubcategories && allSubcategories.length > 0\r\n ? allSubcategories.filter(\r\n cat => cat.categoryId === documentValue.categoryId\r\n )\r\n : [];\r\n setSubcategories(subcategories);\r\n }\r\n }, [formApi, allSubcategories]);\r\n\r\n useEffect(() => {\r\n if (formApi) {\r\n const documentValue = formApi.getState().values.document;\r\n\r\n const batchSecurity =\r\n batchLookups.allSecurities && batchLookups.allSecurities.length > 0\r\n ? batchLookups.allSecurities.find(\r\n sec => sec.id === documentValue.documentSecurityId\r\n )\r\n : null;\r\n const useWatermark = batchSecurity && batchSecurity.applyWatermark;\r\n setUseWatermark(useWatermark);\r\n if (!useWatermark) {\r\n formApi.change(`document.watermarkId`, null);\r\n }\r\n }\r\n }, [formApi, batchLookups.allSecurities]);\r\n\r\n const onCategoryChange = () => {\r\n if (formApi) {\r\n const documentValue = formApi.getState().values.document;\r\n const subcategories =\r\n allSubcategories && allSubcategories.length > 0\r\n ? allSubcategories.filter(\r\n cat => cat.categoryId === documentValue.categoryId\r\n )\r\n : [];\r\n setSubcategories(subcategories);\r\n if (subcategories.length === 0) {\r\n formApi.change(`document.subcategoryId`, 0);\r\n }\r\n }\r\n };\r\n\r\n const onSecurityChange = value => {\r\n const batchSecurity =\r\n batchLookups.allSecurities && batchLookups.allSecurities.length > 0\r\n ? batchLookups.allSecurities.find(sec => sec.id === value)\r\n : null;\r\n const useWatermark = batchSecurity && batchSecurity.applyWatermark;\r\n setUseWatermark(useWatermark);\r\n if (!useWatermark) {\r\n formApi.change(`document.watermarkId`, null);\r\n }\r\n };\r\n\r\n //add logic to hide unhide Watermark dropdown\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n //set Due Date touched to true so validation error is displayed if any\r\n formApi.mutators.setFieldTouched('document.dueDate', true);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {\r\n onSecurityChange(event.target.value);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n {subcategories.length > 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n {useWatermark ? (\r\n \r\n \r\n \r\n ) : null}\r\n \r\n );\r\n};\r\n\r\nconst PropertiesStep = props => {\r\n const { investorContext, setInvestorsContext } = useContext(\r\n CopyInvestorContext\r\n );\r\n const { onSubmitEnd } = props;\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const createNewDocuments = async values => {\r\n const document = values.document;\r\n const copyObject = {\r\n investorIds: investorContext.investors,\r\n documentTitle: document.documentTitle,\r\n dueDate: document.dueDate,\r\n documentDate: document.documentDate,\r\n categoryId: document.categoryId,\r\n subcategoryId: document.subcategoryId,\r\n documentSecurityId: document.documentSecurityId,\r\n watermarkId: document.watermarkId\r\n };\r\n\r\n try {\r\n const newDocuments = await DocumentApi.copyToAnotherInvestors(\r\n document.id,\r\n copyObject\r\n );\r\n onSubmitEnd(newDocuments);\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n };\r\n\r\n const validateDates = values => {\r\n const errors = { document: {} };\r\n if (values.document.documentDate && values.document.dueDate) {\r\n if (\r\n moment(values.document.documentDate).startOf('day') >=\r\n moment(values.document.dueDate).startOf('day')\r\n ) {\r\n errors.document.dueDate = 'Due Date must be after Document Date';\r\n }\r\n }\r\n return errors;\r\n };\r\n\r\n return (\r\n true}\r\n >\r\n \r\n {formprops => {\r\n if (investorContext.currentForm === undefined) {\r\n setInvestorsContext({\r\n ...investorContext,\r\n currentForm: formprops.form\r\n });\r\n }\r\n\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default PropertiesStep;\r\n","import Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport React, { useState, useMemo, useCallback } from 'react';\r\nimport { useNotify } from 'react-admin';\r\n\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\nimport SelectInvestorsStep from './SelectInvestorsStep';\r\nimport PropertiesStep from './PropertiesStep';\r\nimport { CopyInvestorContext } from './CopyInvestorContext';\r\n//import { StepConnector } from '@material-ui/core';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles({\r\n stepper: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '0 0 0px',\r\n display: 'inline-flex'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n button: {\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n backButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n saveButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n root: {\r\n paddingTop: '10px',\r\n paddingBottom: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: '80vh',\r\n mminHeight: '80vh',\r\n width: '100%'\r\n },\r\n dialogContent: {\r\n padding: '0px',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: '80vh'\r\n },\r\n stepperContainer: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '11px 8px',\r\n display: 'flex',\r\n borderBottom: '1px solid #E0E0E0'\r\n },\r\n stepContainer: {\r\n padding: '16px',\r\n display: 'flex',\r\n '& .simple-form': {\r\n display: 'flex',\r\n maxHeight: '100%',\r\n width: '100%',\r\n '& > div': {\r\n width: '100%'\r\n }\r\n }\r\n }\r\n});\r\n\r\nconst CopyToInvestorStepper = props => {\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [confirmDialogIsOpen, setConfirmDialogIsOpen] = useState(false);\r\n const [investorContext, setInvestorsContext] = useState({});\r\n const providerInvestorContext = useMemo(\r\n () => ({ investorContext, setInvestorsContext }),\r\n [investorContext, setInvestorsContext]\r\n );\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const classes = useStyles();\r\n const { showDialog, handleDialogToggle, handleRefresh, ...rest } = props;\r\n // List of steps\r\n const steps = useMemo(\r\n () => [\r\n {\r\n name: 'investors',\r\n label: 'Select Investor',\r\n component: SelectInvestorsStep,\r\n nextButton: true,\r\n backButton: false,\r\n shouldDisplay: true\r\n },\r\n {\r\n name: 'properties',\r\n label: 'Edit Document Properties',\r\n component: PropertiesStep,\r\n nextButton: false,\r\n backButton: true,\r\n shouldDisplay: true\r\n }\r\n ],\r\n []\r\n );\r\n\r\n const hasNext = steps[activeStep] ? steps[activeStep].nextButton : false;\r\n const hasBack = steps[activeStep] ? steps[activeStep].backButton : false;\r\n\r\n const handleCloseClick = useCallback(() => {\r\n setConfirmDialogIsOpen(true);\r\n }, []);\r\n\r\n const handleConfirmDialogClose = useCallback(() => {\r\n setConfirmDialogIsOpen(false);\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n setConfirmDialogIsOpen(false);\r\n handleDialogToggle();\r\n }, [handleDialogToggle]);\r\n\r\n const onSubmitEnd = useCallback(\r\n async values => {\r\n if (activeStep === 1) {\r\n //prepare data for new api here or maybe better on submit of second step and here just close\r\n try {\r\n notify('ra.notification.created');\r\n handleRefresh(values);\r\n handleClose();\r\n } catch (e) {\r\n notifyServerError(e);\r\n }\r\n } else {\r\n setActiveStep(activeStep + 1);\r\n }\r\n },\r\n [activeStep, handleClose, notify, notifyServerError, handleRefresh]\r\n );\r\n\r\n const getActiveStep = useCallback(() => {\r\n const step = steps[activeStep];\r\n return (\r\n \r\n );\r\n }, [activeStep, onSubmitEnd, rest, steps]);\r\n\r\n const handleNextForm = useCallback(() => {\r\n // Trigger a submit to active form\r\n // This is needed because our modal action buttons are oustide the form\r\n investorContext.currentForm && investorContext.currentForm.submit();\r\n }, [investorContext.currentForm]);\r\n\r\n const handleBackForm = useCallback(() => {\r\n if (activeStep > 0) {\r\n setInvestorsContext({ ...investorContext, currentForm: undefined });\r\n setActiveStep(activeStep - 1);\r\n }\r\n }, [activeStep, investorContext]);\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Copy To Another Investor\r\n \r\n \r\n <>\r\n
    \r\n : }\r\n >\r\n {steps.map(step => (\r\n \r\n {step.shouldDisplay && {step.label}}\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n \r\n {getActiveStep(steps)}\r\n \r\n
    \r\n \r\n

    \r\n You are about to quit the create operation, and return to the\r\n Edit Properties page.\r\n

    \r\n
    \r\n Your progress on this step will not be saved.\r\n \r\n }\r\n onConfirm={handleClose}\r\n onClose={handleConfirmDialogClose}\r\n confirm=\"ra.action.close\"\r\n />\r\n \r\n
    \r\n \r\n
    \r\n {hasBack && (\r\n \r\n Back\r\n \r\n )}\r\n
    \r\n \r\n Cancel\r\n \r\n \r\n {hasNext ? 'Next' : 'Save'}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default CopyToInvestorStepper;\r\n","import React, { Fragment, useState } from 'react';\r\nimport {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n crudGetList,\r\n required,\r\n TextInput,\r\n SelectInput\r\n} from 'react-admin';\r\nimport {\r\n Grid,\r\n Paper,\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n Checkbox,\r\n Typography\r\n} from '@material-ui/core';\r\nimport { connect } from 'react-redux';\r\nimport { FormSpy } from 'react-final-form';\r\nimport moment from 'moment';\r\nimport { DateInput } from '../../../core/components/forked/input/DateInput';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport ResourceUploadApi from '../../../core/apis/ResourceUploadApi';\r\nimport DocumentApi from '../../../core/apis/DocumentApi';\r\nimport { documentStatus, documentFilterStatus } from '../ResourceUploadLookups';\r\nimport { SummaryActionBar } from '../uploadsteps/SummaryStep';\r\nimport red from '@material-ui/core/colors/red';\r\nimport green from '@material-ui/core/colors/green';\r\nimport orange from '@material-ui/core/colors/orange';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport {\r\n formatDate,\r\n isValidDate,\r\n diff,\r\n Queue\r\n} from '../../../core/utils/index';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\nimport VirtualizedGrid from '../../../core/components/VirtualizedGrid';\r\nimport setFieldTouched from 'final-form-set-field-touched';\r\nimport LightTooltip from '../../../core/components/LightTooltip';\r\nimport { sortBy } from 'lodash';\r\nimport CopyToInvestorStepper from './CopyToInvestorStepper';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n checkbox: {\r\n marginLeft: '-12px',\r\n display: 'flex',\r\n paddingTop: '16px'\r\n },\r\n inputEllipsis: {\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap'\r\n },\r\n root: {\r\n margin: '0',\r\n '& > div': {\r\n border: '0px !important'\r\n }\r\n },\r\n dateRoot: {\r\n margin: '0',\r\n '& > div': {\r\n border: '0px !important',\r\n marginTop: '0px'\r\n }\r\n },\r\n statusRoot: {\r\n minWidth: '50px !important',\r\n margin: '0',\r\n '& > div': {\r\n border: '0px !important'\r\n }\r\n },\r\n gridCheckbox: {\r\n padding: '0'\r\n },\r\n columnClass: {\r\n minWidth: '150px'\r\n },\r\n headerClass: {\r\n paddingBottom: '8px'\r\n },\r\n summaryItemClass: {\r\n paddingRight: '16px'\r\n },\r\n button: {\r\n height: '30px',\r\n width: '80px',\r\n padding: '0px',\r\n marginLeft: '5px',\r\n background: 'white',\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n statusColumnClass: {\r\n minWidth: '110px'\r\n },\r\n dateColumnClass: {\r\n minWidth: '131px'\r\n },\r\n docGridLegend: {\r\n height: '30px',\r\n marginBottom: '5px',\r\n alignItems: 'flex-end'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n docGridLegendLabelClass: {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n marginRight: '16px'\r\n },\r\n tableWrapper: {\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n infoIcon: {\r\n color: '#757575',\r\n paddingLeft: '6px'\r\n },\r\n gridButton: {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n color: '#2962FF',\r\n marginRight: '16px',\r\n paddingTop: '2px',\r\n '&:hover': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n dirty: {\r\n '& .MuiInputBase-root': {\r\n color: '#212121!important',\r\n fontWeight: 600,\r\n lineHeight: '20px'\r\n }\r\n },\r\n nonDirty: {\r\n '& .MuiInputBase-root': {\r\n fontWeight: 400,\r\n lineHeight: '20px'\r\n }\r\n },\r\n nonDirtyGrid: {\r\n 'margin-top': '8px 8px 0 8px',\r\n '& .MuiInputBase-root': {\r\n fontWeight: 400,\r\n lineHeight: '20px'\r\n }\r\n },\r\n reviewContainer: {\r\n background: 'white',\r\n padding: '8px',\r\n border: '1px solid #E0E0E0',\r\n borderRadius: '2px',\r\n marginBottom: '8px',\r\n display: 'none'\r\n },\r\n reviewGridNewLabel: {\r\n fontSize: 12,\r\n fontWeight: 600,\r\n lineHeight: '16px'\r\n },\r\n reviewGridOldLabel: {\r\n fontSize: 12,\r\n fontWeight: 400,\r\n lineHeight: '16px'\r\n },\r\n simpleForm: {\r\n '& > div': {\r\n '& > div:first-of-type': {\r\n height: '0'\r\n }\r\n }\r\n }\r\n});\r\n\r\nexport const EllipsisInput = withStyles({\r\n root: {\r\n '& .MuiInputBase-input': {\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap'\r\n },\r\n '& label + .MuiInput-formControl': {\r\n marginTop: '0px'\r\n }\r\n }\r\n})(TextInput);\r\n\r\nconst ReadOnlyField = withStyles({\r\n root: {\r\n 'margin-bottom': '16px',\r\n '& label': {\r\n color: '#757575!important',\r\n fontWeight: '600'\r\n },\r\n '& .MuiInputBase-root': {\r\n color: '#9E9E9E',\r\n border: 'transparent',\r\n background: 'transparent',\r\n fontWeight: '400',\r\n minHeight: '20px',\r\n 'margin-top': '8px',\r\n 'padding-left': 0,\r\n '&:before': {\r\n content: 'initial'\r\n }\r\n },\r\n '& .MuiInputBase-input': {\r\n padding: 0\r\n },\r\n '& .MuiFormHelperText-root': {\r\n color: '#9E9E9E',\r\n 'margin-top': 0\r\n }\r\n }\r\n})(TextInput);\r\n\r\nconst ReadOnlyFieldGrid = withStyles({\r\n root: {\r\n 'box-sizing': 'border-box',\r\n 'margin-bottom': '0',\r\n 'padding-left': '8px',\r\n 'margin-top': '0',\r\n '& label': {\r\n color: '#757575!important',\r\n fontWeight: '600'\r\n },\r\n '& .MuiInputBase-root': {\r\n color: '#9E9E9E',\r\n border: 'transparent',\r\n background: 'transparent',\r\n fontWeight: '400',\r\n fontSize: '12px',\r\n 'margin-top': 0,\r\n 'padding-left': 0,\r\n '&:before': {\r\n content: 'initial'\r\n }\r\n },\r\n '& .MuiInputBase-input': {\r\n padding: 0,\r\n textOverflow: 'ellipsis'\r\n },\r\n '& .MuiFormHelperText-root': {\r\n color: '#9E9E9E',\r\n 'margin-top': 0,\r\n 'margin-left': 0\r\n }\r\n }\r\n})(TextInput);\r\n\r\nconst MAX_COUNTER = 50; // 50 * 5 sec = 4.16 min\r\n\r\nconst translateWatermarkRecordToInput = v => {\r\n if (v === null) {\r\n return 0;\r\n }\r\n return v;\r\n};\r\n\r\nconst translateInvestorRecordToInput = (v, resourceupload, rowValue) => {\r\n //if no value for investorName we check investorId and if there is no investorId we assume it's fund level document\r\n if (!v) {\r\n if (!rowValue.investorId) {\r\n return 'All Investors';\r\n } else {\r\n return '';\r\n }\r\n }\r\n return v;\r\n};\r\n\r\n/**Validate the batch */\r\n// const validateBatch = values => {\r\n// if (!values.resourceUploadTitle) {\r\n// return false;\r\n// }\r\n// if (!values.metadata.profileData.documentSecurityId) {\r\n// return false;\r\n// }\r\n// if (!values.metadata.documentDate) {\r\n// return false;\r\n// }\r\n// if (!values.metadata.profileData.categoryId) {\r\n// return false;\r\n// }\r\n// if (!values.metadata.documentTypeId) {\r\n// return false;\r\n// }\r\n\r\n// return true;\r\n// };\r\n\r\n/** The field is required if the batch was not uploaded via API */\r\nconst RequiredIfNotUploadedViaApi = (value, values) => {\r\n if (\r\n values &&\r\n values.resourceUpload &&\r\n values.resourceUpload.uploadVia === 'API'\r\n ) {\r\n return undefined;\r\n }\r\n if (!value) {\r\n return 'Required';\r\n }\r\n};\r\n\r\n/**\r\n * Downlaod existing batch and save file locally\r\n * @param fileName\r\n * @param documentId\r\n * @param fileName\r\n */\r\nconst downloadDocument = (documentId, fileName) => {\r\n DocumentApi.downloadDocumentAsFile(documentId, fileName);\r\n};\r\n\r\nconst getTextFromValue = (id, lookup, isDate) => {\r\n if (id === null || id === undefined || id === '') return 'None';\r\n if (isDate) return moment(id).format('MM/DD/YYYY');\r\n if (!lookup) return id;\r\n var lookupObject = lookup.find(x => x.id === id);\r\n return lookupObject\r\n ? lookupObject.name || lookupObject.description || lookupObject.profileName\r\n : id;\r\n};\r\n\r\nconst DocumentTable = withStyles(styles)(({ classes, ...props }) => {\r\n const {\r\n documents,\r\n resourceUpload,\r\n handleSelectAllClick,\r\n handleClick,\r\n handleGridAction,\r\n selectedRows,\r\n allWatermarks,\r\n allSecurities,\r\n allCategories,\r\n allSubCategories,\r\n dateHasError,\r\n handleDocumentDueDateChange,\r\n hasApprovePermission,\r\n hasDeletePermission,\r\n preview,\r\n formApi,\r\n validateTitle,\r\n setDocuments\r\n } = props;\r\n\r\n const [openConfirmDelete, setOpenConfirmDelete] = useState(false);\r\n\r\n const allColumns = [\r\n {\r\n id: 'Selected',\r\n source: 'isItemSelected',\r\n sortable: false,\r\n type: 'checkbox',\r\n width: 30,\r\n onClick: handleSelectAllClick,\r\n renderer: params => {\r\n const { row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n fontSize: '14px',\r\n background: 'white',\r\n padding: 0\r\n };\r\n const isItemSelected = selectedRows.indexOf(rowVal.id) !== -1;\r\n return (\r\n
    \r\n handleClick(event, rowVal.id)}\r\n className={classes.gridCheckbox}\r\n />\r\n
    \r\n );\r\n }\r\n },\r\n {\r\n id: 'Document Title',\r\n source: 'documentTitle',\r\n sortable: true,\r\n type: 'input',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n borderLeft: '1px solid #E0E0E0'\r\n };\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n id: 'Investors',\r\n source: 'investorName',\r\n sortable: true,\r\n type: 'text',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n padding: '5px 8px 6px 8px',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return (\r\n \r\n {rowVal['investorId'] ? rowVal[column.source] : 'All Investors'}\r\n \r\n );\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n id: 'Funds',\r\n source: 'fundName',\r\n sortable: true,\r\n type: 'text',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n padding: '5px 8px 6px 8px',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return {rowVal[column.source]};\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n id: 'Category',\r\n source: 'categoryId',\r\n sortable: true,\r\n type: 'lookup',\r\n lookupTextField: 'name',\r\n lookupIdField: 'id',\r\n options: allCategories,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n paddingLeft: '3px'\r\n };\r\n return (\r\n {\r\n props.formApi.change(`documents[${index}].subcategoryId`, null);\r\n }}\r\n className={classes.root}\r\n />\r\n );\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n id: 'Sub Category',\r\n source: 'subcategoryId',\r\n sortable: true,\r\n type: 'lookup',\r\n lookupTextField: 'name',\r\n lookupIdField: 'id',\r\n options: allSubCategories,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n paddingLeft: '3px'\r\n };\r\n const availableSubCategory = column.options.filter(\r\n subCat => subCat.categoryId === rowVal.categoryId\r\n );\r\n if (availableSubCategory.length > 0) {\r\n return (\r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n id: 'Document Security',\r\n source: 'documentSecurityId',\r\n sortable: true,\r\n type: 'lookup',\r\n lookupTextField: 'description',\r\n lookupIdField: 'id',\r\n options: allSecurities,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n paddingLeft: '3px'\r\n };\r\n return (\r\n {\r\n props.formApi.change(`documents[${index}].watermarkId`, null);\r\n }}\r\n />\r\n );\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n id: 'Watermark Profile',\r\n source: 'watermarkId',\r\n sortable: false,\r\n type: 'lookup',\r\n lookupTextField: 'profileName',\r\n lookupIdField: 'id',\r\n options: allWatermarks,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n paddingLeft: '3px'\r\n };\r\n const docSecurity = allSecurities.find(\r\n sec => sec.id === rowVal.documentSecurityId\r\n );\r\n if (docSecurity && docSecurity.applyWatermark) {\r\n return (\r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n const docSecurity = allSecurities.find(\r\n sec => sec.id === rowVal.documentSecurityId\r\n );\r\n if (docSecurity && docSecurity.applyWatermark) {\r\n return (\r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n }\r\n }\r\n },\r\n {\r\n id: 'Document Date',\r\n source: 'documentDate',\r\n sortable: true,\r\n type: 'date',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n paddingLeft: '3px'\r\n };\r\n return (\r\n \r\n );\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n paddingLeft: '6px'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n id: 'Document Due Date',\r\n source: 'dueDate',\r\n sortable: true,\r\n type: 'date',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n paddingLeft: '3px'\r\n };\r\n return (\r\n \r\n {\r\n handleDocumentDueDateChange(index, value);\r\n }}\r\n error={dateHasError[index]}\r\n helperText={false}\r\n />\r\n \r\n );\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n id: 'Document Status',\r\n source: 'status',\r\n sortable: true,\r\n type: 'status',\r\n options: documentFilterStatus,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const index = documents.findIndex(e => e.id === rowVal.id);\r\n if (!preview) {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n textAlign: 'left',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n paddingLeft: '3px'\r\n };\r\n return (\r\n }\r\n className={classes.statusRoot}\r\n disabled={!hasApprovePermission}\r\n />\r\n );\r\n } else {\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0'\r\n };\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n );\r\n }\r\n }\r\n },\r\n {\r\n id: 'File Name',\r\n source: 'originalFileName',\r\n type: 'link',\r\n sortable: true,\r\n renderer: params => {\r\n const { row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n padding: 0,\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n fontSize: '14px',\r\n background: 'white'\r\n };\r\n return (\r\n
    \r\n \r\n downloadDocument(rowVal.id, rowVal.originalFileName)\r\n }\r\n className={classes.gridButton}\r\n >\r\n {rowVal.originalFileName}\r\n \r\n
    \r\n );\r\n }\r\n }\r\n ];\r\n //remove selection column in preview\r\n let columns = preview\r\n ? allColumns.filter(\r\n col =>\r\n col.source !== 'isItemSelected' && col.source !== 'originalFileName'\r\n )\r\n : hasDeletePermission\r\n ? allColumns\r\n : allColumns.filter(col => col.source !== 'isItemSelected');\r\n const noDocumentsMessage =\r\n resourceUpload.profileData.uploadType === 'BULK'\r\n ? 'There are no Documents to be displayed. Please complete splitting of the batch.'\r\n : 'There are no Documents to be displayed. Please assign the batch to Investors.';\r\n //add one row for columns with column names to grid data\r\n const columnRow = columns.reduce(\r\n (acc, cur) => ({ ...acc, [cur.source]: cur.id }),\r\n {}\r\n );\r\n let gridData = documents.slice();\r\n gridData = sortBy(gridData, 'order', 'asc');\r\n\r\n gridData.unshift(columnRow);\r\n\r\n const getGridHeight = (documents, resourceUpload, preview) => {\r\n let offSet = 230;\r\n if (HasSummaryActionBar(documents, resourceUpload, preview)) {\r\n offSet += 40;\r\n }\r\n if (!preview) {\r\n offSet += 140;\r\n }\r\n return `calc(100vh - ${offSet}px)`;\r\n };\r\n\r\n return (\r\n \r\n \r\n {!preview && (\r\n \r\n \r\n \r\n Batch ID:{' '}\r\n {resourceUpload ? resourceUpload.resourceUploadId : ''}\r\n \r\n \r\n Number of documents in the Batch: {documents.length}\r\n \r\n \r\n Uploaded By: {resourceUpload ? resourceUpload.uploadedBy : ''}\r\n \r\n \r\n {selectedRows.length > 0 && (\r\n \r\n setOpenConfirmDelete(true)}\r\n >\r\n Delete\r\n \r\n \r\n handleGridAction('delete', setOpenConfirmDelete)\r\n }\r\n onClose={() => setOpenConfirmDelete(false)}\r\n />\r\n {!resourceUpload.allInvestors && selectedRows.length === 1 && (\r\n {\r\n handleGridAction('assign');\r\n }}\r\n >\r\n Copy\r\n \r\n )}\r\n \r\n )}\r\n \r\n )}\r\n \r\n {documents.length > 0 ? (\r\n \r\n ) : (\r\n \r\n \r\n {noDocumentsMessage}\r\n \r\n \r\n )}\r\n \r\n
    \r\n
    \r\n );\r\n});\r\n\r\nexport const StatusColum = ({ record }) => {\r\n let colorObject = { color: orange[500] };\r\n if (record.id === 'SUSPENDED') {\r\n colorObject = { color: red[500] };\r\n } else if (record.id === 'ACTIVE') {\r\n colorObject = { color: green[500] };\r\n }\r\n return {record.name};\r\n};\r\n\r\nconst ReviewField = props => {\r\n const {\r\n source,\r\n title,\r\n dirtyFields,\r\n classes,\r\n formApi,\r\n variant,\r\n lookup,\r\n isDate,\r\n format,\r\n multiline\r\n } = props;\r\n\r\n return (\r\n getTextFromValue(formatValue(v, format), lookup, isDate)}\r\n />\r\n );\r\n};\r\n\r\nconst formatValue = (value, format, resourceUpload, rowData) => {\r\n if (format) {\r\n return format(value, resourceUpload, rowData);\r\n } else {\r\n return value;\r\n }\r\n};\r\n\r\nconst ReviewGridField = props => {\r\n const {\r\n source,\r\n style,\r\n dirtyFields,\r\n classes,\r\n formApi,\r\n lookup,\r\n isDate,\r\n row_data,\r\n format,\r\n resourceUpload,\r\n rowValue\r\n } = props;\r\n return (\r\n
    \r\n \r\n getTextFromValue(\r\n formatValue(v, format, resourceUpload, rowValue),\r\n lookup,\r\n isDate\r\n )\r\n }\r\n />\r\n
    \r\n );\r\n};\r\n\r\nconst EditGrid = props => {\r\n const {\r\n resourceUpload,\r\n documents,\r\n validateTitle,\r\n handleSelectAllClick,\r\n handleClick,\r\n handleProofActionChange,\r\n proofStatus,\r\n handleGridAction,\r\n allWatermarks,\r\n allSecurities,\r\n allCategories,\r\n allSubCategories,\r\n dateHasError,\r\n handleDocumentDueDateChange,\r\n hasApprovePermission,\r\n hasDeletePermission,\r\n preview,\r\n formApi,\r\n setDocuments,\r\n hasUnMatchedDocs\r\n } = props;\r\n const selectedRows = documents.reduce((selectedIds, document) => {\r\n if (document.selected) {\r\n selectedIds.push(document.id);\r\n }\r\n return selectedIds;\r\n }, []);\r\n return (\r\n \r\n \r\n {HasSummaryActionBar(documents, resourceUpload, preview) && (\r\n /* refactor to component and import */\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst HasSummaryActionBar = (documents, resourceUpload, preview) => {\r\n return (\r\n documents.length > 0 &&\r\n resourceUpload.profileData.uploadType === 'BULK' &&\r\n !preview\r\n );\r\n};\r\n\r\nconst DetailsSummary = props => {\r\n const {\r\n classes,\r\n handleBatchTitleChange,\r\n onBatchStatusChange,\r\n batchLookups,\r\n useWatermark,\r\n subcategories,\r\n onBatchSecurityChange,\r\n onBatchColumnChange,\r\n onBatchCategoryChange,\r\n onBatchSubcategoryChange,\r\n hasApprovePermission,\r\n preview,\r\n formApi\r\n } = props;\r\n const dirtyFields = formApi ? formApi.getState().dirtyFields : {};\r\n return (\r\n \r\n \r\n \r\n {preview\r\n ? \"Changes are highlighted in bold black font, while the original properties are gray. All changes will be applied after you press 'Save & Close' button.\"\r\n : 'Batch property changes will be applied to all documents in the batch. To make a change to a single document select the line item for the document that requires any change and make the appropriate selections.'}\r\n \r\n \r\n \r\n \r\n {preview ? (\r\n \r\n ) : (\r\n {\r\n handleBatchTitleChange(event.target.value);\r\n }}\r\n helperText={false}\r\n />\r\n )}\r\n \r\n \r\n {preview ? (\r\n \r\n ) : (\r\n {\r\n onBatchStatusChange(event.target.value);\r\n }}\r\n helperText={false}\r\n />\r\n )}\r\n \r\n \r\n {preview ? (\r\n \r\n ) : (\r\n {\r\n onBatchColumnChange(\r\n moment(event).format('YYYY-MM-DD'),\r\n 'documentDate',\r\n `metadata.derivedInfo.derivedDocumentDate`\r\n );\r\n //set Due Date touched to true so validation error is displayed if any\r\n formApi.mutators.setFieldTouched(\r\n 'metadata.derivedInfo.derivedDueDate',\r\n true\r\n );\r\n }}\r\n helperText={\r\n preview &&\r\n dirtyFields['metadata.derivedInfo.derivedDocumentDate']\r\n ? formApi.getFieldState(\r\n 'metadata.derivedInfo.derivedDocumentDate'\r\n ).initial\r\n : false\r\n }\r\n disabled={preview}\r\n />\r\n )}\r\n \r\n \r\n {preview ? (\r\n \r\n ) : (\r\n {\r\n const value = event\r\n ? moment(event).format('YYYY-MM-DD')\r\n : event;\r\n onBatchColumnChange(\r\n value,\r\n 'dueDate',\r\n `metadata.derivedInfo.derivedDueDate`\r\n );\r\n //set Due Date touched to true so validation error is displayed if any\r\n formApi.mutators.setFieldTouched(\r\n 'metadata.derivedInfo.derivedDueDate',\r\n true\r\n );\r\n }}\r\n helperText={false}\r\n />\r\n )}\r\n \r\n \r\n {preview ? (\r\n \r\n ) : (\r\n {\r\n onBatchCategoryChange(event.target.value);\r\n }}\r\n variant={props.variant}\r\n helperText={false}\r\n />\r\n )}\r\n \r\n {subcategories.length > 0 ? (\r\n \r\n {preview ? (\r\n \r\n ) : (\r\n {\r\n onBatchSubcategoryChange(event.target.value);\r\n }}\r\n variant={props.variant}\r\n helperText={false}\r\n />\r\n )}\r\n \r\n ) : (\r\n
    \r\n )}\r\n \r\n {preview ? (\r\n \r\n ) : (\r\n {\r\n onBatchSecurityChange(event.target.value);\r\n }}\r\n helperText={false}\r\n disabled={preview}\r\n />\r\n )}\r\n \r\n {useWatermark ? (\r\n \r\n {preview ? (\r\n \r\n ) : (\r\n {\r\n const newValue = event.target.value;\r\n onBatchColumnChange(\r\n newValue,\r\n 'watermarkId',\r\n `metadata.profileData.watermarkId`\r\n );\r\n }}\r\n variant={props.variant}\r\n defaultValue={0}\r\n format={translateWatermarkRecordToInput}\r\n helperText={false}\r\n disabled={preview}\r\n />\r\n )}\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nclass ManageDocumentPropertiesDialog extends React.Component {\r\n formApi;\r\n pristine;\r\n formValues = {};\r\n\r\n state = {\r\n useWatermark: false,\r\n subcategories: [],\r\n submitting: false,\r\n dateHasError: [],\r\n\r\n formIsDirty: false,\r\n previewVisible: false,\r\n formIsValid: true,\r\n copyToInvestorDialogOpen: false,\r\n copyToInvestorFundId: undefined,\r\n copyToInvestorExistingInvIds: [],\r\n copyToInvestorSourceDocument: undefined\r\n };\r\n\r\n isValidDate = value => {\r\n return (\r\n value &&\r\n moment(value).isValid() &&\r\n moment(value).isBetween('1900-01-01', '2079-06-06', undefined, '[]')\r\n );\r\n };\r\n\r\n handleDocumentDueDateChange = async (index, newValue) => {\r\n var newDateHasError = this.state.dateHasError;\r\n\r\n var isNewValueBlank = newValue === null;\r\n if (isNewValueBlank) {\r\n newDateHasError[index] = false;\r\n this.setState({\r\n dateHasError: newDateHasError\r\n });\r\n this.formApi.change(`documents[${index}].dueDate`, null);\r\n return;\r\n }\r\n\r\n if (!this.isValidDate(newValue) && !isNewValueBlank) {\r\n newDateHasError[index] = true;\r\n this.setState({\r\n dateHasError: newDateHasError\r\n });\r\n return;\r\n }\r\n\r\n if (newValue) {\r\n newDateHasError[index] = false;\r\n const newFormattedValue = moment(newValue)\r\n .startOf('day')\r\n .format('YYYY-MM-DDTHH:MM:SS.SSS');\r\n this.setState({\r\n dateHasError: newDateHasError\r\n });\r\n this.formApi.change(`documents[${index}].dueDate`, newFormattedValue);\r\n } else if (newDateHasError[index]) {\r\n newDateHasError[index] = false;\r\n this.setState({\r\n dateHasError: newDateHasError\r\n });\r\n }\r\n };\r\n\r\n handleCopyToInvestorDialogOpen = (selectedDocumentsIds, documents) => {\r\n const selectedDocument = documents.find(\r\n doc => doc.id === selectedDocumentsIds[0]\r\n );\r\n\r\n //get all existing investorIds from documents that are matched with fundId from selected document\r\n const alreadyMatchedInvestorIds = documents\r\n .filter(choice => choice.id === selectedDocumentsIds[0])\r\n .map(choice => choice.investorId);\r\n //TO DO pass whole document so other properties can be used on second step\r\n if (selectedDocument) {\r\n // Update the selected document title with the batch title to make sure we keep the variable\r\n const documentToCopy = { ...selectedDocument };\r\n documentToCopy.documentTitle = this.formApi.getState().values.metadata.documentTitle;\r\n\r\n this.setState({\r\n copyToInvestorFundId: documentToCopy.fundId,\r\n copyToInvestorExistingInvIds: alreadyMatchedInvestorIds,\r\n copyToInvestorSourceDocument: documentToCopy\r\n });\r\n this.handleCopyToInvestorDialogOpenToggle();\r\n }\r\n };\r\n\r\n handleCopyToInvestorDialogOpenToggle = () => {\r\n this.setState(prevState => {\r\n return {\r\n copyToInvestorDialogOpen: !prevState.copyToInvestorDialogOpen\r\n };\r\n });\r\n };\r\n\r\n refreshAfterCopyToAnotherInvestors = newDocuments => {\r\n const formState = this.formApi.getState();\r\n const formValues = formState.values;\r\n\r\n this.formApi.reset({\r\n ...formState.initialValues,\r\n documents: formState.initialValues.documents.concat(newDocuments)\r\n }); // Concat the newly copied document to make sure they are part of the pristine fields\r\n\r\n this.formApi.change('documents', formValues.documents.concat(newDocuments));\r\n };\r\n\r\n componentDidMount() {\r\n const { batchForEdit = {} } = this.props;\r\n this.loadProofStatus(batchForEdit);\r\n const allSubcategories =\r\n batchForEdit.lookups && batchForEdit.lookups.allSubcategories\r\n ? batchForEdit.lookups.allSubcategories\r\n : [];\r\n this.setSubcategories(\r\n allSubcategories,\r\n batchForEdit.batch.derivedInfo.derivedCategoryId\r\n );\r\n this.setUseWatermark(\r\n batchForEdit.lookups,\r\n batchForEdit.batch.derivedInfo.derivedDocumentSecurityId === 'MULTIPLE'\r\n ? 'MULTIPLE'\r\n : parseInt(batchForEdit.batch.derivedInfo.derivedDocumentSecurityId),\r\n batchForEdit.batch.derivedInfo.derivedWatermarkProfileId,\r\n batchForEdit.documents\r\n );\r\n this.setDateHasError(this.props.batchForEdit.documents.length);\r\n }\r\n\r\n componentWillUnmount() {\r\n if (Queue) {\r\n Queue.stop = true;\r\n }\r\n }\r\n\r\n loadProofStatus = async batchForEdit => {\r\n if (\r\n batchForEdit.batch.profileData.uploadType === 'BULK' &&\r\n batchForEdit.documents.length > 0\r\n ) {\r\n this.proofStatusCheckHandler(true);\r\n }\r\n };\r\n\r\n setSubcategories = async (allSubcategories, categoryId) => {\r\n const subcategories =\r\n allSubcategories && allSubcategories.length > 0\r\n ? allSubcategories.filter(cat => cat.categoryId === categoryId)\r\n : [];\r\n this.setState({ subcategories: subcategories });\r\n };\r\n\r\n setDateHasError = async length => {\r\n var newDateHasError = [];\r\n for (var i = 0; i < length; i++) {\r\n newDateHasError.push(false);\r\n }\r\n this.setState({ dateHasError: newDateHasError });\r\n };\r\n\r\n searchBatchSecurity = (batchLookupsAllSec, item) => {\r\n return batchLookupsAllSec && batchLookupsAllSec.length > 0\r\n ? batchLookupsAllSec.find(sec => sec.id === item)\r\n : null;\r\n };\r\n\r\n checkWatermark(lookups, doc) {\r\n const batchSecurity = this.searchBatchSecurity(\r\n lookups.allSecurities,\r\n doc.documentSecurityId\r\n );\r\n return !batchSecurity.applyWatermark && !!doc.watermarkId;\r\n }\r\n\r\n setUseWatermark = (\r\n batchLookups,\r\n derivedSecurityId,\r\n derivedWatermarkId,\r\n batchDocuments\r\n ) => {\r\n let useWatermark = false;\r\n if (\r\n typeof derivedWatermarkId !== 'undefined' &&\r\n derivedWatermarkId !== null\r\n ) {\r\n useWatermark = true;\r\n } else if (derivedSecurityId !== 'MULTIPLE') {\r\n const batchSecurity = this.searchBatchSecurity(\r\n batchLookups.allSecurities,\r\n derivedSecurityId\r\n );\r\n useWatermark = batchSecurity && batchSecurity.applyWatermark;\r\n } else {\r\n // in case of multiple security profile as been selected on documents and stored on derived info\r\n // check directly on document if all the documents profile have watermark\r\n const documentsSecurityIds = [\r\n ...new Set(batchDocuments.map(item => item.documentSecurityId))\r\n ];\r\n useWatermark = !documentsSecurityIds.every(docSecId => {\r\n const batchSecurityModel = this.searchBatchSecurity(\r\n batchLookups.allSecurities,\r\n docSecId\r\n );\r\n return batchSecurityModel.applyWatermark === false;\r\n });\r\n }\r\n this.setState({ useWatermark: useWatermark });\r\n };\r\n\r\n /**\r\n * Handle select all checbox clicked\r\n */\r\n handleSelectAllClick = event => {\r\n const { documents = [] } = this.formValues;\r\n const changedDocuments = documents.map(doc => {\r\n return { ...doc, selected: event.target.checked };\r\n });\r\n this.formApi.change(`documents`, changedDocuments);\r\n };\r\n\r\n /**\r\n * Handle row checkbox clicked\r\n */\r\n handleClick = (event, id) => {\r\n const { documents = [] } = this.formValues;\r\n const index = documents.findIndex(document => document.id === id);\r\n if (index >= 0) {\r\n this.formApi.change(\r\n `documents[${index}].selected`,\r\n !documents[index].selected\r\n );\r\n }\r\n };\r\n\r\n handleProofActionChange = async value => {\r\n const { id } = this.props;\r\n\r\n switch (value) {\r\n case 'Generate':\r\n await this.handleProof(id);\r\n break;\r\n case 'Review':\r\n await this.downloadProofFile(id);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n handleProof = async resourceUploadId => {\r\n this.setState({ proofStatus: 'PROCESSING' });\r\n try {\r\n await ResourceUploadApi.proof(resourceUploadId);\r\n this.proofStatusCheckHandler(false);\r\n } catch (error) {\r\n this.setState({ proofStatus: 'ERROR' });\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n };\r\n\r\n proofStatusCallback = async (batchProofStatus, initialProofCheck = false) => {\r\n const { proofStatus } = this.state;\r\n\r\n if (batchProofStatus) {\r\n const newProofStatus = batchProofStatus.status;\r\n //if proof status has changed\r\n if (proofStatus !== newProofStatus) {\r\n switch (newProofStatus) {\r\n case 'COMPLETED':\r\n case 'NOT_STARTED':\r\n Queue.stop = true;\r\n this.setState({ proofStatus: newProofStatus });\r\n break;\r\n case 'ERROR':\r\n Queue.stop = true;\r\n this.setState({ proofStatus: newProofStatus });\r\n //show error notification only if proof is triggered on this dialog; do not show on initial check\r\n if (!initialProofCheck) {\r\n this.props.showNotification(batchProofStatus.statusInfo, 'error');\r\n }\r\n break;\r\n case 'PROCESSING':\r\n this.setState({ proofStatus: newProofStatus });\r\n break;\r\n default:\r\n this.props.showNotification('Unknown proof status', 'error');\r\n }\r\n }\r\n //check if MAX_COUNT reached\r\n if (newProofStatus === 'PROCESSING' && Queue.queue.length === 0) {\r\n this.props.showNotification('Too many proof status requests', 'error');\r\n }\r\n }\r\n };\r\n\r\n //proof status promise with delay in ms\r\n proofStatusPromise = (resourceUploadId, ms, initialProofCheck) =>\r\n new Promise(resolve =>\r\n setTimeout(\r\n () => resolve(ResourceUploadApi.getProofStatus(resourceUploadId)),\r\n ms\r\n )\r\n )\r\n .then(result => {\r\n this.proofStatusCallback(result, initialProofCheck);\r\n })\r\n .catch(error => {\r\n const errorMessage = getIcError(error);\r\n const resultObject = { status: 'ERROR', statusInfo: errorMessage };\r\n this.proofStatusCallback(resultObject, initialProofCheck);\r\n });\r\n\r\n //add proof status promise to proof status queue\r\n callProofStatusDelay = (resourceUploadId, ms, initialProofCheck) => {\r\n Queue.enqueue(() =>\r\n this.proofStatusPromise(resourceUploadId, ms, initialProofCheck)\r\n );\r\n };\r\n\r\n /**\r\n * create promises queue for checking proofing status\r\n * @param {*} initialProofCheck - true if proof check is triggered on componenet initialization, false if manually triggered\r\n */\r\n proofStatusCheckHandler = initialProofCheck => {\r\n const { batchForEdit = {} } = this.props;\r\n const { resourceUploadId } = batchForEdit.batch;\r\n //add to status promise queue MAX_COUNTER number of check calls\r\n this.callProofStatusDelay(resourceUploadId, 0, initialProofCheck);\r\n for (var i = 0; i < MAX_COUNTER - 1; i++) {\r\n this.callProofStatusDelay(resourceUploadId, 5000, initialProofCheck);\r\n }\r\n };\r\n\r\n /**\r\n * Download the proof file and open it in a new tab\r\n */\r\n downloadProofFile = async resourceUploadId => {\r\n try {\r\n const response = await ResourceUploadApi.downloadProofFile(\r\n resourceUploadId\r\n );\r\n const url = window.URL.createObjectURL(response.data);\r\n window.open(url);\r\n } catch (error) {\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Check if newly selected value is the same as before\r\n * @param newValue\r\n * @param newValue\r\n * @param derivedProperty\r\n * @param derivedProperty\r\n */\r\n checkValueChanged = (newValue, source, derivedProperty = false) => {\r\n const { metadata } = this.formValues;\r\n return !(derivedProperty\r\n ? metadata.derivedInfo[source] === newValue\r\n : metadata[source] === newValue);\r\n };\r\n\r\n onBatchStatusChange = value => {\r\n const { documents = [] } = this.formValues;\r\n const statusChanged = this.checkValueChanged(value, 'batchStatus', false);\r\n if (!statusChanged) return;\r\n let docStatus;\r\n switch (value) {\r\n case 'A':\r\n docStatus = 'ACTIVE';\r\n break;\r\n case 'S':\r\n docStatus = 'SUSPENDED';\r\n break;\r\n case 'P':\r\n docStatus = 'PENDING';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (documents.length > 0) {\r\n const changedDocuments = documents.map(document => {\r\n return { ...document, status: docStatus };\r\n });\r\n this.formApi.change(`documents`, changedDocuments);\r\n }\r\n };\r\n\r\n onBatchSecurityChange = value => {\r\n const securityChanged = this.checkValueChanged(\r\n value,\r\n 'documentSecurityId',\r\n true\r\n );\r\n\r\n const { documents = [] } = this.formValues;\r\n if (!securityChanged) return;\r\n const { batchForEdit } = this.props;\r\n this.setUseWatermark(batchForEdit.lookups, value);\r\n if (documents.length > 0) {\r\n const changedDocuments = documents.map(doc => {\r\n return { ...doc, documentSecurityId: value, watermarkId: null };\r\n });\r\n this.formApi.batch(() => {\r\n this.formApi.change(\r\n `metadata.derivedInfo.derivedWatermarkProfileId`,\r\n null\r\n );\r\n this.formApi.change(`documents`, changedDocuments);\r\n });\r\n } else {\r\n this.formApi.change(\r\n `metadata.derivedInfo.derivedWatermarkProfileId`,\r\n null\r\n );\r\n }\r\n };\r\n\r\n //in the end this handler is only user for batch documentDate and dueDate from derivedInfo and watermarkId from profileData\r\n onBatchColumnChange = (value, documentsColumnName, batchPropertyName) => {\r\n const { documents = [] } = this.formValues;\r\n if (documents.length > 0) {\r\n const changedDocuments = documents.map(doc => {\r\n return { ...doc, [documentsColumnName]: value };\r\n });\r\n this.formApi.change(`documents`, changedDocuments);\r\n }\r\n this.formApi.change(batchPropertyName, value);\r\n };\r\n\r\n onBatchCategoryChange = value => {\r\n const { documents = [] } = this.formValues;\r\n const categoryChanged = this.checkValueChanged(value, 'categoryId', true);\r\n if (!categoryChanged) return;\r\n const { batchForEdit } = this.props;\r\n\r\n this.setSubcategories(batchForEdit.lookups.allSubcategories, value);\r\n if (documents.length > 0) {\r\n const changedDocuments = documents.map(doc => {\r\n return { ...doc, categoryId: value, subcategoryId: null };\r\n });\r\n\r\n this.formApi.batch(() => {\r\n this.formApi.change(`metadata.derivedInfo.derivedSubcategoryId`, null);\r\n this.formApi.change(`documents`, changedDocuments);\r\n });\r\n } else {\r\n this.formApi.change(`metadata.derivedInfo.derivedSubcategoryId`, null);\r\n }\r\n };\r\n\r\n onBatchSubcategoryChange = value => {\r\n const { documents = [] } = this.formValues;\r\n const categoryChanged = this.checkValueChanged(value, 'categoryId', true);\r\n if (!categoryChanged) return;\r\n\r\n if (documents.length > 0) {\r\n const changedDocuments = documents.map(doc => {\r\n return { ...doc, subcategoryId: value };\r\n });\r\n this.formApi.change(`documents`, changedDocuments);\r\n }\r\n };\r\n\r\n /**\r\n * Handle Batch Title Change\r\n */\r\n handleBatchTitleChange = newValue => {\r\n const { documents = [] } = this.formValues;\r\n this.formApi.change('resourceUploadTitle', newValue);\r\n\r\n if (documents.length > 0) {\r\n const changedDocuments = documents.map(doc => {\r\n return { ...doc, documentTitle: newValue };\r\n });\r\n this.formApi.change(`documents`, changedDocuments);\r\n }\r\n };\r\n\r\n // /**\r\n // * Change investor ids selected documents\r\n // */\r\n // handleMultipleDocumentsInvestorChange = newInvestorId => {\r\n // const { documents = [] } = this.formValues;\r\n // const { selectedDocumentsIds } = this.state;\r\n\r\n // const changedDocuments = documents.map(document => {\r\n // if (selectedDocumentsIds.includes(document.id)) {\r\n // let changedDocument = { ...document };\r\n // changedDocument.investorId = newInvestorId;\r\n // changedDocument.fundId = 'MultiFund';\r\n // return changedDocument;\r\n // } else {\r\n // return document;\r\n // }\r\n // });\r\n // this.formApi.change(`documents`, changedDocuments);\r\n // };\r\n\r\n validateTitle = value => {\r\n if (!value) {\r\n return 'Required';\r\n }\r\n return undefined;\r\n };\r\n\r\n /**\r\n * Batch Dates validator\r\n */\r\n validateDates = values => {\r\n const errors = { metadata: { derivedInfo: {} } };\r\n if (\r\n values.metadata.derivedInfo.derivedDocumentDate &&\r\n values.metadata.derivedInfo.derivedDueDate\r\n ) {\r\n if (\r\n moment(values.metadata.derivedInfo.derivedDocumentDate).startOf(\r\n 'day'\r\n ) >= moment(values.metadata.derivedInfo.derivedDueDate).startOf('day')\r\n ) {\r\n errors.metadata.derivedInfo.derivedDueDate =\r\n 'Due Date must be after Document Date';\r\n }\r\n }\r\n return errors;\r\n };\r\n\r\n /**\r\n * Delete selected documents\r\n */\r\n deleteDocuments = async (documentIdsToDelete, documents) => {\r\n if (documentIdsToDelete.length > 0) {\r\n const body = documentIdsToDelete.map(documentId => {\r\n return { documentId: documentId, status: 'DELETED' };\r\n });\r\n\r\n try {\r\n await DocumentApi.deleteDocuments(body);\r\n let changedocuments = [...documents];\r\n changedocuments = changedocuments.filter(\r\n doc => !documentIdsToDelete.includes(doc.id)\r\n );\r\n\r\n //Also remove the document from the initial values of the documents\r\n const formState = this.formApi.getState();\r\n const docInitials = formState.initialValues.documents;\r\n const currentMetadata = formState.values.metadata;\r\n\r\n this.formApi.reset({\r\n ...formState.initialValues,\r\n documents: docInitials.filter(\r\n doc => !documentIdsToDelete.includes(doc.id)\r\n )\r\n });\r\n\r\n this.formApi.change('documents', changedocuments);\r\n //Keep metadata values set on a resource upload level, so they don't reset to initial ones after deleting document(s)\r\n this.formApi.change('metadata', currentMetadata);\r\n } catch (error) {\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n }\r\n };\r\n\r\n //set order column value if sorting is clicked in underlying grid\r\n setDocuments = newDocuments => {\r\n const { documents = [] } = this.formValues;\r\n let changedDocuments = [...documents];\r\n if (documents.length > 0) {\r\n changedDocuments.forEach((document, index) => {\r\n document.order = newDocuments.findIndex(e => e.id === document.id);\r\n });\r\n }\r\n this.formApi.change('documents', changedDocuments);\r\n };\r\n\r\n handleGridAction = (type, confirmCloseHandler) => {\r\n if (confirmCloseHandler) {\r\n confirmCloseHandler(false);\r\n }\r\n let { documents = [] } = this.formValues;\r\n let selectedDocumentsIds = [];\r\n documents.forEach(document => {\r\n if (document.selected) {\r\n selectedDocumentsIds.push(document.id);\r\n }\r\n });\r\n switch (type) {\r\n case 'delete':\r\n this.deleteDocuments(selectedDocumentsIds, documents);\r\n break;\r\n case 'assign':\r\n this.handleCopyToInvestorDialogOpen(selectedDocumentsIds, documents);\r\n break;\r\n default:\r\n break;\r\n }\r\n };\r\n\r\n handleFormChange(formProps) {\r\n this.setState({ formIsDirty: formProps.dirty });\r\n this.setState({ formIsValid: formProps.valid });\r\n }\r\n\r\n //check if any of the batch properties has changed except batchStatus\r\n //also check if the batch was uploaded via api, in this case we submit only if all mandatory fields are properly populated\r\n checkBatchPropertiesChanged = () => {\r\n return false;\r\n\r\n // Return false for now as we do not save the batch for now\r\n // Todo put back the logic once bug on WL are solved\r\n /*\r\n const diffs = formState.dirtyFields;\r\n const formValues = formState.values;\r\n\r\n if (formValues.resourceUpload.uploadVia === 'API') {\r\n // For now we never allow to save a batch uploaded via API as the server side cannot handle missing values especially filename\r\n return false;\r\n // if (!validateBatch(formValues)) {\r\n // // We consider the batch has not changed when is is not valid and uploaded via API\r\n // return false;\r\n // }\r\n }\r\n\r\n //filter out batchStatus field since it's updated with separate API\r\n const changedBatchProps = Object.keys(diffs).filter(\r\n field => field.includes('metadata') && field !== 'metadata.batchStatus'\r\n );\r\n let hasChangeProps = false;\r\n if (changedBatchProps.length > 0) {\r\n //special case at the moment for subcategoryId since service returns 0 and form sends null if selected empty\r\n //should be changed on API to return null\r\n if (\r\n changedBatchProps.length === 1 &&\r\n changedBatchProps[0] === 'metadata.profileData.subcategoryId'\r\n ) {\r\n const initialValue = get(\r\n formState.initialValues,\r\n 'metadata.profileData.subcategoryId',\r\n null\r\n );\r\n const currentValue = get(\r\n formState.values,\r\n 'metadata.profileData.subcategoryId',\r\n null\r\n );\r\n if (\r\n initialValue !== currentValue &&\r\n !(\r\n (initialValue === 0 || initialValue == null) &&\r\n (currentValue === 0 || currentValue == null)\r\n )\r\n ) {\r\n hasChangeProps = true;\r\n }\r\n } else {\r\n hasChangeProps = true;\r\n }\r\n }\r\n return hasChangeProps;\r\n */\r\n };\r\n\r\n handleSaveChanges = formApi => {\r\n if (this.state.dateHasError.indexOf(true) > -1) return;\r\n formApi.submit();\r\n };\r\n\r\n handlePreviewVisibleChange = value => {\r\n if (this.state.formIsValid) {\r\n this.setState({ previewVisible: value });\r\n }\r\n };\r\n\r\n checkPreviewDisabled = api => {\r\n const diffs = diff(api.getState().values, api.getState().initialValues);\r\n return !(\r\n Object.keys(diffs).length !== 0 &&\r\n this.state.formIsValid &&\r\n this.state.dateHasError.indexOf(true) === -1\r\n );\r\n };\r\n\r\n undoChange = formApi => {\r\n formApi.reset();\r\n this.componentDidMount();\r\n };\r\n\r\n saveChanges = async values => {\r\n const { batchForEdit = {} } = this.props;\r\n const formState = this.formApi.getState();\r\n this.setState({ submitting: true });\r\n const { metadata, resourceUpload } = values;\r\n let profileData = { ...metadata.profileData };\r\n if (profileData.watermarkId === 0) {\r\n profileData.watermarkId = null; // 0 means default value and need to be replaced by null before saving\r\n }\r\n\r\n try {\r\n if (this.checkBatchPropertiesChanged(formState)) {\r\n const formBatchData = new FormData();\r\n let metadataValues = { ...metadata };\r\n\r\n formBatchData.append(\r\n 'resourceUploadId',\r\n resourceUpload.resourceUploadId\r\n );\r\n formBatchData.append(\r\n 'metadata',\r\n JSON.stringify({\r\n ...metadataValues,\r\n fileName: resourceUpload.fileName,\r\n quarter: resourceUpload.quarter,\r\n year: resourceUpload.year,\r\n fileType: resourceUpload.file && resourceUpload.file.rawFile.type,\r\n fundIds: resourceUpload.fundIds, // when update get fundIds and fundFamilyId from already existing resourceupload\r\n fundFamilyId: resourceUpload.fundFamilyId,\r\n allInvestors: resourceUpload.allInvestors,\r\n profileData: profileData\r\n })\r\n );\r\n await ResourceUploadApi.updateResourceUpload(formBatchData);\r\n }\r\n let batchStatusCalled = false;\r\n if (batchForEdit.batch.batchStatus !== values.metadata.batchStatus) {\r\n batchStatusCalled = true;\r\n await ResourceUploadApi.setBatchStatus(\r\n resourceUpload.resourceUploadId,\r\n values.metadata.batchStatus\r\n );\r\n }\r\n if (formState.values.documents.length > 0) {\r\n //get all changed documents\r\n const changedDocs = formState.values.documents.filter(\r\n doc => !formState.initialValues.documents.includes(doc)\r\n );\r\n let statusChangedDocs = []; //documents with changed status\r\n let fieldsChangedDocs = []; //documents with changed other fields than status\r\n changedDocs.forEach(document => {\r\n const initialValue = formState.initialValues.documents.find(\r\n d => d.id === document.id\r\n );\r\n //change condition when copy to investor option is added\r\n if (initialValue) {\r\n const differentFields = diff(initialValue, document);\r\n if (Object.keys(differentFields).indexOf('status') !== -1) {\r\n statusChangedDocs.push(document);\r\n }\r\n if (\r\n Object.keys(differentFields).findIndex(\r\n item => item !== 'status'\r\n ) !== -1\r\n ) {\r\n fieldsChangedDocs.push(document);\r\n }\r\n }\r\n });\r\n\r\n let documentsForUpdate = fieldsChangedDocs.map(doc => {\r\n const changeWatermark = this.checkWatermark(\r\n batchForEdit.lookups,\r\n doc\r\n );\r\n return changeWatermark || doc.watermarkId === 0\r\n ? { ...doc, watermarkId: null }\r\n : doc;\r\n });\r\n\r\n //if there is no investorId we assume it's fund level document and send '*' as investorId\r\n documentsForUpdate = documentsForUpdate.map(doc => {\r\n if (!doc.investorId) {\r\n return { ...doc, investorId: '*' };\r\n } else {\r\n return doc;\r\n }\r\n });\r\n\r\n if (documentsForUpdate && documentsForUpdate.length > 0) {\r\n await DocumentApi.assignDocuments(\r\n resourceUpload.resourceUploadId,\r\n documentsForUpdate\r\n );\r\n }\r\n\r\n const documentsForStatusUpdate = statusChangedDocs.map(doc => {\r\n return { documentId: doc.id, status: doc.status };\r\n });\r\n if (documentsForStatusUpdate && documentsForStatusUpdate.length > 0) {\r\n if (!batchStatusCalled) {\r\n // Only call document set status if batch set status was not call in this transaction to avoid double update of the status\r\n // and maker checker issue\r\n await DocumentApi.setMultipleStatus(documentsForStatusUpdate);\r\n }\r\n }\r\n }\r\n\r\n // Update title of the batch - if it was changed\r\n const isBatchTitleChanged = Object.keys(formState.dirtyFields).includes(\r\n 'metadata.documentTitle'\r\n );\r\n if (isBatchTitleChanged) {\r\n const newBatchTitle = values.metadata.documentTitle;\r\n await ResourceUploadApi.updateResourceUploadTitle(\r\n resourceUpload.resourceUploadId,\r\n { resourceUploadTitle: newBatchTitle }\r\n );\r\n }\r\n\r\n this.setState({ submitting: false });\r\n this.props.showNotification('ra.notification.custom_updated_message');\r\n this.props.onClose();\r\n } catch (e) {\r\n this.setState({ submitting: false });\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(e) }\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n showDialog,\r\n classes,\r\n onClose,\r\n batchForEdit,\r\n hasDeletePermission,\r\n permissions = []\r\n } = this.props;\r\n const hasApprovePermission = permissions.includes(\r\n 'AUTH_APPROVE_RESOURCE_UPLOAD'\r\n );\r\n const batchLookups = batchForEdit.lookups;\r\n const {\r\n copyToInvestorDialogOpen,\r\n copyToInvestorFundId,\r\n copyToInvestorExistingInvIds,\r\n copyToInvestorSourceDocument\r\n } = this.state;\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n onClose();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Edit Properties\r\n \r\n \r\n <>\r\n {copyToInvestorDialogOpen && (\r\n \r\n )}\r\n true}\r\n validate={this.validateDates}\r\n >\r\n this.handleFormChange(formProps)}\r\n />\r\n \r\n {props => {\r\n const {\r\n proofStatus,\r\n useWatermark,\r\n subcategories\r\n } = this.state;\r\n this.formApi = props.form;\r\n this.formValues = props.values;\r\n const { documents = [], resourceUpload } = this.formValues;\r\n const hasUnMatchedDocs =\r\n batchForEdit.documents &&\r\n batchForEdit.documents.findIndex(\r\n doc => doc.matchingStatus === 'MISMATCH'\r\n ) !== -1;\r\n return (\r\n \r\n {this.state.previewVisible ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n {this.state.previewVisible ? (\r\n \r\n this.handlePreviewVisibleChange(false)}\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n disabled={this.state.submitting}\r\n >\r\n Go Back To Edit Properties\r\n \r\n this.handleSaveChanges(this.formApi)}\r\n color=\"primary\"\r\n disabled={this.state.submitting}\r\n style={{ marginLeft: 'auto' }}\r\n variant=\"contained\"\r\n >\r\n Save & Close\r\n \r\n \r\n ) : (\r\n \r\n \r\n Cancel\r\n \r\n this.undoChange(this.formApi)}\r\n variant=\"text\"\r\n color=\"primary\"\r\n disabled={!this.state.formIsDirty}\r\n >\r\n Undo Changes\r\n \r\n this.handlePreviewVisibleChange(true)}\r\n color=\"primary\"\r\n disabled={\r\n this.formApi ? this.checkPreviewDisabled(this.formApi) : false\r\n }\r\n style={{ marginLeft: 'auto' }}\r\n variant=\"contained\"\r\n >\r\n Preview Changes\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n crudGetList,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification\r\n};\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(ManageDocumentPropertiesDialog));\r\n","import React from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport get from 'lodash/get';\r\nimport GridPopover from './GridPopover';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles({\r\n button: {\r\n padding: '0px',\r\n margin: '0px'\r\n }\r\n});\r\n\r\n/**Allow to display a list of information from a field in grid, the list will be displayed as a grid within a popover window */\r\nexport default function PopupField(props) {\r\n const { classes: classesOverride } = props;\r\n const classes = useStyles({ classes: classesOverride });\r\n const { data = [], label, optionText, headLabel, classesNames = {} } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n {headLabel}\r\n \r\n \r\n \r\n {data.map((item, index) => {\r\n return (\r\n \r\n \r\n {optionText ? get(item, optionText) : item}\r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n \r\n }\r\n />\r\n );\r\n}\r\n","const DateRangeChoices = [\r\n { id: '*', name: 'All Dates' },\r\n { id: 'custom', name: 'Custom' },\r\n { id: 'today', name: 'Today' },\r\n { id: 'week', name: 'This Week' },\r\n { id: 'month', name: 'This Month' },\r\n { id: 'quarter', name: 'This Quarter' },\r\n { id: 'year', name: 'This Year' },\r\n { id: 'last_week', name: 'Last Week' },\r\n { id: 'last_month', name: 'Last Month' },\r\n { id: 'last_quarter', name: 'Last Quarter' },\r\n { id: '1_month', name: 'Last 30 Days' },\r\n { id: '6_month', name: 'Last 6 Months' },\r\n { id: 'last_year', name: 'Last Year' }\r\n];\r\n\r\nexport { DateRangeChoices };\r\n","import React, { useState, useEffect, useCallback, useMemo } from 'react';\r\nimport { useInput, Labeled } from 'react-admin';\r\nimport { makeStyles, Select, MenuItem } from '@material-ui/core';\r\nimport {\r\n KeyboardDatePicker,\r\n MuiPickersUtilsProvider\r\n} from '@material-ui/pickers';\r\nimport DateFnsUtils from '@date-io/date-fns';\r\nimport moment from 'moment';\r\nimport CalendarTodayIcon from '@material-ui/icons/CalendarToday';\r\nimport { useForm } from 'react-final-form';\r\nimport { DateRangeChoices } from './DateRangeLookups';\r\n\r\nconst useDateRangeFilterStyles = makeStyles({\r\n container: {\r\n display: 'flex',\r\n alignItems: 'flex-start',\r\n padding: '0px',\r\n marginTop: '-4px',\r\n '& p': {\r\n margin: '4px',\r\n display: 'flex',\r\n alignSelf: 'flex-start'\r\n }\r\n },\r\n labeled: {\r\n height: '52px'\r\n },\r\n iconButton: {\r\n borderLeft: '1px solid #E0E0E0',\r\n borderRadius: '0px'\r\n },\r\n icon: {\r\n fontSize: '18px'\r\n },\r\n seperationItem: {\r\n margin: '4px'\r\n },\r\n input: {\r\n height: '32px',\r\n '&::before': {\r\n zIndex: 1\r\n }\r\n },\r\n dateFrom: {\r\n marginLeft: '10px'\r\n },\r\n selectContainer: {\r\n minWidth: '120px',\r\n '& > *:only-child': {\r\n width: '100%'\r\n }\r\n }\r\n});\r\n\r\nexport const ConvertRangeToStartEndDate = range => {\r\n const newSelectValue = range;\r\n let startDate, endDate;\r\n moment.locale('en', {\r\n week: {\r\n dow: 1 // Monday is the first day of the week\r\n }\r\n });\r\n\r\n if (range === '*' || range === 'custom') {\r\n startDate = null;\r\n endDate = null;\r\n } else if (newSelectValue === 'today') {\r\n startDate = moment();\r\n endDate = moment();\r\n } else {\r\n if (newSelectValue.startsWith('last_')) {\r\n const timeValue = newSelectValue.replace('last_', '');\r\n startDate = moment()\r\n .subtract(1, timeValue)\r\n .startOf(timeValue);\r\n endDate = moment()\r\n .subtract(1, timeValue)\r\n .endOf(timeValue);\r\n } else {\r\n const splitted = newSelectValue.split('_');\r\n if (splitted.length > 1) {\r\n const number = splitted[0];\r\n const rangeType = splitted[1];\r\n startDate = moment()\r\n .subtract(number, rangeType)\r\n .startOf('day');\r\n endDate = moment().endOf('day');\r\n } else {\r\n startDate = moment().startOf(newSelectValue);\r\n endDate = moment().endOf(newSelectValue);\r\n }\r\n }\r\n }\r\n return {\r\n start: startDate,\r\n startString:\r\n startDate != null\r\n ? moment(startDate)\r\n .startOf('day')\r\n .utc()\r\n .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')\r\n : null,\r\n end: endDate,\r\n endString:\r\n endDate != null\r\n ? moment(endDate)\r\n .endOf('day')\r\n .utc()\r\n .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')\r\n : null\r\n };\r\n};\r\n\r\n/**\r\n * Date Range Input with 2 date inputs\r\n * @param {*} props\r\n */\r\nexport const DateRangeFilter = props => {\r\n const {\r\n label,\r\n variant,\r\n defaultValue,\r\n source,\r\n fromSource,\r\n toSource,\r\n defaultFrom = null,\r\n defaultTo = null,\r\n defaultSelectValue = '*',\r\n showRange = true,\r\n autoSelectValues = true,\r\n formatDate\r\n } = props;\r\n const [startDate, setStartDate] = useState(defaultFrom);\r\n const [endDate, setEndDate] = useState(defaultTo);\r\n const [selectValue, setSelectValue] = useState(\r\n defaultSelectValue.indexOf('!') > 0\r\n ? defaultSelectValue.split('!')[0]\r\n : defaultSelectValue\r\n );\r\n const form = useForm();\r\n const { isRequired, input } = useInput(props);\r\n const classes = useDateRangeFilterStyles();\r\n\r\n const handleChange = useCallback(\r\n (newValue, position) => {\r\n // If startDate and endDate are null, display 'All Dates' in time select\r\n if (\r\n !newValue &&\r\n ((position === 'start' && !endDate) ||\r\n (position === 'end' && !startDate))\r\n ) {\r\n setSelectValue('*');\r\n } else {\r\n setSelectValue('custom');\r\n }\r\n\r\n if (position === 'start') {\r\n setStartDate(newValue);\r\n // If no date is selected in endDate, set the same date as startDate\r\n if (autoSelectValues && !endDate && moment(newValue).isValid()) {\r\n setEndDate(newValue);\r\n if (moment(newValue).isSame(moment(), 'day')) {\r\n setSelectValue('today');\r\n }\r\n }\r\n } else {\r\n setEndDate(newValue);\r\n // If no date is selected in startDate, set the same date as endDate\r\n if (autoSelectValues && !startDate && moment(newValue).isValid()) {\r\n setStartDate(newValue);\r\n if (moment(newValue).isSame(moment(), 'day')) {\r\n setSelectValue('today');\r\n }\r\n }\r\n }\r\n\r\n if (!moment(newValue).isValid()) {\r\n input.onChange(null);\r\n }\r\n },\r\n [input, startDate, endDate, autoSelectValues]\r\n );\r\n\r\n /**\r\n * Handle change on select for the time value\r\n */\r\n const handleChangeSelect = useCallback(event => {\r\n const newSelectValue = event.target.value;\r\n setSelectValue(newSelectValue);\r\n const range = ConvertRangeToStartEndDate(newSelectValue);\r\n setStartDate(range.start);\r\n setEndDate(range.end);\r\n }, []);\r\n\r\n useEffect(() => {\r\n // If all dates are valid, updates form values with the right format\r\n if (moment(startDate).isValid() || moment(endDate).isValid()) {\r\n const startDateString = moment(startDate).isValid()\r\n ? formatDate\r\n ? formatDate(startDate)\r\n : moment(startDate)\r\n .startOf('day')\r\n .utc()\r\n .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')\r\n : null;\r\n const endDateString = moment(endDate).isValid()\r\n ? formatDate\r\n ? formatDate(endDate)\r\n : moment(endDate)\r\n .endOf('day')\r\n .utc()\r\n .format('YYYY-MM-DDTHH:mm:ss.SSS[Z]')\r\n : null;\r\n\r\n if (fromSource && toSource) {\r\n form.change(fromSource, startDateString);\r\n form.change(toSource, endDateString);\r\n const fieldNewValue =\r\n selectValue === 'custom'\r\n ? `${selectValue}!${startDateString}|${endDateString}`\r\n : selectValue;\r\n input.onChange(fieldNewValue);\r\n } else {\r\n input.onChange(`${startDateString}|${endDateString}`);\r\n }\r\n } else if (startDate === null && endDate === null) {\r\n // If all dates are null, updates form values with the default value\r\n if (fromSource && toSource) {\r\n form.change(fromSource, null);\r\n form.change(toSource, null);\r\n input.onChange(selectValue);\r\n } else {\r\n input.onChange(`${defaultValue}|${defaultValue}`);\r\n }\r\n }\r\n }, [\r\n startDate,\r\n endDate,\r\n form,\r\n input,\r\n source,\r\n defaultValue,\r\n fromSource,\r\n toSource,\r\n defaultFrom,\r\n defaultTo,\r\n selectValue,\r\n formatDate\r\n ]);\r\n\r\n const maxDateProps = useMemo(() => {\r\n return moment(endDate).isValid() ? { maxDate: moment(endDate) } : {};\r\n }, [endDate]);\r\n\r\n const minDateProps = useMemo(() => {\r\n return moment(startDate).isValid() ? { minDate: moment(startDate) } : {};\r\n }, [startDate]);\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n {DateRangeChoices.map(choice => {\r\n return (\r\n \r\n {choice.name}\r\n \r\n );\r\n })}\r\n \r\n
    \r\n {(showRange || selectValue === 'custom') && (\r\n <>\r\n handleChange(newDate, 'start')}\r\n value={startDate}\r\n format=\"MM/dd/yyyy\"\r\n required={isRequired}\r\n keyboardIcon={\r\n \r\n }\r\n KeyboardButtonProps={{\r\n classes: { root: classes.iconButton },\r\n id: 'start-date-button',\r\n 'data-testid': 'start-date-button'\r\n }}\r\n InputProps={{\r\n classes: { root: classes.input },\r\n placeholder: 'mm/dd/yyyy'\r\n }}\r\n classes={{\r\n root: classes.inputContainer\r\n }}\r\n {...maxDateProps}\r\n data-testid=\"start-date\"\r\n DialogProps={{\r\n id: 'start-date-button',\r\n 'data-testid': 'start-date-modal'\r\n }}\r\n rightArrowButtonProps={{\r\n id: 'right-arrow'\r\n }}\r\n leftArrowButtonProps={{\r\n id: 'left-arrow'\r\n }}\r\n />\r\n

    -

    \r\n handleChange(newDate, 'end')}\r\n value={endDate}\r\n format=\"MM/dd/yyyy\"\r\n required={isRequired}\r\n keyboardIcon={\r\n \r\n }\r\n KeyboardButtonProps={{\r\n classes: { root: classes.iconButton },\r\n id: 'end-date-button',\r\n 'data-testid': 'end-date-button'\r\n }}\r\n InputProps={{\r\n classes: { root: classes.input },\r\n placeholder: 'mm/dd/yyyy'\r\n }}\r\n classes={{\r\n root: classes.inputContainer\r\n }}\r\n {...minDateProps}\r\n data-testid=\"end-date\"\r\n DialogProps={{\r\n id: 'end-date-button',\r\n 'data-testid': 'end-date-modal'\r\n }}\r\n rightArrowButtonProps={{\r\n id: 'right-arrow'\r\n }}\r\n leftArrowButtonProps={{\r\n id: 'left-arrow'\r\n }}\r\n />\r\n \r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default DateRangeFilter;\r\n","import {\r\n makeStyles,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow\r\n} from '@material-ui/core';\r\nimport { Typography, CircularProgress } from '@material-ui/core/';\r\nimport React, { Fragment, useState, useMemo, useEffect } from 'react';\r\nimport {\r\n Datagrid,\r\n FunctionField,\r\n List,\r\n ReferenceField,\r\n ReferenceInput,\r\n TextInput,\r\n SelectInput,\r\n TextField,\r\n TopToolbar,\r\n useRefresh,\r\n Pagination,\r\n DateField,\r\n SelectField,\r\n useListContext,\r\n useQueryWithStore\r\n} from 'react-admin';\r\nimport get from 'lodash/get';\r\nimport capitalize from 'lodash/capitalize';\r\n\r\nimport dataProvider from '../../core/providers/IccUserDataProvider';\r\nimport AutocompleteInput from '../../core/components/forked/input/AutocompleteInput';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport { DocumentIcon } from '../../core/themes/icons/DocumentIcon';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport { documentFilterStatus, documentStatus } from './ResourceUploadLookups';\r\nimport ResourceUploadListBulkActions from './ResourceUploadListBulkActions';\r\nimport ManageDocumentPropertiesDialog from './manageBatch/ManageDocumentPropertiesDialog';\r\nimport ResourceUploadApi from '../../core/apis/ResourceUploadApi';\r\nimport { formatDate } from '../../core/utils/index';\r\nimport PopupField from '../../core/components/grid/PopupField';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport {\r\n DateRangeFilter,\r\n ConvertRangeToStartEndDate\r\n} from '../../core/components/DateRangeFilter';\r\nimport green from '@material-ui/core/colors/green';\r\nimport orange from '@material-ui/core/colors/orange';\r\nimport red from '@material-ui/core/colors/red';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport TenantConfigurationApi from '../../core/apis/TenantConfigurationApi';\r\nimport { DateRangeChoices } from '../../core/components/DateRangeLookups';\r\n\r\nconst styles = {\r\n greenText: { color: green[500] },\r\n orangeText: { color: orange[500] },\r\n redText: { color: red[500] }\r\n};\r\n\r\n//create a little component for non resource table cell\r\nconst StatusByColorField = withStyles(styles)(({ classes, record }) => {\r\n let optionClass = '';\r\n switch (record?.status) {\r\n case 'ACTIVE':\r\n case 'A':\r\n optionClass = classes.greenText;\r\n break;\r\n case 'INVITED':\r\n case 'INACTIVE':\r\n case 'PENDING':\r\n case 'OFFLINE':\r\n case 'P':\r\n optionClass = classes.orangeText;\r\n break;\r\n case 'SUSPENDED':\r\n case 'S':\r\n optionClass = classes.redText;\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return (\r\n \r\n {capitalize(record.status)}\r\n \r\n );\r\n});\r\n\r\nconst ShowRelatedDocuments = props => {\r\n const { id, classes, record } = props;\r\n const { loading, data } = useQueryWithStore({\r\n type: 'getManyReference',\r\n resource: 'resourceuploaddocuments',\r\n payload: {\r\n target: 'resourceUploadId',\r\n id: id,\r\n pagination: { page: 0, perPage: 10000 },\r\n sort: {}\r\n }\r\n });\r\n\r\n if (loading && !data) {\r\n return (\r\n
    \r\n \r\n {'Loading documents'}\r\n
    \r\n );\r\n }\r\n const documentsFilteredByStatus = data.filter(\r\n document =>\r\n document.matchingStatus !== 'INACTIVE_INVESTOR' &&\r\n document.matchingStatus !== 'MISMATCH'\r\n );\r\n\r\n const tableHeadCells = [\r\n { id: '' },\r\n { id: 'Document Title' },\r\n { id: 'Category Name' },\r\n { id: 'Fund Name' },\r\n { id: 'Investor Name' },\r\n { id: 'Document Status' }\r\n ];\r\n\r\n const EnhancedTableHead = () => {\r\n return (\r\n \r\n \r\n {tableHeadCells.map(headCell => (\r\n {headCell.id}\r\n ))}\r\n \r\n \r\n );\r\n };\r\n if (documentsFilteredByStatus.length === 0) {\r\n return (\r\n
    \r\n {record.profileData.uploadType === 'BULK'\r\n ? 'There are no Documents to be displayed. Please complete splitting of the batch.'\r\n : 'There are no Documents to be displayed. Please assign the batch to Investors.'}\r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n Batch Documents\r\n \r\n \r\n \r\n {documentsFilteredByStatus?.map((doc, index) => {\r\n return (\r\n \r\n {index + 1}\r\n {doc.documentTitle}\r\n {doc.categoryName}\r\n {doc.fundName}\r\n \r\n {record.allInvestors ? 'All Investors' : doc.investorName}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n};\r\nconst useStyles = makeStyles({\r\n root: {\r\n marginRight: 'auto'\r\n },\r\n dateFilterStyle: {\r\n display: 'flex',\r\n marginBottom: '4px'\r\n },\r\n dateInputStyle: { width: '145px', marginRight: '5px' },\r\n dateRangeSeparator: {\r\n marginTop: '25px',\r\n marginRight: '5px',\r\n color: '#757575'\r\n },\r\n autocompleteSuggestions: {\r\n zIndex: 3010,\r\n backgroundColor: '#ffffff'\r\n },\r\n progress: {\r\n position: 'absolute',\r\n top: '55%',\r\n left: '55%'\r\n },\r\n batchTitleFilterStyle: {\r\n minWidth: '200px'\r\n },\r\n compressedFilterStyle: {\r\n width: '140px',\r\n minWidth: '140px'\r\n },\r\n fundLabel: {\r\n lineHeight: '30px',\r\n height: '30px'\r\n },\r\n fundsTableRow: {\r\n // This classe should be removed once the services return the list of funds visible by the user\r\n height: 0\r\n },\r\n fundsTableCell: {\r\n // This classe should be removed once the services return the list of funds visible by the user\r\n borderBottom: 0\r\n },\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block'\r\n },\r\n loading: {\r\n justifyContent: 'center',\r\n display: 'flex',\r\n padding: '16px 16px 10px 16px',\r\n flexDirection: 'column',\r\n alignItems: 'center'\r\n },\r\n noDataWrapper: {\r\n justifyContent: 'center',\r\n display: 'flex',\r\n padding: '16px 16px 10px 16px',\r\n flexDirection: 'column',\r\n alignItems: 'left'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst FundField = ({ record, classes, ...rest }) => {\r\n const fundIds = get(record, 'fundIds', []);\r\n if (fundIds.length > 1) {\r\n const getFundsList = () => {\r\n return fundIds.map((fundId, index) => (\r\n \r\n \r\n \r\n ));\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (fundIds.length === 1) {\r\n if (fundIds[0] === '*') {\r\n return All Funds;\r\n }\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n return DocumentFundField(rest);\r\n};\r\n\r\n/**Display the fund id from the derived info if there is no fund id at the batch level\r\nin the case of multiple funds display a message on the popup as the derived fund id does not contains ids*/\r\nconst DocumentFundField = props => {\r\n const derivedInfo = get(props.record, 'derivedInfo', {});\r\n\r\n if (derivedInfo.derivedFundId === 'MULTIPLE') {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nconst InvestorCountField = () => {\r\n return (\r\n \r\n \r\n record\r\n ? `${record.readInvestorsCount}/${record.totalInvestorsCount}\r\n (${\r\n record.totalInvestorsCount === 0 ||\r\n record.readInvestorsCount === 0\r\n ? 0\r\n : Number.isInteger(\r\n (record.readInvestorsCount * 100) /\r\n record.totalInvestorsCount\r\n )\r\n ? (record.readInvestorsCount * 100) / record.totalInvestorsCount\r\n : (\r\n (record.readInvestorsCount * 100) /\r\n record.totalInvestorsCount\r\n ).toFixed(2)\r\n }%)`\r\n : ''\r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nconst DocumentFilters = props => {\r\n const { userProfile = {}, dateFilter, ...rest } = props;\r\n const classes = useStyles();\r\n const userId = userProfile.userId;\r\n\r\n // manually remove documentDateFilter elements (fromDocumentDate and toDocumentDate)\r\n if (\r\n props.displayedFilters &&\r\n !props.displayedFilters.documentDateFilter &&\r\n props.setFilters &&\r\n (props.filterValues.fromDocumentDate || props.filterValues.toDocumentDate)\r\n ) {\r\n props.setFilters({\r\n ...props.filterValues,\r\n fromDocumentDate: undefined,\r\n toDocumentDate: undefined\r\n });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n value.trim().length >= 1 //We display the list once we have at least one char inputted\r\n }\r\n filterToQuery={searchText =>\r\n searchText\r\n ? {\r\n name: '*' + searchText + '*'\r\n }\r\n : null\r\n }\r\n >\r\n \r\n `autocomplete-input-menu-item-fund-name-${itemIndex}`\r\n }\r\n />\r\n \r\n\r\n value.trim().length >= 1 //We display the list once we have at least one char inputted\r\n }\r\n filterToQuery={searchText =>\r\n searchText\r\n ? {\r\n name: '*' + searchText + '*'\r\n }\r\n : null\r\n }\r\n >\r\n \r\n `autocomplete-input-menu-item-investor-name-${itemIndex}`\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n `autocomplete-input-menu-item-category-name-${itemIndex}`\r\n }\r\n />\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n );\r\n};\r\n\r\nconst DocumentsTitle = props => {\r\n const { loading } = useListContext(props);\r\n const { setshowGridLoader, hasCreatePermission } = props;\r\n useEffect(() => setshowGridLoader(loading), [setshowGridLoader, loading]);\r\n\r\n return (\r\n }\r\n hasCreatePermission={hasCreatePermission}\r\n />\r\n );\r\n};\r\n\r\nconst ResourceUploadList = props => {\r\n const classes = useStyles();\r\n const notifyServerError = useNotifyServerError();\r\n const refresh = useRefresh();\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n hasReadPermission,\r\n permissions = [],\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n const [showManageDocumentsDialog, setOpen] = useState(false);\r\n const [selectedBatchesIds, setSelected] = useState([]);\r\n const [batchForEdit, setSelectedBatch] = useState({});\r\n const [showLoader, setShowLoader] = useState(false);\r\n const [showGridLoader, setshowGridLoader] = useState(false);\r\n const [dateFilter, setDateFilter] = useState('6_month');\r\n const [isDateFilterLoaded, setIsDateFilterLoaded] = useState(false);\r\n const [categories, setCategories] = useState([]);\r\n\r\n const hasApprovePermission = useMemo(() => {\r\n return permissions.includes('AUTH_APPROVE_RESOURCE_UPLOAD');\r\n }, [permissions]);\r\n\r\n const getBatchWithDocuments = async batchId => {\r\n try {\r\n const batch = await ResourceUploadApi.getBatchWithDocuments(batchId);\r\n return batch;\r\n } catch (e) {\r\n setShowLoader(false);\r\n notifyServerError(e);\r\n }\r\n };\r\n\r\n const getBatchLookups = async () => {\r\n try {\r\n let securities = dataProvider('GET_LIST', 'documentsecurities', {\r\n pagination: { perPage: -1 }\r\n });\r\n let subcategories = dataProvider('GET_LIST', 'subcategories', {\r\n pagination: { perPage: -1 },\r\n sort: { field: 'name', order: 'ASC' },\r\n filter: { status: 'ACTIVE' }\r\n });\r\n let watermarks = dataProvider('GET_LIST', 'documentwatermarks', {\r\n pagination: { perPage: -1 },\r\n sort: { field: 'profileName', order: 'ASC' }\r\n });\r\n let categories = dataProvider('GET_LIST', 'categories', {\r\n pagination: { perPage: -1 },\r\n sort: { field: 'name', order: 'ASC' },\r\n filter: { subType: 'REPORTING', status: 'ACTIVE' }\r\n });\r\n\r\n [securities, subcategories, watermarks, categories] = [\r\n await securities,\r\n await subcategories,\r\n await watermarks,\r\n await categories\r\n ];\r\n\r\n return {\r\n allSubcategories: subcategories.data,\r\n allWatermarks: watermarks.data,\r\n allSecurities: securities.data,\r\n allCategories: categories.data\r\n };\r\n } catch (error) {\r\n setShowLoader(false);\r\n notifyServerError(error);\r\n }\r\n };\r\n\r\n const handleDialogClose = () => {\r\n setOpen(false);\r\n refresh();\r\n };\r\n const handleOpen = async selectedId => {\r\n if (showLoader) return;\r\n setShowLoader(true);\r\n setSelected(selectedId);\r\n let batchForEdit = getBatchWithDocuments(selectedId);\r\n let batchLookups = getBatchLookups();\r\n [batchForEdit, batchLookups] = [await batchForEdit, await batchLookups];\r\n if (batchForEdit && batchForEdit.batch && batchLookups) {\r\n batchForEdit.lookups = batchLookups;\r\n setSelectedBatch(batchForEdit);\r\n setShowLoader(false);\r\n setOpen(true);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const fetchDocMngtDefaultDateValue = async () => {\r\n setIsDateFilterLoaded(false);\r\n TenantConfigurationApi.get(\r\n 'Document_management_default_upload_date_filter'\r\n )\r\n .then(response => {\r\n if (response.pageData[0].value) {\r\n const entry = DateRangeChoices.filter(\r\n item =>\r\n item.name.indexOf(response.pageData[0].value.trim()) !== -1\r\n );\r\n if (entry.length === 1) {\r\n setDateFilter(entry[0].id);\r\n }\r\n }\r\n setIsDateFilterLoaded(true);\r\n })\r\n .catch(error => notifyServerError(error, null));\r\n };\r\n const getCategories = async () => {\r\n const categoriesGet = dataProvider('GET_LIST', 'categories', {\r\n pagination: { perPage: -1 },\r\n sort: { field: 'name', order: 'ASC' },\r\n filter: { subType: 'REPORTING', status: 'ACTIVE' }\r\n });\r\n const request = await categoriesGet;\r\n var data = request.data;\r\n data.forEach(v => (v.id = v.id.toString()));\r\n data.push({\r\n id: 'MULTIPLE',\r\n name: 'Multiple Categories'\r\n });\r\n setCategories(data);\r\n };\r\n fetchDocMngtDefaultDateValue();\r\n getCategories();\r\n }, [notifyServerError, setDateFilter, setIsDateFilterLoaded, setCategories]);\r\n\r\n const uploadDateFilterDefaultRange = ConvertRangeToStartEndDate(dateFilter);\r\n\r\n return (\r\n \r\n {isDateFilterLoaded && (\r\n \r\n }\r\n filterDefaultValues={{\r\n batchStatus: 'PENDING',\r\n uploadDateFilter: dateFilter,\r\n fromUploadDate: uploadDateFilterDefaultRange.startString,\r\n toUploadDate: uploadDateFilterDefaultRange.endString\r\n }}\r\n title={\r\n \r\n }\r\n exporter={false}\r\n perPage={20}\r\n pagination={}\r\n bulkActionButtons={\r\n (hasDeletePermission ||\r\n hasEditPermission ||\r\n hasApprovePermission) && (\r\n \r\n )\r\n }\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n }>\r\n {hasCreatePermission ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `${\r\n record.uploadedByFirstName ? record.uploadedByFirstName : ''\r\n } ${record.uploadedByLastName ? record.uploadedByLastName : ''}`\r\n }\r\n id=\"uploaded-by\"\r\n />\r\n \r\n \r\n \r\n )}\r\n {showManageDocumentsDialog && (\r\n \r\n )}\r\n {(showLoader || showGridLoader) && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ResourceUploadList;\r\n","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nconst useStyles = makeStyles({\r\n tooltip: {\r\n backgroundColor: 'white',\r\n color: 'rgba(0, 0, 0, 0.87)',\r\n border: '1px solid #E0E0E0',\r\n fontSize: 14,\r\n borderRadius: '2px',\r\n maxWidth: '400px',\r\n boxShadow: '0px 2px 2px rgba(0, 0, 0, 0.08)',\r\n fontWeight: 'normal',\r\n margin: '1px 7px'\r\n },\r\n arrow: {\r\n '&::before': {\r\n border: '1px solid #E0E0E0',\r\n borderRadius: '2px'\r\n },\r\n color: 'white',\r\n top: 'inherit !important'\r\n }\r\n});\r\n\r\nexport const PendingIndicatorIcon = ({ style, title = 'unknown' }) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import {\r\n Button,\r\n Checkbox,\r\n CircularProgress,\r\n Grid,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n Typography,\r\n Paper\r\n} from '@material-ui/core/';\r\nimport green from '@material-ui/core/colors/green';\r\nimport orange from '@material-ui/core/colors/orange';\r\nimport red from '@material-ui/core/colors/red';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport { sortBy, camelCase, startCase } from 'lodash';\r\nimport React, { useState, useEffect, useCallback, useMemo } from 'react';\r\nimport { SelectInput, useNotify } from 'react-admin';\r\n\r\nimport DocumentApi from '../../../../core/apis/DocumentApi';\r\nimport dataProvider from '../../../../core/providers/IccUserDataProvider';\r\nimport AutocompleteInput from '../../../../core/components/forked/input/AutocompleteInput';\r\nimport GridPopover from '../../../../core/components/grid/GridPopover';\r\nimport { investorStatus } from '../../../investors/InvestorLookups';\r\nimport { getIcError } from '../../../../core/providers/utils';\r\nimport { useForm } from 'react-final-form';\r\nimport VirtualizedGrid from '../../../../core/components/VirtualizedGrid';\r\nimport { EllipsisInput } from '../../manageBatch/ManageDocumentPropertiesDialog';\r\nimport LightTooltip from '../../../../core/components/LightTooltip';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\nimport { PendingIndicatorIcon } from '../../../../core/themes/icons/PendingIndicator';\r\nimport StatusColorDisplay from '../../../../core/components/StatusColorDisplay';\r\n\r\nconst inputStyle = () => ({\r\n container: {\r\n marginBottom: 0\r\n },\r\n root: {\r\n margin: '0',\r\n '& > div': {\r\n border: '0px !important'\r\n }\r\n },\r\n inputRoot: {\r\n border: 0,\r\n marginTop: '0px !important',\r\n flexWrap: 'inherit',\r\n '&:before': {\r\n borderBottom: 'none !important'\r\n }\r\n },\r\n autocompleteSuggestions: {\r\n zIndex: 1310, // it has to be bigger than dialog zIndex=1300\r\n backgroundColor: '#ffffff'\r\n },\r\n suggestionsPaper: {\r\n maxHeight: '50vh',\r\n height: '33vh'\r\n },\r\n inputPlaceholder: {\r\n '&::placeholder': {\r\n opacity: 1,\r\n color: 'red'\r\n }\r\n },\r\n checkbox: {\r\n padding: '0'\r\n },\r\n checkboxCell: {\r\n width: '24px',\r\n backgroundColor: '#ffffff !important'\r\n },\r\n emptyGridHeaderCell: {\r\n backgroundColor: '#ffffff !important'\r\n }\r\n});\r\n\r\nconst splitTableStyles = {\r\n root: {\r\n margin: '0',\r\n '& > div': {\r\n border: '0px !important'\r\n }\r\n },\r\n gridButton: {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n color: '#2962FF',\r\n marginRight: '16px',\r\n paddingTop: '2px',\r\n '&:hover': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n gridInfoBar: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center',\r\n margin: '0px 0px 2px 0px'\r\n },\r\n infoBarNotMatchedLabel: {\r\n fontSize: 12,\r\n fontWeight: 400,\r\n background: '#D50000',\r\n color: '#FFFFFF',\r\n borderRadius: '2px',\r\n marginRight: '16px',\r\n padding: '3px'\r\n },\r\n infoBarMatchedLabel: {\r\n fontSize: 12,\r\n fontWeight: 400,\r\n background: '#00A645',\r\n color: '#FFFFFF',\r\n borderRadius: '2px',\r\n marginRight: '16px',\r\n padding: '3px'\r\n },\r\n infoBarBatchIdLabel: {\r\n fontSize: 15,\r\n fontWeight: 400\r\n }\r\n};\r\n\r\n//#region Form Validators\r\n\r\nconst validateFund = (value, allValues, props, field) => {\r\n if (!value) {\r\n return 'Required';\r\n }\r\n return undefined;\r\n};\r\nconst validateInvestor = value => {\r\n if (!value) {\r\n return 'Required';\r\n }\r\n return undefined;\r\n};\r\nconst validateTitle = value => {\r\n if (!value) {\r\n return 'Required';\r\n }\r\n return undefined;\r\n};\r\n\r\n//#endregion\r\n\r\n//#region Custom columns\r\n\r\nconst MatchingColumn = ({ record, source }) => {\r\n const statusValue = startCase(camelCase(record[source]));\r\n let colorObject = { color: orange[500] };\r\n if (record[source] === 'MISMATCH') {\r\n colorObject = { color: red[500] };\r\n } else if (\r\n record[source] === 'MATCHED' ||\r\n record[source] === 'MANUALLY_SELECTED'\r\n ) {\r\n colorObject = { color: green[500] };\r\n }\r\n return {statusValue};\r\n};\r\n\r\nconst InvestorColumn = withStyles(inputStyle)(({ ...props }) => {\r\n const {\r\n investors,\r\n investorFunds,\r\n doc,\r\n handleInvestorChange,\r\n classes,\r\n source\r\n } = props;\r\n const allChoices = [...investors];\r\n const optionRenderer = choice => {\r\n return choice ? choice.name : 'Select Investor';\r\n };\r\n\r\n return (\r\n handleInvestorChange(newValue, doc, investorFunds)}\r\n options={{\r\n suggestionsContainerProps: {\r\n className: classes.autocompleteSuggestions\r\n }\r\n }}\r\n id=\"autocomplete-input-investor\"\r\n menuId=\"autocomplete-input-menu-investor\"\r\n getItemId={itemIndex =>\r\n `autocomplete-input-menu-item-investor-${itemIndex}`\r\n }\r\n />\r\n );\r\n});\r\n\r\nconst FundColumn = withStyles(inputStyle)(({ ...props }) => {\r\n const { source, doc, handleFundChange, investorFunds, classes } = props;\r\n const investorFund =\r\n investorFunds.find(obj => obj.investorId === doc.investorId) || {};\r\n const { funds = [] } = investorFund;\r\n const fundChoices = sortBy(funds, 'fundName');\r\n const allChoices = [...fundChoices];\r\n const optionRenderer = choice => {\r\n return choice ? choice.name : 'Select Fund';\r\n };\r\n\r\n const disabled = doc.investorId === '' || doc.investorId === 'Un-Matched';\r\n return (\r\n handleFundChange(newValue, doc)}\r\n autoComplete=\"off\"\r\n classes={{\r\n container: classes.container,\r\n inputRoot: classes.inputRoot,\r\n inputInput: classes.inputPlaceholder\r\n }}\r\n variant=\"standard\"\r\n margin=\"none\"\r\n placeholder={'Select Fund'}\r\n showArrowDown={true}\r\n options={{\r\n disabled: disabled,\r\n suggestionsContainerProps: {\r\n className: classes.autocompleteSuggestions\r\n }\r\n }}\r\n id=\"autocomplete-input-fund\"\r\n menuId=\"autocomplete-input-menu-fund\"\r\n getItemId={itemIndex => `autocomplete-input-menu-item-fund-${itemIndex}`}\r\n />\r\n );\r\n});\r\n\r\n//#endregion\r\n\r\n//empty documents grid component\r\nconst EmptyTableBody = withStyles(inputStyle)(props => {\r\n const {\r\n splitStatus,\r\n handleSplit,\r\n resourceupload,\r\n splitStatusDescription\r\n } = props;\r\n\r\n switch (splitStatus) {\r\n case 'NONE':\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n );\r\n case 'NOT_STARTED':\r\n return (\r\n \r\n \r\n \r\n {resourceupload.batchStatus !== 'A' ? (\r\n \r\n \r\n Start Split\r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n
    \r\n \r\n \r\n );\r\n case 'PROCESSING':\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n Splitting documents in progress...\r\n \r\n \r\n Please wait\r\n \r\n \r\n \r\n \r\n \r\n );\r\n case 'ERROR':\r\n return (\r\n \r\n \r\n \r\n \r\n {splitStatusDescription ? (\r\n \r\n Split Error: {splitStatusDescription}\r\n \r\n ) : (\r\n \r\n Split Error\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n );\r\n default:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n Unknown Split Status\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n});\r\n\r\n//empty grid columns header row\r\nconst EmptyTableHead = withStyles(inputStyle)(({ ...props }) => {\r\n const { classes, columns } = props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {columns\r\n .filter(col => col.id !== 'Selected')\r\n .map((column, index) => (\r\n \r\n {column.id}\r\n \r\n ))}\r\n \r\n \r\n );\r\n});\r\n\r\nconst SplitDocumentTable = withStyles(splitTableStyles)(props => {\r\n const {\r\n classes,\r\n splittedDocuments,\r\n resource,\r\n resourceupload,\r\n handleSplit,\r\n splitStatus,\r\n selectedRows,\r\n fundInvestors,\r\n splitStatusDescription,\r\n splitMethod,\r\n calculateInvestorsWithoutContactsIds,\r\n ...rest\r\n } = props;\r\n\r\n const form = useForm(props);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const { investorWithoutContactsIds } = form.getState().values;\r\n const [unreferencedInvestors, setUnreferencedInvestors] = useState([]);\r\n const [investorWithoutContacts, setInvestorWithoutContacts] = useState([]);\r\n const [investors, setInvestors] = useState([]);\r\n const [investorFunds, setInvestorFunds] = useState([]);\r\n\r\n const unMatchedDocs = useMemo(() => {\r\n return splittedDocuments.filter(obj => obj.matchingStatus === 'MISMATCH');\r\n }, [splittedDocuments]);\r\n\r\n const matchedDocs = useMemo(() => {\r\n return splittedDocuments.filter(obj => obj.matchingStatus !== 'MISMATCH');\r\n }, [splittedDocuments]);\r\n\r\n const visibleDocuments = useMemo(() => {\r\n return splittedDocuments.filter(document => !document.isFilteredOut);\r\n }, [splittedDocuments]);\r\n\r\n /**\r\n * Get the list of splitted document by batchId\r\n */\r\n const getSplittedDocuments = useCallback(\r\n async resourceUploadId => {\r\n try {\r\n const { data } = await dataProvider(\r\n 'GET_LIST',\r\n 'resourceuploaddocuments',\r\n {\r\n pagination: { perPage: -1 },\r\n filter: { resourceUploadId: resourceUploadId }\r\n }\r\n );\r\n return data;\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n },\r\n [notifyServerError]\r\n );\r\n\r\n //effect used to fetch documents from service after completed split,\r\n //re-initialize form so it's pristine after split and to set investors without contacts\r\n useEffect(() => {\r\n if (splitStatus && splitStatus === 'COMPLETED') {\r\n getDocs();\r\n\r\n async function getDocs() {\r\n const docs = await getSplittedDocuments(\r\n resourceupload.resourceUploadId\r\n );\r\n const splittedDocuments = (Array.isArray(docs) && docs) || [];\r\n const { reSplitMethod } = form.getState().values;\r\n form.initialize({\r\n splittedDocuments: splittedDocuments,\r\n selectedFilter: 'SHOW_ALL',\r\n reSplitMethod: reSplitMethod,\r\n investorWithoutContactsIds: []\r\n });\r\n calculateInvestorsWithoutContactsIds(splittedDocuments);\r\n }\r\n }\r\n }, [\r\n splitStatus,\r\n resourceupload,\r\n form,\r\n getSplittedDocuments,\r\n calculateInvestorsWithoutContactsIds\r\n ]);\r\n\r\n //effect used to set fund and investor lookups, investorWithoutContacts and unreferencedInvestors\r\n useEffect(() => {\r\n if (\r\n fundInvestors &&\r\n Array.isArray(fundInvestors) &&\r\n fundInvestors.length > 0\r\n ) {\r\n let investorFunds;\r\n const unsortedInvestors = [];\r\n let unreferencedInvestors = [];\r\n let investorWithoutContacts = [];\r\n investorFunds = fundInvestors.reduce(function(acc, curr) {\r\n const investorFund = acc.find(\r\n obj => obj.investorId === curr.investorId\r\n );\r\n if (\r\n investorFund &&\r\n Array.isArray(investorFund.funds) &&\r\n !investorFund.funds.find(obj => obj.fundId === curr.fundId)\r\n ) {\r\n const index = acc.findIndex(\r\n obj => obj.investorId === curr.investorId\r\n );\r\n acc[index] = {\r\n investorId: curr.investorId,\r\n funds: investorFund.funds.concat({\r\n id: curr.fundId,\r\n name: curr.fundName\r\n })\r\n };\r\n return acc;\r\n } else if (!investorFund) {\r\n unsortedInvestors.push({\r\n id: curr.investorId,\r\n name: curr.investorName,\r\n status: curr.investorStatus,\r\n fundId: curr.fundId,\r\n fundName: curr.fundName,\r\n fundStatus: curr.fundStatus,\r\n relationshipStatus: curr.status\r\n });\r\n return acc.concat({\r\n investorId: curr.investorId,\r\n funds: [{ id: curr.fundId, name: curr.fundName }]\r\n });\r\n }\r\n return acc;\r\n }, []);\r\n const investors = sortBy(unsortedInvestors, 'name', 'asc');\r\n const referencedInvestor = [];\r\n matchedDocs.forEach(doc => {\r\n referencedInvestor.push(doc.investorId);\r\n });\r\n unreferencedInvestors = investors.filter(investor => {\r\n return !referencedInvestor.includes(investor.id);\r\n });\r\n investorWithoutContacts = investors.filter(investor => {\r\n return investorWithoutContactsIds.includes(investor.id);\r\n });\r\n setUnreferencedInvestors(unreferencedInvestors);\r\n setInvestorWithoutContacts(investorWithoutContacts);\r\n setInvestorFunds(investorFunds);\r\n setInvestors(investors);\r\n }\r\n }, [fundInvestors, investorWithoutContactsIds, matchedDocs]);\r\n\r\n /**\r\n * Manually match document\r\n */\r\n const handleMatchDocument = useCallback(\r\n async (doc, changedDoc) => {\r\n let modifiedDoc = {};\r\n try {\r\n modifiedDoc = await DocumentApi.assignDocuments(doc.resourceUploadId, [\r\n changedDoc\r\n ]);\r\n } catch (error) {\r\n const errorMessage = getIcError(error);\r\n if (\r\n errorMessage ===\r\n 'The document batch contains the same investor more than once which is not supported functionality. You will need to remove the multiple instance to move to the next step in the document process.'\r\n ) {\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n undoable: false,\r\n autoHideDuration: 30000,\r\n messageArgs: {\r\n message: errorMessage,\r\n isNewAdminCustomWarning: true\r\n }\r\n });\r\n } else {\r\n notifyServerError(error);\r\n }\r\n }\r\n\r\n if (modifiedDoc && modifiedDoc[0]) {\r\n modifiedDoc[0].selected = false;\r\n modifiedDoc[0].isFilteredOut = false;\r\n modifiedDoc[0].numberOfPages = doc.numberOfPages;\r\n\r\n let changedSplittedDocuments = [...splittedDocuments];\r\n for (var i = changedSplittedDocuments.length - 1; i >= 0; i--) {\r\n if (changedSplittedDocuments[i].id === doc.id) {\r\n changedSplittedDocuments.splice(i, 1, modifiedDoc[0]);\r\n form.change('splittedDocuments', changedSplittedDocuments);\r\n break;\r\n }\r\n }\r\n calculateInvestorsWithoutContactsIds(changedSplittedDocuments);\r\n }\r\n },\r\n [\r\n notify,\r\n form,\r\n splittedDocuments,\r\n calculateInvestorsWithoutContactsIds,\r\n notifyServerError\r\n ]\r\n );\r\n\r\n //handle manually change of fund/investor\r\n const handleMatchChanged = useCallback(\r\n async (newValue, doc, investorFunds) => {\r\n if (!newValue) {\r\n return;\r\n }\r\n if (investorFunds) {\r\n if (doc.fundId === 'MultiFund' || newValue === 'Un-Matched') {\r\n return;\r\n }\r\n // If the already selected fund not associated with the investor then do nothing\r\n const investorFund =\r\n investorFunds.find(obj => obj.investorId === newValue) || {};\r\n const { funds = [] } = investorFund;\r\n if (!funds.find(obj => obj.id === doc.fundId)) {\r\n return;\r\n }\r\n } else if (newValue === 'MultiFund' || doc.investorId === 'Un-Matched') {\r\n return;\r\n }\r\n\r\n const changedDocument = {\r\n id: doc.id,\r\n fundId: investorFunds ? doc.fundId : newValue,\r\n investorId: investorFunds ? newValue : doc.investorId,\r\n documentTitle: doc.documentTitle,\r\n documentDate: doc.documentDate,\r\n documentSecurityId: doc.documentSecurityId,\r\n dueDate: doc.dueDate,\r\n watermarkId: doc.watermarkId === 0 ? null : doc.watermarkId,\r\n categoryId: doc.categoryId,\r\n subcategoryId: doc.subcategoryId\r\n };\r\n\r\n await handleMatchDocument(doc, changedDocument);\r\n },\r\n [handleMatchDocument]\r\n );\r\n\r\n const filterByDocStatus = useCallback((item, selectedFilter) => {\r\n switch (selectedFilter) {\r\n case 'SHOW_ALL':\r\n return true;\r\n case 'NOT_MATCHED':\r\n return item.matchingStatus === 'MISMATCH';\r\n case 'MANUALLY_MATCHED':\r\n return item.matchingStatus === 'MANUALLY_SELECTED';\r\n case 'MATCHED_BY_SYSTEM':\r\n return (\r\n item.matchingStatus !== 'MANUALLY_SELECTED' &&\r\n item.matchingStatus !== 'MISMATCH'\r\n );\r\n case 'MATCHED':\r\n return item.matchingStatus !== 'MISMATCH';\r\n default:\r\n return false;\r\n }\r\n }, []);\r\n\r\n const handleFilterChange = useCallback(\r\n newFilter => {\r\n let changedSplittedDocuments = [...splittedDocuments];\r\n changedSplittedDocuments.forEach(document => {\r\n document.isFilteredOut = !filterByDocStatus(document, newFilter);\r\n });\r\n form.change('splittedDocuments', changedSplittedDocuments);\r\n },\r\n [form, splittedDocuments, filterByDocStatus]\r\n );\r\n\r\n /**\r\n * Handle select all checbox clicked\r\n */\r\n const handleSelectAllClick = useCallback(\r\n event => {\r\n splittedDocuments.forEach((document, index) => {\r\n if (!document.isFilteredOut) {\r\n form.change(\r\n `splittedDocuments[${index}].selected`,\r\n event.target.checked\r\n );\r\n }\r\n });\r\n },\r\n [form, splittedDocuments]\r\n );\r\n\r\n /**\r\n * Handle row checkbox clicked\r\n */\r\n const handleClick = useCallback(\r\n id => {\r\n const index = splittedDocuments.findIndex(document => document.id === id);\r\n if (index >= 0) {\r\n form.change(\r\n `splittedDocuments[${index}].selected`,\r\n !splittedDocuments[index].selected\r\n );\r\n }\r\n },\r\n [form, splittedDocuments]\r\n );\r\n\r\n /**\r\n * Downlaod existing batch and save file locally\r\n * @param {*} document the document object\r\n */\r\n const downloadDocument = useCallback(\r\n async (documentId, fileName) => {\r\n try {\r\n await DocumentApi.downloadDocumentAsFile(documentId, fileName);\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n },\r\n [notifyServerError]\r\n );\r\n\r\n //set order column value if sorting is clicked in underlying grid\r\n const setDocuments = useCallback(\r\n newDocuments => {\r\n let changedSplittedDocuments = [...splittedDocuments];\r\n if (changedSplittedDocuments.length > 0) {\r\n changedSplittedDocuments.forEach((document, index) => {\r\n document.order = newDocuments.findIndex(e => e.id === document.id);\r\n });\r\n }\r\n form.change('splittedDocuments', changedSplittedDocuments);\r\n },\r\n [form, splittedDocuments]\r\n );\r\n\r\n const allColumns = [\r\n {\r\n id: 'Selected',\r\n source: 'isItemSelected',\r\n type: 'checkbox',\r\n sortable: false,\r\n width: 30,\r\n onClick: handleSelectAllClick,\r\n renderer: params => {\r\n const { row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n fontSize: '14px',\r\n background: 'white',\r\n padding: 0\r\n };\r\n const isItemSelected = selectedRows.indexOf(rowVal.id) !== -1;\r\n return (\r\n
    \r\n handleClick(rowVal.id)}\r\n className={classes.gridCheckbox}\r\n />\r\n
    \r\n );\r\n }\r\n },\r\n {\r\n id: 'File Name',\r\n source: 'originalFileName',\r\n sortable: true,\r\n type: 'link',\r\n renderer: params => {\r\n const { row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n fontSize: '14px',\r\n background: 'white',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return (\r\n
    \r\n \r\n downloadDocument(rowVal.id, rowVal.originalFileName)\r\n }\r\n className={classes.gridButton}\r\n >\r\n {rowVal.originalFileName}\r\n \r\n
    \r\n );\r\n }\r\n },\r\n {\r\n id: 'File Size (KB)',\r\n source: 'fileSize',\r\n sortable: true,\r\n type: 'number',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n padding: '5px 8px 6px 8px',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return (\r\n \r\n {rowVal[column.source]}\r\n
    \r\n );\r\n }\r\n },\r\n {\r\n id: 'Investors',\r\n source: 'investorId',\r\n sortable: true,\r\n type: 'lookup',\r\n lookupTextField: 'name',\r\n lookupIdField: 'id',\r\n options: investors,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n const index = splittedDocuments.findIndex(e => e && e.id === rowVal.id);\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n },\r\n {\r\n id: 'Funds',\r\n source: 'fundId',\r\n sortable: true,\r\n type: 'lookup',\r\n lookupTextField: 'fundName',\r\n lookupIdField: 'fundId',\r\n options: fundInvestors,\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n const index = splittedDocuments.findIndex(e => e && e.id === rowVal.id);\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n },\r\n {\r\n id: 'Document Title',\r\n source: 'documentTitle',\r\n sortable: true,\r\n type: 'input',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n fontSize: '14px',\r\n fontWeight: '400'\r\n //borderLeft: '1px solid #E0E0E0'\r\n };\r\n const index = splittedDocuments.findIndex(e => e && e.id === rowVal.id);\r\n return (\r\n \r\n
    \r\n \r\n
    \r\n \r\n );\r\n }\r\n },\r\n {\r\n id: '# of Pages',\r\n source: 'numberOfPages',\r\n sortable: true,\r\n type: 'number',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n padding: '5px 8px 6px 8px',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return (\r\n \r\n {rowVal[column.source]}\r\n \r\n );\r\n }\r\n },\r\n {\r\n id: 'Matching Data',\r\n source: 'matchingData',\r\n sortable: true,\r\n type: 'text',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n padding: '5px 8px 6px 8px',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return (\r\n \r\n {rowVal[column.source]}\r\n \r\n );\r\n }\r\n },\r\n {\r\n id: 'Matching Status',\r\n source: 'matchingStatus',\r\n sortable: true,\r\n type: 'text',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = {\r\n ...row_data.style,\r\n color: '#000000',\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n padding: '5px 8px 6px 8px',\r\n borderTop: row_data.rowIndex === 1 ? 'none' : '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n ];\r\n\r\n //add one row for columns with column names to grid data\r\n const columnRow = allColumns.reduce(\r\n (acc, cur) => ({ ...acc, [cur.source]: cur.id }),\r\n {}\r\n );\r\n let gridData = visibleDocuments.slice();\r\n gridData = sortBy(gridData, 'order', 'asc');\r\n gridData.unshift(columnRow);\r\n\r\n return (\r\n \r\n \r\n {splitStatus === 'COMPLETED' ? (\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n Not Matched: {unMatchedDocs.length}\r\n \r\n \r\n Matched: {matchedDocs.length}\r\n \r\n \r\n \r\n \r\n \r\n ID\r\n Investors\r\n Status\r\n \r\n \r\n \r\n {investorWithoutContacts.map((investor, index) => {\r\n const invStatus = investorStatus.find(\r\n inv => inv.id === investor.status\r\n );\r\n return (\r\n \r\n {investor.id}\r\n {investor.name}\r\n \r\n {invStatus ? invStatus.name : ''}\r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n \r\n }\r\n />\r\n \r\n \r\n \r\n \r\n Investors\r\n Investor ID\r\n Funds\r\n Fund ID\r\n Relationship\r\n \r\n \r\n \r\n {unreferencedInvestors.map((investor, index) => {\r\n return (\r\n \r\n \r\n \r\n {investor.status === 'INACTIVE' && (\r\n \r\n )}\r\n {investor.name}\r\n \r\n \r\n {investor.id}\r\n \r\n \r\n {investor.fundStatus === 'PENDING' && (\r\n \r\n )}\r\n {investor.fundName}\r\n \r\n \r\n {investor.fundId}\r\n \r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n \r\n }\r\n />\r\n \r\n Batch ID: {resourceupload.resourceUploadId}\r\n \r\n
    \r\n
    \r\n {\r\n handleFilterChange(event.target.value);\r\n }}\r\n helperText={false}\r\n />\r\n
    \r\n
    \r\n
    \r\n
    \r\n ) : (\r\n <>\r\n )}\r\n \r\n {splitStatus === 'COMPLETED' ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n});\r\n\r\nexport default SplitDocumentTable;\r\n","import { Button, Grid, Typography } from '@material-ui/core/';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport React, { useState, useCallback, useMemo } from 'react';\r\nimport { ReferenceInput, SelectInput } from 'react-admin';\r\nimport DocumentApi from '../../../../core/apis/DocumentApi';\r\nimport Confirm from '../../../../core/components/forked/layout/Confirm';\r\nimport { useForm } from 'react-final-form';\r\nimport red from '@material-ui/core/colors/red';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\n\r\nconst actionBarStyles = () => ({\r\n selectInput: {\r\n width: 'auto'\r\n },\r\n buttonsContainer: {\r\n marginTop: '16px'\r\n },\r\n button: {\r\n width: '82px',\r\n minHeight: '32px',\r\n height: '30px',\r\n padding: '0px',\r\n marginLeft: '5px',\r\n background: 'white',\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n label: {\r\n minWidth: '60px',\r\n marginRight: '5px'\r\n },\r\n formHelperText: {\r\n display: 'none'\r\n }\r\n});\r\n\r\n//action bar component with split select dropdown and Delete button visible after one or more rows are selected\r\nconst SplitActionBar = withStyles(actionBarStyles)(props => {\r\n const {\r\n resource,\r\n splitStatus,\r\n resourceupload,\r\n selectedRows,\r\n handleSplit,\r\n splittedDocuments,\r\n classes,\r\n calculateInvestorsWithoutContactsIds\r\n } = props;\r\n const [confirmDialogIsOpen, setConfirmDialogIsOpen] = useState(false);\r\n\r\n const form = useForm(props);\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const hasUnMatchedDocs = useMemo(() => {\r\n return (\r\n splittedDocuments.filter(obj => obj.matchingStatus === 'MISMATCH')\r\n .length > 0\r\n );\r\n }, [splittedDocuments]);\r\n\r\n /**\r\n * Delete selected documents\r\n */\r\n const deleteDocuments = useCallback(async () => {\r\n let documentIdsToDelete = [];\r\n splittedDocuments.forEach(document => {\r\n if (document.selected && !document.isFilteredOut) {\r\n documentIdsToDelete.push(document.id);\r\n }\r\n });\r\n if (documentIdsToDelete.length > 0) {\r\n const body = documentIdsToDelete.map(documentId => {\r\n return { documentId: documentId, status: 'DELETED' };\r\n });\r\n\r\n try {\r\n await DocumentApi.deleteDocuments(body);\r\n let changedSplittedDocuments = [...splittedDocuments];\r\n changedSplittedDocuments = changedSplittedDocuments.filter(\r\n doc => !documentIdsToDelete.includes(doc.id)\r\n );\r\n form.change('splittedDocuments', changedSplittedDocuments);\r\n //set investor without contacts ids\r\n calculateInvestorsWithoutContactsIds(changedSplittedDocuments);\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n }\r\n }, [\r\n splittedDocuments,\r\n form,\r\n notifyServerError,\r\n calculateInvestorsWithoutContactsIds\r\n ]);\r\n\r\n return (\r\n \r\n \r\n \r\n Split by :\r\n \r\n \r\n \r\n \r\n \r\n Re-Split\r\n \r\n {hasUnMatchedDocs && (\r\n \r\n Return to the Investor's record and update the matching field to\r\n prevent this mismatch during document split.\r\n \r\n )}\r\n \r\n {selectedRows.length > 0 && (\r\n \r\n setConfirmDialogIsOpen(true)}\r\n >\r\n Delete\r\n \r\n \r\n

    All selected documents will be permanently deleted.

    \r\n \r\n }\r\n onConfirm={() => {\r\n deleteDocuments();\r\n setConfirmDialogIsOpen(false);\r\n }}\r\n onClose={() => {\r\n setConfirmDialogIsOpen(false);\r\n }}\r\n confirm=\"ra.action.confirm\"\r\n />\r\n
    \r\n )}\r\n \r\n );\r\n});\r\n\r\nexport default SplitActionBar;\r\n","import React, {\r\n useState,\r\n useEffect,\r\n useCallback,\r\n useMemo,\r\n useRef\r\n} from 'react';\r\nimport { Loading, Error, useQueryWithStore, useNotify } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport DocumentApi from '../../../../core/apis/DocumentApi';\r\nimport ResourceUploadApi from '../../../../core/apis/ResourceUploadApi';\r\nimport dataProvider from '../../../../core/providers/IccUserDataProvider';\r\nimport EntitlementApi from '../../../../core/apis/EntitlementApi';\r\nimport { getIcError } from '../../../../core/providers/utils';\r\nimport isEqual from 'lodash/isEqual';\r\nimport useInterval from '../../../../core/hooks/UseInterval';\r\nimport SplitDocumentTable from '../SplitStep/SplitStepDocumentTable';\r\nimport SplitActionBar from '../SplitStep/SplitStepActionBar';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../../../core/components/form/CustomSimpleForm';\r\n\r\nconst MAX_COUNTER = 50; // 50 * 5 sec = 4.16 min\r\n\r\n/** Main assign step component */\r\nconst AssignSplitStep = props => {\r\n const {\r\n resourceupload = {},\r\n onFormInit,\r\n resource,\r\n disableActionButtons,\r\n handleResetActionButtons,\r\n onSubmitEnd,\r\n setSplitStatus: setSplitStatusGlobally,\r\n handleResetClosingState\r\n } = props;\r\n const { resourceUploadId, categoryId, profileData = {} } = resourceupload;\r\n const { splitMethodId = '' } = profileData;\r\n\r\n const notifyServerError = useNotifyServerError();\r\n const formRef = useRef();\r\n const [splitStatus, setSplitStatus] = useState('NONE');\r\n const [splitStatusDescription, setSplitStatusDescription] = useState('');\r\n const [counter, setCounter] = useState(0);\r\n const [delay, setDelay] = useState(5000);\r\n const notify = useNotify();\r\n\r\n const maxCounterReached = useMemo(() => {\r\n return counter >= MAX_COUNTER - 1;\r\n }, [counter]);\r\n\r\n //callback used to fetch split status from service\r\n const getSplitStatus = useCallback(async () => {\r\n setCounter(count => count + 1);\r\n try {\r\n const newSplitStatus = await ResourceUploadApi.getSplitStatus(\r\n resourceUploadId\r\n );\r\n if (\r\n (newSplitStatus && newSplitStatus.status !== 'PROCESSING') ||\r\n maxCounterReached\r\n ) {\r\n setDelay(null);\r\n setCounter(0);\r\n }\r\n setSplitStatus(newSplitStatus.status);\r\n if (newSplitStatus.status === 'ERROR') {\r\n setSplitStatusDescription(newSplitStatus.statusInfo);\r\n }\r\n } catch (error) {\r\n setDelay(null);\r\n setSplitStatus('ERROR');\r\n notifyServerError(error);\r\n }\r\n }, [\r\n resourceUploadId,\r\n setSplitStatus,\r\n maxCounterReached,\r\n setCounter,\r\n notifyServerError\r\n ]);\r\n\r\n //calback used to initiate split\r\n const handleSplit = useCallback(\r\n async splitMethod => {\r\n setSplitStatus('PROCESSING');\r\n // Initialize split\r\n try {\r\n await ResourceUploadApi.split(\r\n resourceupload.resourceUploadId,\r\n splitMethod\r\n );\r\n setDelay(5000);\r\n } catch (error) {\r\n const errorMessage = getIcError(error);\r\n setSplitStatus('ERROR');\r\n setSplitStatusDescription(errorMessage);\r\n }\r\n },\r\n [resourceupload, setSplitStatus, setDelay]\r\n );\r\n\r\n //hook used to initiate periodically checking of split status\r\n useInterval(() => {\r\n getSplitStatus();\r\n }, delay);\r\n\r\n //effect used to set split status globally so navigation buttons are properly enabled/disabled\r\n useEffect(() => {\r\n setSplitStatusGlobally(splitStatus);\r\n }, [splitStatus, setSplitStatusGlobally]);\r\n\r\n //hook used to populate fund and investor lookups, investor without contacts and unrefferenced investors\r\n const { loaded, error, loading, data } = useQueryWithStore({\r\n type: 'getManyReference',\r\n resource: 'fundinvestors',\r\n payload: {\r\n target: 'fundId',\r\n id: resourceupload.fundIds,\r\n pagination: { perPage: -1 },\r\n options: { chunk: true }\r\n }\r\n });\r\n\r\n //callback used to setInvestorWithoutContactsIds\r\n const calculateInvestorsWithoutContactsIds = useCallback(\r\n async documents => {\r\n const matchedDocs = documents.filter(\r\n e => e.matchingStatus !== 'MISMATCH'\r\n );\r\n if (matchedDocs.length > 0) {\r\n const referencedInvestors = [];\r\n matchedDocs.forEach(doc => {\r\n referencedInvestors.push(doc.investorId);\r\n });\r\n const roleFilters = matchedDocs.map(matchedDoc => ({\r\n investorId: matchedDoc.investorId,\r\n fundId: matchedDoc.fundId,\r\n userRole: 'REGULAR_CONTACT',\r\n categoryOrSubcategoryId: categoryId\r\n }));\r\n let userAuthorizations = [];\r\n try {\r\n userAuthorizations = await EntitlementApi.getAuthorizationsByRole(\r\n roleFilters\r\n );\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n const investorWithoutContactsIds = referencedInvestors.filter(\r\n investorId => {\r\n return !userAuthorizations.some(authorization => {\r\n return (\r\n authorization.investorId === investorId &&\r\n authorization.users.length > 0\r\n );\r\n });\r\n }\r\n );\r\n formRef.current.change(\r\n 'investorWithoutContactsIds',\r\n investorWithoutContactsIds\r\n );\r\n }\r\n },\r\n [categoryId, formRef, notifyServerError]\r\n );\r\n\r\n //#region Split Step Save Action\r\n\r\n /**\r\n * Link resourceupload to investors (Assign Split) - form submit action\r\n */\r\n const saveInvestors = useCallback(\r\n async values => {\r\n /**\r\n * check if documents is changed from initial\r\n */\r\n const docIsChanged = (document, initialDocuments) => {\r\n const initialDoc = initialDocuments.find(\r\n element => element.id === document.id\r\n );\r\n // compare initial and current document wihout irrelevant fields added for fitlering and selecting in grid\r\n const test = isEqual(\r\n { ...document, selected: undefined, isFilteredOut: undefined },\r\n { ...initialDoc, selected: undefined, isFilteredOut: undefined }\r\n );\r\n return !test;\r\n };\r\n\r\n /**\r\n * get all changed documents\r\n */\r\n const changedDocs = currState => {\r\n const changedDocs = currState.values.splittedDocuments.filter(doc =>\r\n docIsChanged(doc, currState.initialValues.splittedDocuments)\r\n );\r\n return changedDocs;\r\n };\r\n\r\n const splittedDocuments = values.splittedDocuments;\r\n disableActionButtons();\r\n const formState = formRef.current.getState();\r\n let changedDocuments = [];\r\n\r\n // If the form is untouched then do nothing and go to next step.\r\n if (formState.pristine || splittedDocuments.length === 0) {\r\n onSubmitEnd(resourceupload);\r\n return;\r\n } else {\r\n // Since extra fields are added to form and are affecting pristine property of form (only splittedDocuments are relevant)\r\n // adding extra condition to check if documents are changed to prevent calling of update documents\r\n changedDocuments = changedDocs(formState);\r\n if (changedDocuments && changedDocuments.length === 0) {\r\n onSubmitEnd(resourceupload);\r\n return;\r\n }\r\n }\r\n\r\n let documents = [];\r\n\r\n //call update just for changed docs\r\n changedDocuments.forEach(doc => {\r\n if (\r\n doc.fundId !== 'MultiFund' &&\r\n doc.investorId !== 'Un-Matched' &&\r\n doc.matchingStatus !== 'INACTIVE_INVESTOR'\r\n ) {\r\n documents.push({\r\n id: doc.id,\r\n fundId: doc.fundId,\r\n investorId: doc.investorId,\r\n documentTitle: doc.documentTitle,\r\n documentDate: doc.documentDate,\r\n documentSecurityId: doc.documentSecurityId,\r\n dueDate: doc.dueDate,\r\n watermarkId: doc.watermarkId === 0 ? null : doc.watermarkId,\r\n categoryId: doc.categoryId,\r\n subcategoryId: doc.subcategoryId\r\n });\r\n }\r\n });\r\n\r\n if (documents.length > 0) {\r\n try {\r\n // Update individual documents\r\n await DocumentApi.assignDocuments(resourceUploadId, documents);\r\n\r\n // Refresh the batch info after : status could have changed\r\n // Depending on Maker/Checker feature turned ON\r\n const { data } = await dataProvider('GET_ONE', 'resourceuploads', {\r\n id: resourceupload.resourceUploadId\r\n });\r\n\r\n if (onSubmitEnd) {\r\n onSubmitEnd(data);\r\n }\r\n } catch (error) {\r\n handleResetActionButtons();\r\n //reset closing dialog state to false in case submit was called with Save & Close\r\n handleResetClosingState();\r\n const errorMessage = getIcError(error);\r\n if (\r\n errorMessage ===\r\n 'The document batch contains the same investor more than once which is not supported functionality. You will need to remove the multiple instance to move to the next step in the document process.'\r\n ) {\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n undoable: false,\r\n autoHideDuration: 30000,\r\n messageArgs: {\r\n message: errorMessage,\r\n isNewAdminCustomWarning: true\r\n }\r\n });\r\n } else {\r\n notifyServerError(error);\r\n }\r\n }\r\n } else {\r\n onSubmitEnd(resourceupload);\r\n }\r\n },\r\n [\r\n notifyServerError,\r\n resourceUploadId,\r\n resourceupload,\r\n onSubmitEnd,\r\n disableActionButtons,\r\n handleResetActionButtons,\r\n notify,\r\n handleResetClosingState\r\n ]\r\n );\r\n\r\n //#endregion\r\n\r\n if (!loaded || loading) return ;\r\n if (error) return ;\r\n\r\n return (\r\n true}\r\n >\r\n \r\n {formprops => {\r\n formRef.current = formprops.form;\r\n if (onFormInit !== undefined) {\r\n onFormInit(formprops.form);\r\n }\r\n const {\r\n splittedDocuments = [],\r\n reSplitMethod\r\n } = formprops.form.getState().values;\r\n\r\n const selectedRows = splittedDocuments.reduce(\r\n (selectedIds, document) => {\r\n if (document.selected && !document.isFilteredOut) {\r\n selectedIds.push(document.id);\r\n }\r\n return selectedIds;\r\n },\r\n []\r\n );\r\n\r\n return (\r\n \r\n handleSplit(reSplitMethod)}\r\n splitStatus={splitStatus}\r\n selectedRows={selectedRows}\r\n fundInvestors={data}\r\n splitStatusDescription={splitStatusDescription}\r\n setDelay={setDelay}\r\n setSplitStatus={setSplitStatus}\r\n splitMethod={reSplitMethod}\r\n calculateInvestorsWithoutContactsIds={\r\n calculateInvestorsWithoutContactsIds\r\n }\r\n />\r\n handleSplit(reSplitMethod)}\r\n calculateInvestorsWithoutContactsIds={\r\n calculateInvestorsWithoutContactsIds\r\n }\r\n />\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\nexport default AssignSplitStep;\r\n","import React from 'react';\r\nimport FormControl from '@material-ui/core/FormControl';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { Field } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core';\r\n\r\nconst styles = {\r\n root: {\r\n width: 'inherit'\r\n }\r\n};\r\n\r\nclass CheckBoxInput extends React.Component {\r\n onCheckBoxSelectChange = input => {\r\n input.onChange();\r\n this.props.onChange();\r\n };\r\n\r\n render() {\r\n const { label, input, className } = this.props;\r\n let name = input.name;\r\n const { classes, disabled = false } = this.props;\r\n return (\r\n
    \r\n \r\n this.onCheckBoxSelectChange(input)}\r\n type=\"checkbox\"\r\n disabled={disabled}\r\n />\r\n \r\n \r\n {label}\r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst CheckBox = props => ;\r\nexport default withStyles(styles)(CheckBox);\r\n","import { Grid, makeStyles } from '@material-ui/core';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport LinearProgress from '@material-ui/core/LinearProgress';\r\nimport moment from 'moment';\r\nimport React, { useRef } from 'react';\r\nimport {\r\n fetchEnd,\r\n fetchStart,\r\n FormDataConsumer,\r\n ReferenceInput,\r\n required,\r\n SelectInput,\r\n showNotification,\r\n TextInput,\r\n useTranslate\r\n} from 'react-admin';\r\nimport { connect } from 'react-redux';\r\n\r\nimport ResourceUploadApi from '../../../core/apis/ResourceUploadApi';\r\nimport FileField from '../../../core/components/forked/field/FileField';\r\nimport DateInput from '../../../core/components/forked/input/DateInput';\r\nimport FileInput from '../../../core/components/forked/input/FileInput';\r\nimport dataProvider from '../../../core/providers/IccUserDataProvider';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport { FileIcon } from '../../../core/themes/icons/FileIcon';\r\nimport { PdfIcon } from '../../../core/themes/icons/PdfIcon';\r\nimport { WordIcon } from '../../../core/themes/icons/WordIcon';\r\nimport { ExcelIcon } from '../../../core/themes/icons/ExcelIcon';\r\nimport { CompressedIcon } from '../../../core/themes/icons/CompressedIcon';\r\nimport { isValidDate, formatDate } from '../../../core/utils/index';\r\nimport setFieldTouched from 'final-form-set-field-touched';\r\nimport FieldTitleWithListPopover from '../../../core/components/inputs/FieldTitleWithListPopover';\r\nimport { useFormState, useForm, FormSpy } from 'react-final-form';\r\nimport { batchTitleVariables } from '../ResourceUploadLookups';\r\nimport toArray from 'lodash/toArray';\r\nimport AutocompleteInput from '../../../core/components/forked/input/AutocompleteInput';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\nimport CheckBoxInput from '../../../core/components/inputs/CheckBoxInput';\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0',\r\n height: '22px',\r\n padding: '4px',\r\n marginTop: '-4px'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst useStyles = makeStyles({\r\n item: {\r\n padding: '0 8px'\r\n },\r\n inputLabel: {\r\n width: '100%'\r\n },\r\n autocompleteSuggestions: {\r\n zIndex: 3010,\r\n backgroundColor: '#ffffff'\r\n }\r\n});\r\n\r\nconst useFundLevelCheckBoxStyles = makeStyles(theme => ({\r\n checkbox: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n labelStyle: {\r\n color: theme.text.primary,\r\n fontSize: theme.typography.fontSize\r\n },\r\n subLabelStyle: {\r\n display: 'block',\r\n paddingLeft: 25,\r\n color: theme.text.secondary,\r\n fontSize: theme.typography.fontSize\r\n }\r\n}));\r\n\r\n/**\r\n * Downlaod existing batch and save file locally\r\n * @param {*} resourceUploadId batch ID\r\n */\r\nconst downloadResource = async resourceUploadId => {\r\n const response = await ResourceUploadApi.download(resourceUploadId);\r\n const url = window.URL.createObjectURL(response.data);\r\n window.open(url, '_blank', 'noopener,noreferrer');\r\n};\r\n\r\nconst translateWatermarkInputToRecord = v => {\r\n if (v === -1) {\r\n return null;\r\n }\r\n return v;\r\n};\r\n\r\nconst translateWatermarkRecordToInput = v => {\r\n if (v === null) {\r\n return -1;\r\n }\r\n return v;\r\n};\r\n\r\nconst WatermarkSelectInput = props => {\r\n let defaultProfile = {\r\n id: -1,\r\n profileName: 'Default Profile'\r\n };\r\n let customChoices = [];\r\n\r\n customChoices.push(defaultProfile);\r\n customChoices = customChoices.concat(props.choices);\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst getFileIcon = fileType => {\r\n const fileIconStyle = {\r\n width: '24px',\r\n height: '24px',\r\n paddingRight: '8px'\r\n };\r\n\r\n switch (fileType) {\r\n case 'application/pdf':\r\n return ;\r\n case 'application/vnd.openxmlformats-officedocument.wordprocessingml.document':\r\n case 'application/msword':\r\n return ;\r\n case 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet':\r\n case 'application/vnd.ms-excel':\r\n return ;\r\n case 'application/zip':\r\n case 'application/octet-stream':\r\n case 'application/x-zip-compressed':\r\n case 'multipart/x-zip':\r\n return ;\r\n default:\r\n return ;\r\n }\r\n};\r\n\r\nconst FundLevelCheckBox = ({ handleFundLevelDocumentsChanged }) => {\r\n const classes = useFundLevelCheckBoxStyles();\r\n const translate = useTranslate();\r\n\r\n return (\r\n <>\r\n \r\n \r\n {translate('ra.message.fund_level_document')}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Document details\r\n */\r\nconst DetailsSummary = ({\r\n props,\r\n hasSubcategories,\r\n subcategories,\r\n onProfileChange,\r\n onCategoryChange,\r\n hasWatermark,\r\n onSecurityChange,\r\n variant,\r\n formApi,\r\n isFundLevelFlowAvailable,\r\n handleFundLevelDocumentsChanged,\r\n isDocumentTagLoading\r\n}) => {\r\n const profileData = props.resourceupload.profileData;\r\n const watermarkId = profileData ? profileData.watermarkId : null;\r\n const isApiUploadedBatch = props.resourceupload.uploadVia === 'API';\r\n //disable fields for Active batches or uploadedVia API\r\n const isDisabled =\r\n props.resourceupload.batchStatus === 'A' || isApiUploadedBatch;\r\n const classes = useStyles();\r\n const formState = useFormState();\r\n const form = useForm();\r\n const doucumentTitleRef = useRef(null);\r\n\r\n function handleSelectVariableSubject(variable) {\r\n let currentValue = toArray(formState.values.metadata.documentTitle || '');\r\n const cursorIndex = doucumentTitleRef.current.selectionStart || 0;\r\n currentValue.splice(cursorIndex, 0, variable.value);\r\n\r\n form.change('metadata.documentTitle', currentValue.join(''));\r\n }\r\n\r\n return (\r\n \r\n \r\n {!isDisabled && (\r\n \r\n \r\n \r\n )}\r\n \r\n {({ formData, ...rest }) =>\r\n formData &&\r\n !formData.file &&\r\n props.resourceupload.resourceUploadId && (\r\n \r\n \r\n downloadResource(props.resourceupload.resourceUploadId)\r\n }\r\n >\r\n {getFileIcon(props.resourceupload.fileType)}\r\n \r\n {props.resourceupload.fileName || 'Unknown File Name'}\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n \r\n \r\n {\r\n onProfileChange(value, props);\r\n }}\r\n >\r\n \r\n \r\n \r\n {props.bulkMode && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n )\r\n }}\r\n InputLabelProps={{\r\n classes: {\r\n root: classes.inputLabel\r\n }\r\n }}\r\n variant={variant}\r\n disabled={isDisabled}\r\n />\r\n \r\n \r\n {\r\n onSecurityChange(event.target.value);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {hasWatermark ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {\r\n onCategoryChange(value, true);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n {\r\n //set Due Date touched to true so validation error is displayed if any\r\n formApi.mutators.setFieldTouched('metadata.dueDate', true);\r\n }}\r\n />\r\n \r\n \r\n \r\n {({ formData, ...rest }) =>\r\n formData &&\r\n hasSubcategories && (\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {isDocumentTagLoading && (\r\n <>\r\n \r\n \r\n )}\r\n {!props.bulkMode && isFundLevelFlowAvailable ? (\r\n <>\r\n \r\n \r\n ) : null}\r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Forbid 0 as value for document type\r\n * @param {*} value\r\n */\r\nconst validateDocumentType = value => {\r\n if (value === 0) {\r\n return 'Required';\r\n }\r\n};\r\n\r\n/**\r\n * Document details form validation rules\r\n * @param {*} values Form values\r\n * @param resourceupload\r\n * @param bulkMode\r\n * @param hasWatermark\r\n * @param resourceupload\r\n * @param bulkMode\r\n * @param hasWatermark\r\n * @param resourceupload\r\n * @param bulkMode\r\n * @param hasWatermark\r\n * @returns errors object\r\n */\r\nconst validateDocumentDetails = (\r\n values,\r\n resourceupload,\r\n bulkMode,\r\n hasWatermark\r\n) => {\r\n const errors = { metadata: { profileData: {} } };\r\n if (values.metadata.documentDate && values.metadata.dueDate) {\r\n if (\r\n moment(values.metadata.documentDate).startOf('day') >\r\n moment(values.metadata.dueDate).startOf('day')\r\n ) {\r\n errors.metadata.dueDate = 'Due Date must be after Document Date';\r\n }\r\n }\r\n if (hasWatermark && !bulkMode) {\r\n if (\r\n (resourceupload &&\r\n resourceupload.resourceUploadId &&\r\n resourceupload.fileType !== 'application/pdf') ||\r\n (values && values.file && values.file.type !== 'application/pdf')\r\n ) {\r\n errors.metadata.profileData.documentSecurityId =\r\n 'Watermark can not be applied to non-PDF documents';\r\n }\r\n }\r\n return errors;\r\n};\r\n\r\n/**\r\n * Document Details step\r\n */\r\nclass DetailsStep extends React.Component {\r\n formApi;\r\n pristine;\r\n\r\n state = {\r\n hasSubcategories: false,\r\n subcategories: undefined,\r\n uploading: false,\r\n hasWatermark: false\r\n };\r\n\r\n componentDidMount() {\r\n const { resourceupload } = this.props;\r\n resourceupload &&\r\n resourceupload.profileData &&\r\n resourceupload.profileData.categoryId &&\r\n this.onCategoryChange(resourceupload.profileData.categoryId);\r\n resourceupload &&\r\n resourceupload.profileData &&\r\n resourceupload.profileData.watermarkId &&\r\n this.setState({ hasWatermark: true });\r\n resourceupload &&\r\n resourceupload.profileData &&\r\n resourceupload.profileData.documentSecurityId &&\r\n this.onSecurityChange(resourceupload.profileData.documentSecurityId);\r\n }\r\n\r\n onProfileChange = profileId => {\r\n if (profileId) {\r\n const self = this;\r\n fetchStart();\r\n const crudOperation = 'GET_ONE';\r\n dataProvider(crudOperation, 'documentpresets', { id: profileId })\r\n .then(({ data }) => {\r\n if (data) {\r\n // if there is the default document type we should preselect that\r\n // if there is not we should select first from the drop down list\r\n // problem is because we are not supporting ALL TYPES value as on FLEX\r\n // for more info please refer to TFS-140204. This should be changed in\r\n // the future and we should use ALL TYPES as a default value\r\n if (data.documentTypeId && data.documentTypeId !== 0) {\r\n self.formApi.change(\r\n 'metadata.documentTypeId',\r\n data.documentTypeId\r\n );\r\n } else {\r\n // fetch all document types and use first from the result as a default one\r\n this.fetchDocumentTypesAndPreselectFirst(self);\r\n }\r\n this.formApi.batch(() => {\r\n self.formApi.change(\r\n 'metadata.documentTitle',\r\n data.resourceUploadTitle\r\n );\r\n self.formApi.change(\r\n 'metadata.profileData.splitMethodId',\r\n data.splitMethodId\r\n );\r\n self.formApi.change(\r\n 'metadata.profileData.documentSecurityId',\r\n data.documentSecurityId\r\n );\r\n self.formApi.change(\r\n 'metadata.profileData.watermarkId',\r\n data.watermarkProfileId\r\n );\r\n self.formApi.change(\r\n 'metadata.profileData.categoryId',\r\n data.categoryId\r\n );\r\n self.formApi.change(\r\n 'metadata.profileData.subcategoryId',\r\n data.subCategoryId\r\n );\r\n });\r\n self.formApi.mutators.setFieldTouched(\r\n 'metadata.profileData.documentSecurityId',\r\n true\r\n );\r\n this.onCategoryChange(data.categoryId);\r\n // onSecurityChange won't be called until onProfileChange is finished, so we have to parse and manipulate watermarkId again\r\n this.onSecurityChange(\r\n data.documentSecurityId,\r\n data.watermarkProfileId\r\n );\r\n }\r\n })\r\n .catch(error => {\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n fetchEnd();\r\n });\r\n }\r\n };\r\n\r\n fetchDocumentTypesAndPreselectFirst = self => {\r\n const crudOperation = 'GET_LIST';\r\n dataProvider(crudOperation, 'documenttypes', {\r\n pagination: { page: 1, perPage: -1 },\r\n sort: { field: 'description', order: 'ASC' }\r\n })\r\n .then(({ data }) => {\r\n if (data && data[0]) {\r\n self.formApi.change('metadata.documentTypeId', data[0].id);\r\n }\r\n })\r\n .catch(error => {\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n fetchEnd();\r\n });\r\n };\r\n\r\n onCategoryChange = (categoryId, clearSubcategorry = false) => {\r\n if (clearSubcategorry) {\r\n this.formApi.change('metadata.profileData.subcategoryId', null);\r\n }\r\n const crudOperation = 'GET_LIST';\r\n dataProvider(crudOperation, 'subcategories', {\r\n pagination: { page: 1, perPage: -1 },\r\n sort: { field: 'name', order: 'DESC' },\r\n filter: { categoryId: categoryId, status: 'ACTIVE' }\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n var subCats = data.filter(subcat => subcat.name !== '');\r\n if (subCats.length > 0) {\r\n this.setState(() => {\r\n return {\r\n hasSubcategories: true,\r\n subcategories: subCats\r\n };\r\n });\r\n } else {\r\n this.setState(() => {\r\n return {\r\n hasSubcategories: false,\r\n subcategories: undefined\r\n };\r\n });\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n fetchEnd();\r\n });\r\n };\r\n\r\n /**\r\n * Return upload percentage\r\n */\r\n uploadPercent = () => {\r\n const { uploadCurrent, uploadTotal } = this.state;\r\n if (!isNaN(uploadCurrent) && !isNaN(uploadTotal)) {\r\n return 100 * (uploadCurrent / uploadTotal);\r\n }\r\n return 0;\r\n };\r\n\r\n onSecurityChange = (securityId, watermarkId) => {\r\n fetchStart();\r\n const crudOperation = 'GET_ONE';\r\n dataProvider(crudOperation, 'documentsecurities', { id: securityId })\r\n .then(({ data }) => {\r\n if (data && data.applyWatermark) {\r\n this.setState(() => {\r\n return {\r\n hasWatermark: true\r\n };\r\n });\r\n // if we parse watermarkId, it means that a doc preset with a watermark is being loaded\r\n watermarkId &&\r\n this.formApi.change(\r\n 'metadata.profileData.watermarkId',\r\n watermarkId\r\n );\r\n } else {\r\n this.formApi.change('metadata.profileData.watermarkId', null);\r\n this.setState(() => {\r\n return {\r\n hasWatermark: false\r\n };\r\n });\r\n }\r\n })\r\n .catch(error => {\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n fetchEnd();\r\n });\r\n };\r\n\r\n render() {\r\n const { hasSubcategories, subcategories, hasWatermark } = this.state;\r\n const {\r\n resourceupload,\r\n bulkMode,\r\n onFormInit,\r\n variant,\r\n isFundLevelFlowAvailable,\r\n handleFundLevelDocumentsChanged,\r\n fundLevelDocument,\r\n isDocumentTagLoading\r\n } = this.props;\r\n\r\n return (\r\n <>\r\n \r\n validateDocumentDetails(\r\n values,\r\n resourceupload,\r\n bulkMode,\r\n hasWatermark\r\n )\r\n }\r\n //in case state is changed prevent resetting values to initialValues\r\n //for example if batch had subcategory and we change category with no subcategories\r\n //when we submit form subcateogry is filled with initial value, same for watermark\r\n initialValuesEqual={() => true}\r\n >\r\n \r\n {formprops => {\r\n // Store current form API object\r\n if (this.formApi === undefined && onFormInit !== undefined) {\r\n onFormInit(formprops.form);\r\n }\r\n this.formApi = formprops.form;\r\n this.pristine = formprops.pristine;\r\n\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Upload document using resourceupload API\r\n */\r\n uploadDocument = async values => {\r\n var self = this;\r\n\r\n const {\r\n resourceupload,\r\n onSubmitEnd,\r\n handleResetActionButtons,\r\n disableActionButtons,\r\n handleUploadChange,\r\n fundLevelDocument\r\n } = self.props;\r\n disableActionButtons();\r\n // If the form is untouched then do nothing and go to next step\r\n if (this.pristine) {\r\n onSubmitEnd(resourceupload);\r\n return;\r\n }\r\n\r\n try {\r\n // Multi-part form data\r\n const formData = new FormData();\r\n let uploadedResourceupload;\r\n\r\n if (resourceupload.resourceUploadId) {\r\n // UPDATE resourceupload\r\n formData.append('resourceUploadId', resourceupload.resourceUploadId);\r\n if (values.file) {\r\n this.setState({ uploading: true });\r\n formData.append('file', values.file.rawFile, values.file.title);\r\n }\r\n formData.append(\r\n 'metadata',\r\n JSON.stringify({\r\n ...values.metadata,\r\n fileName: values.file ? values.file.title : resourceupload.fileName,\r\n year: moment(values.metadata.documentDate).year(),\r\n quarter: moment(values.metadata.documentDate).quarter(),\r\n fileType: values.file && values.file.rawFile.type,\r\n fundIds: resourceupload.fundIds, // when update get fundIds and fundFamilyId from already existing resourceupload\r\n fundFamilyId: resourceupload.fundFamilyId,\r\n allInvestors: fundLevelDocument\r\n })\r\n );\r\n\r\n uploadedResourceupload = await ResourceUploadApi.updateResourceUpload(\r\n formData,\r\n (loaded, total) => {\r\n this.setState({ uploadCurrent: loaded, uploadTotal: total });\r\n }\r\n );\r\n //set uploadChanged in resourceUpload level state if file or document profile is changed and there is no investors step\r\n //if this is true on Funds Step submit new resourceFundInvestors will be created\r\n if (\r\n (values.file && resourceupload.allInvestors) ||\r\n resourceupload.documentProfileId !==\r\n uploadedResourceupload.documentProfileId\r\n ) {\r\n handleUploadChange(true);\r\n }\r\n } else {\r\n this.setState({ uploading: true });\r\n\r\n // CREATE resourceupload\r\n formData.append('file', values.file.rawFile, values.file.title);\r\n formData.append(\r\n 'metadata',\r\n JSON.stringify({\r\n ...values.metadata,\r\n fileName: values.file.title,\r\n year: moment(values.metadata.documentDate).year(),\r\n quarter: moment(values.metadata.documentDate).quarter(),\r\n fileType: values.file.rawFile.type,\r\n allInvestors: fundLevelDocument\r\n })\r\n );\r\n uploadedResourceupload = await ResourceUploadApi.upload(\r\n formData,\r\n (loaded, total) => {\r\n this.setState({ uploadCurrent: loaded, uploadTotal: total });\r\n }\r\n );\r\n }\r\n\r\n if (onSubmitEnd) {\r\n onSubmitEnd(uploadedResourceupload);\r\n }\r\n } catch (error) {\r\n handleResetActionButtons();\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n } finally {\r\n this.setState({ uploading: false });\r\n }\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n showNotification\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(DetailsStep);\r\n","const doubleListStyles = () => ({\r\n paper: {\r\n backgroundColor: '#FFFFFF',\r\n overflow: 'auto',\r\n height: 'calc(100vh - 100px)',\r\n '&::WebkitScrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::WebkitScrollbarTrack': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::WebkitScrollbarThumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::WebkitScrollbarThumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n itemId: {\r\n fontSize: '12px',\r\n color: '#9E9E9E',\r\n lineHeight: '16px'\r\n },\r\n item: {\r\n paddingTop: '1px',\r\n paddingBottom: '1px',\r\n paddingLeft: '9px'\r\n },\r\n itemLabel: {\r\n marginTop: '0',\r\n marginBottom: '0'\r\n },\r\n itemLabelText: {\r\n fontSize: '14px',\r\n lineHeight: '20px'\r\n },\r\n tag: {\r\n color: '#212121',\r\n 'font-size': '12px',\r\n 'line-height': '12px',\r\n textDecoration: 'none',\r\n 'box-sizing': 'border-box',\r\n background: '#F5F5F5',\r\n border: '1px solid #E0E0E0',\r\n 'border-radius': '2px',\r\n padding: '0 5px',\r\n marginLeft: '10px'\r\n },\r\n selected: {\r\n paddingTop: '1px',\r\n paddingBottom: '1px',\r\n paddingLeft: '9px',\r\n backgroundColor: '#E3F2FD'\r\n },\r\n button: {\r\n margin: '3px 0',\r\n borderColor: '#E0E0E0',\r\n borderRadius: '2px',\r\n backgroundColor: '#ffffff',\r\n width: '26px',\r\n height: '26px',\r\n minWidth: '26px',\r\n minHeight: '26px',\r\n padding: '0 2px',\r\n '& span': {\r\n fontSize: '10px',\r\n padding: 0\r\n }\r\n },\r\n separateButton: {\r\n margin: '3px 0',\r\n borderColor: '#E0E0E0',\r\n borderRadius: '2px',\r\n backgroundColor: '#ffffff',\r\n width: '26px',\r\n height: '26px',\r\n minWidth: '26px',\r\n minHeight: '26px',\r\n padding: '0 2px',\r\n '& span': {\r\n fontSize: '10px',\r\n padding: 0\r\n },\r\n marginBottom: '20px'\r\n },\r\n groupChevron: {\r\n fontWeight: '900',\r\n fontSize: '10px',\r\n paddingRight: '8px',\r\n paddingTop: '6px',\r\n cursor: 'pointer',\r\n color: '#757575'\r\n },\r\n itemsNumberGrid: {\r\n fontSize: '14px',\r\n textAlign: 'right',\r\n color: '#333333'\r\n },\r\n gridLarge: {\r\n maxWidth: '47.83333%',\r\n flexBasis: '47.83333%',\r\n height: '100%',\r\n display: 'flex',\r\n flexDirection: 'column'\r\n },\r\n gridSmall: {\r\n maxWidth: '4.33333%',\r\n flexBasis: '4.33333%',\r\n height: '100%'\r\n },\r\n list: {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n borderWidth: 0,\r\n height: 'calc(100% - 16px)'\r\n },\r\n fullHeight: {\r\n height: '100%'\r\n },\r\n searchLabel: {\r\n fontWeight: '600',\r\n color: '#424242'\r\n },\r\n searchBox: {\r\n marginTop: '3px'\r\n },\r\n containerClass: {\r\n height: 'inherit'\r\n },\r\n itemGrid: {\r\n flex: '1'\r\n },\r\n autocompleteSuggestions: {\r\n zIndex: 3010,\r\n backgroundColor: '#ffffff'\r\n },\r\n pendingResourceWrapper: {\r\n display: 'flex'\r\n }\r\n});\r\n\r\nexport default doubleListStyles;\r\n","import React, { Component, Fragment } from 'react';\r\nimport {\r\n Button,\r\n Grid,\r\n FormHelperText,\r\n InputLabel,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n Typography,\r\n TextField,\r\n Paper,\r\n withStyles\r\n} from '@material-ui/core';\r\n\r\nimport debounce from 'lodash/debounce';\r\nimport { get, defaultTo, isEmpty } from 'lodash';\r\nimport PropTypes from 'prop-types';\r\nimport { addField, translate, FieldTitle } from 'react-admin';\r\n\r\nimport { ChevronLeftIcon } from '../../themes/icons/ChevronLeftIcon';\r\nimport { ChevronRightIcon } from '../../themes/icons/ChevronRightIcon';\r\nimport { ChevronDownIcon } from '../../themes/icons/ChevronDownIcon';\r\nimport AutocompleteInput from '../forked/input/AutocompleteInput';\r\nimport { PendingIndicatorIcon } from '../../themes/icons/PendingIndicator';\r\nimport TagFilter from './TagFilter';\r\n\r\nimport doubleListStyles from '../../themes/utils/doubleListStyles';\r\n\r\nconst TagField = ({ tags, classes }) => {\r\n if (tags.length > 0) {\r\n return tags.map(tag => {\r\n return (\r\n \r\n {tag.value}\r\n \r\n );\r\n });\r\n }\r\n return null;\r\n};\r\n\r\n/**\r\n * An Input component for a select box, using an array of objects for the options\r\n */\r\nclass DoubleListArrayInput extends Component {\r\n /*\r\n * Using state to bypass a redux-form comparison but which prevents re-rendering\r\n * @see https://github.com/erikras/redux-form/issues/2456\r\n */\r\n state = {\r\n value: this.props.input.value,\r\n leftSelection: [],\r\n rightSelection: [],\r\n groupsCollapsed: {},\r\n selectedTags: [],\r\n fundInvSelectedTags: []\r\n };\r\n\r\n static getDerivedStateFromProps(nextProps, prevState) {\r\n if (nextProps.input.value !== prevState.value) {\r\n return {\r\n value: nextProps.input.value || []\r\n };\r\n }\r\n return null;\r\n }\r\n\r\n componentWillUnmount() {\r\n this.handleItemSearch.cancel();\r\n this.handleSelectedItemSearch.cancel();\r\n }\r\n\r\n render() {\r\n //NOSONAR javascript:S3776\r\n const self = this;\r\n const {\r\n choices,\r\n groups,\r\n filterByGroup,\r\n filterByGroupLabel,\r\n classes,\r\n meta,\r\n optionValue,\r\n optionText,\r\n isRequired,\r\n label,\r\n source,\r\n resource,\r\n additionalActions,\r\n showNotification,\r\n readOnly = false,\r\n allowTagFilter,\r\n tagsList,\r\n fundInvTagsList\r\n } = this.props;\r\n const {\r\n itemSearch = '',\r\n selectedItemSearch = '',\r\n filterOnGroup = -1,\r\n selectedTags = [],\r\n fundInvSelectedTags = []\r\n } = this.state;\r\n\r\n const displayTagFilter = allowTagFilter && tagsList.length > 0;\r\n const displayFundInvTagFilter =\r\n allowTagFilter && fundInvTagsList?.length > 0;\r\n\r\n const groupFilter =\r\n groups && groups.length > 1 ? this.sortChoices(groups) : null;\r\n const allowFilterByGroup = groupFilter && filterByGroup;\r\n\r\n const chevronStyle = {\r\n fontWeight: '900',\r\n color: '#2962FF'\r\n };\r\n\r\n if (typeof meta === 'undefined') {\r\n throw new Error(\r\n \"The SelectInput component wasn't called within a redux-form . Did you decorate it and forget to add the addField prop to your component? See https://marmelab.com/react-admin/Inputs.html#writing-your-own-input-component for details.\"\r\n );\r\n }\r\n const { touched, error } = meta;\r\n\r\n // Value field (customizable in props)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleItemSearch(e.target.value)}\r\n id=\"search-input-left\"\r\n />\r\n \r\n {allowFilterByGroup && (\r\n \r\n this.setState({ filterOnGroup: value })}\r\n variant=\"standard\"\r\n options={{\r\n suggestionsContainerProps: {\r\n className: classes.autocompleteSuggestions\r\n }\r\n }}\r\n />\r\n \r\n )}\r\n {(displayTagFilter || displayFundInvTagFilter) && (\r\n \r\n this.setState({ selectedTags: e })}\r\n fundInvTagsList={fundInvTagsList}\r\n fundInvSelectedTags={fundInvSelectedTags}\r\n onChangeFundInv={e =>\r\n this.setState({ fundInvSelectedTags: e })\r\n }\r\n displayTagFilter={displayTagFilter}\r\n displayFundInvTagFilter={displayFundInvTagFilter}\r\n />\r\n \r\n )}\r\n \r\n\r\n \r\n \r\n {this.group(\r\n choices.filter(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n const text =\r\n typeof optionText === 'function'\r\n ? optionText(choice)\r\n : defaultTo(get(choice, optionText), '');\r\n if (\r\n filterOnGroup &&\r\n filterOnGroup !== -1 &&\r\n filterOnGroup !== choice[this.props.groupBy]\r\n ) {\r\n return false;\r\n }\r\n\r\n if (\r\n !this.compareProvidedTagsToSelectedTags(choice, source) &&\r\n (selectedTags.length > 0 || fundInvSelectedTags.length > 0)\r\n ) {\r\n return false;\r\n }\r\n\r\n return (\r\n !self.state.value.includes(value) &&\r\n text.toLowerCase().includes(itemSearch.toLowerCase())\r\n );\r\n })\r\n ).map(choice => this.renderListItem(choice, true))}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n this.handleSelectedItemSearch(e.target.value)}\r\n id=\"search-input-right\"\r\n />\r\n \r\n \r\n {self.state.value.length > 0 ? (\r\n this.group(\r\n choices.filter(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n const text =\r\n typeof optionText === 'function'\r\n ? optionText(choice)\r\n : defaultTo(get(choice, optionText), '');\r\n return (\r\n self.state.value.includes(value) &&\r\n text\r\n .toLowerCase()\r\n .includes(selectedItemSearch.toLowerCase())\r\n );\r\n })\r\n ).map(choice => this.renderListItem(choice, false))\r\n ) : (\r\n \r\n \r\n \r\n No {label} selected\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n {touched && error ? (\r\n {error}\r\n ) : (\r\n \r\n )}\r\n \r\n {additionalActions ? additionalActions : <>}\r\n \r\n {showNotification ? showNotification : <>}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Create list item from choice\r\n * @param {*} choice\r\n * @param {*} left true if rendering left item, false for rendering right item\r\n * @param inFamily\r\n */\r\n renderListItem(choice, left, inFamily = false) {\r\n let { classes, readOnly = false, label } = this.props;\r\n\r\n if (choice.children !== undefined) {\r\n // Group Entry\r\n return this.renderGroup(choice, left);\r\n }\r\n // Value field (customizable in props)\r\n const { optionValue } = this.props;\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n const selected = left\r\n ? this.state.leftSelection.includes(value)\r\n : this.state.rightSelection.includes(value);\r\n return (\r\n \r\n left\r\n ? this.handleLeftItemSelected(value)\r\n : this.handleRightItemSelected(value)\r\n : undefined\r\n }\r\n onDoubleClick={\r\n !readOnly\r\n ? () =>\r\n left\r\n ? this.handleLeftItemDoubleClick(value)\r\n : this.handleRightItemDoubleClick(value)\r\n : undefined\r\n }\r\n className={selected ? classes.selected : classes.item}\r\n style={inFamily ? { paddingLeft: '25px' } : {}}\r\n >\r\n
    \r\n {label === 'Funds' && choice.status === 'PENDING' && (\r\n \r\n )}\r\n \r\n
    \r\n \r\n );\r\n }\r\n\r\n sortChoices(choices) {\r\n return choices.sort((a, b) => {\r\n return this.getSortField(a)\r\n .replace(/[^\\w\\s]/gi, '')\r\n .localeCompare(this.getSortField(b).replace(/[^\\w\\s]/gi, ''));\r\n });\r\n }\r\n\r\n /**\r\n * Group list items.\r\n * @param {*} choices\r\n */\r\n group(choices) {\r\n const groupsDict = {};\r\n const tree = choices.reduce((list, choice) => {\r\n const groupId = choice[this.props.groupBy];\r\n if (groupId !== undefined && groupId !== null) {\r\n let group = groupsDict[groupId];\r\n if (group === undefined) {\r\n group = {\r\n groupId,\r\n groupLabel: this.getGroupLabel(groupId, choice),\r\n children: [choice]\r\n };\r\n groupsDict[groupId] = group;\r\n list.push(group);\r\n } else {\r\n group.children.push(choice);\r\n }\r\n } else {\r\n list.push(choice);\r\n }\r\n return list;\r\n }, []);\r\n\r\n return this.sortChoices(tree);\r\n }\r\n\r\n getSortField = choice => {\r\n const { optionText } = this.props;\r\n return choice.groupLabel\r\n ? choice.groupLabel\r\n : typeof optionText === 'function'\r\n ? optionText(choice)\r\n : defaultTo(get(choice, optionText), '');\r\n };\r\n\r\n /**\r\n * Render list item label\r\n */\r\n renderListItemLabel = (choice, includeId) => {\r\n const {\r\n classes,\r\n optionText,\r\n optionValue,\r\n translate,\r\n translateChoice,\r\n source,\r\n allowTagFilter\r\n } = this.props;\r\n if (React.isValidElement(optionText))\r\n return React.cloneElement(optionText, {\r\n record: choice\r\n });\r\n const choiceName =\r\n typeof optionText === 'function'\r\n ? optionText(choice)\r\n : defaultTo(get(choice, optionText), '');\r\n\r\n if (includeId) {\r\n const choiceId =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n\r\n // Get tags associated to a fund or an investor (choice)\r\n const tagArray = [];\r\n const tagType = source === 'investortags' ? 'investorTags' : 'fundTags';\r\n Object.entries(choice[tagType] ? choice[tagType] : {}).forEach(\r\n ([key, value]) => {\r\n tagArray.push({ id: `${key}`, value: `${value}` });\r\n }\r\n );\r\n const fundInvTagsArray = [];\r\n Object.entries(\r\n choice['fundInvestorTags'] ? choice['fundInvestorTags'] : {}\r\n ).forEach(([key, value]) => {\r\n fundInvTagsArray.push({ id: `${key}`, value: `${value}` });\r\n });\r\n\r\n return translateChoice ? (\r\n
    \r\n {translate(choiceName, { _: choiceName })}\r\n
    \r\n (ID {choiceId})\r\n {allowTagFilter && (\r\n <>\r\n \r\n {fundInvTagsArray.length > 0 && (\r\n \r\n )}\r\n \r\n )}\r\n
    \r\n
    \r\n ) : (\r\n
    \r\n {choiceName}\r\n
    \r\n (ID {choiceId})\r\n {allowTagFilter && (\r\n <>\r\n \r\n {fundInvTagsArray.length > 0 && (\r\n \r\n )}\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n }\r\n return translateChoice\r\n ? translate(choiceName, { _: choiceName })\r\n : choiceName;\r\n };\r\n\r\n /**\r\n * Render goup of choices\r\n */\r\n renderGroup(choice, left) {\r\n let { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n this.toggleGroup(choice)}\r\n data-testid=\"group\"\r\n id={choice.groupId}\r\n >\r\n
    \r\n {this.state.groupsCollapsed[choice.groupId] ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n \r\n \r\n \r\n {choice.groupLabel}\r\n {this.props.fundInvestorTag ? (\r\n
    \r\n (ID {choice.groupId})\r\n \r\n {this.props.fundInvestorTag.name}\r\n \r\n
    \r\n ) : (\r\n
    (ID {choice.groupId}
    \r\n )}\r\n
    \r\n
    \r\n \r\n }\r\n />\r\n
    \r\n {!this.state.groupsCollapsed[choice.groupId] &&\r\n choice.children.map(child => this.renderListItem(child, left, true))}\r\n
    \r\n );\r\n }\r\n\r\n /**\r\n * Toggle group (expanded / collapsed)\r\n * @param {*} choice\r\n */\r\n toggleGroup = choice => {\r\n let groupsCollapsed = { ...this.state.groupsCollapsed };\r\n groupsCollapsed[choice.groupId] = !groupsCollapsed[choice.groupId];\r\n this.setState({ groupsCollapsed });\r\n };\r\n\r\n /**\r\n * Get label from groups data\r\n * @param {*} groupId\r\n * @param choice\r\n */\r\n getGroupLabel(groupId, choice) {\r\n const { groups } = this.props;\r\n if (groups) {\r\n if (typeof groups === 'function') {\r\n return groups(choice);\r\n } else if (Array.isArray(groups)) {\r\n const idKey = this.props.groupId || 'id';\r\n const group = this.props.groups.find(group => group[idKey] === groupId);\r\n if (group !== undefined && this.props.groupLabel !== undefined) {\r\n return group[this.props.groupLabel];\r\n }\r\n }\r\n }\r\n return groupId;\r\n }\r\n\r\n /**\r\n * Double click on left list item => add to value list\r\n */\r\n handleLeftItemDoubleClick = value => {\r\n let valueList = [...this.state.value];\r\n valueList = valueList.concat(value);\r\n this.setState({ value: valueList });\r\n\r\n this.handleChange(valueList);\r\n };\r\n\r\n /**\r\n * Double click on right list item => remove from value list\r\n */\r\n handleRightItemDoubleClick = value => {\r\n const valueList = [...this.state.value];\r\n valueList.splice(value.indexOf(value), 1);\r\n this.setState({ value: valueList });\r\n\r\n this.handleChange(valueList);\r\n };\r\n\r\n /**\r\n * Click on left list item => add to left selected list\r\n */\r\n handleLeftItemSelected = value => {\r\n const array = this.state.leftSelection;\r\n if (array.includes(value)) {\r\n array.splice(array.indexOf(value), 1);\r\n } else {\r\n array.push(value);\r\n }\r\n this.setState({ leftSelection: array });\r\n };\r\n\r\n /**\r\n * Click on right list item => add to right selected list\r\n */\r\n handleRightItemSelected = value => {\r\n const array = this.state.rightSelection;\r\n if (array.includes(value)) {\r\n array.splice(array.indexOf(value), 1);\r\n } else {\r\n array.push(value);\r\n }\r\n this.setState({ rightSelection: array });\r\n };\r\n\r\n /**\r\n * Click on \">\" middle button\r\n */\r\n handleAddClick = () => {\r\n const selected = this.state.leftSelection;\r\n const value = this.state.value.concat(selected);\r\n this.setState({ leftSelection: [], value });\r\n\r\n this.handleChange(value);\r\n };\r\n\r\n /**\r\n * Click on \">>\" middle button\r\n */\r\n handleAddAllClick = () => {\r\n const { optionValue, optionText, choices, source } = this.props;\r\n const {\r\n itemSearch = '',\r\n value = [],\r\n filterOnGroup,\r\n selectedTags = [],\r\n fundInvSelectedTags = []\r\n } = this.state;\r\n\r\n let filteredChoices = choices;\r\n if (itemSearch || filterOnGroup || selectedTags || fundInvSelectedTags) {\r\n // Add only items filtered by search\r\n filteredChoices = choices.filter(choice => {\r\n const text =\r\n typeof optionText === 'function'\r\n ? optionText(choice)\r\n : defaultTo(get(choice, optionText), '');\r\n\r\n if (value.includes(choice.id)) {\r\n // Value contains the already selected one so any value included in value should not be filtered\r\n return true;\r\n }\r\n\r\n if (\r\n filterOnGroup &&\r\n filterOnGroup !== -1 &&\r\n filterOnGroup !== choice[this.props.groupBy]\r\n ) {\r\n return false;\r\n }\r\n\r\n if (\r\n !this.compareProvidedTagsToSelectedTags(choice, source) &&\r\n (selectedTags.length > 0 || fundInvSelectedTags.length > 0)\r\n ) {\r\n return false;\r\n }\r\n\r\n return text.toLowerCase().includes(itemSearch.toLowerCase());\r\n });\r\n }\r\n\r\n let newValue = filteredChoices.map(choice => {\r\n const value =\r\n typeof optionValue === 'function'\r\n ? optionValue(choice)\r\n : get(choice, optionValue);\r\n return value;\r\n });\r\n if (itemSearch) {\r\n newValue = value.concat(newValue);\r\n }\r\n this.setState({ leftSelection: [], value: newValue });\r\n this.handleChange(newValue);\r\n };\r\n\r\n /**\r\n * Click on \"<\" middle button\r\n */\r\n handleRemoveClick = () => {\r\n let value = this.state.value.slice(0);\r\n const selected = this.state.rightSelection;\r\n selected.forEach(s => {\r\n value.splice(value.indexOf(s), 1);\r\n });\r\n this.setState({ rightSelection: [], value });\r\n\r\n this.handleChange(value);\r\n };\r\n\r\n /**\r\n * Click on \"<<\" middle button\r\n */\r\n handleRemoveAllClick = () => {\r\n const { choices, optionText } = this.props;\r\n const { value, selectedItemSearch } = this.state;\r\n\r\n if (selectedItemSearch && value && value.length > 0) {\r\n const valueList = value.filter(val => {\r\n const choice = choices.filter(choice => choice.id === val)[0];\r\n const text =\r\n typeof optionText === 'function'\r\n ? optionText(choice)\r\n : defaultTo(get(choice, optionText), '');\r\n return !text.toLowerCase().includes(selectedItemSearch.toLowerCase());\r\n });\r\n this.setState({ rightSelection: [], value: valueList });\r\n this.handleChange(valueList);\r\n } else {\r\n this.setState({ rightSelection: [], value: [] });\r\n this.handleChange([]);\r\n }\r\n };\r\n\r\n handleChange = value => {\r\n this.props.input.onChange(value);\r\n // HACK: For some reason, redux-form does not consider this input touched without calling onBlur manually\r\n this.props.input.onBlur(value);\r\n if (this.props.checkJapanFund && this.props.handleJapanFund) {\r\n this.props.checkJapanFund(value, this.props.handleJapanFund);\r\n }\r\n };\r\n\r\n /**\r\n * Check if provided tags contains at least one of the selected tag\r\n */\r\n compareProvidedTagsToSelectedTags = (choice, source) => {\r\n // build an array of tag ids associated to a fund or an investor\r\n const tagIds = [];\r\n let tagType = source === 'investortags' ? 'investorTags' : 'fundTags';\r\n Object.entries(choice[tagType] ? choice[tagType] : {}).forEach(([key]) => {\r\n tagIds.push(parseInt(key));\r\n });\r\n\r\n const fundInvTagIds = [];\r\n if (!isEmpty(this.state.fundInvSelectedTags)) {\r\n Object.entries(\r\n choice['fundInvestorTags'] ? choice['fundInvestorTags'] : {}\r\n ).forEach(([key]) => {\r\n fundInvTagIds.push(parseInt(key));\r\n });\r\n if (isEmpty(this.state.selectedTags)) {\r\n return this.state.fundInvSelectedTags.some(elem =>\r\n fundInvTagIds.includes(elem)\r\n );\r\n } else {\r\n return (\r\n this.state.fundInvSelectedTags.some(elem =>\r\n fundInvTagIds.includes(elem)\r\n ) && this.state.selectedTags.some(elem => tagIds.includes(elem))\r\n );\r\n }\r\n }\r\n\r\n return this.state.selectedTags.some(elem => tagIds.includes(elem));\r\n };\r\n\r\n getSize = (allowFilterByGroup, displayTagFilter, displayFundInvTagFilter) => {\r\n if (allowFilterByGroup && (displayTagFilter || displayFundInvTagFilter))\r\n return 4;\r\n else if (allowFilterByGroup || displayTagFilter || displayFundInvTagFilter)\r\n return 6;\r\n return 12;\r\n };\r\n\r\n /**\r\n * Set the itemSearch state to filter the right side list\r\n */\r\n handleItemSearch = debounce(text => {\r\n this.setState({\r\n itemSearch: text,\r\n leftSelection: []\r\n });\r\n }, 500);\r\n\r\n /**\r\n * Set the selectedItemSearch state to filter the left side list\r\n */\r\n handleSelectedItemSearch = debounce(text => {\r\n this.setState({\r\n selectedItemSearch: text,\r\n rightSelection: []\r\n });\r\n }, 500);\r\n}\r\n\r\nDoubleListArrayInput.propTypes = {\r\n choices: PropTypes.arrayOf(PropTypes.object),\r\n classes: PropTypes.object,\r\n className: PropTypes.string,\r\n input: PropTypes.object,\r\n isRequired: PropTypes.bool,\r\n label: PropTypes.string,\r\n meta: PropTypes.object,\r\n options: PropTypes.object,\r\n optionText: PropTypes.oneOfType([\r\n PropTypes.string,\r\n PropTypes.func,\r\n PropTypes.element\r\n ]).isRequired,\r\n optionValue: PropTypes.oneOfType([PropTypes.string, PropTypes.func])\r\n .isRequired,\r\n disableValue: PropTypes.string,\r\n resource: PropTypes.string,\r\n source: PropTypes.string,\r\n translate: PropTypes.func,\r\n translateChoice: PropTypes.bool,\r\n readOnly: PropTypes.bool\r\n};\r\n\r\nDoubleListArrayInput.defaultProps = {\r\n classes: {},\r\n choices: [],\r\n options: {},\r\n optionText: 'name',\r\n optionValue: 'id',\r\n translateChoice: true,\r\n disableValue: 'disabled',\r\n readOnly: false\r\n};\r\n\r\nexport default addField(\r\n translate(withStyles(doubleListStyles)(DoubleListArrayInput))\r\n);\r\n","import React from 'react';\r\nimport clsx from 'clsx';\r\n\r\nexport const WarningIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import { makeStyles } from '@material-ui/core';\r\n\r\nexport const additionalActionsStyles = () => ({\r\n checkbox: {\r\n marginLeft: '-7px',\r\n minWidth: '45%',\r\n display: 'flex',\r\n alignItems: 'center'\r\n }\r\n});\r\n\r\nexport const FundDoubleListStyles = () => ({\r\n loading: {\r\n alignSelf: 'center'\r\n },\r\n containerClass: {\r\n '& > div:nth-of-type(1)': {\r\n '& > div:last-child': {\r\n marginBottom: '28px'\r\n }\r\n }\r\n }\r\n});\r\n\r\nexport const notificationStyle = () => ({\r\n notificationContainer: {\r\n width: '100%',\r\n backgroundColor: '#FFEFDA',\r\n display: 'flex',\r\n border: '1px solid #FFA500',\r\n padding: '3px'\r\n },\r\n warningIcon: {\r\n padding: '3px 6px 0px 3px',\r\n color: '#FFA500'\r\n }\r\n});\r\n\r\nexport const useClassesCustom = makeStyles({\r\n /* TreeView customization */\r\n rootTreeView: {\r\n '& > li': {\r\n paddingTop: '1px',\r\n paddingBottom: '1px',\r\n paddingLeft: '9px'\r\n }\r\n },\r\n popperAutoComplete: {\r\n // backgroundColor: 'lightgrey'\r\n },\r\n /* TreeItem customization */\r\n rootTreeItem: {\r\n padding: 0\r\n },\r\n contentFF: {\r\n alignItems: 'flex-start',\r\n margin: '4px 0px'\r\n },\r\n content: {\r\n alignItems: 'flex-start',\r\n margin: 0\r\n },\r\n label: {\r\n padding: 0\r\n },\r\n iconContainer: {\r\n margin: 0\r\n },\r\n /* Autocomplete customization */\r\n suggestionsPaperAutoComplete: {\r\n margin: 0,\r\n maxHeight: '50vh',\r\n overflowY: 'auto',\r\n backgroundColor: '#ffffff',\r\n border: '1px solid #E0E0E0',\r\n borderRadius: '2px',\r\n boxShadow:\r\n '0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)'\r\n },\r\n listboxAutoComplete: {\r\n padding: 0\r\n },\r\n optionAutoComplete: {\r\n display: 'block',\r\n fontFamily: '\"Segoe UI\", Arial, sans-serif',\r\n maxWidth: '50vh',\r\n whiteSpace: 'normal',\r\n wordBreak: 'break-all',\r\n fontWeight: 300,\r\n padding: '6px 8px'\r\n }\r\n});\r\n","import withStyles from '@material-ui/core/styles/withStyles';\r\nimport React from 'react';\r\nimport {\r\n Query,\r\n ReferenceArrayInput,\r\n required,\r\n showNotification,\r\n Loading,\r\n Error\r\n} from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport ResourceUploadApi from '../../../../core/apis/ResourceUploadApi';\r\nimport CheckBoxInput from '../../../../core/components/inputs/CheckBoxInput';\r\nimport DoubleListArrayInput from '../../../../core/components/inputs/DoubleListArrayInput';\r\nimport { connect } from 'react-redux';\r\nimport { getIcError } from '../../../../core/providers/utils';\r\nimport { WarningIcon } from '../../../../core/themes/icons/WarningIcon';\r\n\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport dataProvider from '../../../../core/providers/IccUserDataProvider';\r\nimport CustomSimpleForm from '../../../../core/components/form/CustomSimpleForm';\r\nimport {\r\n additionalActionsStyles,\r\n FundDoubleListStyles,\r\n notificationStyle\r\n} from './styles';\r\n\r\nconst validateFunds = value => {\r\n if (value && value.length < 1) {\r\n return 'At least one Fund must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\n// Returns true if:\r\n// - tenant is NeubergerBerman\r\n// - Toranomon Private Equity 1 AIV, L.P. fund (fund with fundId = fi_f_2FA1E30FA6EF436) is among the selected funds\r\nconst isJapanFundSelected = value => {\r\n const isNBGClient = sessionStorage.getItem('tenant') === 'NeubergerBerman';\r\n\r\n return value && value.includes('fi_f_2FA1E30FA6EF436') && isNBGClient;\r\n};\r\n\r\nconst checkJapanFund = (value, handleJapanFund) => {\r\n handleJapanFund(isJapanFundSelected(value));\r\n};\r\n\r\nconst FundStepAdditionalActions = withStyles(additionalActionsStyles)(\r\n ({ classes, readOnly, fundStepAdditionalActionsHandler }) => {\r\n return (\r\n \r\n );\r\n }\r\n);\r\n\r\nexport const NotificationForJapanFund = withStyles(notificationStyle)(\r\n ({ classes }) => {\r\n return (\r\n \r\n \r\n \r\n Please make sure the document has been approved by the Japan team!\r\n \r\n \r\n );\r\n }\r\n);\r\n\r\n/**\r\n * Wrap DoubleListArrayInput with list of fund families ==> groups property\r\n */\r\nconst FundDoubleList = withStyles(FundDoubleListStyles)(\r\n ({\r\n classes,\r\n readOnly,\r\n bulkMode,\r\n tagsList,\r\n choices,\r\n input,\r\n label,\r\n meta,\r\n isFundLevelFlowAvailable,\r\n ...props\r\n }) => (\r\n \r\n {({ data, loading, error }) => {\r\n if (!loading && !error) {\r\n return (\r\n \r\n ) : null\r\n }\r\n // It is requested by Neuberger (ADO-825793, ADO-899178) that when uploading a document, Fund Admins at Neuberger\r\n //needs to be displayed a warning message if they select Toranomon Private Equity 1 AIV, L.P. fund\r\n showNotification={\r\n props.isJapanFundSelected ? : null\r\n }\r\n checkJapanFund={checkJapanFund}\r\n handleJapanFund={props.handleJapanFund}\r\n allowTagFilter={true}\r\n tagsList={tagsList}\r\n source={'fundtags'}\r\n />\r\n );\r\n } else if (loading) {\r\n return ;\r\n } else if (error) {\r\n return ;\r\n }\r\n }}\r\n \r\n )\r\n);\r\n\r\nclass FundLevelTree extends React.Component {\r\n formApi;\r\n pristine;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // Set initial state of isJapanFundSelected calculated based on initial funds selected\r\n this.state = {\r\n tagsList: [],\r\n isJapanFundSelected: isJapanFundSelected(\r\n props.resourceupload.fundIds && props.resourceupload.fundIds[0] !== '*'\r\n ? props.resourceupload.fundIds\r\n : []\r\n )\r\n };\r\n }\r\n\r\n componentDidMount = () => {\r\n dataProvider('GET_LIST', 'fundtags', {\r\n paginated: false,\r\n filter: {\r\n orderBy: 'name',\r\n orderDirection: 'ASC'\r\n }\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n this.setState({\r\n tagsList: data\r\n });\r\n }\r\n })\r\n .catch(error => console.error('Error fetching fund tags :', error));\r\n };\r\n\r\n // Set state for isJapanFundSelected to provided value\r\n handleJapanFund = value => {\r\n this.setState({\r\n isJapanFundSelected: value\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n onFormInit,\r\n formName,\r\n resource,\r\n resourceupload,\r\n bulkMode,\r\n isFundLevelFlowAvailable\r\n } = this.props;\r\n //for batches uploaded via API disabled Funds Step changes if batch is invalid\r\n const stepReadOnly = !!(\r\n resourceupload.uploadVia && resourceupload.uploadVia === 'API'\r\n );\r\n return (\r\n \r\n \r\n {formprops => {\r\n // Store current form API object\r\n if (this.formApi === undefined && onFormInit !== undefined) {\r\n onFormInit(formprops.form);\r\n }\r\n this.formApi = formprops.form;\r\n this.pristine = formprops.pristine;\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n }\r\n\r\n /**\r\n * Update list of funds / fund families with /resourceupload API\r\n */\r\n setFunds = async values => {\r\n const {\r\n resourceupload,\r\n onSubmitEnd,\r\n showNotification,\r\n disableActionButtons,\r\n handleResetActionButtons,\r\n handleUploadChange,\r\n uploadChanged,\r\n fundLevelDocument,\r\n isFundLevelFlowAvailable\r\n } = this.props;\r\n disableActionButtons();\r\n\r\n // If the form is untouched then do nothing and go to next step;\r\n // special case : If form is untouched but file or document profile is changed on Details Step and it's fundLevel upload then\r\n // set again resourcefundInvestors\r\n if (this.pristine) {\r\n if (\r\n (values.metadata.allInvestorsChecked || fundLevelDocument) &&\r\n uploadChanged\r\n ) {\r\n await this.setAllInvestors(\r\n resourceupload,\r\n onSubmitEnd,\r\n showNotification,\r\n handleResetActionButtons,\r\n handleUploadChange\r\n );\r\n } else {\r\n onSubmitEnd(resourceupload);\r\n }\r\n } else {\r\n const metadata = {\r\n documentDate: resourceupload.documentDate,\r\n dueDate: resourceupload.dueDate,\r\n documentTitle: resourceupload.documentTitle,\r\n documentProfileId: resourceupload.documentProfileId,\r\n documentTypeId: resourceupload.documentTypeId,\r\n profileData: resourceupload.profileData,\r\n fileName: resourceupload.fileName,\r\n year: resourceupload.year,\r\n quarter: resourceupload.quarter,\r\n fundFamilyId: null,\r\n fundIds: values.metadata.fundIds,\r\n allInvestors: isFundLevelFlowAvailable\r\n ? resourceupload.allInvestors\r\n : values.metadata.allInvestorsChecked\r\n };\r\n\r\n const formData = new FormData();\r\n formData.append('resourceUploadId', resourceupload.resourceUploadId);\r\n formData.append('metadata', JSON.stringify(metadata));\r\n\r\n try {\r\n const updatedResourceupload = await ResourceUploadApi.updateResourceUpload(\r\n formData\r\n );\r\n if (values.metadata.allInvestorsChecked || fundLevelDocument) {\r\n await this.setAllInvestors(\r\n updatedResourceupload,\r\n onSubmitEnd,\r\n showNotification,\r\n handleResetActionButtons,\r\n handleUploadChange\r\n );\r\n } else if (onSubmitEnd) {\r\n onSubmitEnd(updatedResourceupload);\r\n }\r\n } catch (error) {\r\n handleResetActionButtons();\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n }\r\n };\r\n\r\n setAllInvestors = async (\r\n resourceUpload,\r\n onSubmitEnd,\r\n showNotification,\r\n handleResetActionButtons,\r\n handleUploadChange\r\n ) => {\r\n const resourceUploadId = resourceUpload.resourceUploadId;\r\n const investorId = '*';\r\n const body = resourceUpload.fundIds.map(fundId => {\r\n return { resourceUploadId, fundId, investorId };\r\n });\r\n try {\r\n await ResourceUploadApi.setFundinvestors(body);\r\n handleUploadChange(false);\r\n if (onSubmitEnd) {\r\n onSubmitEnd(resourceUpload);\r\n }\r\n } catch (error) {\r\n handleResetActionButtons();\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n showNotification\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(FundLevelTree);\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * FundInvestorTag API\r\n */\r\nclass FundInvestorTagApi extends ApiBase {\r\n /**\r\n * Check if Fund-Investor Tag name already exists\r\n * @param {*} fundInvestorTagName\r\n */\r\n async checkIfNameExists(fundInvestorTagName) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestortag?name=${fundInvestorTagName}`,\r\n headers: this.getHeaders(),\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return status === 200 || status === 403 || status === 404;\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200 || response.status === 403) {\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n } else {\r\n throw Error('An error has occurred');\r\n }\r\n }\r\n\r\n async create(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestortag`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async update(payload, id) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestortag?id=${id}`,\r\n headers: this.getHeaders(),\r\n method: 'PUT',\r\n data: JSON.stringify(payload)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async getAll() {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestortags`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async validateImportFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestortag/validateimport`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async downloadInvestorTagImportTemplate() {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestortag/import/template`,\r\n method: 'GET',\r\n headers: this.getHeaders(),\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async importInvestorTagFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundinvestortag/importexcel`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new FundInvestorTagApi();\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Fund Tag API\r\n */\r\nclass FundTagApi extends ApiBase {\r\n /**\r\n * Check if Fund Tag Name already exists\r\n * @param {*} fundTagName\r\n */\r\n async checkFundTagNameExists(fundTagName) {\r\n const request = {\r\n url: `${this.API_URL}/fundtag?name=${fundTagName}`,\r\n headers: this.getHeaders(),\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return (status >= 200 && status < 300) || status === 404;\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200) {\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Create Fund Tag\r\n * @param payload { name: fundTagName }\r\n */\r\n async create(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundtag`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Update Fund Tag Name\r\n * @param id\r\n * @param payload { name: fundTagName }\r\n */\r\n async update(id, payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundtag?id=${id}`,\r\n headers: this.getHeaders(),\r\n method: 'PUT',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async getAll() {\r\n const request = {\r\n url: `${this.API_URL}/fundtags?orderBy=name`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n async downloadFundTagImportTemplate() {\r\n const request = {\r\n url: `${this.API_URL}/fundtag/import/template`,\r\n method: 'GET',\r\n headers: this.getHeaders(),\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async validateImportFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundtag/validateimport`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async importFundTagFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/fundtag/importexcel`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new FundTagApi();\r\n","import React from 'react';\r\nimport { Button, Grid } from '@material-ui/core';\r\nimport { ChevronRightIcon } from '../../../../../core/themes/icons/ChevronRightIcon';\r\nimport { ChevronLeftIcon } from '../../../../../core/themes/icons/ChevronLeftIcon';\r\nimport Tooltip from '@material-ui/core/Tooltip';\r\n\r\nconst TreeListButtons = ({\r\n classes,\r\n handleAddClick,\r\n handleAddAllClick,\r\n handleRemoveClick,\r\n handleRemoveAllClick,\r\n stepReadOnly,\r\n selectionError\r\n}) => {\r\n const defaultChevronStyle = {\r\n fontWeight: '900',\r\n color: '#2962FF'\r\n };\r\n\r\n // Conditionally update the color for ChevronRight buttons\r\n const chevronStyleForAdd = {\r\n ...defaultChevronStyle,\r\n color: selectionError ? '#00000040' : defaultChevronStyle.color\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default TreeListButtons;\r\n","import React from 'react';\r\nimport { Grid, TextField } from '@material-ui/core';\r\nimport { Autocomplete } from '@material-ui/lab';\r\nimport TagFilter from '../../../../../core/components/inputs/TagFilter';\r\n\r\nconst TreeListFilters = ({\r\n classesCustom,\r\n searchFundNameQuery,\r\n setSearchFundNameQuery,\r\n fundTags,\r\n selectedFundTags,\r\n onFundTagsChange,\r\n fundFamilies,\r\n selectedFundFamily,\r\n handleFundFamilyChange,\r\n isFundFamilyFilterAvailable,\r\n isFundTagsFilterAvailable,\r\n listSide\r\n}) => {\r\n let colSize = 12;\r\n if (isFundFamilyFilterAvailable && isFundTagsFilterAvailable) {\r\n colSize = 4;\r\n } else if (isFundFamilyFilterAvailable || isFundTagsFilterAvailable) {\r\n colSize = 6;\r\n }\r\n\r\n return (\r\n \r\n \r\n setSearchFundNameQuery(e.target.value)}\r\n id={`search-input-${listSide}`}\r\n placeholder=\"Search Funds...\"\r\n />\r\n \r\n {isFundFamilyFilterAvailable && (\r\n \r\n option.name}\r\n value={selectedFundFamily}\r\n onChange={handleFundFamilyChange}\r\n renderInput={params => (\r\n \r\n )}\r\n classes={{\r\n popper: classesCustom.popperAutoComplete,\r\n paper: classesCustom.suggestionsPaperAutoComplete,\r\n listbox: classesCustom.listboxAutoComplete,\r\n option: classesCustom.optionAutoComplete\r\n }}\r\n />\r\n \r\n )}\r\n {isFundTagsFilterAvailable && (\r\n \r\n null}\r\n displayTagFilter={true}\r\n />\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default TreeListFilters;\r\n","import cloneDeep from 'lodash/cloneDeep';\r\n\r\nexport function findNode(tree, nodeId) {\r\n const result = [];\r\n\r\n const findNode = node => {\r\n if (node.nodeId === nodeId) {\r\n // node found\r\n result.push(node);\r\n return true;\r\n }\r\n if (node.funds) {\r\n for (const fund of node.funds) {\r\n if (!findNode(fund))\r\n for (const fundInvestorTag of fund.fundInvestorTags) {\r\n if (findNode(fundInvestorTag)) return true;\r\n }\r\n }\r\n } else if (node.fundInvestorTags) {\r\n for (const fiTag of node.fundInvestorTags) {\r\n if (findNode(fiTag)) return true;\r\n }\r\n }\r\n return false;\r\n };\r\n\r\n for (const node of tree) {\r\n findNode(node);\r\n }\r\n return result.length > 0 ? result : null;\r\n}\r\n\r\nexport function findParentNodes(tree, selectedNode, keepChildren) {\r\n for (const entry of tree) {\r\n if (entry.fundFamilyNode) {\r\n for (const fund of entry.funds) {\r\n if (fund.nodeId === selectedNode) {\r\n return [\r\n {\r\n ...entry,\r\n funds: [\r\n {\r\n ...fund,\r\n fundInvestorTags: keepChildren ? fund.fundInvestorTags : []\r\n }\r\n ]\r\n }\r\n ];\r\n } else {\r\n for (const fiTag of fund.fundInvestorTags) {\r\n if (fiTag.nodeId === selectedNode) {\r\n return [\r\n {\r\n ...entry,\r\n funds: [\r\n {\r\n ...fund,\r\n fundInvestorTags: [fiTag]\r\n }\r\n ]\r\n }\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n } else if (entry.fundNode) {\r\n if (entry.nodeId === selectedNode) {\r\n return [\r\n {\r\n ...entry,\r\n fundInvestorTags: keepChildren ? entry.fundInvestorTags : []\r\n }\r\n ];\r\n } else {\r\n for (const fiTag of entry.fundInvestorTags) {\r\n if (fiTag.nodeId === selectedNode) {\r\n return [\r\n {\r\n ...entry,\r\n fundInvestorTags: [fiTag]\r\n }\r\n ];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function filterByNodeId(data, nodeId) {\r\n const buildNewArray = (arr, id) => {\r\n const newArr = [];\r\n for (const item of arr) {\r\n if (item.nodeId !== id) {\r\n const newItem = { ...item };\r\n\r\n if (newItem.fundInvestorTags) {\r\n newItem.fundInvestorTags = newItem.fundInvestorTags.filter(\r\n tag => tag.nodeId !== id\r\n );\r\n }\r\n\r\n if (newItem.funds) {\r\n newItem.funds = buildNewArray(newItem.funds, id);\r\n }\r\n\r\n if (\r\n newItem.nodeId !== id ||\r\n (newItem.fundInvestorTags && newItem.fundInvestorTags.length > 0) ||\r\n (newItem.funds && newItem.funds.length > 0)\r\n ) {\r\n newArr.push(newItem);\r\n }\r\n }\r\n }\r\n // removing any Fund Family that does not have funds attached\r\n for (const [index, value] of newArr.entries()) {\r\n if (value.fundFamilyNode && value.funds.length === 0) {\r\n newArr.splice(index, 1);\r\n }\r\n }\r\n return newArr;\r\n };\r\n\r\n return buildNewArray(data, nodeId);\r\n}\r\n\r\nexport function transferFundInvestorTags(treeSelected, leftList) {\r\n if (treeSelected[0].fundFamilyNode) {\r\n // If the fund family of the selected node is present in the left-hand list.\r\n if (\r\n leftList.some(node => node.fundFamilyId === treeSelected[0].fundFamilyId)\r\n ) {\r\n return leftList.map(item => {\r\n const matchingTreeSelectedItem = treeSelected.find(\r\n data2Item => data2Item.fundFamilyId === item.fundFamilyId\r\n );\r\n\r\n if (matchingTreeSelectedItem) {\r\n const updatedFunds = item.funds.map(fund => {\r\n const matchingTreeSelectedFund = matchingTreeSelectedItem.funds.find(\r\n data2Fund => data2Fund.nodeId === fund.nodeId\r\n );\r\n\r\n if (matchingTreeSelectedFund) {\r\n return {\r\n ...fund,\r\n fundInvestorTags: [\r\n ...fund.fundInvestorTags,\r\n ...matchingTreeSelectedFund.fundInvestorTags.filter(\r\n tag =>\r\n !fund.fundInvestorTags.some(\r\n existingTag => existingTag.id === tag.id\r\n )\r\n )\r\n ]\r\n };\r\n }\r\n return fund;\r\n });\r\n\r\n return {\r\n ...item,\r\n funds: updatedFunds\r\n };\r\n }\r\n return item;\r\n });\r\n } else {\r\n return [...leftList, ...treeSelected];\r\n }\r\n }\r\n\r\n // The node doesn't have a fund family\r\n else {\r\n return leftList.map(item => {\r\n if (item.nodeId === treeSelected[0].fundId) {\r\n return {\r\n ...item,\r\n fundInvestorTags: [\r\n ...item.fundInvestorTags,\r\n ...treeSelected[0].fundInvestorTags\r\n ]\r\n };\r\n }\r\n return item;\r\n });\r\n }\r\n}\r\n\r\nexport const filterData = (\r\n node,\r\n searchFundNameQuery,\r\n fundFamilyId,\r\n selectedFundTags\r\n) => {\r\n if (node.fundFamilyNode) {\r\n // Recursively filter the funds withing the fund family node.\r\n const filteredFunds = node.funds\r\n .map(fund =>\r\n filterData(fund, searchFundNameQuery, fundFamilyId, selectedFundTags)\r\n )\r\n .filter(Boolean);\r\n if (filteredFunds.length > 0) {\r\n return {\r\n ...node,\r\n filteredFunds\r\n };\r\n } else return null;\r\n }\r\n\r\n // Filter by fundName\r\n const matchFundName =\r\n !searchFundNameQuery ||\r\n node.fundName.toLowerCase().includes(searchFundNameQuery.toLowerCase());\r\n\r\n // Filter by fundFamilyId\r\n const matchFundFamilyId = !fundFamilyId || node.fundFamilyId === fundFamilyId;\r\n\r\n // Filter by fundTag IDs\r\n const matchFundTags =\r\n selectedFundTags.length === 0 ||\r\n selectedFundTags.some(fundTagId =>\r\n Object.keys(node.fundTags).includes(fundTagId.toString())\r\n );\r\n\r\n return matchFundName && matchFundFamilyId && matchFundTags;\r\n};\r\n\r\nexport const sortList = arr => {\r\n arr.sort((a, b) => {\r\n if (a.fundFamilyNode && b.fundFamilyNode) {\r\n return a.fundFamilyName\r\n .toLowerCase()\r\n .localeCompare(b.fundFamilyName.toLowerCase());\r\n }\r\n if (a.fundNode && b.fundNode) {\r\n return a.fundName.toLowerCase().localeCompare(b.fundName.toLowerCase());\r\n }\r\n if (a.fundFamilyNode && b.fundNode) {\r\n return a.fundFamilyName\r\n .toLowerCase()\r\n .localeCompare(b.fundName.toLowerCase());\r\n }\r\n if (a.fundNode && b.fundFamilyNode) {\r\n return a.fundName\r\n .toLowerCase()\r\n .localeCompare(b.fundFamilyName.toLowerCase());\r\n }\r\n return 0;\r\n });\r\n\r\n arr.forEach(item => {\r\n if (item.fundFamilyNode) {\r\n item.funds.sort((a, b) =>\r\n a.fundName.toLowerCase().localeCompare(b.fundName.toLowerCase())\r\n );\r\n\r\n item.funds.forEach(fund => {\r\n fund.fundInvestorTags.sort((a, b) =>\r\n a.name.toLowerCase().localeCompare(b.name.toLowerCase())\r\n );\r\n });\r\n }\r\n });\r\n\r\n return arr;\r\n};\r\n\r\nexport const mergeArrays = (arr1, arr2) => {\r\n const merged = [];\r\n\r\n const addToMerged = item => {\r\n if (item.fundFamilyId) {\r\n const existingItem = merged.find(\r\n el => el.fundFamilyId === item.fundFamilyId\r\n );\r\n if (existingItem && existingItem.funds) {\r\n existingItem.funds.push(...item.funds);\r\n } else if (existingItem) {\r\n existingItem.funds = [...item.funds];\r\n } else {\r\n merged.push(item);\r\n }\r\n } else {\r\n merged.push(item);\r\n }\r\n };\r\n\r\n arr1.forEach(addToMerged);\r\n arr2.forEach(addToMerged);\r\n\r\n return merged;\r\n};\r\n\r\nexport const findByFundId = (data, fundId) => {\r\n for (const item of data) {\r\n if (item.funds) {\r\n const foundFund = item.funds.find(fund => fund.fundId === fundId);\r\n if (foundFund) {\r\n return foundFund;\r\n }\r\n } else if (item.fundId === fundId) {\r\n return item;\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport const findByFundInvestorTagId = (data, id, fundId) => {\r\n for (const entry of data) {\r\n if (entry.funds) {\r\n for (const fund of entry.funds) {\r\n const fiTagFound = fund.fundInvestorTags.find(fiTag => {\r\n return fiTag.id === id && fiTag.fundId === fundId;\r\n });\r\n if (fiTagFound) return fiTagFound;\r\n }\r\n } else {\r\n if (entry.fundInvestorTags) {\r\n const fiTagFound = entry.fundInvestorTags.find(\r\n fiTag => fiTag.id === id && fiTag.fundId === fundId\r\n );\r\n if (fiTagFound) return fiTagFound;\r\n }\r\n }\r\n }\r\n return null;\r\n};\r\n\r\nexport function removeFundInvestorTags(data) {\r\n return data.map(item => {\r\n if (item.fundNode) {\r\n return { ...item, fundInvestorTags: [] };\r\n } else if (item.fundFamilyNode) {\r\n const updatedFunds = removeFundInvestorTags(item.funds);\r\n return { ...item, funds: updatedFunds };\r\n } else {\r\n return item;\r\n }\r\n });\r\n}\r\n\r\nexport const copyState = (rightList, leftList) => ({\r\n copyRightList: cloneDeep(rightList),\r\n copyLeftList: cloneDeep(leftList)\r\n});\r\n\r\nexport const getSelectedNodes = (selectedNodes, nodeList) =>\r\n selectedNodes ? selectedNodes.flatMap(node => findNode(nodeList, node)) : [];\r\n\r\nexport const handleFundFamilyNode = (\r\n tree,\r\n selectedNodeId,\r\n oppositeList,\r\n currentList\r\n) => {\r\n const matchingIndex = oppositeList.findIndex(\r\n node => node.nodeId === tree.nodeId\r\n );\r\n\r\n if (matchingIndex !== -1) {\r\n oppositeList = oppositeList.map((oppositeListItem, index) =>\r\n index === matchingIndex\r\n ? {\r\n ...oppositeListItem,\r\n funds: oppositeListItem.funds.concat(tree.funds)\r\n }\r\n : oppositeListItem\r\n );\r\n } else {\r\n oppositeList.push(tree);\r\n }\r\n currentList = filterByNodeId(currentList, selectedNodeId);\r\n\r\n return { currentList, oppositeList };\r\n};\r\n\r\nexport const handleFundNode = (nodeParent, leaf, oppositeList, currentList) => {\r\n if (nodeParent[0].fundFamilyNode) {\r\n const matchingFF = oppositeList.find(\r\n node => node.fundFamilyId === nodeParent[0].fundFamilyId\r\n );\r\n\r\n if (matchingFF) {\r\n oppositeList = oppositeList.map(oppositeListItem =>\r\n oppositeListItem.fundFamilyId === matchingFF.fundFamilyId\r\n ? {\r\n ...oppositeListItem,\r\n funds: oppositeListItem.funds.concat(nodeParent[0].funds)\r\n }\r\n : oppositeListItem\r\n );\r\n } else {\r\n oppositeList = [...oppositeList, ...nodeParent];\r\n }\r\n } else {\r\n oppositeList = [...oppositeList, ...nodeParent];\r\n }\r\n\r\n currentList = filterByNodeId(currentList, leaf.nodeId);\r\n return { currentList, oppositeList };\r\n};\r\n\r\nexport const cleanSelectedNodes = selectedNodes => {\r\n return selectedNodes.filter(\r\n selectedNode =>\r\n (selectedNode.fundNode &&\r\n !selectedNodes.some(\r\n node =>\r\n node.fundFamilyNode &&\r\n node.fundFamilyId === selectedNode.fundFamilyId\r\n )) ||\r\n selectedNode.fundFamilyNode ||\r\n selectedNode.fundInvestorTagNode\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Grid, InputLabel } from '@material-ui/core';\r\n\r\nconst TreeTitle = ({ classes, listTitle, listSide, list, data }) => {\r\n const countFundNode = data => {\r\n let count = 0;\r\n data.forEach(node => {\r\n if (node.fundFamilyNode) {\r\n count = count + node.funds.length;\r\n } else count++;\r\n });\r\n\r\n return count;\r\n };\r\n\r\n const numberOfFundsAvailable = countFundNode(data);\r\n const numberOfFundsSelected = countFundNode(list);\r\n\r\n if (listSide === 'left') {\r\n return (\r\n \r\n \r\n {listTitle}\r\n \r\n \r\n );\r\n } else if (listSide === 'right') {\r\n return (\r\n \r\n \r\n \r\n {listTitle}\r\n \r\n \r\n \r\n {`${numberOfFundsSelected} of ${numberOfFundsAvailable}`}\r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default TreeTitle;\r\n","import React from 'react';\r\nimport { FormHelperText } from '@material-ui/core';\r\n\r\nconst TreeError = ({ listSide, formRenderProps }) => {\r\n if (formRenderProps) {\r\n const { errors, modified, submitFailed } = formRenderProps;\r\n if (\r\n listSide === 'right' &&\r\n ((errors &&\r\n modified &&\r\n (modified.fundIds || modified.fundInvestorTagId)) ||\r\n submitFailed)\r\n ) {\r\n return {errors && errors.required};\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n return null;\r\n};\r\n\r\nexport default TreeError;\r\n","import React from 'react';\r\nimport { PendingIndicatorIcon } from '../../../../../core/themes/icons/PendingIndicator';\r\n\r\nconst NodeRenderer = ({\r\n node,\r\n classes,\r\n handleSelect,\r\n handleDoubleClick,\r\n stepReadOnly\r\n}) => {\r\n let content, id;\r\n const isPending = node.fundNode && node.status === 'PENDING';\r\n\r\n if (node.fundFamilyNode) {\r\n content = node.fundFamilyName;\r\n id = node.fundFamilyId;\r\n } else {\r\n content = node.fundName;\r\n id = node.fundId;\r\n }\r\n\r\n return (\r\n {\r\n if (!stepReadOnly) {\r\n handleSelect(node.nodeId);\r\n handleDoubleClick();\r\n }\r\n }}\r\n >\r\n {isPending && (\r\n \r\n )}\r\n {content}\r\n
    \r\n (ID {id})\r\n {node.fundNode &&\r\n Object.values(node.fundTags).map(tag => (\r\n \r\n {tag}\r\n \r\n ))}\r\n {node.fundInvestorTagNode && (\r\n {node.name}\r\n )}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default NodeRenderer;\r\n","import React from 'react';\r\nimport { Grid, List, Paper } from '@material-ui/core';\r\nimport { TreeItem, TreeView } from '@material-ui/lab';\r\nimport { ChevronDownIcon } from '../../../../../core/themes/icons/ChevronDownIcon';\r\nimport { ChevronRightIcon } from '../../../../../core/themes/icons/ChevronRightIcon';\r\nimport TreeListFilters from './TreeListFilters';\r\nimport { filterData, sortList } from './utils';\r\nimport TreeTitle from './TreeTitle';\r\nimport TreeError from './TreeError';\r\nimport NodeRenderer from './NodeRenderer';\r\n\r\nconst renderTreeItems = ({\r\n node,\r\n classes,\r\n classesCustom,\r\n handleSelect,\r\n handleDoubleClick,\r\n stepReadOnly\r\n}) => {\r\n const commonProps = {\r\n key: node.nodeId,\r\n nodeId: node.nodeId,\r\n label: (\r\n \r\n ),\r\n classes: {\r\n root: classesCustom.rootTreeItem,\r\n content:\r\n node.fundNode && node.fundInvestorTags.length > 0\r\n ? classesCustom.content\r\n : classesCustom.contentFF,\r\n label: classesCustom.label,\r\n iconContainer: classesCustom.iconContainer\r\n }\r\n };\r\n\r\n if (node.fundFamilyNode) {\r\n return (\r\n \r\n {node.funds.map(fund =>\r\n renderTreeItems({\r\n node: fund,\r\n classes,\r\n classesCustom,\r\n handleSelect,\r\n handleDoubleClick,\r\n stepReadOnly\r\n })\r\n )}\r\n \r\n );\r\n } else if (node.fundNode && node.fundInvestorTags.length > 0) {\r\n return (\r\n \r\n {node.fundInvestorTags.map(fiTag =>\r\n renderTreeItems({\r\n node: fiTag,\r\n classes,\r\n classesCustom,\r\n handleSelect,\r\n handleDoubleClick,\r\n stepReadOnly\r\n })\r\n )}\r\n \r\n );\r\n } else {\r\n return ;\r\n }\r\n};\r\n\r\nconst TreeList = props => {\r\n const {\r\n classes,\r\n classesCustom,\r\n searchFundNameQuery,\r\n setSearchFundNameQuery,\r\n fundTags,\r\n fundFamilies,\r\n selectedFundFamily,\r\n handleFundFamilyChange,\r\n selectedFundTags,\r\n onFundTagsChange,\r\n nodesExpanded,\r\n nodesSelected,\r\n handleToggle,\r\n handleSelect,\r\n list,\r\n listTitle,\r\n listSide,\r\n data = [],\r\n handleDoubleClick,\r\n stepReadOnly,\r\n formRenderProps\r\n } = props;\r\n\r\n const listFiltered = sortList(\r\n list.filter(node =>\r\n filterData(\r\n node,\r\n searchFundNameQuery,\r\n selectedFundFamily?.id,\r\n selectedFundTags\r\n )\r\n )\r\n );\r\n\r\n return (\r\n \r\n \r\n 0}\r\n isFundTagsFilterAvailable={fundTags.length > 0}\r\n listSide={listSide}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n }\r\n defaultExpandIcon={\r\n
    \r\n \r\n
    \r\n }\r\n expanded={nodesExpanded}\r\n selected={nodesSelected}\r\n onNodeToggle={handleToggle}\r\n onNodeSelect={handleSelect}\r\n multiSelect\r\n >\r\n {listFiltered.map(node =>\r\n renderTreeItems({\r\n node,\r\n classes,\r\n classesCustom,\r\n handleSelect,\r\n handleDoubleClick,\r\n stepReadOnly\r\n })\r\n )}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default TreeList;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { withStyles } from '@material-ui/core';\r\n\r\nimport doubleListStyles from '../../../../../core/themes/utils/doubleListStyles';\r\n\r\nimport TreeListButtons from './TreeListButtons';\r\nimport TreeList from './TreeList';\r\n\r\nimport {\r\n cleanSelectedNodes,\r\n copyState,\r\n filterByNodeId,\r\n filterData,\r\n findByFundId,\r\n findByFundInvestorTagId,\r\n findNode,\r\n findParentNodes,\r\n getSelectedNodes,\r\n handleFundFamilyNode,\r\n handleFundNode,\r\n mergeArrays,\r\n removeFundInvestorTags,\r\n transferFundInvestorTags\r\n} from './utils.js';\r\nimport { useClassesCustom } from '../styles';\r\nimport { useField } from 'react-final-form';\r\nimport isEqual from 'lodash/isEqual';\r\nimport { cloneDeep } from 'lodash';\r\n\r\nconst FundInvestorTagLevelTree = ({\r\n classes,\r\n leftList,\r\n setLeftList,\r\n data,\r\n fundFamilies,\r\n fundTags,\r\n setIsJapanFundSelected,\r\n stepReadOnly,\r\n resourceupload,\r\n formRenderProps\r\n}) => {\r\n const classesCustom = useClassesCustom();\r\n\r\n const [leftNodeIdsExpanded, setLeftNodeIdsExpanded] = useState([]);\r\n const [leftNodeIdsSelected, setLeftNodeIdsSelected] = useState([]);\r\n\r\n const [rightNodeIdsExpanded, setRightNodeIdsExpanded] = useState([]);\r\n const [rightNodeIdsSelected, setRightNodeIdsSelected] = useState([]);\r\n const [rightList, setRightList] = useState([]);\r\n\r\n const [selectedFundFamily, setSelectedFundFamily] = useState(null);\r\n const [selectedFundTags, setSelectedFundTags] = useState([]);\r\n const [searchQueryLeft, setSearchQueryLeft] = useState('');\r\n const [searchQueryRight, setSearchQueryRight] = useState('');\r\n\r\n const [selectionError, setSelectionError] = useState(false);\r\n\r\n const deepEqual = (a, b) => isEqual(a, b);\r\n\r\n /*\r\n Customizing the comparison function to address shallow equality. The default behavior compares references, not values,\r\n potentially causing inaccuracies in the pristine state of the form.\r\n */\r\n const { input: fundIdsInput } = useField('fundIds', { isEqual: deepEqual });\r\n const { input: fundInvestorTagIdInput } = useField('fundInvestorTagId');\r\n\r\n // If the resourceUpload has already funds and/or fundInvestorTag attached to it, we need to populate the right-hand list.\r\n useEffect(() => {\r\n if (resourceupload.fundInvestorTagId) {\r\n const fiTag = findByFundInvestorTagId(\r\n data,\r\n resourceupload.fundInvestorTagId,\r\n resourceupload.fundIds[0]\r\n );\r\n if (fiTag) {\r\n const fiTagTree = findParentNodes(data, fiTag.nodeId, true);\r\n setLeftList(prev => filterByNodeId(prev, fiTag.nodeId));\r\n setRightList(fiTagTree);\r\n }\r\n }\r\n\r\n if (\r\n !resourceupload.fundInvestorTagId &&\r\n resourceupload.fundIds.length > 0\r\n ) {\r\n let tree = [];\r\n resourceupload.fundIds.forEach(fundId => {\r\n const fundNode = findByFundId(data, fundId);\r\n const fundTree =\r\n fundNode && findParentNodes(data, fundNode.nodeId, false);\r\n setLeftList(prev => filterByNodeId(prev, fundNode.nodeId));\r\n if (tree.length === 0 || fundTree[0].fundNode) {\r\n tree.push(...fundTree);\r\n } else {\r\n const ffIndex = tree.findIndex(\r\n item => item.fundFamilyId === fundTree[0].fundFamilyId\r\n );\r\n ffIndex !== -1\r\n ? (tree[ffIndex].funds = tree[ffIndex].funds.concat(\r\n fundTree[0].funds\r\n ))\r\n : tree.push(...fundTree);\r\n }\r\n });\r\n setRightList(prev => [...prev, ...tree]);\r\n }\r\n }, [\r\n data,\r\n resourceupload.fundIds,\r\n resourceupload.fundInvestorTagId,\r\n setLeftList\r\n ]);\r\n\r\n // Expand Fund-Families by default.\r\n useEffect(() => {\r\n leftList.forEach(node =>\r\n node.fundFamilyNode\r\n ? setLeftNodeIdsExpanded(prev => [...prev, node.nodeId])\r\n : null\r\n );\r\n\r\n if (rightList.length > 0) {\r\n rightList.forEach(node =>\r\n node.fundFamilyNode\r\n ? setRightNodeIdsExpanded(prev => [...prev, node.nodeId])\r\n : null\r\n );\r\n // We also want to expand the associated Fund of a selected Fund-Investor tag.\r\n if (!isListFundLevel(rightList)) {\r\n rightList[0].fundFamilyNode\r\n ? setRightNodeIdsExpanded(prev => [\r\n ...prev,\r\n rightList[0].funds[0].nodeId\r\n ])\r\n : setRightNodeIdsExpanded(prev => [...prev, rightList[0].nodeId]);\r\n }\r\n }\r\n }, [leftList, rightList]);\r\n\r\n useEffect(() => {\r\n // It is requested by Neuberger (ADO-825793, ADO-899178) that when uploading a document, Fund Admins at Neuberger\r\n //needs to be displayed a warning message if they select Toranomon Private Equity 1 AIV, L.P. fund\r\n const isNBGClient = sessionStorage.getItem('tenant') === 'NeubergerBerman';\r\n // Toranomon Private Equity 1 AIV, L.P. fund (fund with fundId = fi_f_2FA1E30FA6EF436)\r\n if (isNBGClient && findByFundId(rightList, 'fi_f_2FA1E30FA6EF436')) {\r\n setIsJapanFundSelected(true);\r\n } else {\r\n setIsJapanFundSelected(false);\r\n }\r\n }, [rightList, setIsJapanFundSelected]);\r\n\r\n useEffect(() => {\r\n setSelectionError(!isListFundLevel(rightList));\r\n }, [rightList]);\r\n\r\n const isListFundLevel = list => {\r\n return list.every(node => {\r\n if (node.fundFamilyNode) {\r\n return node.funds.some(\r\n fundNode => fundNode.fundInvestorTags.length === 0\r\n );\r\n } else {\r\n return node.fundInvestorTags.length === 0;\r\n }\r\n });\r\n };\r\n\r\n const handleAddClick = () => {\r\n if (\r\n (leftNodeIdsSelected && leftNodeIdsSelected.length === 0) ||\r\n !isListFundLevel(rightList)\r\n )\r\n return;\r\n\r\n // Create copies of the states to avoid updating state inside the loop.\r\n let { copyRightList, copyLeftList } = copyState(rightList, leftList);\r\n\r\n // Create copies of the form values (same reason as above)\r\n let fundIdsSelected = fundIdsInput.value;\r\n let fundInvestorTagIdSelected = fundInvestorTagIdInput.value;\r\n\r\n const selectedNodes = getSelectedNodes(leftNodeIdsSelected, copyLeftList);\r\n\r\n // Filter selected leaves, removing funds belonging to selected Fund Family\r\n const cleanedSelectedNodes = cleanSelectedNodes(selectedNodes);\r\n\r\n cleanedSelectedNodes.forEach(node => {\r\n if (node.fundFamilyNode) {\r\n const [fundFamilyWithoutFiTag] = removeFundInvestorTags([node]);\r\n fundIdsSelected = [\r\n ...fundIdsSelected,\r\n ...fundFamilyWithoutFiTag.funds.map(fund => fund.id)\r\n ];\r\n const {\r\n currentList: leftListUpdated,\r\n oppositeList: rightListUpdated\r\n } = handleFundFamilyNode(\r\n fundFamilyWithoutFiTag,\r\n node.nodeId,\r\n copyRightList,\r\n copyLeftList\r\n );\r\n copyLeftList = cloneDeep(leftListUpdated);\r\n copyRightList = cloneDeep(rightListUpdated);\r\n }\r\n\r\n if (node.fundNode) {\r\n const leafParent = findParentNodes(copyLeftList, node.nodeId, false);\r\n fundIdsSelected = [...fundIdsSelected, node.fundId];\r\n const {\r\n currentList: leftListUpdated,\r\n oppositeList: rightListUpdated\r\n } = handleFundNode(leafParent, node, copyRightList, copyLeftList);\r\n copyLeftList = cloneDeep(leftListUpdated);\r\n copyRightList = cloneDeep(rightListUpdated);\r\n }\r\n\r\n if (node.fundInvestorTagNode && rightList.length === 0) {\r\n copyRightList = findParentNodes(copyLeftList, node.nodeId, true);\r\n copyLeftList = filterByNodeId(copyLeftList, node.nodeId);\r\n fundIdsSelected = [node.fundId];\r\n fundInvestorTagIdSelected = node.id;\r\n }\r\n });\r\n\r\n // Updating the lists after the loop\r\n setRightList(copyRightList);\r\n setLeftList(copyLeftList);\r\n\r\n // Updating the form values after the loop\r\n fundIdsInput.onChange(fundIdsSelected);\r\n fundInvestorTagIdInput.onChange(fundInvestorTagIdSelected);\r\n\r\n setLeftNodeIdsSelected([]);\r\n };\r\n\r\n const handleAddAllClick = () => {\r\n if (isListFundLevel(rightList)) {\r\n const leftListWithoutFiTag = removeFundInvestorTags(\r\n leftList.filter(node =>\r\n filterData(\r\n node,\r\n searchQueryLeft,\r\n selectedFundFamily?.id,\r\n selectedFundTags\r\n )\r\n )\r\n );\r\n\r\n const fundIds = leftListWithoutFiTag.flatMap(leftListItem => {\r\n if (leftListItem.fundNode) {\r\n return leftListItem.fundId;\r\n } else {\r\n return leftListItem.funds.map(fund => fund.fundId);\r\n }\r\n });\r\n\r\n const updatedFundIdInputValue = [...fundIdsInput.value, ...fundIds];\r\n fundIdsInput.onChange(updatedFundIdInputValue);\r\n\r\n const updatedRightList = mergeArrays(rightList, leftListWithoutFiTag);\r\n const nodeIdsToFilter = leftListWithoutFiTag.map(item => item.nodeId);\r\n setRightList(updatedRightList);\r\n setLeftList(\r\n leftList.filter(item => !nodeIdsToFilter.includes(item.nodeId))\r\n );\r\n }\r\n };\r\n\r\n const handleToggleLeft = (_event, nodeIds) => {\r\n setLeftNodeIdsExpanded(nodeIds);\r\n };\r\n\r\n const handleToggleRight = (_event, nodeIds) => {\r\n setRightNodeIdsExpanded(nodeIds);\r\n };\r\n\r\n const handleSelectLeft = (_event, nodeId) => {\r\n let selectedLeaves = [];\r\n\r\n nodeId &&\r\n nodeId.forEach(node => {\r\n selectedLeaves.push(...findNode(data, node));\r\n });\r\n\r\n // Set an error if the selection is invalid (FiT + fund(s)/fundFamily(ies)).\r\n setSelectionError(\r\n (selectedLeaves.length > 1 &&\r\n selectedLeaves.some(leaf => leaf.fundInvestorTagNode)) ||\r\n (rightList.length > 0 &&\r\n isListFundLevel(rightList) &&\r\n selectedLeaves.some(leaf => leaf.fundInvestorTagNode)) ||\r\n (rightList.length > 0 && !isListFundLevel(rightList))\r\n );\r\n\r\n setLeftNodeIdsSelected(nodeId);\r\n };\r\n\r\n const handleSelectRight = (_event, nodeId) => {\r\n setRightNodeIdsSelected(nodeId);\r\n };\r\n\r\n const handleRemoveAllClick = () => {\r\n setLeftNodeIdsSelected([]);\r\n setRightNodeIdsSelected([]);\r\n\r\n const nodesFromRightList = rightList.filter(node =>\r\n filterData(node, searchQueryRight, null, [])\r\n );\r\n\r\n // Processing when there is only one Fund-Investor Tag in the right list.\r\n if (!isListFundLevel(rightList) && nodesFromRightList.length > 0) {\r\n const fiTag = nodesFromRightList[0].fundFamilyNode\r\n ? nodesFromRightList[0].funds[0].fundInvestorTags[0].nodeId\r\n : nodesFromRightList[0].fundInvestorTags[0].nodeId;\r\n const fiTagOriginalParent = findParentNodes(data, fiTag, true);\r\n setLeftList(transferFundInvestorTags(fiTagOriginalParent, leftList));\r\n const fiTagRightParent = findParentNodes(rightList, fiTag);\r\n setRightList(filterByNodeId(rightList, fiTagRightParent[0].nodeId));\r\n fundInvestorTagIdInput.onChange(null);\r\n fundIdsInput.onChange([]);\r\n return;\r\n }\r\n\r\n let fundIdsToRemove = [];\r\n let nodeIdsToRemove = [];\r\n for (const node of nodesFromRightList) {\r\n nodeIdsToRemove.push(node.nodeId);\r\n if (node.fundFamilyNode) {\r\n const nodeFundIds = node.funds.map(fund => fund.nodeId);\r\n fundIdsToRemove = [\r\n ...fundIdsToRemove,\r\n ...node.funds.map(fund => fund.fundId)\r\n ];\r\n const matchingFF = leftList.find(\r\n leftListItem => leftListItem.fundFamilyId === node.fundFamilyId\r\n );\r\n // If a Fund-Investor Tag is attached to a fund within the Fund Family node, we retrieve the original Fund Family.\r\n const originalFundFamily = data.find(\r\n dataItem => dataItem.fundFamilyId === node.fundFamilyId\r\n );\r\n // From the original Fund Family, we select only the Funds that are present in the current node.\r\n const fundsWithFiTag = originalFundFamily.funds.filter(fund =>\r\n nodeFundIds.includes(fund.nodeId)\r\n );\r\n\r\n if (matchingFF) {\r\n setLeftList(prev =>\r\n prev.map(leftListNode => {\r\n if (leftListNode.fundFamilyId === node.fundFamilyId) {\r\n return {\r\n ...leftListNode,\r\n funds: leftListNode.funds.concat(fundsWithFiTag)\r\n };\r\n } else {\r\n return leftListNode;\r\n }\r\n })\r\n );\r\n } else {\r\n setLeftList(prev => [...prev, originalFundFamily]);\r\n }\r\n } else {\r\n // Similarly, if the Fund had Fund-Investor Tag(s) attached to it, we need to retrieve the original Fund.\r\n const matchingFund = data.find(\r\n dataItem => dataItem.nodeId === node.nodeId\r\n );\r\n\r\n fundIdsToRemove.push(node.fundId);\r\n\r\n setLeftList(prev => [...prev, matchingFund]);\r\n }\r\n }\r\n\r\n setRightList(\r\n rightList.filter(item => !nodeIdsToRemove.includes(item.nodeId))\r\n );\r\n fundIdsInput.onChange(\r\n fundIdsInput.value.filter(fundId => !fundIdsToRemove.includes(fundId))\r\n );\r\n };\r\n\r\n const handleRemoveClick = () => {\r\n if (rightNodeIdsSelected && rightNodeIdsSelected.length === 0) return;\r\n\r\n // Create copies of the states to avoid updating state inside the loop.\r\n let { copyRightList, copyLeftList } = copyState(rightList, leftList);\r\n\r\n // Create copies of the form values (same reason as above)\r\n let fundIdsInputToUpdate = fundIdsInput.value;\r\n let fundInvestorTagIdInputToUpdate = fundInvestorTagIdInput.value;\r\n\r\n const selectedNodes = getSelectedNodes(rightNodeIdsSelected, copyRightList);\r\n\r\n // Filter selected leaves, removing funds belonging to selected Fund Family\r\n const cleanedSelectedNodes = cleanSelectedNodes(selectedNodes);\r\n\r\n cleanedSelectedNodes.forEach(node => {\r\n if (node.fundFamilyNode) {\r\n if (node.funds[0].fundInvestorTags.length > 0) {\r\n copyLeftList = transferFundInvestorTags([node], copyLeftList);\r\n copyRightList = filterByNodeId(copyRightList, node.nodeId);\r\n fundIdsInputToUpdate = [];\r\n fundInvestorTagIdInputToUpdate = null;\r\n } else {\r\n // We retrieve potential Fund-Investor tag(s) that might have been removed.\r\n const originalNode = findNode(data, node.nodeId).map(item => {\r\n if (item.fundFamilyNode) {\r\n // Only keeping the funds present in the right-hand list.\r\n const updatedFunds = item.funds.filter(fund =>\r\n node.funds.some(\r\n fundToRemove => fundToRemove.fundId === fund.fundId\r\n )\r\n );\r\n const fundIdsToRemove = updatedFunds.map(fund => fund.fundId);\r\n fundIdsInputToUpdate = fundIdsInputToUpdate.filter(\r\n fundId => !fundIdsToRemove.includes(fundId)\r\n );\r\n return {\r\n ...item,\r\n funds: updatedFunds\r\n };\r\n }\r\n return item;\r\n });\r\n const {\r\n currentList: rightListUpdated,\r\n oppositeList: leftListUpdated\r\n } = handleFundFamilyNode(\r\n ...originalNode,\r\n node.nodeId,\r\n copyLeftList,\r\n copyRightList\r\n );\r\n copyLeftList = cloneDeep(leftListUpdated);\r\n copyRightList = cloneDeep(rightListUpdated);\r\n }\r\n }\r\n\r\n if (node.fundNode) {\r\n if (node.fundInvestorTags.length > 0) {\r\n const parentNode = findParentNodes(data, node.nodeId, true);\r\n copyLeftList = transferFundInvestorTags(parentNode, copyLeftList);\r\n copyRightList = filterByNodeId(copyRightList, node.nodeId);\r\n fundIdsInputToUpdate = [];\r\n fundInvestorTagIdInputToUpdate = null;\r\n } else {\r\n const leafParent = findParentNodes(data, node.nodeId, true);\r\n fundIdsInputToUpdate = fundIdsInputToUpdate.filter(\r\n fundId => fundId !== node.fundId\r\n );\r\n const {\r\n currentList: rightListUpdated,\r\n oppositeList: leftListUpdated\r\n } = handleFundNode(leafParent, node, copyLeftList, copyRightList);\r\n copyLeftList = cloneDeep(leftListUpdated);\r\n copyRightList = cloneDeep(rightListUpdated);\r\n }\r\n }\r\n\r\n if (node.fundInvestorTagNode) {\r\n const treeSelected = findParentNodes(data, node.nodeId, true);\r\n copyLeftList = transferFundInvestorTags(treeSelected, leftList);\r\n copyRightList = [];\r\n fundIdsInputToUpdate = [];\r\n fundInvestorTagIdInputToUpdate = null;\r\n }\r\n });\r\n\r\n // Updating the lists after the loop\r\n setRightList(copyRightList);\r\n setLeftList(copyLeftList);\r\n\r\n // Updating the form values after the loop\r\n fundIdsInput.onChange(fundIdsInputToUpdate);\r\n fundInvestorTagIdInput.onChange(fundInvestorTagIdInputToUpdate);\r\n\r\n setRightNodeIdsSelected([]);\r\n };\r\n\r\n const handleFundFamilyChange = (_, value) => {\r\n setSelectedFundFamily(value);\r\n };\r\n\r\n const onFundTagsChange = e => {\r\n setSelectedFundTags(e);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(doubleListStyles)(FundInvestorTagLevelTree);\r\n","import React, { useCallback, useEffect, useState } from 'react';\r\nimport FundFamilyApi from '../../../../../core/apis/FundFamilyApi';\r\nimport FundApi from '../../../../../core/apis/FundApi';\r\nimport FundInvestorTagApi from '../../../../../core/apis/FundInvestorTagApi';\r\nimport FundTagApi from '../../../../../core/apis/FundTagApi';\r\nimport useNotifyServerError from '../../../../../core/hooks/useNotifyServerError';\r\nimport FundInvestorTagLevelTree from './FundInvestorTagLevelTree';\r\nimport { Form } from 'react-final-form';\r\nimport { Grid } from '@material-ui/core';\r\nimport { Loading } from 'ra-ui-materialui';\r\nimport { NotificationForJapanFund } from '../FundLevelTree';\r\nimport ResourceUploadApi from '../../../../../core/apis/ResourceUploadApi';\r\n\r\nfunction buildDataStructure(fundFamilies, funds, fiTags) {\r\n const data = [];\r\n funds.forEach(fund => {\r\n const fundNode = {\r\n nodeId: fund.id,\r\n fundId: fund.id,\r\n fundName: fund.name,\r\n fundTags: fund.fundTags,\r\n fundNode: true,\r\n fundInvestorTags: [],\r\n ...fund\r\n };\r\n\r\n // Find Associated fundInvestorsTags for the fund\r\n fundNode.fundInvestorTags = fiTags.reduce((acc, fiTag) => {\r\n if (fiTag.fundInvestors.some(fi => fi.fundId === fund.id)) {\r\n return [\r\n ...acc,\r\n {\r\n nodeId: `${fund.id}:${fiTag.id}`,\r\n id: fiTag.id,\r\n name: fiTag.name,\r\n fundName: fund.name,\r\n fundId: fund.id,\r\n fundInvestorTagNode: true\r\n }\r\n ];\r\n }\r\n return acc;\r\n }, []);\r\n\r\n const existingFundFamilyNode = data.find(\r\n node => !node.fundNode && node.fundFamilyId === fund.fundFamilyId\r\n );\r\n\r\n if (existingFundFamilyNode) {\r\n existingFundFamilyNode.funds.push(fundNode);\r\n } else {\r\n const fundFamily = fundFamilies.find(ff => ff.id === fund.fundFamilyId);\r\n if (fundFamily) {\r\n const familyNode = {\r\n nodeId: fundFamily.id,\r\n fundFamilyId: fundFamily.id,\r\n fundFamilyName: fundFamily.name,\r\n funds: [fundNode],\r\n fundFamilyNode: true\r\n };\r\n data.push(familyNode);\r\n } else {\r\n data.push(fundNode);\r\n }\r\n }\r\n });\r\n return data;\r\n}\r\n\r\nconst FundInvestorTagLevelTreeContainer = ({\r\n classes,\r\n resourceupload,\r\n onFormInit,\r\n onSubmitEnd\r\n}) => {\r\n const [leftList, setLeftList] = useState([]);\r\n const [data, setData] = useState([]);\r\n const [fundFamilies, setFundFamilies] = useState([]);\r\n const [fundTags, setFundTags] = useState([]);\r\n const [isLoading, setIsLoading] = useState(true);\r\n const [isPristine, setIsPristine] = useState(true);\r\n\r\n const [isJapanFundSelected, setIsJapanFundSelected] = useState(false);\r\n\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const stepReadOnly = !!(\r\n resourceupload.uploadVia && resourceupload.uploadVia === 'API'\r\n );\r\n\r\n const fetchData = useCallback(async () => {\r\n const fundFamilyPromise = FundFamilyApi.getAll();\r\n const fundsPromise = FundApi.getAll();\r\n const fundInvestorTagsPromise = FundInvestorTagApi.getAll();\r\n const fundTagsPromise = FundTagApi.getAll();\r\n\r\n await Promise.all([\r\n fundFamilyPromise,\r\n fundsPromise,\r\n fundInvestorTagsPromise,\r\n fundTagsPromise\r\n ])\r\n .then(\r\n ([\r\n fundFamiliesResponse,\r\n fundsResponse,\r\n fundInvestorTagsResp,\r\n fundTagsResponse\r\n ]) => {\r\n setFundFamilies(fundFamiliesResponse.pageData);\r\n setFundTags(fundTagsResponse.pageData);\r\n setData(\r\n buildDataStructure(\r\n fundFamiliesResponse.pageData,\r\n fundsResponse.pageData,\r\n fundInvestorTagsResp.pageData\r\n )\r\n );\r\n setLeftList(\r\n buildDataStructure(\r\n fundFamiliesResponse.pageData,\r\n fundsResponse.pageData,\r\n fundInvestorTagsResp.pageData\r\n )\r\n );\r\n }\r\n )\r\n .catch(e => notifyServerError(e, undefined))\r\n .finally(() => setIsLoading(false));\r\n }, [notifyServerError]);\r\n\r\n const validate = values => {\r\n const errors = {};\r\n if (!values.fundInvestorTagId && values.fundIds.length === 0) {\r\n errors.required =\r\n 'At least one Fund or Fund-Investor Tag must be selected';\r\n }\r\n\r\n return errors;\r\n };\r\n\r\n const onSubmit = async values => {\r\n if (isPristine) {\r\n onSubmitEnd(resourceupload);\r\n } else {\r\n try {\r\n const formData = new FormData();\r\n formData.append('resourceUploadId', resourceupload.resourceUploadId);\r\n formData.append('metadata', JSON.stringify(values));\r\n const updatedResourceUpload = await ResourceUploadApi.updateResourceUpload(\r\n formData\r\n );\r\n onSubmitEnd(updatedResourceUpload);\r\n } catch (e) {\r\n notifyServerError(e);\r\n }\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchData();\r\n }, [fetchData]);\r\n\r\n if (isLoading) return ;\r\n\r\n return (\r\n \r\n {({ handleSubmit, form, errors, pristine, modified, submitFailed }) => {\r\n onFormInit(form);\r\n setIsPristine(pristine);\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isJapanFundSelected ? : null}\r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n );\r\n};\r\n\r\nexport default FundInvestorTagLevelTreeContainer;\r\n","import React from 'react';\r\nimport FundLevelTree from './FundLevelTree';\r\nimport FundInvestorTagLevelTreeContainer from './FundInvestorTagTree/FundInvestorTagLevelTreeContainer';\r\n\r\nconst FundStep = props => {\r\n if (\r\n props.fundLevelDocumentsChecked === true ||\r\n props.bulkMode ||\r\n !props.isFundLevelFlowAvailable\r\n ) {\r\n return ;\r\n } else return ;\r\n};\r\n\r\nexport default FundStep;\r\n","import React, { useMemo } from 'react';\r\nimport {\r\n ReferenceArrayInput,\r\n required,\r\n RadioButtonGroupInput,\r\n FormDataConsumer,\r\n showNotification,\r\n Loading\r\n} from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { connect } from 'react-redux';\r\n\r\nimport ResourceUploadApi from '../../../core/apis/ResourceUploadApi';\r\nimport DoubleListArrayInput from '../../../core/components/inputs/DoubleListArrayInput';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport dataProvider from '../../../core/providers/IccUserDataProvider';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\nimport Button from '@material-ui/core/Button';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport FileInput from '../../../core/components/forked/input/FileInput';\r\nimport FileField from '../../../core/components/forked/field/FileField';\r\nimport { ExcelIcon } from '../../../core/themes/icons/ExcelIcon';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { saveAs } from 'file-saver';\r\n\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst validateInvestors = (value, _allValues, _props, _field) => {\r\n if (value && value.length < 1) {\r\n return 'At least one Investor must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst styles = () => ({\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n tableWrapper: {\r\n maxHeight: '70vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n tableContainer: {\r\n borderTop: '0px'\r\n },\r\n labelItems: {\r\n marginLeft: '3px'\r\n },\r\n errorsLabel: {\r\n color: 'red',\r\n float: 'right'\r\n },\r\n validationColumn: {\r\n color: 'red'\r\n },\r\n containerClass: {\r\n overflow: 'auto'\r\n },\r\n radioGroupRow: {\r\n marginTop: 0,\r\n marginBottom: 6\r\n },\r\n templateButton: {\r\n marginLeft: '4%',\r\n marginTop: '1.7%'\r\n },\r\n inputField: {\r\n width: '48%'\r\n },\r\n templateSpan: {\r\n color: '#2962FF',\r\n paddingLeft: '4px',\r\n fontSize: '15px'\r\n }\r\n});\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst sortByValidationError = (a, b) => {\r\n var x = a['validationError']\r\n ? a['validationError'].toString().toLowerCase()\r\n : '';\r\n var y = b['validationError']\r\n ? b['validationError'].toString().toLowerCase()\r\n : '';\r\n\r\n if (x > y) return -1;\r\n return x < y ? 1 : 0;\r\n};\r\n\r\nconst DoubleListArrayInputChoicesFiltered = ({\r\n stepReadOnly,\r\n fundIdsToFilterBy,\r\n ...props\r\n}) => {\r\n const choicesFiltered = useMemo(() => {\r\n return props.choices.filter(item =>\r\n fundIdsToFilterBy.includes(item.fundId)\r\n );\r\n }, [fundIdsToFilterBy, props.choices]);\r\n\r\n return (\r\n \r\n fundinvestor.fundId + ':' + fundinvestor.investorId\r\n }\r\n optionText=\"investorName\"\r\n groupBy=\"fundId\"\r\n groups={fundInvestor => fundInvestor.fundName}\r\n readOnly={stepReadOnly}\r\n choices={choicesFiltered}\r\n />\r\n );\r\n};\r\n\r\nclass InvestorsStep extends React.Component {\r\n formApi;\r\n pristine;\r\n\r\n state = {};\r\n\r\n componentDidMount() {\r\n this.getAssignedInvestors();\r\n\r\n dataProvider('GET_LIST', 'investortags', {\r\n paginated: false,\r\n filter: {\r\n orderBy: 'name',\r\n orderDirection: 'ASC'\r\n }\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n this.setState({\r\n tagsList: data\r\n });\r\n }\r\n })\r\n .catch(error => console.error('Error fetching investor tags :', error));\r\n\r\n if (this.props.resourceupload.fundInvestorTagId == null) {\r\n dataProvider('GET_LIST', 'fundinvestortags', {\r\n paginated: false,\r\n filter: {\r\n orderBy: 'name',\r\n orderDirection: 'ASC'\r\n }\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n this.setState({\r\n fundInvTagsList: data\r\n });\r\n }\r\n })\r\n .catch(error =>\r\n console.error('Error fetching Fund-Investor tags :', error)\r\n );\r\n }\r\n\r\n if (this.props.resourceupload.fundInvestorTagId) {\r\n dataProvider('GET_ONE', 'fundinvestortags', {\r\n id: this.props.resourceupload.fundInvestorTagId\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n this.setState({\r\n fundInvestorTag: data\r\n });\r\n }\r\n })\r\n .catch(error =>\r\n console.error('Error Fetching Fund-Investor tag: ', error)\r\n );\r\n }\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n tagsList: [],\r\n fundInvTagsList: [],\r\n investorSelection: false,\r\n excelDialog: false,\r\n confirmDialog: false,\r\n excelTitle: '',\r\n disabledImport: true,\r\n fundInvestors: [],\r\n responseLoading: false,\r\n response: [],\r\n hasErrors: false,\r\n numberOfErrors: 0,\r\n order: 'desc',\r\n orderBy: 'Row'\r\n };\r\n }\r\n\r\n toggleInvestorSelection(value) {\r\n this.setState({ investorSelection: value });\r\n }\r\n\r\n toggleExcelDialog = async (value, showNotification) => {\r\n //calling the API to populate grid:\r\n const fundIds = this.props.resourceupload.fundIds;\r\n\r\n if (value) {\r\n this.setState({ responseLoading: true });\r\n await ResourceUploadApi.fundInvestorValidateImport(fundIds, value)\r\n .then(response => {\r\n this.setState({ responseLoading: false });\r\n this.setState({ excelDialog: true });\r\n\r\n //we want to automatically sort records with validationErrors to be on top\r\n var sortedTableData = response.sort(sortByValidationError);\r\n\r\n this.setState({ response: sortedTableData });\r\n })\r\n .catch(error => {\r\n this.setState({ hasErrors: true });\r\n this.setState({ responseLoading: false });\r\n this.setState({ disabledImport: true });\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n });\r\n }\r\n\r\n if (value && value.name) {\r\n this.setState({ excelTitle: value.name });\r\n }\r\n\r\n const response = this.state.response;\r\n const numberOfErrors = response.filter(function(item) {\r\n return item.validationError !== '';\r\n });\r\n numberOfErrors.length > 0\r\n ? this.setState({ disabledImport: true })\r\n : this.setState({ disabledImport: false });\r\n\r\n this.setState({ numberOfErrors: numberOfErrors.length });\r\n };\r\n\r\n handleCloseClick = () => {\r\n this.setConfirmDialogIsOpen(true);\r\n };\r\n\r\n setConfirmDialogIsOpen(value) {\r\n this.setState({ confirmDialog: value });\r\n }\r\n\r\n handleConfirmDialogClose = () => {\r\n this.setState({ confirmDialog: false });\r\n this.setState({ excelDialog: false });\r\n this.setState({ investorSelection: false });\r\n this.formApi.change('checkBoxChoice', 'STANDARD');\r\n };\r\n\r\n handleRequestSort = index => {\r\n const isDesc = this.state.order === 'desc';\r\n isDesc ? this.setState({ order: 'asc' }) : this.setState({ order: 'desc' });\r\n this.setState({ orderBy: index });\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'fundId';\r\n break;\r\n case 2:\r\n sortColumnName = 'fundName';\r\n break;\r\n case 3:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 4:\r\n sortColumnName = 'investorName';\r\n break;\r\n case 5:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n const tableData = this.state.response.slice(0);\r\n var sortedTableData = tableData.sort(function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (isDesc) {\r\n if (x < y) return -1;\r\n return x > y ? 1 : 0;\r\n } else {\r\n if (x < y) return 1;\r\n return x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n this.setState({ response: sortedTableData });\r\n };\r\n\r\n /**\r\n * List of Fund/Investors read from Excel.\r\n * Update the metadata.fundinvestors value in form data.\r\n */\r\n importFundInvestorsFromExcel = () => {\r\n this.handleConfirmDialogClose();\r\n\r\n if (!this.state.hasErrors) {\r\n // Fund/Investor combinations from Excel\r\n const importedFromExcel = this.state.response;\r\n\r\n // Change input value in form data : array of :\r\n resourcefundinvestor.fundId + ':' + resourcefundinvestor.investorId\r\n );\r\n this.formApi.change('metadata.fundinvestors', assignedFundinvestors);\r\n }\r\n };\r\n\r\n render() {\r\n const {\r\n onFormInit,\r\n resourceupload,\r\n resource,\r\n formName,\r\n classes,\r\n showNotification\r\n } = this.props;\r\n\r\n const { missingAssignedFunds } = this.state;\r\n //for batches uploaded via API disabled Investors Step\r\n const stepReadOnly = !!(\r\n resourceupload.uploadVia && resourceupload.uploadVia === 'API'\r\n );\r\n\r\n const radioGroupOptions = {\r\n row: true,\r\n classes: {\r\n row: classes.radioGroupRow\r\n }\r\n };\r\n\r\n const handleDownloadClick = async () => {\r\n ResourceUploadApi.downloadDocumentUploadImportTemplate().then(resp => {\r\n const fileName = 'Document Upload Import Template.xlsx';\r\n saveAs(resp, fileName);\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n {formprops => {\r\n // Store current form API object\r\n if (this.formApi === undefined && onFormInit !== undefined) {\r\n onFormInit(formprops.form);\r\n }\r\n this.formApi = formprops.form;\r\n this.pristine = formprops.pristine;\r\n\r\n const limitToCall = 200;\r\n const paramThresholdNotExceeded =\r\n resourceupload &&\r\n resourceupload.fundIds.concat(missingAssignedFunds).length <=\r\n limitToCall;\r\n\r\n const fitId = resourceupload.fundInvestorTagId;\r\n const customFilter = fitId\r\n ? {\r\n fundId: resourceupload && `[${resourceupload.fundIds[0]}]`,\r\n investorStatus: 'ACTIVE',\r\n returnInvestorTags: 'true',\r\n fundInvestorTagId: fitId,\r\n returnFundInvestorTags: 'false'\r\n }\r\n : paramThresholdNotExceeded\r\n ? {\r\n fundId:\r\n resourceupload &&\r\n `[${resourceupload.fundIds.concat(missingAssignedFunds)}]`,\r\n investorStatus: 'ACTIVE',\r\n returnInvestorTags: 'true',\r\n returnFundInvestorTags: 'true'\r\n }\r\n : {\r\n investorStatus: 'ACTIVE',\r\n returnInvestorTags: 'true',\r\n returnFundInvestorTags: 'true'\r\n };\r\n\r\n if (!missingAssignedFunds) return null;\r\n\r\n return (\r\n \r\n {\r\n this.toggleInvestorSelection(value === 'FILE');\r\n }}\r\n />\r\n {this.state.investorSelection && (\r\n
    \r\n \r\n {({ _formData }) => (\r\n
    \r\n {\r\n this.toggleExcelDialog(value, showNotification);\r\n }}\r\n className={classes.inputField}\r\n setIsNextAvailable={false}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n Download Excel Template\r\n \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n )}\r\n {!this.state.investorSelection && (\r\n \r\n {paramThresholdNotExceeded ? (\r\n \r\n fundinvestor.fundId + ':' + fundinvestor.investorId\r\n }\r\n optionText=\"investorName\"\r\n groupBy=\"fundId\"\r\n groups={fundInvestor => fundInvestor.fundName}\r\n readOnly={stepReadOnly}\r\n classes={{\r\n containerClass: classes.containerClass\r\n }}\r\n allowTagFilter={true}\r\n tagsList={this.state.tagsList}\r\n fundInvTagsList={this.state.fundInvTagsList}\r\n source={'investortags'}\r\n fundInvestorTag={this.state.fundInvestorTag}\r\n />\r\n ) : (\r\n \r\n )}\r\n \r\n )}\r\n {this.state.responseLoading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n
    \r\n )}\r\n\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown')\r\n return this.handleCloseClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Import Investors from Excel\r\n \r\n \r\n
    \r\n
    \r\n File *
    \r\n \r\n \r\n \r\n {this.state.excelTitle}\r\n \r\n \r\n \r\n \r\n \r\n {this.state.numberOfErrors > 0 && (\r\n \r\n {this.state.numberOfErrors} errors found. Please fix\r\n the Excel file, and upload it again.\r\n \r\n )}\r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Fund ID' },\r\n { id: 'Fund Name' },\r\n { id: 'Investor ID' },\r\n { id: 'Investor Name' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n this.handleRequestSort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {this.state.response &&\r\n this.state.response.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.fundId}\r\n {item.fundName}\r\n {item.investorId}\r\n {item.investorName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {this.state.confirmDialog && (\r\n \r\n

    \r\n You are about to quit importing Investors, and\r\n return to Select Investors page.\r\n

    \r\n
    \r\n Your progress on this step will not be saved.\r\n \r\n }\r\n onConfirm={this.handleConfirmDialogClose}\r\n onClose={this.handleConfirmDialogClose}\r\n confirm=\"ra.action.close\"\r\n />\r\n )}\r\n
    \r\n \r\n \r\n Cancel\r\n \r\n this.importFundInvestorsFromExcel()}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className={classes.button}\r\n disabled={this.state.disabledImport}\r\n >\r\n Import\r\n \r\n \r\n \r\n
    \r\n );\r\n }}\r\n
    \r\n \r\n );\r\n }\r\n\r\n getAssignedInvestors = async () => {\r\n const { resourceupload, showNotification } = this.props;\r\n const { resourceUploadId } = resourceupload;\r\n\r\n let resourcefundinvestors = [];\r\n try {\r\n // Call v1/resourcefundinvestors?resourceUploadId=${resourceUploadId}\r\n const resourceFundInvestorsObject = await ResourceUploadApi.getFundinvestors(\r\n resourceUploadId\r\n );\r\n if (resourceFundInvestorsObject) {\r\n resourcefundinvestors = resourceFundInvestorsObject.pageData;\r\n }\r\n } catch (error) {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n\r\n const assignedFundinvestors = resourcefundinvestors.map(\r\n resourcefundinvestor => {\r\n return (\r\n resourcefundinvestor.fundId + ':' + resourcefundinvestor.investorId\r\n );\r\n }\r\n );\r\n\r\n const missingAssignedFunds = resourcefundinvestors\r\n .filter(res => !resourceupload.fundIds.includes(res.fundId))\r\n .map(resourcefundinvestor => resourcefundinvestor.fundId);\r\n\r\n this.formApi.change('metadata.fundinvestors', assignedFundinvestors);\r\n\r\n this.setState(() => {\r\n return {\r\n missingAssignedFunds, // Using this to add missing assigned funds to DoubleListArrayInput\r\n assignedFundinvestors // Only to compare between the old list of fundinvestors and the new one so we can DELETE the unselected ones\r\n };\r\n });\r\n };\r\n\r\n /**\r\n * Link resourceupload to investors\r\n */\r\n setInvestors = async values => {\r\n const { assignedFundinvestors = [] } = this.state;\r\n const {\r\n resourceupload,\r\n onSubmitEnd,\r\n handleResetActionButtons,\r\n disableActionButtons,\r\n showNotification\r\n } = this.props;\r\n const { resourceUploadId } = resourceupload;\r\n const { fundinvestors } = values.metadata; // List of fundinvestors. Ex : [\"F1:I1\", \"F1:I2\", \"F2:I1\"]\r\n disableActionButtons();\r\n const fundinvestorsToDelete = assignedFundinvestors.filter(\r\n x => !fundinvestors.includes(x)\r\n );\r\n if (fundinvestorsToDelete.length !== 0) {\r\n const deleteRequestBody = fundinvestorsToDelete.map(fundinvestor => {\r\n const [fundId, investorId] = fundinvestor.split(':');\r\n return { resourceUploadId, fundId, investorId };\r\n });\r\n try {\r\n await ResourceUploadApi.deleteFundinvestors(deleteRequestBody);\r\n } catch (error) {\r\n handleResetActionButtons();\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n }\r\n\r\n // Request body : create one row for each fund/investor\r\n const body = fundinvestors.map(fundinvestor => {\r\n const [fundId, investorId] = fundinvestor.split(':');\r\n return { resourceUploadId, fundId, investorId };\r\n });\r\n\r\n try {\r\n await ResourceUploadApi.setFundinvestors(body);\r\n if (onSubmitEnd) {\r\n onSubmitEnd(resourceupload);\r\n }\r\n } catch (error) {\r\n handleResetActionButtons();\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n showNotification\r\n};\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(InvestorsStep));\r\n","const TabStyles = () => ({\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n paperContainer: {\r\n width: '100%'\r\n },\r\n checkboxCell: {\r\n width: '24px',\r\n borderLeft: '0',\r\n borderRight: '1px solid rgba(224, 224, 224, 1)'\r\n },\r\n cell: {\r\n borderLeft: '0',\r\n '&:last-child': {\r\n borderRight: '0'\r\n }\r\n },\r\n gridItem: {\r\n flexBasis: 'auto !important',\r\n marginRight: '16px'\r\n },\r\n buttonFooter: {\r\n flex: 1,\r\n marginTop: '15px'\r\n },\r\n informationText: {\r\n fontSize: '14px',\r\n color: '#757575'\r\n },\r\n selectInputContainer: {\r\n width: 'auto'\r\n },\r\n selectInputText: {\r\n fontSize: '14px',\r\n display: 'flex',\r\n color: '#757575',\r\n alignItems: 'center'\r\n },\r\n informationNumber: {\r\n color: '#212121',\r\n marginLeft: '3px'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n emptyLabel: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block'\r\n },\r\n tableContainer: {\r\n borderTop: '0px'\r\n },\r\n\r\n buttonDisabled: {\r\n backgroundColor: '#F5F5F5',\r\n color: '#757575 !important'\r\n },\r\n footerButton: {\r\n marginRight: '10px'\r\n },\r\n downloadDoc: {\r\n color: 'blue',\r\n cursor: 'pointer'\r\n },\r\n loading: {\r\n height: '40vh'\r\n },\r\n tooltipPlacementTop: {\r\n marginLeft: '30px'\r\n },\r\n informationsContainer: {\r\n display: 'flex',\r\n width: 'inherit'\r\n },\r\n nonFilter: {\r\n height: '48px'\r\n }\r\n});\r\n\r\nexport default TabStyles;\r\n","const filtersLookupsReporting = [\r\n { id: 'ALL', name: 'All Contacts' },\r\n { id: 'ADMIN', name: 'Admin Contacts' },\r\n { id: 'NON_ADMIN', name: 'Non-Admin Contacts' },\r\n { id: 'NO_NOTIFICATION', name: 'No Notifications set' }\r\n];\r\n\r\nconst filtersLookupsEmail = [\r\n { id: 'ALL', name: 'All Contacts' },\r\n { id: 'ADMIN', name: 'Admin Contacts' },\r\n { id: 'NON_ADMIN', name: 'Non-Admin Contacts' }\r\n];\r\n\r\nexport { filtersLookupsReporting, filtersLookupsEmail };\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Postal Mail Api\r\n */\r\nclass PostalMailApi extends ApiBase {\r\n /**\r\n *\r\n * @param {*} payload\r\n */\r\n sendPostalMail = async payload => {\r\n const request = {\r\n url: `${this.API_URL}/postalmail/sendmail`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(payload)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n };\r\n}\r\nexport default new PostalMailApi();\r\n","import React, { useState, useCallback, useMemo } from 'react';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport CommonTabStyles from './TabsStyles';\r\nimport {\r\n useQueryWithStore,\r\n Loading,\r\n Error,\r\n useQuery,\r\n SelectInput,\r\n useNotify,\r\n SaveButton\r\n} from 'react-admin';\r\nimport {\r\n Grid,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n Checkbox,\r\n Button,\r\n Tooltip\r\n} from '@material-ui/core/';\r\nimport MailIcon from '@material-ui/icons/Mail';\r\nimport { uniq, uniqBy, difference, isEmpty, filter, find } from 'lodash';\r\nimport {\r\n filtersLookupsReporting,\r\n filtersLookupsEmail\r\n} from './CommonTabLookups';\r\nimport { saveAs } from 'file-saver';\r\nimport DocumentApi from '../../../../core/apis/DocumentApi';\r\nimport { getIcError } from '../../../../core/providers/utils';\r\nimport ResourceUploadApi from '../../../../core/apis/ResourceUploadApi';\r\nimport PostalMailApi from '../../../../core/apis/PostalMailApi';\r\nimport Confirm from '../../../../core/components/forked/layout/Confirm';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\nimport { PendingIndicatorIcon } from '../../../../core/themes/icons/PendingIndicator';\r\nimport CustomSimpleForm from '../../../../core/components/form/CustomSimpleForm';\r\n\r\nconst limitToCall = 50;\r\n\r\nconst DeliveryTable = ({\r\n recipientsList,\r\n sendHardCopy,\r\n classes,\r\n resourceUploadId,\r\n handleOpenEmailModal,\r\n notificationMethod,\r\n handleDownloadAsExcel,\r\n isLoadingExcelDoc,\r\n hasExportPermission\r\n}) => {\r\n const [recipientsListFiltered, setRecipientsListFilter] = useState(\r\n recipientsList\r\n );\r\n\r\n const [contactFilters, setContactFilters] = useState(\r\n notificationMethod === 'EMAIL' ? 'NON_ADMIN' : 'ALL'\r\n );\r\n\r\n //get contacts that are not Admin\r\n const nonAdminContacts = useMemo(() => {\r\n return recipientsList.filter(item => {\r\n return !item.admin;\r\n });\r\n }, [recipientsList]);\r\n\r\n // get contacts that are Admin\r\n const adminContacts = useMemo(() => {\r\n return recipientsList.filter(item => {\r\n return item.admin;\r\n });\r\n }, [recipientsList]);\r\n\r\n // get contacts that have no notifications set\r\n const noNotificationsSetContacts = useMemo(() => {\r\n return recipientsList.filter(item => {\r\n return !item.notifications;\r\n });\r\n }, [recipientsList]);\r\n\r\n const filterItems = useCallback(\r\n value => {\r\n setContactFilters(value);\r\n\r\n let newArray = [];\r\n switch (value) {\r\n case 'NON_ADMIN':\r\n newArray = recipientsList.filter(item => !item.admin);\r\n setRecipientsListFilter(newArray);\r\n break;\r\n\r\n case 'ADMIN':\r\n newArray = recipientsList.filter(item => item.admin);\r\n setRecipientsListFilter(newArray);\r\n break;\r\n\r\n case 'NO_NOTIFICATION':\r\n newArray = recipientsList.filter(item => !item.notifications);\r\n setRecipientsListFilter(newArray);\r\n break;\r\n\r\n default:\r\n setRecipientsListFilter(recipientsList);\r\n }\r\n },\r\n [recipientsList]\r\n );\r\n\r\n const filterChoices = useMemo(\r\n () =>\r\n notificationMethod === 'REPORTING'\r\n ? filtersLookupsReporting\r\n : filtersLookupsEmail,\r\n [notificationMethod]\r\n );\r\n return (\r\n \r\n
    \r\n \r\n \r\n \r\n Batch ID:\r\n \r\n {resourceUploadId}\r\n \r\n \r\n \r\n {!sendHardCopy && (\r\n \r\n \r\n Total number of Contacts:\r\n \r\n {recipientsList.length}\r\n \r\n \r\n \r\n )}\r\n {sendHardCopy && (\r\n \r\n \r\n Total number of Investors:\r\n \r\n {recipientsList.length}\r\n \r\n \r\n \r\n )}\r\n {notificationMethod !== 'MAIL' && (\r\n \r\n \r\n Distinct Contacts:\r\n \r\n {uniqBy(recipientsList, 'userId').length}\r\n \r\n \r\n \r\n )}\r\n {notificationMethod !== 'EMAIL' && !sendHardCopy && (\r\n <>\r\n \r\n \r\n Non-admin Contacts:\r\n \r\n {nonAdminContacts.length}\r\n \r\n \r\n \r\n \r\n \r\n Admin Contacts:\r\n \r\n {adminContacts.length}\r\n \r\n \r\n \r\n \r\n )}\r\n {notificationMethod === 'REPORTING' && (\r\n \r\n \r\n No Notifications Set:\r\n \r\n {noNotificationsSetContacts.length}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {notificationMethod === 'REPORTING' ? (\r\n
    \r\n Show:\r\n \r\n \r\n filterItems(event.target.value)}\r\n helperText={false}\r\n />\r\n \r\n \r\n
    \r\n ) : (\r\n \r\n )}\r\n \r\n
    \r\n\r\n \r\n
    \r\n );\r\n};\r\n\r\nconst RecipientsTable = ({\r\n classes,\r\n recipientsListFiltered,\r\n handleOpenEmailModal,\r\n notificationMethod,\r\n handleDownloadAsExcel,\r\n isLoadingExcelDoc,\r\n hasExportPermission,\r\n resourceUploadId,\r\n contactFilters,\r\n sendHardCopy\r\n}) => {\r\n //NOSONAR javascript:S3776\r\n const [selectedRows, setSelectedRows] = useState([]);\r\n\r\n const tableHeadCells = [];\r\n\r\n if (sendHardCopy) {\r\n tableHeadCells.push({ id: 'Investor' });\r\n tableHeadCells.push({ id: 'Address' });\r\n tableHeadCells.push({ id: 'Document' });\r\n } else {\r\n tableHeadCells.push({ id: 'Fund' });\r\n tableHeadCells.push({ id: 'Investor' });\r\n tableHeadCells.push({ id: 'Contact' });\r\n tableHeadCells.push({ id: 'Email' });\r\n\r\n if (notificationMethod === 'EMAIL') {\r\n tableHeadCells.push({ id: 'Document' });\r\n }\r\n if (notificationMethod === 'MAIL') {\r\n tableHeadCells.push({ id: 'Address' });\r\n tableHeadCells.push({ id: 'Document' });\r\n }\r\n }\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n /**\r\n * Calculating number of rows depending of the filter\r\n */\r\n const numSelectedRows = useMemo(() => {\r\n if (sendHardCopy) {\r\n let tempArray = [];\r\n recipientsListFiltered.forEach(item => {\r\n if (selectedRows.includes(item)) {\r\n tempArray.push(item);\r\n }\r\n });\r\n return tempArray.length;\r\n }\r\n let newArray = [];\r\n recipientsListFiltered.forEach(item => {\r\n if (item.dailySummary === false) {\r\n if (selectedRows.includes(item)) {\r\n newArray.push(item);\r\n }\r\n }\r\n });\r\n return newArray.length;\r\n }, [recipientsListFiltered, selectedRows, sendHardCopy]);\r\n\r\n const rowCount = useMemo(() => {\r\n if (sendHardCopy) {\r\n return recipientsListFiltered.length;\r\n }\r\n return filter(recipientsListFiltered, ['dailySummary', false]).length;\r\n }, [recipientsListFiltered, sendHardCopy]);\r\n\r\n /**\r\n * When we click the global checkbox\r\n */\r\n const handleClickAll = useCallback(() => {\r\n if (sendHardCopy) {\r\n handleSelectAllInvestorRecipients(\r\n numSelectedRows,\r\n rowCount,\r\n recipientsListFiltered,\r\n selectedRows,\r\n setSelectedRows\r\n );\r\n } else {\r\n handleSelectAllUserRecipients(\r\n numSelectedRows,\r\n rowCount,\r\n recipientsListFiltered,\r\n selectedRows,\r\n setSelectedRows\r\n );\r\n }\r\n }, [\r\n numSelectedRows,\r\n recipientsListFiltered,\r\n rowCount,\r\n selectedRows,\r\n sendHardCopy\r\n ]);\r\n\r\n /**\r\n * When we click on the checkbox in a row\r\n * @param {*} checked\r\n * @param {*} item\r\n */\r\n const handleRowSelect = useCallback((checked, item) => {\r\n if (checked) {\r\n setSelectedRows(prevSelectedRows => prevSelectedRows.concat(item));\r\n } else {\r\n setSelectedRows(prevSelectedRows =>\r\n prevSelectedRows.filter(itemRow => item !== itemRow)\r\n );\r\n }\r\n }, []);\r\n\r\n const downloadAttachment = useCallback(\r\n async ({ documentId, documentFileName }) => {\r\n try {\r\n const response = await DocumentApi.download(documentId);\r\n saveAs(response.data, documentFileName);\r\n } catch (error) {\r\n notify(getIcError(error), { type: 'error' });\r\n }\r\n },\r\n [notify]\r\n );\r\n\r\n const tooltipTitle = 'Contact will receive Daily Document Summary Email.';\r\n\r\n const [openConfirmPostalMail, setOpenConfirmPostalMail] = useState(false);\r\n\r\n const sendPostalMail = useCallback(() => {\r\n const groupsDict = {};\r\n var sendingList;\r\n\r\n if (!sendHardCopy) {\r\n sendingList = selectedRows.reduce((acc, curr) => {\r\n const groupId = `${curr.documentId}:${curr.fundId}:${curr.investorId}`;\r\n let group = groupsDict[groupId];\r\n\r\n if (group === undefined) {\r\n group = {\r\n documentId: curr.documentId,\r\n documentFileName: curr.documentFileName,\r\n documentTitle: curr.documentTitle,\r\n documentDate: curr.documentDate,\r\n fundId: curr.fundId,\r\n investorId: curr.investorId,\r\n categoryId: curr.categoryId,\r\n users: [\r\n {\r\n userId: curr.userId,\r\n email: curr.email,\r\n firstname: curr.firstname,\r\n lastname: curr.lastname,\r\n fax: curr.fax,\r\n company: curr.company,\r\n address: curr.address,\r\n dailySummary: false,\r\n notifications: false,\r\n admin: false\r\n }\r\n ],\r\n investors: []\r\n };\r\n\r\n groupsDict[groupId] = group;\r\n acc.push(group);\r\n } else {\r\n group.users.push({\r\n userId: curr.userId,\r\n email: curr.email,\r\n firstname: curr.firstname,\r\n lastname: curr.lastname,\r\n fax: curr.fax,\r\n company: curr.company,\r\n address: curr.address,\r\n dailySummary: false,\r\n notifications: false,\r\n admin: false\r\n });\r\n }\r\n return acc;\r\n }, []);\r\n } else {\r\n sendingList = selectedRows.reduce((acc, curr) => {\r\n const groupId = `${curr.documentId}:${curr.fundId}:${curr.investorId}`;\r\n let group = groupsDict[groupId];\r\n\r\n if (group === undefined) {\r\n group = {\r\n documentId: curr.documentId,\r\n documentFileName: curr.documentFileName,\r\n documentTitle: curr.documentTitle,\r\n documentDate: curr.documentDate,\r\n fundId: curr.fundId,\r\n investorId: curr.investorId,\r\n categoryId: curr.categoryId,\r\n users: [],\r\n investors: [\r\n {\r\n investorId: curr.investorId,\r\n investorName: curr.investorName,\r\n addressLine1: curr.addressLine1,\r\n addressLine2: curr.addressLine2,\r\n addressLine3: curr.addressLine3,\r\n addressCity: curr.addressCity,\r\n addressCountry: curr.addressCountry,\r\n addressStateProvince: curr.addressStateProvince,\r\n addressZipCode: curr.addressZipCode\r\n }\r\n ]\r\n };\r\n\r\n groupsDict[groupId] = group;\r\n acc.push(group);\r\n } else {\r\n group.investors.push({\r\n investorId: curr.investorId,\r\n investorName: curr.investorName,\r\n addressLine1: curr.addressLine1,\r\n addressLine2: curr.addressLine2,\r\n addressLine3: curr.addressLine3,\r\n addressCity: curr.addressCity,\r\n addressCountry: curr.addressCountry,\r\n addressStateProvince: curr.addressStateProvince,\r\n addressZipCode: curr.addressZipCode\r\n });\r\n }\r\n return acc;\r\n }, []);\r\n }\r\n\r\n const postalMailObject = {\r\n resourceUploadId,\r\n to: sendingList\r\n };\r\n\r\n PostalMailApi.sendPostalMail(postalMailObject)\r\n .then(() => {\r\n setOpenConfirmPostalMail(false);\r\n notify('ra.notification.send_envelopes', {\r\n messageArgs: { smart_count: selectedRows.length }\r\n });\r\n })\r\n .catch(notifyServerError);\r\n }, [notify, resourceUploadId, selectedRows, sendHardCopy, notifyServerError]);\r\n return (\r\n <>\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n 0 && numSelectedRows < rowCount\r\n }\r\n checked={numSelectedRows === rowCount && rowCount > 0}\r\n onClick={handleClickAll}\r\n className={classes.checkbox}\r\n disabled={\r\n sendHardCopy\r\n ? false\r\n : find(recipientsListFiltered, [\r\n 'dailySummary',\r\n false\r\n ]) === undefined\r\n }\r\n />\r\n \r\n {tableHeadCells.map(headCell => (\r\n \r\n {headCell.id}\r\n \r\n ))}\r\n \r\n \r\n {!sendHardCopy && (\r\n \r\n {recipientsListFiltered.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n handleRowSelect(event.target.checked, item)\r\n }\r\n className={item.checkbox}\r\n checked={\r\n item.dailySummary\r\n ? false\r\n : selectedRows.includes(item)\r\n }\r\n disabled={item.dailySummary}\r\n id={item.userId + ' checkbox'}\r\n />\r\n \r\n \r\n \r\n
    \r\n {item.fundStatus === 'PENDING' && (\r\n \r\n )}\r\n {item.fundName}\r\n
    \r\n
    \r\n \r\n
    \r\n {item.investorStatus === 'INACTIVE' && (\r\n \r\n )}\r\n {item.investorName}\r\n
    \r\n
    \r\n {`${item.firstname} ${item.lastname}`}\r\n \r\n {item.email}\r\n \r\n {notificationMethod === 'EMAIL' && (\r\n \r\n downloadAttachment(item)}\r\n >\r\n {item.documentFileName}\r\n \r\n \r\n )}\r\n {notificationMethod === 'MAIL' && (\r\n <>\r\n \r\n {`${item.address.addressLine1 || ''} ${item.address\r\n .addressLine2 || ''} ${item.address\r\n .addressLine3 || ''} ${item.address.city ||\r\n ''} ${item.address.country || ''} ${item.address\r\n .postalCode || ''} ${item.address.state || ''}`}\r\n \r\n \r\n downloadAttachment(item)}\r\n >\r\n {item.documentFileName}\r\n \r\n \r\n \r\n )}\r\n
    \r\n );\r\n })}\r\n
    \r\n )}\r\n {sendHardCopy && (\r\n \r\n {recipientsListFiltered.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n handleRowSelect(event.target.checked, item)\r\n }\r\n className={item.checkbox}\r\n checked={\r\n item.dailySummary\r\n ? false\r\n : selectedRows.includes(item)\r\n }\r\n disabled={item.dailySummary}\r\n id={item.userId + ' checkbox'}\r\n />\r\n \r\n \r\n \r\n
    \r\n {item.investorName}\r\n
    \r\n
    \r\n \r\n {`${item.addressLine1 || ''} ${item.addressLine2 ||\r\n ''} ${item.addressLine3 || ''} ${item.addressCity ||\r\n ''} ${item.addressCountry ||\r\n ''} ${item.addressZipCode ||\r\n ''} ${item.addressStateProvince || ''}`}\r\n \r\n \r\n downloadAttachment(item)}\r\n >\r\n {item.documentFileName}\r\n \r\n \r\n
    \r\n );\r\n })}\r\n
    \r\n )}\r\n \r\n
    \r\n {/* Button to edit Email if needed */}\r\n
    \r\n {notificationMethod !== 'MAIL' && (\r\n handleOpenEmailModal(selectedRows)}\r\n classes={{\r\n disabled: classes.buttonDisabled,\r\n outlined: classes.footerButton\r\n }}\r\n disabled={selectedRows.length < 1}\r\n disableFocusRipple\r\n >\r\n Edit Email\r\n \r\n )}\r\n\r\n {notificationMethod === 'MAIL' && (\r\n setOpenConfirmPostalMail(true)}\r\n classes={{\r\n disabled: classes.buttonDisabled,\r\n outlined: classes.footerButton\r\n }}\r\n disabled={selectedRows.length < 1}\r\n disableFocusRipple\r\n startIcon={}\r\n >\r\n Submit Letters To Be Mailed ({selectedRows.length})\r\n \r\n )}\r\n\r\n {hasExportPermission && (\r\n \r\n handleDownloadAsExcel(contactFilters)\r\n }\r\n color=\"primary\"\r\n disabled={isLoadingExcelDoc}\r\n variant=\"outlined\"\r\n className={classes.footerButton}\r\n label={'Download as Excel'}\r\n icon={<>}\r\n />\r\n )}\r\n
    \r\n
    \r\n 1 ? 'Envelopes' : 'Envelope'\r\n }`}\r\n onConfirm={sendPostalMail}\r\n onClose={() => setOpenConfirmPostalMail(false)}\r\n confirm=\"ra.action.confirm\"\r\n />\r\n \r\n );\r\n};\r\n\r\n/**\r\n * creating an array of ids\r\n * @param {*} recipientsList\r\n */\r\nconst getFundAndInvestorIds = (recipientsList = []) => {\r\n let fundIds = [];\r\n let investorIds = [];\r\n\r\n recipientsList.forEach(row => {\r\n if (row && row.fundId && row.fundId.split('|').length === 1) {\r\n // Only one fund, otherwise Multiple funds for admin\r\n fundIds.push(`${row.fundId}`);\r\n }\r\n });\r\n recipientsList.forEach(row => {\r\n if (row && row.investorId && row.investorId !== '*') {\r\n investorIds.push(`${row.investorId}`);\r\n }\r\n });\r\n\r\n return { fundIds: uniq(fundIds), investorIds: uniq(investorIds) };\r\n};\r\n\r\n/**\r\n * formatting Data once\r\n * @param {*} data\r\n */\r\nconst formatData = (data = []) => {\r\n return data.reduce((acc, curr) => {\r\n var newData;\r\n if (\r\n data &&\r\n data[0] &&\r\n data[0].investors &&\r\n data[0].investors.length === 0\r\n ) {\r\n newData = curr.users.map(user => {\r\n return {\r\n ...user,\r\n fundId: curr.fundId,\r\n investorId: curr.investorId,\r\n documentId: curr.documentId,\r\n documentFileName: curr.documentFileName,\r\n documentTitle: curr.documentTitle,\r\n documentDate: curr.documentDate,\r\n categoryId: curr.categoryId\r\n };\r\n });\r\n } else if (\r\n data &&\r\n data[0] &&\r\n data[0].investors &&\r\n data[0].investors.length !== 0\r\n ) {\r\n newData = curr.investors.map(investor => {\r\n return {\r\n ...investor,\r\n investorId: investor.investorId,\r\n documentId: curr.documentId,\r\n documentFileName: curr.documentFileName,\r\n documentTitle: curr.documentTitle,\r\n documentDate: curr.documentDate\r\n };\r\n });\r\n }\r\n return acc.concat(newData);\r\n }, []);\r\n};\r\n\r\nconst isSendHardCopy = data => {\r\n return data && data[0] && data[0].investors && data[0].investors.length !== 0;\r\n};\r\n\r\n/**\r\n * creating the final list to be display\r\n * @param {*} recipientsList\r\n * @param {*} fundsResponse\r\n * @param {*} investorsResponse\r\n * @param categoriesResponse\r\n */\r\nconst getFinalList = (\r\n recipientsList,\r\n fundsResponse,\r\n investorsResponse,\r\n categoriesResponse\r\n) => {\r\n return recipientsList.reduce((acc, curr) => {\r\n // Matching investorId with what we have coming back from the api call on investors (to getting name)\r\n let contactWithInvestorName =\r\n investorsResponse.find(investor => curr.investorId === investor.id) || {};\r\n if (curr.investorId === '' || curr.investorId === '*') {\r\n contactWithInvestorName = { name: 'All Investors' };\r\n }\r\n\r\n // Matching fundId with what we have coming back from the api call on funds (to getting name)\r\n let contactWithFundName;\r\n if (fundsResponse.length > 0) {\r\n contactWithFundName =\r\n fundsResponse.find(fund => curr.fundId === fund.id) || {};\r\n if (curr.fundId.split('|').length > 1) {\r\n contactWithFundName = { name: 'Multiple funds' };\r\n }\r\n }\r\n\r\n // Matching categoryId with what we have coming back from the api call on categories (to getting name)\r\n let contactWithCategoryName =\r\n categoriesResponse.find(category => curr.categoryId === category.id) ||\r\n '';\r\n\r\n // Adding the name of fund and investor and categoryName for every initial object from the api\r\n curr = {\r\n ...curr,\r\n fundName: contactWithFundName ? contactWithFundName.name : '',\r\n fundStatus: contactWithFundName ? contactWithFundName.status : '',\r\n investorName: contactWithInvestorName ? contactWithInvestorName.name : '',\r\n investorStatus: contactWithInvestorName\r\n ? contactWithInvestorName.status\r\n : '',\r\n categoryName: contactWithCategoryName ? contactWithCategoryName.name : ''\r\n };\r\n acc.push(curr);\r\n return acc;\r\n }, []);\r\n};\r\n\r\nconst useFundsAndInvestorsData = recipientsList => {\r\n const { fundIds, investorIds } = getFundAndInvestorIds(recipientsList);\r\n\r\n const idsToSend =\r\n investorIds.length > limitToCall ? [] : `[${Array.from(investorIds)}]`;\r\n const {\r\n data: investorsResponse,\r\n loading: investorsLoading,\r\n error: investorsError\r\n } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'investors',\r\n payload: {\r\n id: idsToSend,\r\n target: 'id'\r\n }\r\n });\r\n const {\r\n data: fundsResponse,\r\n loading: fundsLoading,\r\n error: fundsError\r\n } = useQuery({\r\n type: 'getMany',\r\n resource: 'funds',\r\n payload: { ids: Array.from(fundIds) }\r\n });\r\n\r\n return {\r\n fundsResponse,\r\n investorsResponse,\r\n fundsLoading,\r\n investorsLoading,\r\n fundsError,\r\n investorsError\r\n };\r\n};\r\n\r\nconst useCategoryHook = recipientsList => {\r\n let categoryIds = [];\r\n\r\n if (recipientsList !== undefined) {\r\n recipientsList.forEach(row => {\r\n if (\r\n row &&\r\n row.categoryId !== 0 &&\r\n !categoryIds.includes(row.categoryId)\r\n ) {\r\n categoryIds.push(row.categoryId);\r\n }\r\n });\r\n }\r\n\r\n const idsToSend =\r\n categoryIds.length > limitToCall ? [] : `[${Array.from(categoryIds)}]`;\r\n const {\r\n data: categoriesResponse,\r\n loading: categoriesLoading,\r\n error: categoriesError\r\n } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'categories',\r\n payload: {\r\n id: idsToSend,\r\n target: 'id'\r\n }\r\n });\r\n\r\n return {\r\n categoriesResponse,\r\n categoriesLoading,\r\n categoriesError\r\n };\r\n};\r\n\r\nfunction handleSelectAllUserRecipients(\r\n numSelectedRows,\r\n rowCount,\r\n recipientsListFiltered,\r\n selectedRows,\r\n setSelectedRows\r\n) {\r\n if (numSelectedRows === rowCount) {\r\n let newArray = [];\r\n recipientsListFiltered.forEach(recipient => {\r\n if (recipient.dailySummary === false) {\r\n if (selectedRows.includes(recipient)) {\r\n newArray.push(recipient);\r\n }\r\n }\r\n });\r\n setSelectedRows(difference(selectedRows, newArray));\r\n } else if (numSelectedRows !== rowCount) {\r\n setSelectedRows(\r\n selectedRows.concat(\r\n filter(recipientsListFiltered, ['dailySummary', false])\r\n )\r\n );\r\n }\r\n}\r\n\r\nfunction handleSelectAllInvestorRecipients(\r\n numSelectedRows,\r\n rowCount,\r\n recipientsListFiltered,\r\n selectedRows,\r\n setSelectedRows\r\n) {\r\n if (numSelectedRows === rowCount) {\r\n let newArray = [];\r\n recipientsListFiltered.forEach(recipient => {\r\n if (selectedRows.includes(recipient)) {\r\n newArray.push(recipient);\r\n }\r\n });\r\n setSelectedRows(difference(selectedRows, newArray));\r\n } else if (numSelectedRows !== rowCount) {\r\n setSelectedRows(selectedRows.concat(recipientsListFiltered));\r\n }\r\n}\r\n\r\nconst CommonTab = ({\r\n resourceupload: { resourceUploadId },\r\n classes,\r\n notificationMethod,\r\n ...props\r\n}) => {\r\n const includeAdmin = notificationMethod === 'EMAIL' ? 'false' : 'true';\r\n\r\n const { loaded, error, data } = useQueryWithStore({\r\n type: 'GET_MANY_REFERENCE',\r\n resource: 'distributionlist',\r\n payload: {\r\n target: 'resourceUploadId',\r\n id: resourceUploadId,\r\n filter: {\r\n notificationMethod,\r\n includeAdmin: includeAdmin,\r\n includeCC: notificationMethod !== 'MAIL'\r\n }\r\n }\r\n });\r\n\r\n const sendHardCopy = isSendHardCopy(data);\r\n const recipientsList = data && formatData(data);\r\n const {\r\n fundsResponse,\r\n investorsResponse,\r\n fundsLoading,\r\n investorsLoading,\r\n fundsError,\r\n investorsError\r\n } = useFundsAndInvestorsData(recipientsList);\r\n\r\n const {\r\n categoriesResponse,\r\n categoriesLoading,\r\n categoriesError\r\n } = useCategoryHook(recipientsList);\r\n const notify = useNotify();\r\n\r\n const [isLoadingExcelDoc, setLoadingExcelDoc] = useState(false);\r\n /**\r\n * Click on button 'Download as Excel' to download the excel file\r\n */\r\n const handleDownloadAsExcel = useCallback(\r\n contactFilters => {\r\n setLoadingExcelDoc(true);\r\n\r\n ResourceUploadApi.getResourceUploadDistributionListExcel({\r\n resourceUploadId,\r\n notificationMethod,\r\n contactFilter: contactFilters\r\n })\r\n .then(resp => {\r\n const fileName = 'delivery.xlsx';\r\n saveAs(resp, fileName);\r\n setLoadingExcelDoc(false);\r\n })\r\n .catch(() => {\r\n setLoadingExcelDoc(false);\r\n notify('ra.page.error', { type: 'error' });\r\n });\r\n },\r\n [notify, resourceUploadId, notificationMethod]\r\n );\r\n\r\n if (!loaded || fundsLoading || investorsLoading || categoriesLoading)\r\n return ;\r\n if (error || fundsError || investorsError || categoriesError)\r\n return ;\r\n\r\n if (\r\n (!isEmpty(fundsResponse) || sendHardCopy) &&\r\n !isEmpty(investorsResponse)\r\n ) {\r\n const finalList = getFinalList(\r\n recipientsList,\r\n fundsResponse,\r\n investorsResponse,\r\n categoriesResponse\r\n );\r\n\r\n const handleOpenEmailModal = itemsSelected => {\r\n const { openEmailModal } = props;\r\n openEmailModal(\r\n itemsSelected,\r\n filter(finalList, ['dailySummary', false]),\r\n notificationMethod\r\n );\r\n };\r\n\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n No data to be displayed for this batch ID : {resourceUploadId}\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(CommonTabStyles)(CommonTab);\r\n","import React from 'react';\r\n\r\nimport { TabbedShowLayout, Tab } from 'react-admin';\r\nimport CommonTab from './DeliveryTabs/CommonTab';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n '& > *:first-child': {\r\n marginLeft: '16px'\r\n }\r\n }\r\n});\r\nconst DeliveryStep = props => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default DeliveryStep;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Resource upload API\r\n */\r\nclass MailApi extends ApiBase {\r\n /**\r\n * create Split Method\r\n * @param sendmailtolist\r\n */\r\n async create(sendmailtolist) {\r\n // Get headers for form-data split method\r\n const headers = this.getHeaders();\r\n\r\n const request = {\r\n url: `${this.API_URL}/mail/sendmailtolist`,\r\n method: 'POST',\r\n headers: headers,\r\n data: sendmailtolist\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\nexport default new MailApi();\r\n","import { useState } from 'react';\r\nimport { useDataProvider } from 'react-admin';\r\n\r\nconst limitToCall = 200;\r\n\r\nconst useContactDataProvider = props => {\r\n const dataProvider = useDataProvider();\r\n const [isLoadingUsers, setIsLoadingUsers] = useState(false);\r\n const [errorUsers, setErrorUsers] = useState(null);\r\n const [fetchedUsers, setFetchedUsers] = useState(null);\r\n const { userIdList } = props;\r\n\r\n const isLoaded = fetchedUsers !== null;\r\n\r\n if (userIdList.length > 0 && !isLoadingUsers && !isLoaded && !errorUsers) {\r\n setIsLoadingUsers(true);\r\n\r\n let payload;\r\n if (userIdList.length <= limitToCall) {\r\n payload = {\r\n filter: {\r\n id: `[${userIdList}]`,\r\n orderBy: 'email',\r\n orderDirection: 'ASC'\r\n }\r\n };\r\n } else {\r\n payload = {\r\n filter: {\r\n orderBy: 'email',\r\n orderDirection: 'ASC'\r\n }\r\n };\r\n }\r\n dataProvider\r\n .getList('users', payload)\r\n .then(({ data }) => {\r\n let newUsers;\r\n if (userIdList.length > limitToCall) {\r\n newUsers = data.filter(item => userIdList.includes(item.userId));\r\n } else {\r\n newUsers = data;\r\n }\r\n setFetchedUsers(newUsers);\r\n setIsLoadingUsers(false);\r\n })\r\n .catch(error => {\r\n setErrorUsers(error);\r\n setIsLoadingUsers(false);\r\n });\r\n }\r\n\r\n return {\r\n fetchedUsers: {\r\n loading: isLoadingUsers,\r\n data: fetchedUsers || [],\r\n error: errorUsers\r\n },\r\n userIdList\r\n };\r\n};\r\n\r\nexport default useContactDataProvider;\r\n","import React from 'react';\r\nimport { Grid } from '@material-ui/core/';\r\nimport GridInput from '../../core/components/inputs/GridInput';\r\nimport useContactDataProvider from './ContactDataProvider';\r\nimport { Loading } from 'react-admin';\r\n\r\n/*\r\n Leftover from the original implementation. This validation has been moved\r\n to onSubmit in DistributionListContactDialog so we can make the deadline\r\n with the fix in TFS-155631. Should be improved (returned back to normal)\r\n in the next release.\r\n*/\r\nconst validateCheckedBox = value => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Contact must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst UserEmailGridInput = props => {\r\n const choices = props.fetchedUsers;\r\n\r\n const isMupChild = sessionStorage.getItem('isMupChild') === 'true';\r\n\r\n if (choices && choices.length > 0) {\r\n choices.forEach(item => {\r\n item.userName = item.firstName + ' ' + item.lastName;\r\n });\r\n }\r\n\r\n let additionalColumns;\r\n if (isMupChild) {\r\n additionalColumns = [\r\n {\r\n name: 'userId',\r\n label: 'User ID'\r\n },\r\n {\r\n name: 'mupUserId',\r\n label: 'Login User ID'\r\n }\r\n ];\r\n } else {\r\n additionalColumns = [\r\n {\r\n name: 'userId',\r\n label: 'User ID'\r\n }\r\n ];\r\n }\r\n\r\n return choices && choices.length > 0 ? (\r\n \r\n ) : (\r\n \r\n The distribution list is no longer valid. Please create a new one.\r\n \r\n );\r\n};\r\n\r\nconst FetchedContactGridInput = props => {\r\n const userIdList = props;\r\n const { fetchedUsers } = useContactDataProvider(userIdList);\r\n\r\n const preconditions =\r\n fetchedUsers && fetchedUsers.data && fetchedUsers.data.length > 0;\r\n return preconditions ? (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n ) : fetchedUsers && fetchedUsers.loading && !fetchedUsers.error ? (\r\n \r\n ) : (\r\n // none of the selected contacts are visible to the logged in user\r\n No contacts to be displayed.\r\n );\r\n};\r\n\r\nconst DistributionListContactSummary = props => {\r\n const { recipients } = props;\r\n let userIdList = [];\r\n\r\n // build a list of distinct user IDs to filter on\r\n recipients.forEach(recipient => {\r\n if (\r\n recipient &&\r\n recipient.userId &&\r\n !userIdList.includes(recipient.userId)\r\n ) {\r\n userIdList.push(recipient.userId);\r\n }\r\n });\r\n\r\n if (userIdList && userIdList.length > 0) {\r\n return ;\r\n }\r\n return (\r\n \r\n No contacts are selected. Please select some contacts before sending test\r\n email.\r\n \r\n );\r\n};\r\n\r\nexport default DistributionListContactSummary;\r\n","import React from 'react';\r\nimport DistributionListContactSummary from './DistributionListContactSummary';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { FormSpy } from 'react-final-form';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n },\r\n form: {\r\n '& > div': {\r\n paddingTop: '0px !important',\r\n paddingBottom: '0px !important'\r\n }\r\n }\r\n});\r\n\r\nconst DistributionListContactForm = props => {\r\n const { handleSubmit, setUserEmailsFormProps, classes, recipients } = props;\r\n return (\r\n \r\n \r\n {props => {\r\n setUserEmailsFormProps(props);\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(DistributionListContactForm);\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\nclass DistributionListApi extends ApiBase {\r\n /**\r\n * Get fund/investor\r\n * @param payload\r\n */\r\n getEmailAddressesByFilter = async payload => {\r\n const request = {\r\n url: `${this.API_URL}/distributionlist/getemailaddressesbyfilter`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n };\r\n\r\n /**\r\n * Get recipients excel file by distribution list filters\r\n * @param payload\r\n */\r\n getEmailAddressesExcelByFilter = async payload => {\r\n const request = {\r\n url: `${this.API_URL}/distributionlist/getemailaddressesbyfilter/excel`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n responseType: 'blob',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n };\r\n\r\n /**\r\n * Get recipients excel file by distribution list id\r\n * @param id\r\n */\r\n async getRecipientsExcelForDistList(id) {\r\n const request = {\r\n url: `${this.API_URL}/distributionlist/recipients/excel?id=${id}`,\r\n headers: this.getHeaders(),\r\n responseType: 'blob',\r\n method: 'POST'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Get contacts you havenot added in distribution list while\r\n * creating distribution list\r\n * @param {*} payload\r\n */\r\n getExcludedContactsFromDistributionList = async payload => {\r\n const request = {\r\n url: `${this.API_URL}/distributionlist/recipients/notselected`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n };\r\n\r\n /**\r\n * Send email to unsaved DL\r\n * @param {*} payload\r\n */\r\n async sendMail(payload) {\r\n const request = {\r\n url: `${this.API_URL}/distributionlist/mail`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async validateImportFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/distributionlist/validateimportfromexcel`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async downloadDistributionListImportTemplate() {\r\n const request = {\r\n url: `${this.API_URL}/distributionlist/import/template`,\r\n method: 'GET',\r\n responseType: 'blob',\r\n headers: this.getHeaders()\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Update of single distribution list\r\n * @param id\r\n * @param {*} payload\r\n */\r\n async updateDistributionList(id, payload) {\r\n const request = {\r\n url: `${this.API_URL}/distributionlist?id=${id}`,\r\n headers: this.getHeaders(),\r\n data: payload,\r\n method: 'PUT'\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new DistributionListApi();\r\n","import React from 'react';\r\nimport {\r\n SaveButton,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification\r\n} from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { connect } from 'react-redux';\r\n\r\nimport DistributionListContactForm from './DistributionListContactForm';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport DistributionListApi from '../../core/apis/DistributionListApi';\r\nimport MailApi from '../../core/apis/MailApi';\r\nimport { defaultTo } from 'lodash';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nclass DistributionListContactDialog extends React.Component {\r\n userEmailsFormProps;\r\n\r\n state = {\r\n submitting: false\r\n };\r\n\r\n setUserEmailsFormProps = props => {\r\n this.userEmailsFormProps = props;\r\n };\r\n\r\n handleSaveClick = event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n this.userEmailsFormProps.form.submit(event);\r\n };\r\n\r\n handleClose = () => {\r\n const { handleDialogToggle } = this.props;\r\n const { submitting } = this.state;\r\n if (submitting) return;\r\n this.userEmailsFormProps.form.reset();\r\n handleDialogToggle();\r\n };\r\n\r\n splitEmails = value => {\r\n if (value && value.length > 0) {\r\n const emailParts = value.split(';');\r\n const mailDto = [];\r\n for (var i = 0; i <= emailParts.length - 1; i++) {\r\n var emailAddress = emailParts[i].trim();\r\n if (emailAddress !== '') {\r\n mailDto.push({\r\n name: null,\r\n address: emailAddress\r\n });\r\n }\r\n }\r\n return mailDto;\r\n }\r\n return [];\r\n };\r\n\r\n getBase64 = file => {\r\n return new Promise((resolve, reject) => {\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function() {\r\n var b64 = reader.result.replace(/^data:.+;base64,/, '');\r\n resolve(b64);\r\n };\r\n });\r\n };\r\n\r\n handleSubmit = async values => {\r\n const {\r\n fetchStart,\r\n fetchEnd,\r\n handleDialogToggle,\r\n formData,\r\n distributionListId,\r\n showNotification,\r\n deliveryTab,\r\n filters\r\n } = this.props;\r\n this.setState({ submitting: true });\r\n\r\n if (values && values.users && values.users.length < 1) {\r\n showNotification('At least one contact must be selected.', 'error');\r\n this.setState({ submitting: false });\r\n return;\r\n }\r\n\r\n // prepare attachments for API\r\n const emailAttachments = await defaultTo(formData.attachments, []).map(\r\n async item => {\r\n let base64Content = await this.getBase64(item.rawFile);\r\n return {\r\n content: base64Content,\r\n mimeType: item.type,\r\n fileName: item.title,\r\n disposition: null,\r\n contentId: null\r\n };\r\n }\r\n );\r\n\r\n if (deliveryTab) {\r\n //delivery tab email\r\n const { resourceuploadId, notificationMethod = 'REPORTING' } = this.props;\r\n const groupsDict = {};\r\n const sendingList = formData.selectedItems.reduce((acc, item) => {\r\n let obj = values.users.find(o => o === item.email);\r\n if (obj) {\r\n const groupId = `${item.documentId}:${item.fundId}:${item.investorId}`;\r\n let group = groupsDict[groupId];\r\n\r\n if (group === undefined) {\r\n group = {\r\n documentId: item.documentId,\r\n documentFileName: item.documentFileName,\r\n fundId: item.fundId,\r\n investorId: item.investorId,\r\n users: [\r\n {\r\n userId: item.userId,\r\n email: item.email,\r\n firstname: item.firstname,\r\n lastname: item.lastname,\r\n fax: item.fax,\r\n address: item.address\r\n }\r\n ]\r\n };\r\n\r\n groupsDict[groupId] = group;\r\n acc.push(group);\r\n } else {\r\n group.users.push({\r\n userId: item.userId,\r\n email: item.email,\r\n firstname: item.firstname,\r\n lastname: item.lastname,\r\n fax: item.fax,\r\n address: item.address\r\n });\r\n }\r\n }\r\n return acc;\r\n }, []);\r\n const listToSend = {\r\n resourceUploadId: resourceuploadId,\r\n notificationMethod: notificationMethod,\r\n from: {\r\n fromAddress: {\r\n name: formData.alias,\r\n address: formData.from\r\n },\r\n replyToAddress: {\r\n name: null,\r\n address: formData.aliasTo\r\n },\r\n rememberEmailAddressAlias: !!formData.rememberMe\r\n },\r\n to: sendingList,\r\n subject: formData.subject,\r\n msgBody: formData.msgBody,\r\n attachments: await Promise.all(emailAttachments),\r\n isTestEmail: true\r\n // attachments: await Promise.all(attachments)\r\n };\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n\r\n const resultOperation = MailApi.create(listToSend);\r\n\r\n resultOperation\r\n .then(() => {\r\n showNotification('ra.notification.distribution_email_sent', 'info');\r\n\r\n handleDialogToggle();\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.userEmailsFormProps.form.reset();\r\n fetchEnd();\r\n this.setState({ submitting: false });\r\n });\r\n } else {\r\n //distribution list email\r\n const distributionListRecipients = values.users.map(item => {\r\n let obj = formData.selectedItems.find(o => o.email === item); // search by email\r\n return {\r\n userId: obj.userId,\r\n name: `${obj.firstName} ${obj.lastName}`,\r\n emailAddress: obj.email,\r\n fundId: obj.fundId,\r\n ccEmails: obj.ccEmails,\r\n investorId: obj.investors.length === 1 ? obj.investors[0].id : '*'\r\n };\r\n });\r\n\r\n let body = {\r\n distributionListRecipients,\r\n sendEmailDto: {\r\n from: {\r\n fromAddress: {\r\n name: formData.alias,\r\n address: formData.from\r\n },\r\n replyToAddress: {\r\n name: null,\r\n address: formData.aliasTo\r\n },\r\n rememberEmailAddressAlias: !!formData.rememberMe\r\n },\r\n cc: this.splitEmails(formData.cc),\r\n bcc: this.splitEmails(formData.bcc),\r\n subject: formData.subject,\r\n msgBody: formData.msgBody,\r\n attachments: await Promise.all(emailAttachments),\r\n isTestEmail: true\r\n },\r\n filters: filters\r\n };\r\n\r\n if (distributionListId) {\r\n body = { ...body, distributionListId };\r\n }\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n\r\n const resultOperation = DistributionListApi.sendMail(body);\r\n\r\n resultOperation\r\n .then(() => {\r\n showNotification('ra.notification.distribution_email_sent', 'info');\r\n handleDialogToggle();\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.userEmailsFormProps.form.reset();\r\n fetchEnd();\r\n this.setState({ submitting: false });\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n const { showDialog, formData } = this.props;\r\n const { submitting } = this.state;\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n this.handleClose();\r\n }}\r\n >\r\n \r\n {'Test Email'}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(DistributionListContactDialog);\r\n","import { Button, Grid } from '@material-ui/core';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport CKEditor from 'ckeditor4-react';\r\nimport { Labeled } from 'react-admin';\r\nimport { indexOf } from 'lodash';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport PreviewEmailApi from '../../../../core/apis/PreviewEmailApi';\r\nimport DialogTitleWithCloseButton from '../../../../core/components/DialogTitleWithCloseButton';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport RichTextInput from '../../../../core/components/inputs/RichTextInput';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\n\r\n/**\r\n * Email preview dialog\r\n */\r\nconst EmailPreviewDialog = ({\r\n showDialog,\r\n formData,\r\n handleDialogToggle,\r\n resourceuploadId\r\n}) => {\r\n // Unsubstituted subject and body come from formData\r\n const { subject, msgBody, selectedItems } = formData;\r\n // Current Distribution list item we are previewing\r\n const [currentItem, setCurrentItem] = useState(0);\r\n const [substitutedEmail, setSubstitutedEmail] = useState({});\r\n const notifyServerError = useNotifyServerError();\r\n const item = selectedItems[currentItem];\r\n const [loading, setLoading] = useState(false);\r\n\r\n // Go to next/previous item\r\n const nextItem = useCallback(() => {\r\n if (currentItem + 1 >= selectedItems.length) {\r\n // Loop to position 0\r\n setCurrentItem(0);\r\n } else {\r\n setCurrentItem(currentItem + 1);\r\n }\r\n }, [selectedItems, currentItem]);\r\n\r\n const previousItem = useCallback(() => {\r\n if (currentItem - 1 < 0) {\r\n // Loop to last item\r\n setCurrentItem(selectedItems.length - 1);\r\n } else {\r\n setCurrentItem(currentItem - 1);\r\n }\r\n }, [selectedItems, currentItem]);\r\n\r\n const fetchData = useCallback(() => {\r\n if (item) {\r\n const emailToSubstitute = {\r\n subject,\r\n msgBody,\r\n fundId: item.fundId,\r\n investorId: item.investorId,\r\n resourceUploadId: resourceuploadId,\r\n documentId: item.documentId,\r\n userId: item.userId,\r\n userEmail: item.email,\r\n testEmail: false\r\n };\r\n setLoading(true);\r\n PreviewEmailApi.deliveryTabPreview(emailToSubstitute)\r\n .then(data => {\r\n setSubstitutedEmail(data);\r\n })\r\n .catch(notifyServerError)\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n }\r\n }, [item, msgBody, notifyServerError, resourceuploadId, subject]);\r\n\r\n useEffect(() => {\r\n if (showDialog) {\r\n fetchData();\r\n }\r\n }, [fetchData, showDialog]);\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleDialogToggle();\r\n }}\r\n >\r\n \r\n Preview Email\r\n \r\n \r\n \r\n {selectedItems.length === 0 ? (\r\n \r\n No contacts are selected. Please select some contacts before see\r\n the Preview email.\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {selectedItems.length === 0 ? (\r\n <>\r\n ) : (\r\n \r\n
    \r\n {`${item.firstname} ${item.lastname} / ${item.investorName}`}\r\n
    \r\n {loading && }\r\n {`Contact: ${indexOf(selectedItems, item) + 1} of ${\r\n selectedItems.length\r\n }`}\r\n \r\n \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default EmailPreviewDialog;\r\n","import {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent\r\n} from '@material-ui/core';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport React, { useState, useCallback } from 'react';\r\nimport { useNotify, FormDataConsumer, SaveButton } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport MailApi from '../../../../core/apis/MailApi';\r\nimport DialogTitleWithCloseButton from '../../../../core/components/DialogTitleWithCloseButton';\r\nimport EmailForm from './EmailForm';\r\nimport DistributionListContactDialog from '../../../testemail/DistributionListContactDialog';\r\nimport EmailPreviewDialog from './EmailPreviewDialog';\r\nimport useNotifyServerError from '../../../../core/hooks/useNotifyServerError';\r\nimport dataProvider from '../../../../core/providers/IccUserDataProvider';\r\nimport CustomSimpleForm from '../../../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = {\r\n paperWidthFalse: {\r\n height: 'inherit'\r\n },\r\n dialogContent: {\r\n padding: '0px'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n button: {\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n primaryButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n secondaryButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n },\r\n marginLeft: '10px'\r\n },\r\n form: {\r\n height: 'inherit',\r\n '& > div': {\r\n padding: '0px !important',\r\n height: 'inherit'\r\n },\r\n '& > div > div': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'inherit'\r\n }\r\n }\r\n};\r\n\r\nconst getBase64 = file => {\r\n return new Promise(resolve => {\r\n const reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function() {\r\n const b64 = reader.result.replace(/^data:.+;base64,/, '');\r\n resolve(b64);\r\n };\r\n });\r\n};\r\n\r\nconst splitEmails = value => {\r\n if (value) {\r\n const emailParts = value.split(';');\r\n return emailParts\r\n .filter(part => part.trim())\r\n .map(emailAddress => ({\r\n name: null,\r\n address: emailAddress.trim()\r\n }));\r\n }\r\n return [];\r\n};\r\n\r\nconst EmailDialog = ({\r\n handleClose,\r\n resourceuploadId,\r\n notificationMethod = 'REPORTING',\r\n open,\r\n classes,\r\n recipientsList = [],\r\n recipientsListSelected,\r\n variableType = 'deliveryTab',\r\n userProfile\r\n}) => {\r\n const [\r\n showDistributionListTestEmailDialog,\r\n setShowDistributionListTestEmailDialog\r\n ] = useState(false);\r\n const [showPreviewEmailDialog, setShowPreviewEmailDialog] = useState(false);\r\n const [submitting, setSubmitting] = useState(false);\r\n const [previousNotificationMethod, setPreviousNotificationMethod] = useState(\r\n ''\r\n );\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const toggleShowDistributionListTestEmailDialog = useCallback(\r\n () => setShowDistributionListTestEmailDialog(prevState => !prevState),\r\n []\r\n );\r\n const toggleShowPreviewEmailDialog = useCallback(\r\n () => setShowPreviewEmailDialog(prevState => !prevState),\r\n []\r\n );\r\n\r\n /**\r\n * Send Email to distribution List\r\n * @param values: values of the email created\r\n * @param distributionItemsSelected\r\n */\r\n const onSubmit = useCallback(\r\n async values => {\r\n setSubmitting(true);\r\n const groupsDict = {};\r\n\r\n const sendingList = values.selectedItems.reduce((acc, curr) => {\r\n const groupId = `${curr.documentId}:${curr.fundId}:${curr.investorId}`;\r\n let group = groupsDict[groupId];\r\n if (!group) {\r\n group = {\r\n documentId: curr.documentId,\r\n documentFileName: curr.documentFileName,\r\n fundId: curr.fundId,\r\n investorId: curr.investorId,\r\n users: []\r\n };\r\n groupsDict[groupId] = group;\r\n acc.push(group);\r\n }\r\n group.users.push({\r\n userId: curr.userId,\r\n email: curr.email,\r\n firstname: curr.firstname,\r\n lastname: curr.lastname,\r\n fax: curr.fax,\r\n address: curr.address,\r\n ccEmails: curr.ccEmails\r\n });\r\n return acc;\r\n }, []);\r\n\r\n const attachments = await (values.attachments || []).map(async item => {\r\n const base64Content = await getBase64(item.rawFile);\r\n return {\r\n content: base64Content,\r\n mimeType: item.type,\r\n fileName: item.title,\r\n disposition: null,\r\n contentId: null\r\n };\r\n });\r\n\r\n const listToSend = {\r\n resourceUploadId: resourceuploadId,\r\n notificationMethod: notificationMethod,\r\n from: {\r\n fromAddress: {\r\n name: values.alias,\r\n address: values.from\r\n },\r\n replyToAddress: {\r\n name: null,\r\n address: values.aliasTo\r\n },\r\n rememberEmailAddressAlias: values.rememberMe\r\n },\r\n to: sendingList,\r\n cc: splitEmails(values.cc),\r\n bcc: splitEmails(values.bcc),\r\n subject: values.subject,\r\n msgBody: values.msgBody,\r\n attachments: await Promise.all(attachments),\r\n isTestEmail: false\r\n };\r\n\r\n if (\r\n values.rememberMe &&\r\n (values.alias !== null || values.aliasTo !== null)\r\n ) {\r\n try {\r\n await dataProvider('UPDATE', 'aliasUdfs', {\r\n data: {\r\n emailAlias: values.alias || '',\r\n emailAliasReplyTo: values.aliasTo || ''\r\n }\r\n });\r\n } catch (e) {\r\n notifyServerError(e);\r\n }\r\n }\r\n try {\r\n await MailApi.create(listToSend);\r\n setSubmitting(false);\r\n handleClose();\r\n notify('ra.notification.distribution_email_sent');\r\n } catch (e) {\r\n setSubmitting(false);\r\n notifyServerError(e);\r\n }\r\n },\r\n [\r\n resourceuploadId,\r\n notificationMethod,\r\n handleClose,\r\n notify,\r\n notifyServerError\r\n ]\r\n );\r\n\r\n return (\r\n \r\n \r\n {formprops => {\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n disableEnforceFocus={true}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Edit Email\r\n \r\n \r\n \r\n \r\n {({ formData, ...rest }) =>\r\n formData && (\r\n \r\n )\r\n }\r\n \r\n\r\n \r\n {({ formData, ...rest }) =>\r\n formData && (\r\n \r\n )\r\n }\r\n \r\n \r\n \r\n {/*
    \r\n \r\n Test Email\r\n \r\n
    */}\r\n
    \r\n \r\n Test Email\r\n \r\n \r\n Preview Email\r\n \r\n
    \r\n }\r\n />\r\n \r\n \r\n );\r\n }}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(EmailDialog);\r\n","import {\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n StepButton,\r\n Step,\r\n StepLabel,\r\n Stepper\r\n} from '@material-ui/core/';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport React, { Fragment } from 'react';\r\nimport { resolveRedirectTo, showNotification } from 'react-admin';\r\nimport ResourceUploadApi from '../../core/apis/ResourceUploadApi';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport Confirm from '../../core/components/forked/layout/Confirm';\r\nimport AssignSplitStep from './uploadsteps/SplitStep/AssignSplitStep';\r\nimport DetailsStep from './uploadsteps/DetailsStep';\r\nimport FundsStep from './uploadsteps/FundStep/FundsStep';\r\nimport InvestorsStep from './uploadsteps/InvestorsStep';\r\nimport SummaryStep from './uploadsteps/SummaryStep';\r\nimport DeliveryStep from './uploadsteps/DeliveryStep';\r\nimport EmailDialog from './uploadsteps/emailDialog/EmailDialog';\r\nimport { connect } from 'react-redux';\r\nimport { getIcError } from '../../core/providers/utils';\r\nimport { parse } from '../../core/components/forked/stringify';\r\nimport TenantConfigurationApi from '../../core/apis/TenantConfigurationApi';\r\nimport dataProvider from '../../core/providers/IccUserDataProvider';\r\n\r\nconst styles = {\r\n stepper: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '0 0 0px',\r\n display: 'inline-flex'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n button: {\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n secondaryButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n root: {\r\n paddingTop: '10px',\r\n paddingBottom: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n dialogContent: {\r\n display: 'flex',\r\n flex: 1,\r\n padding: '0px'\r\n },\r\n stepperContainer: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '11px 8px',\r\n height: '24px',\r\n borderBottom: '1px solid #E0E0E0'\r\n },\r\n stepButton: {\r\n margin: 0,\r\n padding: 0\r\n },\r\n stepContainer: {\r\n display: 'flex',\r\n width: '100%',\r\n padding: '16px',\r\n overflowX: 'auto',\r\n '& > div': {\r\n width: 'inherit'\r\n },\r\n '& .simple-form': {\r\n width: '100%'\r\n }\r\n },\r\n noPaddingContainer: {\r\n display: 'flex',\r\n width: '100%',\r\n padding: '0px',\r\n overflowX: 'auto',\r\n '& > div': {\r\n width: 'inherit'\r\n },\r\n '& .simple-form': {\r\n width: '100%'\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Document upload driver.\r\n * It handles the various steps under it as separate forms.\r\n */\r\nclass ResourceUploadCreate extends React.Component {\r\n // Current from (FormApi object)\r\n currentForm;\r\n\r\n // uploadType\r\n bulkType;\r\n\r\n /**\r\n * Get active Step\r\n * @param {*} props\r\n */\r\n constructor(props) {\r\n super(props);\r\n\r\n // List of steps\r\n const { permissions = [] } = props;\r\n const hasApprovePermission = permissions.includes(\r\n 'AUTH_APPROVE_RESOURCE_UPLOAD'\r\n );\r\n const hasSendEmailPermission = permissions.includes(\r\n 'AUTH_SEND_EMAIL_NOTIFICATION'\r\n );\r\n\r\n this.steps = [\r\n {\r\n name: 'details',\r\n label: 'Document Details',\r\n component: DetailsStep,\r\n bulkUploadStep: true,\r\n singleUploadStep: true,\r\n approveButton: false,\r\n nextButton: true,\r\n backButton: false\r\n },\r\n {\r\n name: 'funds',\r\n label: 'Select Funds',\r\n component: FundsStep,\r\n bulkUploadStep: true,\r\n singleUploadStep: true,\r\n approveButton: false,\r\n nextButton: true,\r\n backButton: true\r\n },\r\n {\r\n name: 'investors',\r\n label: 'Select Investors',\r\n component: InvestorsStep,\r\n bulkUploadStep: false,\r\n singleUploadStep: true,\r\n approveButton: false,\r\n nextButton: true,\r\n backButton: true\r\n },\r\n {\r\n name: 'matching',\r\n label: 'Matching',\r\n component: AssignSplitStep,\r\n bulkUploadStep: true,\r\n singleUploadStep: false,\r\n approveButton: false,\r\n nextButton: true,\r\n backButton: true\r\n },\r\n {\r\n name: 'summary',\r\n label: 'Summary',\r\n component: SummaryStep,\r\n bulkUploadStep: true,\r\n singleUploadStep: true,\r\n approveButton: hasApprovePermission,\r\n nextButton: hasSendEmailPermission,\r\n backButton: true\r\n },\r\n {\r\n name: 'delivery',\r\n label: 'Delivery',\r\n component: DeliveryStep,\r\n bulkUploadStep: true,\r\n singleUploadStep: true,\r\n approveButton: false,\r\n nextButton: false,\r\n backButton: true\r\n }\r\n ];\r\n\r\n this.bulkType = this.getBulkMode();\r\n const fundLevelDoc = props.record ? props.record.allInvestors : false;\r\n\r\n const steps = this.getPopupSteps(fundLevelDoc);\r\n\r\n this.state = {\r\n activeStep: 0, // Current step,\r\n targetStep: -1,\r\n closing: false, // Dialog box closing\r\n resourceupload: this.props.record || {}, // Resourceupload to edit OR Resourceupload empty object\r\n confirmDialogIsOpen: false,\r\n fundLevelDocumentsChecked: fundLevelDoc,\r\n confirmUpdateDialogIsOpen: false,\r\n confirmUpdateAndCloseDialogIsOpen: false,\r\n openEmailModal: false,\r\n popupSteps: steps,\r\n submitInProgress: false,\r\n uploadChanged: false,\r\n isFundLevelFlowAvailable: false,\r\n isDocumentTagLoading: true\r\n };\r\n }\r\n\r\n componentDidMount = async () => {\r\n try {\r\n const resDocumentTag = await TenantConfigurationApi.get('Document_Tag');\r\n const isDocumentTagActiveValue = resDocumentTag.pageData[0].value;\r\n const isDocumentTagFlagActive = !(\r\n isDocumentTagActiveValue === 'false' ||\r\n isDocumentTagActiveValue === '0' ||\r\n !isDocumentTagActiveValue\r\n );\r\n const resFITag = await dataProvider('GET_LIST', 'fundinvestortags', {});\r\n this.setState({\r\n isFundLevelFlowAvailable: isDocumentTagFlagActive && resFITag.total > 0\r\n });\r\n } catch (error) {\r\n console.error('Error: ', error);\r\n } finally {\r\n this.setState({ isDocumentTagLoading: false });\r\n }\r\n };\r\n\r\n getBulkMode() {\r\n const {\r\n record,\r\n location: { search }\r\n } = this.props;\r\n if (record && record.profileData) {\r\n return record.profileData.uploadType === 'BULK';\r\n }\r\n const queryParams = parse(search);\r\n return queryParams.mode === 'bulk';\r\n }\r\n\r\n getPopupSteps(isFundLevelDoc) {\r\n const { permissions = [] } = this.props;\r\n const hasSendEmailPermission = permissions.includes(\r\n 'AUTH_SEND_EMAIL_NOTIFICATION'\r\n );\r\n return this.bulkType\r\n ? this.steps.filter(function(step) {\r\n return (\r\n step.bulkUploadStep === true &&\r\n !(!hasSendEmailPermission && step.name === 'delivery')\r\n );\r\n })\r\n : this.steps.filter(function(step) {\r\n return (\r\n step.singleUploadStep === true &&\r\n !(isFundLevelDoc && step.name === 'investors') &&\r\n !(!hasSendEmailPermission && step.name === 'delivery')\r\n );\r\n });\r\n }\r\n\r\n handleOpenEmailModal = (\r\n recipientsListSelected,\r\n recipientsList,\r\n notificationMethod\r\n ) => {\r\n this.setState({\r\n openEmailModal: true,\r\n recipientsListSelected,\r\n recipientsList,\r\n notificationMethod\r\n });\r\n };\r\n\r\n setSplitStatus = status => {\r\n this.setState({ splitStatus: status });\r\n };\r\n\r\n getActiveStep(steps) {\r\n const {\r\n activeStep,\r\n uploadChanged,\r\n isFundLevelFlowAvailable,\r\n isDocumentTagLoading,\r\n fundLevelDocumentsChecked\r\n } = this.state;\r\n const step = steps[activeStep];\r\n const { classes, permissions = [], ...rest } = this.props;\r\n const hasSendEmailPermission = permissions.includes(\r\n 'AUTH_SEND_EMAIL_NOTIFICATION'\r\n );\r\n\r\n return (\r\n \r\n );\r\n }\r\n\r\n handleCloseEmail = () => {\r\n this.setState({ openEmailModal: false });\r\n };\r\n\r\n disableActionButtons = () => {\r\n const { submitInProgress } = this.state;\r\n if (!submitInProgress) {\r\n this.setState({ submitInProgress: true });\r\n }\r\n };\r\n handleResetActionButtons = () => {\r\n const { submitInProgress } = this.state;\r\n if (submitInProgress) {\r\n this.setState({ submitInProgress: false });\r\n }\r\n };\r\n\r\n //used only on Matching Step where dialog is should not be closed even if submit fails\r\n handleResetClosingState = () => {\r\n this.setState({ closing: false });\r\n };\r\n\r\n render() {\r\n const {\r\n activeStep,\r\n confirmDialogIsOpen,\r\n confirmUpdateDialogIsOpen,\r\n confirmUpdateAndCloseDialogIsOpen,\r\n openEmailModal,\r\n resourceupload,\r\n splitStatus,\r\n recipientsListSelected,\r\n recipientsList,\r\n popupSteps,\r\n submitInProgress,\r\n approveClicked,\r\n setPendingClicked,\r\n notificationMethod\r\n } = this.state;\r\n const { classes, isEdit, userProfile } = this.props;\r\n const specialTextForMatchingStepLeaveModal =\r\n popupSteps[activeStep].label === 'Matching' ? (\r\n

    Your changes will be saved. Are you sure?

    \r\n ) : (\r\n

    Your changes will not be saved. Are you sure?

    \r\n );\r\n const hasNext = popupSteps[activeStep]\r\n ? popupSteps[activeStep].nextButton\r\n : false;\r\n const hasBack = popupSteps[activeStep]\r\n ? popupSteps[activeStep].backButton\r\n : false;\r\n const hasApproveButton = popupSteps[activeStep]\r\n ? popupSteps[activeStep].approveButton\r\n : false;\r\n // const batchUploadViaApiValid = this.validateBatch(resourceupload);\r\n return (\r\n \r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return this.handleCloseClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n {'Upload Document' +\r\n (resourceupload.resourceUploadId\r\n ? ' - ' + resourceupload.resourceUploadId\r\n : '') +\r\n (resourceupload.fileName ? ' - ' + resourceupload.fileName : '')}\r\n \r\n
    \r\n \r\n {popupSteps.map(\r\n (step, index) =>\r\n !(step.name === 'sendEmail') && (\r\n \r\n this.handleStep(index)}\r\n className={classes.stepButton}\r\n disabled={\r\n (step.name === 'delivery' &&\r\n resourceupload.batchStatus !== 'A') ||\r\n !isEdit\r\n }\r\n >\r\n {step.label}\r\n \r\n \r\n )\r\n )}\r\n \r\n
    \r\n \r\n <>\r\n \r\n \r\n {this.getActiveStep(popupSteps)}\r\n \r\n \r\n

    \r\n You are about to return to the Documents page.\r\n

    \r\n {specialTextForMatchingStepLeaveModal}\r\n \r\n }\r\n onConfirm={this.handleConfirm}\r\n onClose={this.handleConfirmDialogClose}\r\n confirm=\"ra.action.close\"\r\n />\r\n \r\n \r\n
    \r\n \r\n
    \r\n {hasBack && (\r\n \r\n Back\r\n \r\n )}\r\n
    \r\n <>\r\n {hasNext && (\r\n \r\n Save & Close\r\n \r\n )}\r\n {hasApproveButton && (\r\n \r\n Set as Pending\r\n \r\n )}\r\n {hasApproveButton && (\r\n \r\n Approve\r\n \r\n )}\r\n {hasNext && (\r\n \r\n Next\r\n \r\n )}\r\n {!hasNext && (\r\n \r\n Close\r\n \r\n )}\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n\r\n /**\r\n * Save current step and close modal dialog\r\n */\r\n handleSaveAndClose = confirmUpdate => {\r\n const { resourceupload, activeStep, popupSteps } = this.state;\r\n\r\n // if we are updating a resourceupload that has an 'Active' status then open confirm dialog\r\n if (\r\n (confirmUpdate !== true &&\r\n resourceupload &&\r\n resourceupload.batchStatus === 'A' &&\r\n this.currentForm.getState().dirty &&\r\n activeStep < 2) ||\r\n (confirmUpdate !== true &&\r\n activeStep === 0 &&\r\n resourceupload &&\r\n resourceupload.batchStatus === 'P' &&\r\n resourceupload.documentProfileId !==\r\n this.currentForm.getState().values.metadata.documentProfileId)\r\n ) {\r\n this.setState({ confirmUpdateAndCloseDialogIsOpen: true });\r\n return;\r\n }\r\n\r\n this.setState({ closing: true }, () => {\r\n // Trigger a submit to active form\r\n // This is needed because our modal action buttons are oustide the form\r\n // Do not submit the form on the Summary step because we don't need to approve the batch on save & close\r\n if (popupSteps[activeStep].name === 'summary') {\r\n if (!this.currentForm || !this.currentForm.getState().submitting) {\r\n this.handleClose();\r\n }\r\n } else {\r\n this.currentForm && this.currentForm.submit();\r\n //Close modal dialog when save&close is clicked even if submit is not successful\r\n if (\r\n !this.currentForm ||\r\n (!this.currentForm.getState().submitting &&\r\n !this.currentForm.getState().submitSucceeded)\r\n ) {\r\n this.handleClose();\r\n }\r\n }\r\n });\r\n };\r\n\r\n /**\r\n * Save current step and go to next one\r\n */\r\n handleNextForm = confirmUpdate => {\r\n const { resourceupload, activeStep, targetStep } = this.state;\r\n\r\n // if we are updating a resourceupload that has an 'Active' status then open confirm dialog\r\n if (\r\n (confirmUpdate !== true &&\r\n resourceupload &&\r\n resourceupload.batchStatus === 'A' &&\r\n this.currentForm &&\r\n this.currentForm.getState().dirty &&\r\n activeStep < 2) ||\r\n (confirmUpdate !== true &&\r\n activeStep === 0 &&\r\n resourceupload &&\r\n resourceupload.batchStatus === 'P' &&\r\n resourceupload.documentProfileId !==\r\n this.currentForm.getState().values.metadata.documentProfileId)\r\n ) {\r\n this.setState({ confirmUpdateDialogIsOpen: true });\r\n return;\r\n }\r\n\r\n // Trigger a submit to active form\r\n // This is needed because our modal action buttons are oustide the form\r\n if (this.currentForm) {\r\n //const batchToValidate = resourceupload;\r\n //const formState = this.currentForm.getState();\r\n\r\n // if (activeStep === 0) {\r\n // // We are on the first step (the details) we need to get the changed values from the form and apply validation on them not on initial values\r\n // const formStateValues = this.currentForm.getState().values;\r\n // batchToValidate.documentTitle = formStateValues.metadata.documentTitle;\r\n // batchToValidate.profileData.documentSecurityId =\r\n // formStateValues.metadata.profileData.documentSecurityId;\r\n // batchToValidate.documentDate = formStateValues.metadata.documentDate;\r\n // batchToValidate.profileData.categoryId =\r\n // formStateValues.metadata.profileData.categoryId;\r\n // batchToValidate.documentTypeId =\r\n // formStateValues.metadata.documentTypeId;\r\n // }\r\n\r\n //special case for validating of resourceuploads uploaded via API\r\n //prevent validation if no change is made on form\r\n //and allow to go next without submitting if the batch is not valide\r\n if (resourceupload.uploadVia && resourceupload.uploadVia === 'API') {\r\n this.goToNextStep(resourceupload);\r\n } else {\r\n this.currentForm.submit();\r\n }\r\n } else {\r\n this.setState({\r\n activeStep:\r\n targetStep !== null && targetStep >= 0 ? targetStep : activeStep + 1,\r\n targetStep: null\r\n });\r\n }\r\n };\r\n\r\n handleBackForm = () => {\r\n const { activeStep, resourceupload } = this.state;\r\n if (activeStep > 0) {\r\n this.currentForm = undefined;\r\n const steps = this.getPopupSteps(resourceupload.allInvestors);\r\n this.setState({\r\n activeStep: activeStep - 1,\r\n popupSteps: steps,\r\n fundLevelDocumentsChecked: resourceupload.allInvestors,\r\n submitInProgress: false, //enable action buttons if returning to previous step\r\n closing: false,\r\n approveClicked: false, // in case approve clicked on Summary Step and there were errors and then back button is clicked\r\n setPendingClicked: false\r\n });\r\n }\r\n };\r\n\r\n handleStep = index => {\r\n this.setState(\r\n {\r\n targetStep: index\r\n },\r\n () => {\r\n this.handleNextForm();\r\n }\r\n );\r\n };\r\n\r\n handleCloseClick = () => {\r\n this.setState({ confirmDialogIsOpen: true });\r\n };\r\n\r\n handleConfirmDialogClose = () => {\r\n this.setState({ confirmDialogIsOpen: false });\r\n };\r\n\r\n handleConfirm = () => {\r\n this.props.history.push(resolveRedirectTo('list', this.props.basePath));\r\n };\r\n\r\n /**\r\n * Close modal dialog\r\n */\r\n handleClose = () => {\r\n this.props.history.push(resolveRedirectTo('list', this.props.basePath));\r\n };\r\n\r\n handleConfirmUpdateDialogClose = () => {\r\n this.setState({\r\n confirmUpdateDialogIsOpen: false,\r\n confirmUpdateAndCloseDialogIsOpen: false\r\n });\r\n };\r\n\r\n handleConfirmUpdate = () => {\r\n if (this.state.confirmUpdateDialogIsOpen) {\r\n this.handleNextForm(true);\r\n } else {\r\n this.handleSaveAndClose(true);\r\n }\r\n this.handleConfirmUpdateDialogClose();\r\n };\r\n\r\n onFormInit = form => {\r\n this.currentForm = form;\r\n };\r\n\r\n /**\r\n * Post form submit callback.\r\n * Will close the modal if closing === true\r\n * Otherwise, go to next step\r\n *\r\n * @param resourceupload Modified resourceupload object\r\n * @param sendEmails\r\n */\r\n onSubmitEnd = async (resourceupload, sendEmails = false) => {\r\n if (this.state.closing) {\r\n this.handleClose();\r\n } else {\r\n if (this.state.approveClicked) {\r\n return await this.approveDocuments(resourceupload, sendEmails);\r\n }\r\n if (this.state.setPendingClicked) {\r\n return await this.setPending(resourceupload);\r\n }\r\n // Goto next step\r\n this.goToNextStep(resourceupload);\r\n }\r\n };\r\n\r\n goToNextStep = resourceupload => {\r\n const { activeStep, targetStep } = this.state;\r\n this.currentForm = undefined;\r\n this.setState({\r\n resourceupload,\r\n activeStep:\r\n targetStep !== null && targetStep >= 0 ? targetStep : activeStep + 1,\r\n targetStep: null,\r\n submitInProgress: false //enable action buttons if sumbit is success\r\n });\r\n };\r\n\r\n handleSetPending = () => {\r\n this.setState(\r\n {\r\n setPendingClicked: true\r\n },\r\n () => {\r\n this.currentForm && this.currentForm.submit();\r\n }\r\n );\r\n };\r\n\r\n handleApprove = () => {\r\n this.setState(\r\n {\r\n approveClicked: true\r\n },\r\n () => {\r\n this.currentForm && this.currentForm.submit();\r\n }\r\n );\r\n };\r\n\r\n setPending = async resourceupload => {\r\n try {\r\n //set batch status to Active\r\n await ResourceUploadApi.setBatchStatus(\r\n resourceupload.resourceUploadId,\r\n 'P'\r\n );\r\n this.setState({\r\n resourceupload: {\r\n ...resourceupload,\r\n batchStatus: 'P'\r\n },\r\n setPendingClicked: false\r\n });\r\n this.props.showNotification(\r\n 'ra.notification.resource_upload_pending',\r\n 'info'\r\n );\r\n } catch (e) {\r\n this.setState({\r\n setPendingClicked: false\r\n });\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(e) }\r\n });\r\n }\r\n };\r\n\r\n approveDocuments = async (resourceupload, sendEmails) => {\r\n try {\r\n //set batch status to Active\r\n await ResourceUploadApi.setBatchStatus(\r\n resourceupload.resourceUploadId,\r\n 'A'\r\n );\r\n this.setState({\r\n resourceupload: {\r\n ...resourceupload,\r\n batchStatus: 'A'\r\n },\r\n approveClicked: false\r\n });\r\n let message = 'ra.notification.resource_upload_approved';\r\n if (sendEmails) {\r\n await ResourceUploadApi.notify(resourceupload.resourceUploadId);\r\n message = 'ra.notification.resource_upload_approved_email';\r\n this.props.showNotification(message, 'info');\r\n } else {\r\n this.props.showNotification(message, 'info');\r\n }\r\n } catch (e) {\r\n this.setState({\r\n approveClicked: false\r\n });\r\n this.props.showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(e) }\r\n });\r\n }\r\n };\r\n\r\n /**\r\n * Used on step 1 (DetailsStep) if Document_Tag = true else on step 2 (FundsStep)\r\n * In order to post/put resourceUpload.allInvestor = true or false\r\n */\r\n handleFundLevelDocumentsChanged = () => {\r\n const { fundLevelDocumentsChecked } = this.state;\r\n const steps = this.getPopupSteps(!fundLevelDocumentsChecked);\r\n this.setState({\r\n fundLevelDocumentsChecked: !fundLevelDocumentsChecked,\r\n popupSteps: steps\r\n });\r\n this.handleUploadChange(true);\r\n };\r\n\r\n handleUploadChange = newValue => {\r\n this.setState({\r\n uploadChanged: newValue\r\n });\r\n };\r\n\r\n /**Validate the batch */\r\n validateBatch = values => {\r\n //validate only batches uploaded via API\r\n if (values.uploadVia !== 'API') {\r\n return true;\r\n } else {\r\n // For now we never allow to save a batch uploaded via API as the server side cannot handle missing values especially filename\r\n return false;\r\n }\r\n // if (\r\n // !values.documentTitle ||\r\n // !values.profileData.documentSecurityId ||\r\n // !values.documentDate ||\r\n // !values.profileData.categoryId ||\r\n // !values.documentTypeId ||\r\n // values.documentTypeId === 0\r\n // ) {\r\n // return false;\r\n // }\r\n // return true;\r\n };\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n showNotification\r\n};\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(ResourceUploadCreate));\r\n","import React from 'react';\r\nimport { Edit } from 'react-admin';\r\nimport ResourceUploadCreate from './ResourceUploadCreate';\r\n\r\n/**\r\n * Resource upload editor\r\n */\r\nconst ResourceuploadEdit = props => {\r\n const {\r\n hasEditPermission,\r\n hasDeletePermission,\r\n hasCreatePermission,\r\n hasReadPermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n }>\r\n \r\n \r\n );\r\n};\r\n\r\nexport default ResourceuploadEdit;\r\n","import { DocumentIcon } from '../../core/themes/icons/DocumentIcon';\r\n\r\nimport ResourceUploadList from './ResourceUploadList';\r\nimport ResourceUploadCreate from './ResourceUploadCreate';\r\nimport ResourceUploadEdit from './ResourceUploadEdit';\r\n\r\nexport default {\r\n list: ResourceUploadList,\r\n create: ResourceUploadCreate,\r\n edit: ResourceUploadEdit,\r\n icon: DocumentIcon\r\n};\r\n","const categoryStatus = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'SUSPENDED', name: 'Suspended' }\r\n];\r\n\r\nexport { categoryStatus };\r\n","import { makeStyles } from '@material-ui/core';\r\nimport CategoryIcon from '@material-ui/icons/List';\r\nimport React from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n Responsive,\r\n TextInput,\r\n SelectInput,\r\n SimpleList,\r\n TextField,\r\n TopToolbar,\r\n Pagination\r\n} from 'react-admin';\r\n\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport { categoryStatus } from './CategoryLookups';\r\n\r\nconst useStyles = makeStyles({\r\n filters: {\r\n minWidth: '225px'\r\n },\r\n statusColumnStyle: {\r\n width: '74px'\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst CategoryFilters = props => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\nconst CategoryTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n />\r\n );\r\n};\r\n\r\nconst CategoryList = props => {\r\n const classes = useStyles();\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n }\r\n filters={}\r\n perPage={20}\r\n pagination={}\r\n filter={{ subType: 'REPORTING', orphanVisibility: 'ALL_VISIBLE' }}\r\n bulkActionButtons={false}\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.name}\r\n secondaryText={record => record.id}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default CategoryList;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Fund API\r\n */\r\nclass DocumentCategoryApi extends ApiBase {\r\n /**\r\n * Check if docment name already exists\r\n * @param {*} name\r\n */\r\n async checkNameExists(name) {\r\n const encodedName = encodeURIComponent(name);\r\n const request = {\r\n headers: this.getHeaders(),\r\n url: `${this.API_URL}/category?name=${encodedName}`,\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return (\r\n (status >= 200 && status < 300) || status === 404 || status === 403\r\n );\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200 || response.status === 403) {\r\n // category name is used, in case of 403 it's not visible to the user\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Get categories by template ID\r\n */\r\n getCategoriesByTemplateID = async templateID => {\r\n const request = {\r\n url: `${this.API_URL}/categories?orphanVisibility=ALL_VISIBLE&status=ACTIVE&templateId=${templateID}`,\r\n headers: this.getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n };\r\n}\r\n\r\nexport default new DocumentCategoryApi();\r\n","import { makeStyles } from '@material-ui/core';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport React, { useState, useMemo } from 'react';\r\nimport {\r\n FormDataConsumer,\r\n ReferenceInput,\r\n required,\r\n SelectInput,\r\n TextInput,\r\n Loading,\r\n useQuery\r\n} from 'react-admin';\r\nimport { Field } from 'react-final-form';\r\nimport Confirm from '../../core/components/forked/layout/Confirm';\r\nimport DocumentCategoryApi from '../../core/apis/DocumentCategoryApi';\r\nimport CheckBoxField from '../../core/components/CheckBoxField';\r\nimport { categoryStatus } from './CategoryLookups';\r\nimport InfoOutlinedIcon from '@material-ui/icons/InfoOutlined';\r\nimport LightTooltip from '../../core/components/LightTooltip';\r\nimport { FormSpy } from 'react-final-form';\r\nimport get from 'lodash/get';\r\nimport { fieldLengthValidator } from '../../core/utils/index';\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n },\r\n formCheckBox: {\r\n marginTop: '25px'\r\n },\r\n freezeComponentStyle: {\r\n display: 'flex'\r\n },\r\n main: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'flex-start',\r\n width: 'auto'\r\n },\r\n labelStyle: {\r\n flexGrow: 1,\r\n maxWidth: '100%'\r\n },\r\n infoIcon: {\r\n color: '#757575',\r\n paddingTop: '32px',\r\n paddingLeft: '6px'\r\n }\r\n});\r\n\r\nconst CategorySummary = ({ record, ...props }) => {\r\n const [formErrors, setFormErrors] = useState({});\r\n const [confirmDialogIsOpen, setConfirmDialogIsOpen] = useState(false);\r\n const classes = useStyles();\r\n\r\n const {\r\n data: tenantConfigurations,\r\n loading: loadingTenantConfigurations\r\n } = useQuery({\r\n type: 'getList',\r\n resource: 'tenantconfigurations',\r\n payload: {\r\n filter: {\r\n nameOrCategory: 'YN_freezeInvestors'\r\n }\r\n }\r\n });\r\n\r\n const isInvestorFreezeOn = useMemo(() => {\r\n return get(tenantConfigurations, '[0].value', 'N') === 'Y';\r\n }, [tenantConfigurations]);\r\n\r\n if (loadingTenantConfigurations) return ;\r\n\r\n const handleConfirmDialogConfirm = () => {\r\n setConfirmDialogIsOpen(false);\r\n };\r\n\r\n /*\r\n * Verify that Category Name is unique\r\n */\r\n const validateCategoryName = async (value, allValues, props) => {\r\n if (record && value === record.name) {\r\n return;\r\n }\r\n\r\n if (props.active) {\r\n const nameValid = !!value.trim();\r\n let error;\r\n\r\n if (!nameValid) {\r\n error = `Category Name can't be empty space(s)`;\r\n } else {\r\n const nameExists = await DocumentCategoryApi.checkNameExists(value);\r\n if (nameExists) {\r\n error = 'Document category with this name already exists';\r\n } else {\r\n error = undefined;\r\n }\r\n }\r\n setFormErrors({ ...formErrors, name: error });\r\n return error;\r\n }\r\n return formErrors.name;\r\n };\r\n\r\n return (\r\n \r\n {formProps => {\r\n return (\r\n \r\n \r\n Category Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {isInvestorFreezeOn ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n {({ formData, ...rest }) =>\r\n formData && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n if (\r\n !props.creation &&\r\n e.target.value === 'SUSPENDED' &&\r\n formProps.values.status === 'ACTIVE'\r\n ) {\r\n setConfirmDialogIsOpen(true);\r\n }\r\n }}\r\n />\r\n \r\n

    \r\n Are you sure you want to suspend this category?\r\n

    \r\n

    \r\n All documents loaded to this category will no longer be\r\n visible to any user.\r\n

    \r\n \r\n }\r\n onConfirm={handleConfirmDialogConfirm}\r\n onClose={() => {\r\n formProps.values.status = 'ACTIVE';\r\n setConfirmDialogIsOpen(false);\r\n }}\r\n confirm=\"ra.action.confirm\"\r\n />\r\n
    \r\n \r\n );\r\n }}\r\n
    \r\n );\r\n};\r\n\r\nexport default CategorySummary;\r\n","import React from 'react';\r\nimport { Datagrid, TextField } from 'react-admin';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport { categoryStatus } from './CategoryLookups';\r\nimport EditButtonWithOnClick from '../../core/components/EditButtonWithOnClick';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst styles = () => ({\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n editButton: {\r\n color: '#757575',\r\n minWidth: '24px',\r\n padding: '6px 0',\r\n '& span': {\r\n paddingRight: 0\r\n }\r\n },\r\n editButtonColumnStyle: {\r\n width: '24px'\r\n }\r\n});\r\n\r\nconst SubcategoriesDatagrid = props => {\r\n const {\r\n handleSubcategoryEditButtonClick,\r\n classes,\r\n hasWriteCategorySubcategoryPermission,\r\n ...dataGridProps\r\n } = props;\r\n\r\n if (dataGridProps.total > 0) {\r\n return (\r\n \r\n \r\n \r\n \r\n {hasWriteCategorySubcategoryPermission && (\r\n \r\n )}\r\n \r\n );\r\n } else if (props.loaded) {\r\n return (\r\n \r\n There are no Subcategories to be displayed\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(SubcategoriesDatagrid);\r\n","import React from 'react';\r\nimport { SelectInput, TextInput, required } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\nimport { Field } from 'react-final-form';\r\nimport CheckBoxField from '../../core/components/CheckBoxField';\r\nimport { categoryStatus } from './CategoryLookups';\r\nimport { fieldLengthValidator } from '../../core/utils/index';\r\n\r\nconst SubcategorySummary = () => (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n);\r\n\r\nexport default SubcategorySummary;\r\n","import React from 'react';\r\nimport { Create, Edit } from 'react-admin';\r\nimport SubcategorySummary from './SubcategorySummary';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { FormSpy } from 'react-final-form';\r\nimport SimpleFormWithSave from '../../core/components/form/SimpleFormWithSave';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nconst SubcategoryForm = props => {\r\n const {\r\n handleSubmit,\r\n setSubcategoryFormProps,\r\n operation,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n handleDialogToggle,\r\n showDialog,\r\n okButtonLabel,\r\n popupTitle,\r\n crudGetList,\r\n setSort,\r\n loaded,\r\n currentSort,\r\n classes,\r\n categoryId,\r\n ...operationProps\r\n } = props;\r\n\r\n if (operation === 'Create') {\r\n return (\r\n \r\n \r\n \r\n {props => {\r\n setSubcategoryFormProps(props);\r\n return ;\r\n }}\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {props => {\r\n setSubcategoryFormProps(props);\r\n return ;\r\n }}\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(SubcategoryForm);\r\n","import React from 'react';\r\nimport {\r\n SaveButton,\r\n CREATE,\r\n UPDATE,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n} from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { connect } from 'react-redux';\r\n\r\nimport dataProvider from '../../core/providers/IccUserDataProvider';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport SubcategoryForm from './SubcategoryForm';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nclass SubcategoryCreateDialog extends React.Component {\r\n subcategoryFormProps;\r\n\r\n state = {\r\n submitting: false\r\n };\r\n\r\n setSubcategoryFormProps = props => {\r\n this.subcategoryFormProps = props;\r\n };\r\n\r\n handleSaveClick = event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n this.subcategoryFormProps.form.submit(event);\r\n };\r\n\r\n handleClose = () => {\r\n const { handleDialogToggle } = this.props;\r\n const { submitting } = this.state;\r\n if (submitting) return;\r\n this.subcategoryFormProps.form.reset();\r\n handleDialogToggle();\r\n };\r\n\r\n handleSubmit = values => {\r\n const {\r\n operation,\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n handleDialogToggle,\r\n refreshView,\r\n categoryId\r\n } = this.props;\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n this.setState({ submitting: true });\r\n\r\n // As we want to know when the new subcategory has been created in order to close the modal, we use the\r\n // dataProvider directly\r\n const crudOperation = operation === 'Create' ? CREATE : UPDATE;\r\n dataProvider(crudOperation, 'subcategories', {\r\n data: { ...values, categoryId }\r\n })\r\n .then(() => {\r\n refreshView();\r\n handleDialogToggle();\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n this.setState({ submitting: false });\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.subcategoryFormProps.form.reset();\r\n fetchEnd();\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n operation,\r\n showDialog,\r\n popupTitle,\r\n okButtonLabel,\r\n refreshView,\r\n subcategoryId,\r\n categoryId,\r\n ...rest\r\n } = this.props;\r\n const { submitting } = this.state;\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n this.handleClose();\r\n }}\r\n >\r\n \r\n {popupTitle}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(SubcategoryCreateDialog);\r\n","import { Grid, Typography } from '@material-ui/core/';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport React from 'react';\r\nimport {\r\n Button,\r\n Edit,\r\n FormTab,\r\n List,\r\n TabbedForm,\r\n TopToolbar\r\n} from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport { ListPagination } from '../../core/components/list/ListPagination';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport { getInitials, removePathEnd } from '../../core/utils';\r\nimport CategorySummary from './CategorySummary';\r\nimport SubcategoriesDatagrid from './SubcategoriesDataGrid';\r\nimport SubcategoryCreateDialog from './SubcategoryCreateDialog';\r\nimport ViewTab from '../../core/components/forked/layout/ViewTab';\r\n\r\nconst styles = () => ({\r\n gridTab: {\r\n marginTop: '-17px !important'\r\n },\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst SubcategoryActionStyles = {\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: 'white',\r\n alignSelf: 'center'\r\n },\r\n headline: {}\r\n};\r\n\r\nconst CategoryTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst SubcategoryAction = withStyles(SubcategoryActionStyles)(\r\n ({\r\n classes,\r\n handleSubcategoryCreateDialogToggle,\r\n hasWriteCategorySubcategoryPermission\r\n }) => (\r\n \r\n \r\n Subcategories\r\n \r\n \r\n {hasWriteCategorySubcategoryPermission && (\r\n \r\n )}\r\n \r\n \r\n )\r\n);\r\n\r\nclass CategoryEdit extends React.Component {\r\n state = {\r\n showSubcategoryCreateDialog: false,\r\n showSubcategoryEditDialog: false,\r\n subcategoryRecord: {},\r\n whenBlockNavigation: false\r\n };\r\n\r\n handleSubcategoryCreateDialogToggle = () => {\r\n this.setState(prevState => {\r\n return {\r\n showSubcategoryCreateDialog: !prevState.showSubcategoryCreateDialog\r\n };\r\n });\r\n };\r\n\r\n handleSubcategoryEditDialogToggle = () => {\r\n this.setState(prevState => {\r\n return {\r\n showSubcategoryEditDialog: !prevState.showSubcategoryEditDialog\r\n };\r\n });\r\n };\r\n\r\n handleSubcategoryEditButtonClick = (\r\n subcategoryRecord,\r\n subcategoryBasePath\r\n ) => {\r\n this.setState(prevState => {\r\n return {\r\n showSubcategoryEditDialog: !prevState.showSubcategoryEditDialog,\r\n subcategoryRecord,\r\n subcategoryBasePath\r\n };\r\n });\r\n };\r\n\r\n onBeforeDelete = () => {\r\n // Unblock navigation before deleting\r\n this.setState({\r\n whenBlockNavigation: false\r\n });\r\n };\r\n\r\n handleFormIsDirty(dirty) {\r\n // Block navigation if the form is dirty\r\n this.setState({ whenBlockNavigation: dirty });\r\n }\r\n\r\n render() {\r\n const {\r\n showSubcategoryCreateDialog,\r\n showSubcategoryEditDialog,\r\n subcategoryRecord,\r\n subcategoryBasePath,\r\n whenBlockNavigation\r\n } = this.state;\r\n const {\r\n classes,\r\n dispatch,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n permissions = [],\r\n userProfile,\r\n ...rest\r\n } = this.props;\r\n const displayToolbar = this.props.match.isExact;\r\n const hasWriteCategorySubcategoryPermission = permissions.includes(\r\n 'AUTH_WRITE_CATEGORY_SUBCATEGORY'\r\n );\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n \r\n {\r\n const self = this;\r\n setTimeout(() => self.handleFormIsDirty(props.dirty), 1);\r\n }}\r\n />\r\n \r\n \r\n }\r\n filter={{\r\n categoryId: this.props.id,\r\n orphanVisibility: 'ALL_VISIBLE'\r\n }}\r\n className={classes.gridTab}\r\n sort={{ field: 'name', order: 'ASC' }}\r\n basePath=\"/subcategories\"\r\n resource=\"subcategories\"\r\n title=\" \"\r\n actions={\r\n \r\n }\r\n bulkActionButtons={false}\r\n empty={\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(CategoryEdit);\r\n","import React, { useCallback } from 'react';\r\nimport { SaveButton, Toolbar } from 'react-admin';\r\nimport Button from '@material-ui/core/Button';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { useHistory, useLocation } from 'react-router-dom';\r\n\r\nconst styles = {\r\n button: {\r\n marginRight: '8px'\r\n },\r\n toolbar: {\r\n backgroundColor: 'transparent',\r\n paddingLeft: '16px'\r\n }\r\n};\r\n\r\nconst CreateToolbar = ({\r\n classes,\r\n allowNavigationOnSave,\r\n _submitting,\r\n disabled,\r\n ...rest\r\n}) => {\r\n const history = useHistory();\r\n const location = useLocation();\r\n\r\n const handleClickCancel = useCallback(() => {\r\n history.push(location.pathname.split('/create')[0]);\r\n }, [history, location.pathname]);\r\n\r\n return (\r\n \r\n }\r\n className={classes.button}\r\n onClick={allowNavigationOnSave}\r\n disabled={disabled}\r\n />\r\n <>\r\n {' '}\r\n {/** to prevent property forwarding */}\r\n \r\n Back\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(CreateToolbar);\r\n","import { withStyles } from '@material-ui/core/styles';\r\nimport React from 'react';\r\nimport { Create, FormTab, TabbedForm } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport omit from 'lodash/omit';\r\n\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport CategorySummary from './CategorySummary';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst CategoryTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nclass CategoryCreate extends React.Component {\r\n state = {\r\n whenBlockNavigation: false\r\n };\r\n\r\n handleFormIsDirty(dirty) {\r\n // Block bnavigation when the form is dirty\r\n if (dirty !== this.state.whenBlockNavigation) {\r\n this.setState({ whenBlockNavigation: dirty });\r\n }\r\n }\r\n allowNavigationOnSave = () => {\r\n this.setState({ whenBlockNavigation: false });\r\n };\r\n\r\n render() {\r\n const { whenBlockNavigation } = this.state;\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n \r\n {\r\n this.handleFormIsDirty(props.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(CategoryCreate);\r\n","import CategoryList from './CategoryList';\r\nimport CategoryEdit from './CategoryEdit';\r\nimport CategoryCreate from './CategoryCreate';\r\nimport CategoryIcon from '@material-ui/icons/List';\r\n\r\nexport default {\r\n list: CategoryList,\r\n edit: CategoryEdit,\r\n create: CategoryCreate,\r\n icon: CategoryIcon\r\n};\r\n","import { makeStyles } from '@material-ui/core';\r\nimport PresetIcon from '@material-ui/icons/LibraryBooks';\r\nimport React from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n ReferenceField,\r\n Responsive,\r\n SimpleList,\r\n TextField,\r\n TopToolbar,\r\n Pagination,\r\n TextInput\r\n} from 'react-admin';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n marginRight: 'auto'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst PresetFilters = props => (\r\n \r\n \r\n \r\n);\r\n\r\nconst PresetTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n />\r\n );\r\n};\r\n\r\nconst PresetList = props => {\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n }\r\n filters={}\r\n perPage={20}\r\n pagination={}\r\n filter={{ subType: 'REPORTING' }}\r\n bulkActionButtons={false}\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.name}\r\n secondaryText={record => record.id}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default PresetList;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Fund API\r\n */\r\nclass DocumentPresetApi extends ApiBase {\r\n /**\r\n * Check if preset bane already exists\r\n * @param {*} presetName\r\n */\r\n async checkNameExists(presetName) {\r\n const request = {\r\n url: `${this.API_URL}/documentpreset?presetName=${presetName}`,\r\n headers: this.getHeaders(),\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return (status >= 200 && status < 300) || status === 404;\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200) {\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nexport default new DocumentPresetApi();\r\n","import { Grid, Typography } from '@material-ui/core/';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport React, { useState, useRef, useEffect, useCallback } from 'react';\r\nimport {\r\n fetchEnd,\r\n fetchStart,\r\n RadioButtonGroupInput,\r\n ReferenceInput,\r\n required,\r\n SelectInput,\r\n TextInput\r\n} from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { isFieldContainsOnlySpaces } from '../../core/utils/index';\r\n\r\nimport dataProvider from '../../../src/core/providers/IccUserDataProvider';\r\nimport DocumentPresetApi from '../../core/apis/DocumentPresetApi';\r\nimport FieldTitleWithListPopover from '../../core/components/inputs/FieldTitleWithListPopover';\r\n\r\nimport { useFormState, useForm } from 'react-final-form';\r\nimport { batchTitleVariables } from '../resourceuploads/ResourceUploadLookups';\r\nimport toArray from 'lodash/toArray';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst styles = {\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n },\r\n formCheckBox: {\r\n marginTop: '19px'\r\n },\r\n label: {\r\n fontSize: '14px',\r\n color: '#757575',\r\n paddingLeft: '2px',\r\n transform: 'translate(0px, 5px)'\r\n },\r\n inputLabel: {\r\n width: '100%'\r\n }\r\n};\r\n\r\nconst translateWatermarkInputToRecord = v => {\r\n if (v === -1) {\r\n return null;\r\n }\r\n return v;\r\n};\r\n\r\nconst translateWatermarkRecordToInput = v => {\r\n if (v === null) {\r\n return -1;\r\n }\r\n return v;\r\n};\r\n\r\nconst WatermarkSelectInput = props => {\r\n let defaultProfile = {\r\n id: -1,\r\n profileName: 'Default Profile'\r\n };\r\n let customChoices = [];\r\n\r\n customChoices.push(defaultProfile);\r\n customChoices = customChoices.concat(props.choices);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst whenFieldChanges = (field, becomes, set, to, formProps) => {\r\n if (\r\n formProps &&\r\n formProps.values &&\r\n (!becomes || formProps.values[field] === becomes)\r\n ) {\r\n formProps.form.change(set, to);\r\n }\r\n};\r\n\r\nconst PresetSummary = props => {\r\n const [hasSubcategories, setHasSubcategories] = useState(false);\r\n const [hasWatermark, setHasWatermark] = useState(false);\r\n const [subcategories, setSubcategories] = useState([]);\r\n const [formErrors, setFormErrors] = useState([]);\r\n\r\n const formState = useFormState();\r\n const form = useForm();\r\n const resourceUploadTitleRef = useRef(null);\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const { record } = props;\r\n\r\n const onCategoryChange = useCallback(\r\n (categoryId, formProps) => {\r\n // reset subCategoryId field\r\n whenFieldChanges(\r\n 'categoryId',\r\n undefined,\r\n 'subCategoryId',\r\n undefined,\r\n formProps\r\n );\r\n\r\n fetchStart();\r\n const crudOperation = 'GET_LIST';\r\n dataProvider(crudOperation, 'subcategories', {\r\n pagination: { page: 1, perPage: -1 },\r\n sort: { field: 'name', order: 'DESC' },\r\n filter: { categoryId: categoryId }\r\n })\r\n .then(({ data }) => {\r\n if (data) {\r\n var subCats = data.filter(subcat => subcat.name !== '');\r\n if (subCats.length > 0) {\r\n setHasSubcategories(true);\r\n setSubcategories(subCats);\r\n } else {\r\n setHasSubcategories(false);\r\n setSubcategories(undefined);\r\n }\r\n }\r\n })\r\n .catch(notifyServerError)\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n fetchEnd();\r\n });\r\n },\r\n [notifyServerError]\r\n );\r\n\r\n useEffect(() => {\r\n record && record.watermarkProfileId && setHasWatermark(true);\r\n if (record && record.documentSecurityId) {\r\n fetchStart();\r\n const crudOperation = 'GET_ONE';\r\n dataProvider(crudOperation, 'documentsecurities', {\r\n id: record.documentSecurityId\r\n })\r\n .then(({ data }) => {\r\n if (data && data.applyWatermark) {\r\n setHasWatermark(true);\r\n } else {\r\n setHasWatermark(false);\r\n }\r\n })\r\n .catch(notifyServerError)\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n fetchEnd();\r\n });\r\n }\r\n record && record.categoryId && onCategoryChange(record.categoryId);\r\n }, [record, notifyServerError, onCategoryChange]);\r\n\r\n /*\r\n * Verify that Preset Name is unique\r\n */\r\n const validatePresetName = async (value, allValues, props) => {\r\n if (props.record && value === props.record.presetName) {\r\n return;\r\n }\r\n\r\n if (props.active) {\r\n let error;\r\n const nameExists = await DocumentPresetApi.checkNameExists(value);\r\n\r\n if (nameExists) {\r\n error = 'Document profile with this name already exists';\r\n } else {\r\n error = undefined;\r\n }\r\n\r\n setFormErrors({ ...formErrors, name: error });\r\n return error;\r\n }\r\n return formErrors.name;\r\n };\r\n\r\n const onSecurityChange = useCallback(\r\n (securityId, formProps) => {\r\n // reset watermarkProfileId field\r\n whenFieldChanges(\r\n 'documentSecurityId',\r\n undefined,\r\n 'watermarkProfileId',\r\n undefined,\r\n formProps\r\n );\r\n\r\n fetchStart();\r\n const crudOperation = 'GET_ONE';\r\n dataProvider(crudOperation, 'documentsecurities', { id: securityId })\r\n .then(({ data }) => {\r\n if (data && data.applyWatermark) {\r\n setHasWatermark(true);\r\n } else {\r\n setHasWatermark(false);\r\n }\r\n })\r\n .catch(notifyServerError)\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n fetchEnd();\r\n });\r\n },\r\n [notifyServerError]\r\n );\r\n\r\n const onUploadTypeChange = (splitType, formProps) => {\r\n // reset splitMethodId field\r\n whenFieldChanges(\r\n 'uploadType',\r\n undefined,\r\n 'splitMethodId',\r\n undefined,\r\n formProps\r\n );\r\n };\r\n\r\n const handleSelectVariableBatchTitle = variable => {\r\n let currentValue = toArray(formState.values.resourceUploadTitle || '');\r\n const cursorIndex = resourceUploadTitleRef.current.selectionStart || 0;\r\n currentValue.splice(cursorIndex, 0, variable.value);\r\n\r\n form.change('resourceUploadTitle', currentValue.join(''));\r\n };\r\n\r\n const { classes, variant, resource } = props;\r\n\r\n const myrequired = (at1, at2, at3) => {\r\n return required()(at1, at2, at3);\r\n };\r\n\r\n return (\r\n \r\n {formProps => {\r\n return (\r\n \r\n \r\n Document Profile Details\r\n \r\n \r\n \r\n \r\n \r\n {\r\n onCategoryChange(event.target.value, formProps);\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n {hasSubcategories ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n \r\n )\r\n }}\r\n InputLabelProps={{\r\n classes: {\r\n root: classes.inputLabel\r\n }\r\n }}\r\n variant={variant}\r\n inputRef={resourceUploadTitleRef}\r\n />\r\n \r\n \r\n {\r\n onSecurityChange(event.target.value, formProps);\r\n }}\r\n >\r\n \r\n \r\n \r\n {hasWatermark ? (\r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n onUploadTypeChange(value, formProps);\r\n }}\r\n />\r\n \r\n \r\n {formProps &&\r\n formProps.values &&\r\n formProps.values.uploadType === 'BULK' && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(PresetSummary);\r\n","import { withStyles } from '@material-ui/core/styles';\r\nimport React from 'react';\r\nimport { Edit, FormTab, TabbedForm } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport { getInitials, removePathEnd } from '../../core/utils';\r\nimport PresetSummary from './PresetSummary';\r\n\r\nconst styles = () => ({\r\n gridTab: {\r\n marginTop: '-17px !important'\r\n },\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst PresetTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nclass PresetEdit extends React.Component {\r\n state = {\r\n whenBlockNavigation: false\r\n };\r\n\r\n onBeforeDelete = () => {\r\n // Unblock navigation before deleting\r\n this.setState({\r\n whenBlockNavigation: false\r\n });\r\n };\r\n\r\n handleFormIsDirty(dirty) {\r\n // Block navigation if the form is dirty\r\n this.setState({ whenBlockNavigation: dirty });\r\n }\r\n\r\n render() {\r\n const { whenBlockNavigation } = this.state;\r\n const {\r\n classes,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = this.props;\r\n const displayToolbar = this.props.match.isExact;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n \r\n {\r\n const self = this;\r\n setTimeout(() => self.handleFormIsDirty(props.dirty), 1);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(PresetEdit);\r\n","import { withStyles } from '@material-ui/core/styles';\r\nimport React from 'react';\r\nimport { Create, FormTab, TabbedForm } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport omit from 'lodash/omit';\r\n\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport PresetSummary from './PresetSummary';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst PresetTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nclass PresetCreate extends React.Component {\r\n state = {\r\n whenBlockNavigation: false\r\n };\r\n\r\n handleFormIsDirty(dirty) {\r\n // Block bnavigation when the form is dirty\r\n this.setState({ whenBlockNavigation: dirty });\r\n }\r\n allowNavigationOnSave = () => {\r\n this.setState({ whenBlockNavigation: false });\r\n };\r\n\r\n render() {\r\n const { whenBlockNavigation } = this.state;\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n \r\n {\r\n const self = this;\r\n setTimeout(() => self.handleFormIsDirty(props.dirty), 1);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(PresetCreate);\r\n","import PresetList from './PresetList';\r\nimport PresetEdit from './PresetEdit';\r\nimport PresetCreate from './PresetCreate';\r\nimport PresetIcon from '@material-ui/icons/LibraryBooks';\r\n\r\nexport default {\r\n list: PresetList,\r\n edit: PresetEdit,\r\n create: PresetCreate,\r\n icon: PresetIcon\r\n};\r\n","import React, { useEffect, useMemo } from 'react';\r\nimport {\r\n ReferenceField,\r\n Datagrid,\r\n TextField,\r\n DatagridBody,\r\n useUnselectAll,\r\n FunctionField\r\n} from 'react-admin';\r\nimport { connect } from 'react-redux';\r\nimport { get } from 'lodash';\r\n\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\n\r\nimport LinkField from '../../core/components/LinkField';\r\nimport { categoryStatus } from '../categories/CategoryLookups';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\n\r\nconst styles = () => ({\r\n statusColumnStyle: {\r\n width: '68px'\r\n },\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n paddingBottom: '10px'\r\n },\r\n expandLabel: {\r\n color: '#757575',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n transform: 'translateY(-10px)'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n editButton: {\r\n color: '#757575',\r\n minWidth: '24px',\r\n padding: '6px 0',\r\n '& span': {\r\n paddingRight: 0\r\n }\r\n },\r\n editButtonColumnStyle: {\r\n width: '24px'\r\n }\r\n});\r\n\r\nconst CustomDatagridRow = ({\r\n record,\r\n resource,\r\n id,\r\n children,\r\n basePath,\r\n selected,\r\n onToggleItem,\r\n hasBulkActions\r\n}) => {\r\n return (\r\n \r\n {/* first column: selection checkbox */}\r\n {hasBulkActions && (\r\n \r\n onToggleItem(id, event)}\r\n style={{ padding: 0 }}\r\n />\r\n \r\n )}\r\n\r\n {/* data columns based on children */}\r\n {React.Children.map(children, field => {\r\n return (\r\n \r\n {React.cloneElement(field, {\r\n record,\r\n basePath,\r\n resource,\r\n reference:\r\n record && record.categoryOrSubcategoryId >= 10000\r\n ? 'subcategories'\r\n : 'categories'\r\n })}\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst CustomDatagridBody = props => (\r\n } />\r\n);\r\n\r\nconst CustomDatagrid = ({ isExpand, ...rest }) => (\r\n } />\r\n);\r\n\r\nconst GroupCategoryDatagrid = props => {\r\n const {\r\n handleGroupCategoryClick,\r\n handleCategoryEditButtonClick,\r\n classes,\r\n expand,\r\n permissions,\r\n hasEdit,\r\n hasList,\r\n hasShow,\r\n subcategories,\r\n hasBulkActions,\r\n ...dataGridProps\r\n } = props;\r\n //unselecting all the checkboxes from the deleting actions in the ComponenWillUnmount listener\r\n const unSelectAll = useUnselectAll(dataGridProps.resource);\r\n\r\n useEffect(() => () => unSelectAll(), [unSelectAll]);\r\n\r\n const hasReadCategoryPermission = useMemo(() => {\r\n return permissions.includes('AUTH_READ_CATEGORY_NA');\r\n }, [permissions]);\r\n\r\n if (props.total > 0) {\r\n return (\r\n <>\r\n {expand && (\r\n \r\n Related Categories and Subcategories\r\n \r\n )}\r\n \r\n \r\n \r\n !hasReadCategoryPermission ||\r\n record.id >= 10000 ||\r\n record.subType === 'ADMIN' ? (\r\n record.name\r\n ) : (\r\n \r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n\r\n \r\n record.categoryOrSubcategoryId >= 10000\r\n ? 'Subcategory'\r\n : 'Category'\r\n }\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (props.loaded) {\r\n return (\r\n \r\n There are no related Categories to be displayed\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nconst mapStateToProps = (state, props) => {\r\n return {\r\n subcategories: Object.values(\r\n get(state, 'admin.resources.subcategories.data', {})\r\n )\r\n };\r\n};\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n null\r\n)(withStyles(styles)(GroupCategoryDatagrid));\r\n","const groupStatus = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'SUSPENDED', name: 'Suspended' }\r\n];\r\n\r\nexport { groupStatus };\r\n","import { makeStyles } from '@material-ui/core';\r\nimport GroupIcon from '@material-ui/icons/Security';\r\nimport React, { useMemo } from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n ReferenceManyField,\r\n Responsive,\r\n TextInput,\r\n SelectInput,\r\n SimpleList,\r\n TextField,\r\n TopToolbar,\r\n Pagination,\r\n Loading,\r\n useGetList\r\n} from 'react-admin';\r\nimport get from 'lodash/get';\r\n\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport GroupCategoryDatagrid from './GroupCategoryDatagrid';\r\nimport { groupStatus } from './GroupLookups';\r\n\r\nconst useStyles = makeStyles({\r\n expandDataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '14px'\r\n }\r\n }\r\n },\r\n expandIconCell: {\r\n width: '14px',\r\n '& div': {\r\n width: '14px',\r\n padding: '0'\r\n },\r\n '& div:hover ': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n statusColumnStyle: {\r\n width: '68px'\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n },\r\n selectRoot: {\r\n height: '17px'\r\n }\r\n});\r\n\r\nconst useshowStyles = makeStyles({\r\n root: {\r\n padding: '16px 16px 10px 16px'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst GroupFilters = ({ loggedUserType, ...props }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n {loggedUserType === 'SUPER_ADMIN' && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst GroupTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n />\r\n );\r\n};\r\n\r\nconst CategoriesShow = props => {\r\n const classes = useshowStyles();\r\n const {\r\n handleGroupCategoryClick,\r\n permissions,\r\n isDisplayAdminCategoriesOn,\r\n ...rest\r\n } = props;\r\n\r\n const filter = useMemo(() => {\r\n return isDisplayAdminCategoriesOn ? {} : { subType: 'REPORTING' };\r\n }, [isDisplayAdminCategoriesOn]);\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst GroupList = props => {\r\n const classes = useStyles();\r\n const {\r\n permissions = [],\r\n hasReadPermission,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n const {\r\n data: tenantConfigurations = {},\r\n loading: loadingTenantConfigurations\r\n } = useGetList('tenantconfigurations', null, null, {\r\n nameOrCategory: 'display_admin_categories'\r\n });\r\n\r\n const isDisplayAdminCategoriesOn = useMemo(() => {\r\n return get(Object.values(tenantConfigurations), '[0].value', '0') === '1';\r\n }, [tenantConfigurations]);\r\n\r\n if (loadingTenantConfigurations) return ;\r\n\r\n const handleGroupCategoryClick = groupCategoryId => {\r\n let categoryId = groupCategoryId || '';\r\n if (categoryId.includes(':')) {\r\n categoryId = groupCategoryId.split(':')[1];\r\n }\r\n\r\n return `/categories/${categoryId}`;\r\n };\r\n\r\n const groupsFilter = {\r\n adminGroup: false,\r\n status: 'ACTIVE'\r\n };\r\n\r\n if (\r\n userProfile &&\r\n (userProfile.userType === 'SUPER_ADMIN' ||\r\n (userProfile.userType === 'FUND_ADMIN' &&\r\n permissions.includes('AUTH_READ_GROUP_NA')))\r\n ) {\r\n delete groupsFilter.status;\r\n }\r\n\r\n return (\r\n }\r\n filters={\r\n \r\n }\r\n perPage={20}\r\n pagination={}\r\n filter={groupsFilter}\r\n bulkActionButtons={false}\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.name}\r\n secondaryText={record => record.id}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n
    \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default GroupList;\r\n","import React from 'react';\r\nimport { SelectInput, TextInput, required } from 'react-admin';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport { groupStatus } from './GroupLookups';\r\nimport { fieldLengthValidator } from '../../core/utils/index';\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n },\r\n formCheckBox: {\r\n marginTop: '19px'\r\n }\r\n});\r\n\r\nconst GroupSummary = props => {\r\n const classes = useStyles();\r\n\r\n return (\r\n
    \r\n \r\n \r\n Group Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default GroupSummary;\r\n","import React, { useCallback, useState } from 'react';\r\nimport { Create, useRedirect } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport GroupSummary from './GroupSummary';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport Confirm from '../../core/components/forked/layout/Confirm';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst noop = () => {};\r\n\r\nconst GroupTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst GroupCreate = ({\r\n classes,\r\n hasDeletePermission,\r\n hasEditPermission,\r\n hasCreatePermission,\r\n userProfile,\r\n ...rest\r\n}) => {\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n const [whenGroupCreated, setWhenGroupCreated] = useState(false);\r\n const [data, setData] = useState(false);\r\n const redirect = useRedirect();\r\n\r\n const onSuccess = useCallback(({ data }) => {\r\n setData(data);\r\n setWhenGroupCreated(true);\r\n }, []);\r\n\r\n const redirectAfterConfirm = useCallback(() => {\r\n redirect('edit', rest.basePath, data.id);\r\n }, [data.id, redirect, rest.basePath]);\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n \r\n }\r\n onSuccess={onSuccess}\r\n classes={{ noActions: classes.noActions }}\r\n {...rest}\r\n >\r\n setWhenBlockNavigation(false)}\r\n />\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n setWhenBlockNavigation(props.dirty)}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(GroupCreate);\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * GroupCategoryApi API\r\n */\r\nclass GroupCategoryApi extends ApiBase {\r\n /**\r\n * create groupCategories\r\n * @param {*} groupCategories\r\n */\r\n async create(groupCategories) {\r\n const request = {\r\n url: `${this.API_URL}/groupcategories`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: JSON.stringify(groupCategories)\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new GroupCategoryApi();\r\n","import React, { useMemo } from 'react';\r\nimport {\r\n SelectInput,\r\n ReferenceInput,\r\n ReferenceArrayInput,\r\n Query\r\n} from 'react-admin';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport { find } from 'lodash';\r\nimport GridInputFilter from '../../core/components/inputs/GridInputFilter';\r\n\r\nconst validateCategories = (value, allValues, props, field) => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Category must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst GroupCategorySummary = props => {\r\n const { isDisplayAdminCategoriesOn } = props;\r\n const creationFilter = useMemo(() => {\r\n return isDisplayAdminCategoriesOn\r\n ? { orphanVisibility: 'ALL_VISIBLE' }\r\n : { orphanVisibility: 'ALL_VISIBLE', subType: 'REPORTING' };\r\n }, [isDisplayAdminCategoriesOn]);\r\n\r\n if (props.creation) {\r\n return (\r\n
    \r\n \r\n {!props.categoryOrSubcategoryIds && (\r\n \r\n \r\n {({ data, total, loading, error }) => {\r\n if (!loading && !error) {\r\n const filter = choices => {\r\n return choices.filter(\r\n item =>\r\n find(data, ['categoryOrSubcategoryId', item.id]) ===\r\n undefined\r\n );\r\n };\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n }}\r\n \r\n \r\n )}\r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n \r\n Identity\r\n \r\n \r\n ({\r\n name: searchText ? searchText + '*' : 'A*'\r\n })}\r\n >\r\n \r\n \r\n \r\n \r\n ({\r\n name: searchText ? searchText + '*' : 'A*'\r\n })}\r\n >\r\n \r\n \r\n \r\n \r\n ({\r\n name: searchText ? searchText + '*' : 'A*'\r\n })}\r\n >\r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default GroupCategorySummary;\r\n","import React from 'react';\r\nimport { Edit } from 'react-admin';\r\nimport GroupCategorySummary from './GroupCategorySummary';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { FormSpy } from 'react-final-form';\r\nimport SimpleFormWithSave from '../../core/components/form/SimpleFormWithSave';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n },\r\n form: {\r\n '& > div': {\r\n paddingTop: '0px !important',\r\n paddingBottom: '0px !important'\r\n }\r\n }\r\n});\r\n\r\nconst GroupCategoryForm = props => {\r\n const {\r\n handleSubmit,\r\n setGroupCategoryFormProps,\r\n operation,\r\n categoryOrSubcategoryIds,\r\n groupId,\r\n classes,\r\n isDisplayAdminCategoriesOn,\r\n ...operationProps\r\n } = props;\r\n if (operation === 'Create') {\r\n return (\r\n \r\n \r\n {props => {\r\n setGroupCategoryFormProps(props);\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {props => {\r\n setGroupCategoryFormProps(props);\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(GroupCategoryForm);\r\n","import React from 'react';\r\nimport {\r\n SaveButton,\r\n UPDATE,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n} from 'react-admin';\r\nimport { connect } from 'react-redux';\r\n\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport dataProvider from '../../core/providers/IccUserDataProvider';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport GroupCategoryApi from '../../core/apis/GroupCategoryApi';\r\nimport GroupCategoryForm from './GroupCategoryForm';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nclass GroupCategoryCreateUpdate extends React.Component {\r\n groupCategoryFormProps;\r\n\r\n state = {\r\n submitting: false\r\n };\r\n\r\n setGroupCategoryFormProps = props => {\r\n this.groupCategoryFormProps = props;\r\n };\r\n\r\n handleSaveClick = event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n this.groupCategoryFormProps.form.submit(event);\r\n };\r\n\r\n handleClose = () => {\r\n const { handleDialogToggle } = this.props;\r\n const { submitting } = this.state;\r\n if (submitting) return;\r\n this.groupCategoryFormProps.form.reset();\r\n handleDialogToggle();\r\n };\r\n\r\n handleSubmit = values => {\r\n const {\r\n operation,\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n handleDialogToggle,\r\n refreshView\r\n } = this.props;\r\n\r\n this.setState({ submitting: true });\r\n\r\n // Prepare the list of groupcategories to create\r\n const groupcategories = [];\r\n if (operation === 'Create') {\r\n if (values.groupId) {\r\n values.categoryOrSubcategoryIds.forEach(categoryOrSubcategoryId => {\r\n groupcategories.push({\r\n groupId: values.groupId,\r\n categoryOrSubcategoryId\r\n });\r\n });\r\n } else {\r\n values.groups.forEach(groupId => {\r\n groupcategories.push({\r\n groupId,\r\n categoryOrSubcategoryId: values.categoryOrSubcategoryId\r\n });\r\n });\r\n }\r\n }\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n\r\n // As we want to know when the new groupcategories has been created/updated in order to close the modal, we use the\r\n // dataProvider directly to update, and async api call to create many\r\n const crudOperation =\r\n operation === 'Create'\r\n ? GroupCategoryApi.create(groupcategories)\r\n : dataProvider(UPDATE, 'groupcategories', {\r\n data: {\r\n groupId: values.groupId,\r\n categoryOrSubcategoryId: values.categoryOrSubcategoryId\r\n }\r\n });\r\n\r\n crudOperation\r\n .then(() => {\r\n refreshView();\r\n handleDialogToggle();\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.groupCategoryFormProps.form.reset();\r\n fetchEnd();\r\n this.setState({ submitting: false });\r\n });\r\n };\r\n\r\n render() {\r\n const { operation, showDialog, groupId } = this.props;\r\n const { submitting } = this.state;\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n this.handleClose();\r\n }}\r\n >\r\n \r\n {operation === 'Create'\r\n ? groupId\r\n ? 'Add Existing Category to Group'\r\n : 'Add Existing Group to Category'\r\n : operation + 'fund category'}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(GroupCategoryCreateUpdate);\r\n","import React from 'react';\r\nimport {\r\n SaveButton,\r\n CREATE,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n Create,\r\n refreshView\r\n} from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { connect } from 'react-redux';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport dataProvider from '../../core/providers/IccUserDataProvider';\r\nimport CategorySummary from '../categories/CategorySummary';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport SimpleFormWithSave from '../../core/components/form/SimpleFormWithSave';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nclass CategoryCreateDialog extends React.Component {\r\n categoryFormProps;\r\n\r\n state = {\r\n submitting: false\r\n };\r\n\r\n setCategoryFormProps = props => {\r\n this.categoryFormProps = props;\r\n };\r\n\r\n handleSaveClick = event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n this.categoryFormProps.form.submit(event);\r\n };\r\n\r\n handleClose = () => {\r\n const { handleDialogToggle } = this.props;\r\n const { submitting } = this.state;\r\n if (submitting) return;\r\n this.categoryFormProps.form.reset();\r\n handleDialogToggle();\r\n };\r\n\r\n handleSubmit = values => {\r\n const {\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n handleDialogToggle,\r\n groupId,\r\n refreshView\r\n } = this.props;\r\n\r\n this.setState({ submitting: true });\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n\r\n // As we want to know when the new category has been created in order to close the modal, we use the\r\n // dataProvider directly\r\n dataProvider(CREATE, 'categories', { data: values })\r\n .then(({ data }) => {\r\n // Create groupcategories relation with the new created category\r\n dataProvider(CREATE, 'groupcategories', {\r\n data: { groupId, categoryOrSubcategoryId: data.id }\r\n })\r\n .then(() => {\r\n refreshView();\r\n handleDialogToggle();\r\n })\r\n .catch(groupCategoriesError => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(groupCategoriesError) }\r\n });\r\n });\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.categoryFormProps.form.reset();\r\n fetchEnd();\r\n this.setState({ submitting: false });\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n showDialog,\r\n showNotification,\r\n fetchStart,\r\n fetchEnd,\r\n classes,\r\n refreshView,\r\n ...createProps\r\n } = this.props;\r\n const { submitting } = this.state;\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n this.handleClose();\r\n }}\r\n >\r\n \r\n Create New Category\r\n \r\n \r\n {/* Override record object that contains investor information */}\r\n \r\n \r\n \r\n {props => {\r\n this.setCategoryFormProps(props);\r\n return ;\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n};\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(CategoryCreateDialog));\r\n","import React from 'react';\r\nimport {\r\n SaveButton,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView,\r\n Query,\r\n ReferenceArrayInput\r\n} from 'react-admin';\r\nimport { connect } from 'react-redux';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { Grid } from '@material-ui/core/';\r\nimport { find } from 'lodash';\r\n\r\nimport GridInputFilter from '../../core/components/inputs/GridInputFilter';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport GroupCategoryApi from '../../core/apis/GroupCategoryApi';\r\nimport { getIcError } from '../../core/providers/utils';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n },\r\n form: {\r\n '& > div': {\r\n paddingTop: '0px !important',\r\n paddingBottom: '0px !important'\r\n }\r\n }\r\n});\r\n\r\nconst validateSubcategories = (value, allValues, props, field) => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Subcategory must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nclass GroupSubcategoryCreate extends React.Component {\r\n groupSubcategoryFormProps;\r\n\r\n state = {\r\n submitting: false\r\n };\r\n\r\n setGroupSubcategoryFormProps = props => {\r\n this.groupSubcategoryFormProps = props;\r\n };\r\n\r\n handleSaveClick = event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n this.groupSubcategoryFormProps.form.submit(event);\r\n };\r\n\r\n handleClose = () => {\r\n const { handleDialogToggle } = this.props;\r\n const { submitting } = this.state;\r\n if (submitting) return;\r\n this.groupSubcategoryFormProps.form.reset();\r\n handleDialogToggle();\r\n };\r\n\r\n handleSubmit = values => {\r\n const {\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n handleDialogToggle,\r\n refreshView\r\n } = this.props;\r\n\r\n this.setState({ submitting: true });\r\n\r\n // Prepare the list of groupsubcategories to create\r\n const groupsubcategories = [];\r\n values.subcategoryIds.forEach(subcategoryId => {\r\n groupsubcategories.push({\r\n groupId: values.groupId,\r\n categoryOrSubcategoryId: subcategoryId\r\n });\r\n });\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n\r\n GroupCategoryApi.create(groupsubcategories)\r\n .then(() => {\r\n refreshView();\r\n handleDialogToggle();\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.groupSubcategoryFormProps.form.reset();\r\n fetchEnd();\r\n this.setState({ submitting: false });\r\n });\r\n };\r\n\r\n render() {\r\n const {\r\n classes,\r\n showDialog,\r\n groupId,\r\n isDisplayAdminCategoriesOn\r\n } = this.props;\r\n const { submitting } = this.state;\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n this.handleClose();\r\n }}\r\n >\r\n \r\n Add Existing Subcategory to Group\r\n \r\n \r\n \r\n \r\n {props => {\r\n this.setGroupSubcategoryFormProps(props);\r\n return (\r\n \r\n \r\n \r\n {({ data, total, loading, error }) => {\r\n if (!loading && !error) {\r\n const filter = choices => {\r\n return choices.filter(\r\n item =>\r\n find(data, [\r\n 'categoryOrSubcategoryId',\r\n item.id\r\n ]) === undefined\r\n );\r\n };\r\n const categoryIds = [];\r\n data.forEach(groupcategory => {\r\n if (\r\n groupcategory.categoryOrSubcategoryId < 10000\r\n ) {\r\n categoryIds.push(\r\n groupcategory.categoryOrSubcategoryId\r\n );\r\n }\r\n });\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return <>;\r\n }\r\n }}\r\n \r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n};\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(GroupSubcategoryCreate));\r\n","import { makeStyles } from '@material-ui/core';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport React, { useState, useMemo } from 'react';\r\nimport {\r\n Button,\r\n Edit,\r\n Filter,\r\n FormTab,\r\n TextInput,\r\n TabbedForm,\r\n TopToolbar,\r\n Loading,\r\n useGetList,\r\n List\r\n} from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport get from 'lodash/get';\r\nimport ViewTab from '../../core/components/forked/layout/ViewTab';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport { ListPagination } from '../../core/components/list/ListPagination';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport {\r\n getInitials,\r\n predictiveSearchFormatter,\r\n predictiveSearchParser,\r\n removePathEnd\r\n} from '../../core/utils';\r\nimport GroupCategoryCreateUpdate from '../groupcategories/GroupCategoryCreateUpdate';\r\nimport CategoryCreateDialog from './CategoryCreateDialog';\r\nimport GroupCategoryDatagrid from './GroupCategoryDatagrid';\r\nimport GroupSummary from './GroupSummary';\r\nimport GroupSubcategoryCreate from '../groupcategories/GroupSubcategoryCreate';\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '8px'\r\n },\r\n textInput: {\r\n minWidth: '225px'\r\n }\r\n});\r\n\r\nconst GroupCategoryActionStyles = {\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginLeft: '10px'\r\n }\r\n};\r\n\r\nconst GroupTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst GroupRelatedCategoriesLabel = ({ label }) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst CategoriesFilters = props => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst GroupCategoryAction = withStyles(GroupCategoryActionStyles)(\r\n ({\r\n classes,\r\n hasWriteGroupCategoryPermission,\r\n hasCreateCategoryPermission,\r\n ...props\r\n }) => (\r\n \r\n {hasWriteGroupCategoryPermission && hasCreateCategoryPermission && (\r\n \r\n )}\r\n {hasWriteGroupCategoryPermission && (\r\n \r\n )}\r\n {hasWriteGroupCategoryPermission && (\r\n \r\n )}\r\n \r\n )\r\n);\r\n\r\nconst GroupEdit = props => {\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n const [showCategoryCreateDialog, setShowCategoryCreateDialog] = useState(\r\n false\r\n );\r\n const [\r\n showGroupCategoryCreateDialog,\r\n setShowGroupCategoryCreateDialog\r\n ] = useState(false);\r\n const [\r\n showGroupCategoryEditDialog,\r\n setShowGroupCategoryEditDialog\r\n ] = useState(false);\r\n const [\r\n showGroupSubcategoryCreateDialog,\r\n setShowGroupSubcategoryCreateDialog\r\n ] = useState(false);\r\n const [categoryOrSubcategoryIds, setCategoryOrSubcategoryIds] = useState(\r\n undefined\r\n );\r\n\r\n const {\r\n permissions = [],\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n const displayToolbar = props.match.isExact;\r\n const groupId = props.id;\r\n\r\n const {\r\n data: tenantConfigurations = {},\r\n loading: loadingTenantConfigurations\r\n } = useGetList('tenantconfigurations', null, null, {\r\n nameOrCategory: 'display_admin_categories'\r\n });\r\n\r\n const isDisplayAdminCategoriesOn = useMemo(() => {\r\n return get(Object.values(tenantConfigurations), '[0].value', '0') === '1';\r\n }, [tenantConfigurations]);\r\n\r\n const groupCategoriesFilter = useMemo(() => {\r\n return isDisplayAdminCategoriesOn\r\n ? { groupId }\r\n : { groupId, subType: 'REPORTING' };\r\n }, [isDisplayAdminCategoriesOn, groupId]);\r\n\r\n if (loadingTenantConfigurations) return ;\r\n\r\n const onBeforeDelete = () => {\r\n // Unblock navigation before deleting\r\n setWhenBlockNavigation(false);\r\n };\r\n\r\n const handleFormIsDirty = dirty => {\r\n // Block navigation if the form is dirty\r\n setWhenBlockNavigation(dirty);\r\n };\r\n\r\n /**\r\n * Open or close dialog to create new category and then add it on current group\r\n */\r\n const handleCategoryCreateDialogToggle = () => {\r\n setShowCategoryCreateDialog(!showCategoryCreateDialog);\r\n };\r\n\r\n /**\r\n * Open or close dialog to add an existing category on the current group in edit mode\r\n */\r\n const handleGroupCategoryEditDialogToggle = () => {\r\n setShowGroupCategoryEditDialog(!showGroupCategoryEditDialog);\r\n };\r\n\r\n /**\r\n * Open or close dialog to add an existing category on the current group in create mode\r\n */\r\n const handleGroupCategoryCreateDialogToggle = () => {\r\n setShowGroupCategoryCreateDialog(!showGroupCategoryCreateDialog);\r\n };\r\n\r\n /**\r\n * To handle the click on button \"add an existing category\"\r\n */\r\n const handleGroupCategoryCreateButtonClick = () => {\r\n setShowGroupCategoryCreateDialog(!showGroupCategoryCreateDialog);\r\n setCategoryOrSubcategoryIds(undefined);\r\n };\r\n\r\n /**\r\n * Open or close dialog to add an existing subcategory on the current group in create mode\r\n */\r\n const handleGroupSubcategoryCreateDialogToggle = () => {\r\n setShowGroupSubcategoryCreateDialog(!showGroupSubcategoryCreateDialog);\r\n };\r\n\r\n /**\r\n * To handle the click on button \"add an existing subcategory\"\r\n */\r\n const handleGroupSubcategoryCreateButtonClick = () => {\r\n setShowGroupSubcategoryCreateDialog(!showGroupSubcategoryCreateDialog);\r\n setCategoryOrSubcategoryIds(undefined);\r\n };\r\n\r\n const hasCreateCategoryPermission = permissions.includes(\r\n 'AUTH_CREATE_CATEGORY'\r\n );\r\n const hasWriteGroupCategoryPermission = permissions.includes(\r\n 'AUTH_WRITE_GROUP_CATEGORY'\r\n );\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }>\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n \r\n {\r\n setTimeout(() => handleFormIsDirty(props.dirty), 1);\r\n }}\r\n />\r\n \r\n \r\n \r\n }\r\n pagination={}\r\n basePath=\"/groupcategories\"\r\n resource=\"groupcategories\"\r\n filter={groupCategoriesFilter}\r\n sort={{ field: 'categoryOrSubcategoryId', order: 'ASC' }}\r\n title=\" \"\r\n actions={\r\n \r\n }\r\n bulkActionButtons={\r\n hasWriteGroupCategoryPermission && \r\n }\r\n empty={\r\n \r\n }\r\n syncWithLocation\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default GroupEdit;\r\n","import GroupList from './GroupList';\r\nimport GroupCreate from './GroupCreate';\r\nimport GroupEdit from './GroupEdit';\r\nimport GroupIcon from '@material-ui/icons/Security';\r\n\r\nexport default {\r\n list: GroupList,\r\n create: GroupCreate,\r\n edit: GroupEdit,\r\n icon: GroupIcon\r\n};\r\n","import { makeStyles } from '@material-ui/core';\r\nimport LayersIcon from '@material-ui/icons/Layers';\r\nimport React from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n Responsive,\r\n TextInput,\r\n SimpleList,\r\n TopToolbar,\r\n Pagination\r\n} from 'react-admin';\r\n\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\n\r\nconst useStyles = makeStyles({\r\n textInput: {\r\n minWidth: '225px'\r\n },\r\n dataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '24px'\r\n }\r\n }\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DocumentTypeFilters = props => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst DocumentTypeTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n />\r\n );\r\n};\r\n\r\nconst DocumentTypeList = props => {\r\n const classes = useStyles();\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n }\r\n filters={}\r\n perPage={20}\r\n pagination={}\r\n bulkActionButtons={\r\n hasDeletePermission && (\r\n \r\n )\r\n }\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.description}\r\n secondaryText={record => record.id}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default DocumentTypeList;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Document Type API\r\n */\r\nclass DocumentTypeApi extends ApiBase {\r\n /**\r\n * Check if document type description already exists\r\n * @param {*} description\r\n */\r\n async checkDescriptionExists(description) {\r\n const request = {\r\n url: `${this.API_URL}/documenttype?description=${description}`,\r\n headers: this.getHeaders(),\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return (\r\n (status >= 200 && status < 300) || status === 404 || status === 403\r\n );\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200 || response.status === 403) {\r\n // document type description is used, in case of 403 it's not visible to the user\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nexport default new DocumentTypeApi();\r\n","import React, { useState } from 'react';\r\nimport { TextInput } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\nimport DocumentTypeApi from '../../core/apis/DocumentTypeApi';\r\nimport { isStringContainingLessThanOrGreaterThanOrEqualsSign } from '../../core/utils';\r\n\r\nconst DocumentTypeSummary = ({ record, ...props }) => {\r\n const [formErrors, setFormErrors] = useState({});\r\n /*\r\n * Verify that document type description is unique\r\n */\r\n const validateDescription = async (value, allValues, props) => {\r\n if (record && value === record.description) {\r\n return;\r\n }\r\n if (props.active) {\r\n let error;\r\n\r\n const descExists = await DocumentTypeApi.checkDescriptionExists(value);\r\n if (descExists) {\r\n error = 'Description already exists';\r\n } else {\r\n error = undefined;\r\n }\r\n setFormErrors({ ...formErrors, id: error });\r\n return error;\r\n }\r\n return formErrors.id;\r\n };\r\n\r\n const notBlank = (message = 'Required') => value =>\r\n value !== undefined && value.trim() !== '' ? undefined : message;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default DocumentTypeSummary;\r\n","import React, { useState } from 'react';\r\nimport { Create } from 'react-admin';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport DocumentTypeSummary from './DocumentTypeSummary';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst DocumentTypeTitle = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst DocumentTypeCreate = props => {\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n\r\n const {\r\n classes,\r\n userProfile,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n ...rest\r\n } = props;\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{\r\n noActions: classes.noActions\r\n }}\r\n >\r\n setWhenBlockNavigation(false)}\r\n />\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n {\r\n props.dirty && setWhenBlockNavigation(props.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(DocumentTypeCreate);\r\n","import React, { useState } from 'react';\r\nimport { Edit } from 'react-admin';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport { removePathEnd, getInitials } from '../../core/utils';\r\nimport DocumentTypeSummary from './DocumentTypeSummary';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst DocumentTypeTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst DocumentTypeEdit = props => {\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n\r\n const {\r\n classes,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{\r\n noActions: classes.noActions\r\n }}\r\n >\r\n setWhenBlockNavigation(false)}\r\n />\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n setWhenBlockNavigation(props.dirty)}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(DocumentTypeEdit);\r\n","import LayersIcon from '@material-ui/icons/Layers';\r\n\r\nimport DocumentTypeList from './DocumentTypeList';\r\nimport DocumentTypeCreate from './DocumentTypeCreate';\r\nimport DocumentTypeEdit from './DocumentTypeEdit';\r\n\r\nexport default {\r\n list: DocumentTypeList,\r\n create: DocumentTypeCreate,\r\n edit: DocumentTypeEdit,\r\n icon: LayersIcon\r\n};\r\n","const mailTemplateTypes = [\r\n { id: 'FREE_FORM', name: 'Free Form' },\r\n { id: 'INVITATION', name: 'Invitation' },\r\n { id: 'CAPITAL_CALLS', name: 'Capital Calls' },\r\n { id: 'SEND_NEW_PASSWORD', name: 'Send New Password' },\r\n { id: 'REQUEST_PASSWORD', name: 'Request Password' },\r\n { id: 'FUND_RAISING', name: 'Fund Raising' },\r\n { id: 'NEWLY_UPLOADED_DOCUMENT', name: 'Newly Uploaded Document' },\r\n { id: 'SURVEY', name: 'Survey' }\r\n];\r\n\r\nconst documentDateVariable = {\r\n label: 'Document Date',\r\n value: '!docdate',\r\n values: [\r\n { label: 'docdate(M.d.yyyy)', value: '!docdate(M.d.yyyy)' },\r\n { label: 'docdate(MM/dd/yyyy)', value: '!docdate(MM/dd/yyyy)' },\r\n { label: 'docdate(MM/dd/yy)', value: '!docdate(MM/dd/yy)' },\r\n { label: 'docdate(dd/MM/yyyy)', value: '!docdate(dd/MM/yyyy)' },\r\n { label: 'docdate(yyyy-MM-dd)', value: '!docdate(yyyy-MM-dd)' },\r\n { label: 'docdate(MM-dd-yy)', value: '!docdate(MM-dd-yy)' },\r\n { label: 'docdate(dd-MM-yy)', value: '!docdate(dd-MM-yy)' },\r\n { label: 'docdate(MM-dd-yyyy)', value: '!docdate(MM-dd-yyyy)' },\r\n { label: 'docdate(yyyy/MM/dd)', value: '!docdate(yyyy/MM/dd)' },\r\n { label: 'docdate(yyyy/dd/MM)', value: '!docdate(yyyy/dd/MM)' },\r\n { label: 'docdate(yyyy-dd-MM)', value: '!docdate(yyyy-dd-MM)' },\r\n { label: 'docdate(MMMM-d-yyyy)', value: '!docdate(MMMM-d-yyyy)' },\r\n { label: 'docdate(MMMM d,yyyy)', value: '!docdate(MMMM d,yyyy)' },\r\n { label: 'docdate(MMMM d, yyyy)', value: '!docdate(MMMM d, yyyy)' },\r\n { label: 'docdate(MMMM/d/yyyy)', value: '!docdate(MMMM/d/yyyy)' },\r\n { label: 'docdate(MM d,yyyy)', value: '!docdate(MM d,yyyy)' },\r\n { label: 'docdate(MM d, yyyy)', value: '!docdate(MM d, yyyy)' },\r\n { label: 'docdate(MM.dd.yy)', value: '!docdate(MM.dd.yy)' },\r\n { label: 'docdate(MM dd,yyyy)', value: '!docdate(MM dd,yyyy)' },\r\n { label: 'docdate(MM dd, yyyy)', value: '!docdate(MM dd, yyyy)' },\r\n { label: 'docdate(dd MMMM yyyy)', value: '!docdate(dd MMMM yyyy)' }\r\n ]\r\n};\r\n\r\nconst dueDateVariable = {\r\n label: 'Due Date',\r\n value: '!duedate',\r\n values: [\r\n { label: 'duedate(M.d.yyyy)', value: '!duedate(M.d.yyyy)' },\r\n { label: 'duedate(MM/dd/yyyy)', value: '!duedate(MM/dd/yyyy)' },\r\n { label: 'duedate(MM/dd/yy)', value: '!duedate(MM/dd/yy)' },\r\n { label: 'duedate(dd/MM/yyyy)', value: '!duedate(dd/MM/yyyy)' },\r\n { label: 'duedate(yyyy-MM-dd)', value: '!duedate(yyyy-MM-dd)' },\r\n { label: 'duedate(MM-dd-yy)', value: '!duedate(MM-dd-yy)' },\r\n { label: 'duedate(dd-MM-yy)', value: '!duedate(dd-MM-yy)' },\r\n { label: 'duedate(MM-dd-yyyy)', value: '!duedate(MM-dd-yyyy)' },\r\n { label: 'duedate(yyyy/MM/dd)', value: '!duedate(yyyy/MM/dd)' },\r\n { label: 'duedate(yyyy/dd/MM)', value: '!duedate(yyyy/dd/MM)' },\r\n { label: 'duedate(yyyy-dd-MM)', value: '!duedate(yyyy-dd-MM)' },\r\n { label: 'duedate(MMMM-d-yyyy)', value: '!duedate(MMMM-d-yyyy)' },\r\n { label: 'duedate(MMMM d,yyyy)', value: '!duedate(MMMM d,yyyy)' },\r\n { label: 'duedate(MMMM d, yyyy)', value: '!duedate(MMMM d, yyyy)' },\r\n { label: 'duedate(MMMM/d/yyyy)', value: '!duedate(MMMM/d/yyyy)' },\r\n { label: 'duedate(MM d,yyyy)', value: '!duedate(MM d,yyyy)' },\r\n { label: 'duedate(MM d, yyyy)', value: '!duedate(MM d, yyyy)' },\r\n { label: 'duedate(MM.dd.yy)', value: '!duedate(MM.dd.yy)' },\r\n { label: 'duedate(MM dd,yyyy)', value: '!duedate(MM dd,yyyy)' },\r\n { label: 'duedate(MM dd, yyyy)', value: '!duedate(MM dd, yyyy)' },\r\n { label: 'duedate(dd MMMM yyyy)', value: '!duedate(dd MMMM yyyy)' }\r\n ]\r\n};\r\n\r\nconst bodyVariables = [\r\n { label: 'Category Name', value: '!categoryName' },\r\n { label: 'Subcategory Name', value: '!subCategoryName' },\r\n documentDateVariable,\r\n dueDateVariable,\r\n { label: 'Document Title', value: '!documentTitle' },\r\n { label: 'Document Url', value: '!documentUrl' },\r\n { label: 'Encoded Document Url', value: '!encodedDocumentUrl' },\r\n { label: 'Encoded Daily Summary Url', value: '!encodedDailySummaryUrl' },\r\n { label: 'Fund Name', value: '!fundName' },\r\n { label: 'Fund Family Name', value: '!fundFamilyName' },\r\n { label: 'Investor Name', value: '!investorname' },\r\n { label: 'User ID', value: '!UserID' },\r\n { label: 'Password', value: '!Password' },\r\n { label: 'User Email', value: '!userEmail' },\r\n { label: 'First Name', value: '!firstName' },\r\n { label: 'Last Name', value: '!lastName' },\r\n { label: 'Salutation', value: '!salutation' },\r\n { label: 'Client Name', value: '!clientName' },\r\n { label: 'Client DB Name', value: '!clientDBName' }\r\n];\r\n\r\nconst subjectVariables = [\r\n { label: 'Category Name', value: '!categoryName' },\r\n { label: 'Subcategory Name', value: '!subCategoryName' },\r\n documentDateVariable,\r\n dueDateVariable,\r\n { label: 'Document Title', value: '!documentTitle' },\r\n { label: 'Fund Name', value: '!fundName' },\r\n { label: 'Fund Family Name', value: '!fundFamilyName' },\r\n { label: 'Investor Name', value: '!investorname' },\r\n { label: 'User Id', value: '!UserID' },\r\n { label: 'Password', value: '!Password' },\r\n { label: 'User Email', value: '!userEmail' },\r\n { label: 'First Name', value: '!firstName' },\r\n { label: 'Last Name', value: '!lastName' },\r\n { label: 'Salutation', value: '!salutation' },\r\n { label: 'Client Name', value: '!clientName' },\r\n { label: 'Client DB Name', value: '!clientDBName' }\r\n];\r\n\r\nconst mupVariables = [\r\n { label: 'MUP User Id', value: '!MUPUserID' },\r\n { label: 'MUP Password', value: '!MUPPassword' },\r\n { label: 'MUP First Name', value: '!MUPFirstname' },\r\n { label: 'MUP Lastname', value: '!MUPLastname' },\r\n { label: 'MUP Email', value: '!MUPEmail' }\r\n];\r\n\r\nexport { mailTemplateTypes, bodyVariables, subjectVariables, mupVariables };\r\n","import React, { useState } from 'react';\r\nimport {\r\n List,\r\n Datagrid,\r\n DatagridBody,\r\n DatagridRow,\r\n TextField,\r\n Responsive,\r\n SimpleList,\r\n TopToolbar,\r\n ReferenceManyField,\r\n SelectField,\r\n Query,\r\n SelectInput,\r\n Pagination\r\n} from 'react-admin';\r\n\r\nimport {\r\n Paper,\r\n ListItem,\r\n ListItemText,\r\n Collapse,\r\n List as ListView,\r\n Table,\r\n TableBody,\r\n CircularProgress\r\n} from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport MailIcon from '@material-ui/icons/Mail';\r\nimport { size, omit } from 'lodash';\r\n\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport GridPopover from '../../core/components/grid/GridPopover';\r\nimport { ChevronRightIcon } from '../../core/themes/icons/ChevronRightIcon';\r\nimport { ChevronDownIcon } from '../../core/themes/icons/ChevronDownIcon';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport { mailTemplateTypes } from './MailTemplateLookups';\r\n\r\nconst useStyles = makeStyles({\r\n dataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '24px'\r\n }\r\n }\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n },\r\n rootListItem: {\r\n paddingBottom: '0px',\r\n paddingTop: '0px'\r\n },\r\n button: {\r\n padding: '0px'\r\n },\r\n primary: {\r\n color: '#212121',\r\n fontSize: '14px',\r\n paddingLeft: '8px'\r\n },\r\n emptyText: {\r\n color: '#757575',\r\n fontSize: '14px'\r\n },\r\n nested: {\r\n paddingLeft: '43px',\r\n pointerEvents: 'none',\r\n paddingBottom: '0px',\r\n paddingTop: '0px'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst MailTemplateFilters = props => (\r\n \r\n \r\n \r\n);\r\n\r\nconst EmailNotification = ({ data = [] }) => {\r\n const classes = useStyles();\r\n\r\n if (size(data) > 0) {\r\n return (\r\n 1\r\n ? 'Multiple Categories'\r\n : Object.values(data).map(item => item.name)\r\n } `}\r\n classes={{ button: classes.button }}\r\n id=\"automated-email-notification\"\r\n popoverContent={\r\n \r\n \r\n \r\n \r\n {Object.values(data).map((item, index) => {\r\n return ;\r\n })}\r\n \r\n \r\n
    \r\n
    \r\n }\r\n />\r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst Collapsible = ({ item }) => {\r\n const classes = useStyles();\r\n const [expand, setExpand] = useState(false);\r\n\r\n const handleClick = () => {\r\n setExpand(!expand);\r\n };\r\n\r\n return (\r\n <>\r\n \r\n {expand ? : }\r\n \r\n \r\n \r\n \r\n \r\n {({ data, total, loading, error }) => {\r\n if (!loading && total > 0) {\r\n return data.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n );\r\n });\r\n } else if (loading) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n }}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst MailTemplateTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n buttonId=\"new-email-template\"\r\n />\r\n );\r\n};\r\n\r\nconst MailTemplateList = props => {\r\n const classes = useStyles();\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n }\r\n perPage={20}\r\n pagination={}\r\n bulkActionButtons={\r\n hasDeletePermission && (\r\n \r\n )\r\n }\r\n actions={}\r\n sort={{ field: 'description', order: 'ASC' }}\r\n filters={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.subject}\r\n secondaryText={record => record.description}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n } />}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default MailTemplateList;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Email Template API\r\n */\r\nclass EmailTemplateApi extends ApiBase {\r\n /**\r\n * Check if Email Template description already exists\r\n * @param {*} description\r\n */\r\n async checkDescriptionExists(description) {\r\n const request = {\r\n url: `${this.API_URL}/mailtemplate?description=${description}`,\r\n headers: this.getHeaders(),\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return (\r\n (status >= 200 && status < 300) || status === 404 || status === 403\r\n );\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200 || response.status === 403) {\r\n // Email template description is used, in case of 403 it's not visible to the user\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n }\r\n }\r\n}\r\n\r\nexport default new EmailTemplateApi();\r\n","import React, { useRef, useState, useCallback } from 'react';\r\nimport { TextInput, required, SelectInput } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\nimport { useFormState, useForm } from 'react-final-form';\r\nimport toArray from 'lodash/toArray';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport RichTextInput from '../../core/components/inputs/RichTextInput';\r\nimport {\r\n mailTemplateTypes,\r\n bodyVariables,\r\n subjectVariables,\r\n mupVariables\r\n} from './MailTemplateLookups';\r\nimport { fieldLengthValidator } from '../../core/utils/index';\r\nimport FieldTitleWithListPopover from '../../core/components/inputs/FieldTitleWithListPopover';\r\nimport EmailTemplateApi from '../../core/apis/EmailTemplateApi';\r\n\r\nconst styles = () => ({\r\n subjectRoot: {\r\n marginBottom: '0px !important'\r\n },\r\n inputLabel: {\r\n width: '100%'\r\n },\r\n value: {\r\n marginTop: '-3px'\r\n }\r\n});\r\n\r\nconst MailTemplateSummary = props => {\r\n const [formErrors, setFormErrors] = useState({});\r\n const formState = useFormState();\r\n const form = useForm();\r\n const subject = useRef(null);\r\n const { classes, usedForAutomatedEmail, record } = props;\r\n\r\n // Verify that Email Template description is unique\r\n const validateDescription = useCallback(\r\n async (value, allValues, props) => {\r\n if (record && value === record.description) {\r\n return;\r\n }\r\n if (props.active) {\r\n let error;\r\n\r\n const descExists = await EmailTemplateApi.checkDescriptionExists(value);\r\n if (descExists) {\r\n error = 'Email Template with this description already exists';\r\n } else {\r\n error = undefined;\r\n }\r\n setFormErrors({ ...formErrors, description: error });\r\n return error;\r\n }\r\n return formErrors.description;\r\n },\r\n [record, formErrors]\r\n );\r\n\r\n const isMupChild = sessionStorage.getItem('isMupChild') === 'true';\r\n\r\n function handleSelectVariableSubject(variable) {\r\n let currentValue = toArray(formState.values.subject || '');\r\n const cursorIndex = subject.current.selectionStart || 0;\r\n currentValue.splice(cursorIndex, 0, variable.value);\r\n\r\n form.change('subject', currentValue.join(''));\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }}\r\n InputLabelProps={{\r\n classes: {\r\n root: classes.inputLabel\r\n }\r\n }}\r\n variant=\"standard\"\r\n inputRef={subject}\r\n helperText={false}\r\n classes={\r\n {\r\n /**root: classes.subjectRoot*/\r\n }\r\n }\r\n validate={[fieldLengthValidator(300)]}\r\n disabled={usedForAutomatedEmail}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(MailTemplateSummary);\r\n","import React from 'react';\r\nimport { Create } from 'react-admin';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { FormSpy } from 'react-final-form';\r\nimport moment from 'moment';\r\n\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport MailTemplateSummary from './MailTemplateSummary';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst MailTemplateTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\n// Initial template date, to send to the API,\r\n// and avoid the error not being displayed\r\nconst initialTemplateDate = moment().toISOString();\r\n\r\nclass MailTemplateCreate extends React.Component {\r\n state = {\r\n whenBlockNavigation: false\r\n };\r\n\r\n handleFormIsDirty(dirty) {\r\n // Block navigation when the form is dirty\r\n this.setState({ whenBlockNavigation: dirty });\r\n }\r\n\r\n allowNavigationOnSave = () => {\r\n this.setState({ whenBlockNavigation: false });\r\n };\r\n\r\n render() {\r\n const { whenBlockNavigation } = this.state;\r\n const {\r\n classes,\r\n userProfile,\r\n hasDeletePermission,\r\n hasEditPermission,\r\n hasCreatePermission,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n initialValues={{\r\n templateDate: initialTemplateDate,\r\n editable: true,\r\n dynamicContent: true\r\n }}\r\n >\r\n \r\n {\r\n const self = this;\r\n setTimeout(() => self.handleFormIsDirty(props.dirty), 1);\r\n }}\r\n />\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(MailTemplateCreate);\r\n","import React, { useState, useMemo } from 'react';\r\nimport { Edit, Loading, useQuery } from 'react-admin';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { get, omit } from 'lodash';\r\n\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport { removePathEnd, getInitials } from '../../core/utils';\r\nimport MailTemplateSummary from './MailTemplateSummary';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport { useFetch } from '../../core/hooks/UseFetch';\r\nimport DocumentCategoryApi from '../../core/apis/DocumentCategoryApi';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst useStyles = makeStyles({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst MailTemplateTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst MailTemplateEdit = props => {\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n const classes = useStyles();\r\n const { id } = props;\r\n\r\n const { data = [], loading: loadingCategory } = useFetch(\r\n DocumentCategoryApi.getCategoriesByTemplateID,\r\n id\r\n );\r\n\r\n const {\r\n data: distributionLists = [],\r\n loading: loadingDistributionLists\r\n } = useQuery({\r\n type: 'getList',\r\n resource: 'distributionlists',\r\n payload: {\r\n filter: {\r\n emailTemplateId: id\r\n }\r\n }\r\n });\r\n\r\n const {\r\n data: welcomeEmailConfig,\r\n loading: loadingWelcomeEmailConfig\r\n } = useQuery({\r\n type: 'getList',\r\n resource: 'tenantconfigurations',\r\n payload: {\r\n filter: {\r\n nameOrCategory: 'Welcome-Email-TemplateId'\r\n }\r\n }\r\n });\r\n\r\n const {\r\n data: newMupClientEmailConfig,\r\n loading: loadingNewMupClientEmailConfig\r\n } = useQuery({\r\n type: 'getList',\r\n resource: 'tenantconfigurations',\r\n payload: {\r\n filter: {\r\n nameOrCategory: 'NEW-MUP-Client-Email-TemplateId'\r\n }\r\n }\r\n });\r\n\r\n const isUsedForWelcomeEmail = useMemo(() => {\r\n return get(welcomeEmailConfig, '[0].value', '') === id;\r\n }, [welcomeEmailConfig, id]);\r\n\r\n const isUsedForNewMupClientEmail = useMemo(() => {\r\n return get(newMupClientEmailConfig, '[0].value', '') === id;\r\n }, [newMupClientEmailConfig, id]);\r\n\r\n if (\r\n loadingCategory ||\r\n loadingDistributionLists ||\r\n loadingWelcomeEmailConfig ||\r\n loadingNewMupClientEmailConfig\r\n )\r\n return ;\r\n\r\n const isLinkedToCategoryWithTriggerEmailOn = !!data.pageData.find(\r\n category => !!category.triggerEmail\r\n );\r\n const linkedToCategory = data.pageData.length > 0;\r\n const usedForAutomatedEmail =\r\n isLinkedToCategoryWithTriggerEmailOn ||\r\n isUsedForWelcomeEmail ||\r\n isUsedForNewMupClientEmail;\r\n\r\n // Check if Email Template Linked to any Distribution List then disable deletion\r\n const emailTemplateLinkedtoDL = distributionLists.length > 0;\r\n\r\n const handleFormIsDirty = dirty => {\r\n // Block navigation when the form is dirty\r\n setWhenBlockNavigation(dirty);\r\n };\r\n\r\n const onBeforeDelete = () => {\r\n setWhenBlockNavigation(false);\r\n };\r\n\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n {\r\n setTimeout(() => handleFormIsDirty(props.dirty), 1);\r\n }}\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default MailTemplateEdit;\r\n","import MailIcon from '@material-ui/icons/Mail';\r\n\r\nimport MailTemplateList from './MailTemplateList';\r\nimport MailTemplateCreate from './MailTemplateCreate';\r\nimport MailTemplateEdit from './MailTemplateEdit';\r\n\r\nexport default {\r\n list: MailTemplateList,\r\n create: MailTemplateCreate,\r\n edit: MailTemplateEdit,\r\n icon: MailIcon\r\n};\r\n","import React from 'react';\r\nimport {\r\n List,\r\n Datagrid,\r\n Responsive,\r\n SimpleList,\r\n TopToolbar,\r\n SelectField\r\n} from 'react-admin';\r\n\r\nimport { makeStyles } from '@material-ui/core';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport SplitDocumentIcon from '@material-ui/icons/CallSplit';\r\nimport { typeChoices, matchingFields } from './SplitMethodTypeLookups';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\n\r\nconst useStyles = makeStyles({\r\n dataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '24px'\r\n }\r\n }\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst SplitMethodTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n buttonId=\"Create New Split Method\"\r\n />\r\n );\r\n};\r\n\r\nconst SplitMethodList = props => {\r\n const classes = useStyles();\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n }\r\n title={}\r\n sort={{ field: 'name', order: 'ASC' }}\r\n bulkActionButtons={\r\n hasDeletePermission && (\r\n \r\n )\r\n }\r\n pagination={null}\r\n empty={}\r\n >\r\n record.id}\r\n secondaryText={record => record.name}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default SplitMethodList;\r\n","import React from 'react';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { required, SelectInput, TextInput, maxLength } from 'react-admin';\r\nimport { Grid, makeStyles, Typography } from '@material-ui/core/';\r\n\r\nimport FileField from '../../core/components/forked/field/FileField';\r\nimport FileInput from '../../core/components/forked/input/FileInput';\r\nimport { matchingFields, typeChoices } from './SplitMethodTypeLookups';\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#f5f5f5',\r\n border: '1px dashed #E0E0E0',\r\n marginTop: '-4px'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n },\r\n browseLink: {\r\n textDecoration: 'underline',\r\n color: '#2962ff'\r\n }\r\n});\r\n\r\nconst SplitMethodSummary = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n Split Method Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Drag a file here or \r\n browse\r\n \r\n }\r\n accept={'.apr, text/plain'}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SplitMethodSummary;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Resource upload API\r\n */\r\nclass SplitMethodApi extends ApiBase {\r\n /**\r\n * create Split Method\r\n * @param {*} formData Form Data\r\n */\r\n async create(formData) {\r\n // Get headers for form-data split method\r\n const headers = this.getHeaders();\r\n\r\n const request = {\r\n url: `${this.API_URL}/splitmethod`,\r\n method: 'POST',\r\n headers: headers,\r\n data: formData\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status !== 201) {\r\n throw new Error(response.statusText);\r\n }\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Update Split Method\r\n * @param splitType\r\n * @param {*} formData\r\n */\r\n async update(splitType, formData) {\r\n // Get headers for form-data\r\n const headers = this.getHeaders();\r\n\r\n const request = {\r\n url: `${this.API_URL}/splitmethod?splitType=${splitType}`,\r\n headers: headers,\r\n method: 'PUT',\r\n data: formData\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n}\r\nexport default new SplitMethodApi();\r\n","import React from 'react';\r\nimport {\r\n Create,\r\n fetchEnd,\r\n crudGetOne,\r\n fetchStart,\r\n showNotification,\r\n resolveRedirectTo\r\n} from 'react-admin';\r\nimport { connect } from 'react-redux';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport SplitMethodSummary from './SplitMethodSummary';\r\nimport SplitMethodApi from '../../core/apis/SplitMethodApi';\r\nimport SimpleFormWithSave from '../../core/components/form/SimpleFormWithSave';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst SplitMethodTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nclass SplitMethodCreate extends React.Component {\r\n state = {\r\n whenBlockNavigation: false\r\n };\r\n\r\n handleFormIsDirty(dirty) {\r\n // Block navigation when the form is dirty\r\n this.setState({ whenBlockNavigation: dirty });\r\n }\r\n\r\n allowNavigationOnSave = () => {\r\n this.setState({ whenBlockNavigation: false });\r\n };\r\n\r\n handleSubmit = async ({ name, externalId, type, file }) => {\r\n const {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n history,\r\n basePath\r\n } = this.props;\r\n const formData = new FormData();\r\n\r\n fetchStart();\r\n\r\n if (name) {\r\n formData.append('name', name);\r\n }\r\n if (externalId) {\r\n formData.append('externalId', externalId);\r\n }\r\n if (type) {\r\n formData.append('type', type);\r\n }\r\n if (file) {\r\n formData.append('file', file.rawFile, file.title);\r\n }\r\n try {\r\n const splitMethodResponse = await SplitMethodApi.create(formData);\r\n\r\n history.push(\r\n resolveRedirectTo(\r\n 'edit',\r\n basePath,\r\n splitMethodResponse.id,\r\n splitMethodResponse\r\n )\r\n );\r\n showNotification('ra.notification.created');\r\n } catch (err) {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(err.response) }\r\n });\r\n } finally {\r\n fetchEnd();\r\n }\r\n };\r\n\r\n render() {\r\n const { whenBlockNavigation } = this.state;\r\n const {\r\n classes,\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n crudGetOne,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n redirect=\"edit\"\r\n onSave={this.handleSubmit}\r\n >\r\n \r\n {\r\n this.handleFormIsDirty(props.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n showNotification,\r\n fetchStart,\r\n fetchEnd,\r\n crudGetOne\r\n};\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(SplitMethodCreate));\r\n","import React from 'react';\r\nimport { find } from 'lodash';\r\nimport {\r\n Edit,\r\n showNotification,\r\n fetchStart,\r\n fetchEnd,\r\n refreshView\r\n} from 'react-admin';\r\nimport { connect } from 'react-redux';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport SplitMethodSummary from './SplitMethodSummary';\r\nimport { typeChoices } from './SplitMethodTypeLookups';\r\nimport SplitMethodApi from '../../core/apis/SplitMethodApi';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport { removePathEnd, getInitials } from '../../core/utils';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport SimpleFormWithSave from '../../core/components/form/SimpleFormWithSave';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst SplitMethodTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nclass SplitMethodEdit extends React.Component {\r\n state = {\r\n whenBlockNavigation: false\r\n };\r\n\r\n handleFormIsDirty(dirty) {\r\n // Block navigation when the form is dirty\r\n this.setState({ whenBlockNavigation: dirty });\r\n }\r\n\r\n onBeforeDelete = () => {\r\n this.setState({ whenBlockNavigation: false });\r\n };\r\n\r\n handleSubmit = async ({ name, externalId, type, file }) => {\r\n const formData = new FormData();\r\n const {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n id,\r\n refreshView\r\n } = this.props;\r\n\r\n const splitMethodType = find(typeChoices, ['code', type]);\r\n\r\n fetchStart();\r\n\r\n if (name) {\r\n formData.append('name', name);\r\n }\r\n if (externalId) {\r\n formData.append('externalId', externalId);\r\n }\r\n if (id) {\r\n formData.append('id', id);\r\n }\r\n if (file) {\r\n formData.append('file', file.rawFile, file.title);\r\n }\r\n\r\n try {\r\n await SplitMethodApi.update(splitMethodType.id, formData);\r\n\r\n refreshView();\r\n showNotification('ra.notification.custom_updated_message');\r\n } catch (error) {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error.response) }\r\n });\r\n } finally {\r\n fetchEnd();\r\n }\r\n };\r\n\r\n render() {\r\n const { whenBlockNavigation } = this.state;\r\n const {\r\n classes,\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n crudGetOne,\r\n refreshView,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n onSave={this.handleSubmit}\r\n >\r\n \r\n {\r\n const self = this;\r\n setTimeout(() => self.handleFormIsDirty(props.dirty), 1);\r\n }}\r\n />\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n showNotification,\r\n fetchStart,\r\n fetchEnd,\r\n refreshView\r\n};\r\n\r\nexport default connect(\r\n null,\r\n mapDispatchToProps\r\n)(withStyles(styles)(SplitMethodEdit));\r\n","import CallSplitIcon from '@material-ui/icons/CallSplit';\r\n\r\nimport SplitMethodList from './SplitMethodList';\r\nimport SplitMethodCreate from './SplitMethodCreate';\r\nimport SplitMethodEdit from './SplitMethodEdit';\r\n\r\nexport default {\r\n list: SplitMethodList,\r\n create: SplitMethodCreate,\r\n edit: SplitMethodEdit,\r\n icon: CallSplitIcon\r\n};\r\n","import React from 'react';\r\n\r\nexport const TenantConfigurationIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","import { makeStyles } from '@material-ui/core';\r\nimport { TenantConfigurationIcon } from '../../core/themes/icons/TenantConfigurationIcon';\r\nimport React from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n Responsive,\r\n TextInput,\r\n SimpleList,\r\n TextField,\r\n TopToolbar,\r\n Pagination\r\n} from 'react-admin';\r\n\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n marginRight: 'auto'\r\n }\r\n});\r\n\r\nconst useStylesForInput = makeStyles({\r\n textInput: {\r\n minWidth: '225px'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst TenantConfigurationFilters = props => {\r\n const classes = useStylesForInput();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst TenantConfigurationTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n />\r\n );\r\n};\r\n\r\nconst TenantConfigurationList = props => {\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n hasReadPermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n return (\r\n \r\n }\r\n filters={}\r\n perPage={20}\r\n pagination={}\r\n bulkActionButtons={false}\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.name}\r\n secondaryText={record => record.id}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default TenantConfigurationList;\r\n","const TimeZones = [\r\n { name: '(UTC-12:00) International Date Line West', id: '-12:00' },\r\n { name: '(UTC-11:00) Midway Island, Samoa', id: '-11:00' },\r\n { name: '(UTC-10:00) Hawaii', id: '-10:00' },\r\n { name: '(UTC-09:00) Alaska', id: '-09:00' },\r\n { name: '(UTC-08:00) Pacific Time (US and Canada)', id: '-08:00' },\r\n { name: '(UTC-07:00) Mountain Time (US and Canada)', id: '-07:00' },\r\n { name: '(UTC-06:00) Central Time (US and Canada)', id: '-06:00' },\r\n { name: '(UTC-05:00) Eastern Time (US and Canada)', id: '-05:00' },\r\n { name: '(UTC-04:00) Atlantic Time (Canada)', id: '-04:00' },\r\n { name: '(UTC-03:30) Newfoundland and Labrador', id: '-03:30' },\r\n { name: '(UTC-03:00) Brasilia, Buenos Aires, Greenland', id: '-03:00' },\r\n { name: '(UTC-02:00) Mid-Atlantic', id: '-02:00' },\r\n { name: '(UTC-01:00) Azores, Cape Verde Islands', id: '-01:00' },\r\n { name: '(UTC) Coordinated Universal Time; GMT Standard Time', id: '+00:00' },\r\n { name: '(UTC+01:00) Central European Standard Time', id: '+01:00' },\r\n { name: '(UTC+02:00) Eastern European Standard Time', id: '+02:00' },\r\n { name: '(UTC+03:00) Moscow, Kuwait, Nairobi, Baghdad', id: '+03:00' },\r\n { name: '(UTC+03:30) Tehran', id: '+03:30' },\r\n { name: '(UTC+04:00) Abu Dhabi, Tbilisi', id: '+04:00' },\r\n { name: '(UTC+04:30) Kabul', id: '+04:30' },\r\n { name: '(UTC+05:00) Ekaterinburg, Islamabad, Tashkent', id: '+05:00' },\r\n { name: '(UTC+05:30) Chennai, Kolkata, Mumbai, New Delhi', id: '+05:30' },\r\n { name: '(UTC+05:45) Kathmandu', id: '+05:45' },\r\n { name: '(UTC+06:00) Astana, Dhaka, Novosibirsk', id: '+06:00' },\r\n { name: '(UTC+06:30) Yangon Rangoon', id: '+06:30' },\r\n { name: '(UTC+07:00) Bangkok, Jakarta, Krasnoyarsk', id: '+07:00' },\r\n { name: '(UTC+08:00) Beijing, Hong Kong, Singapore, Perth', id: '+08:00' },\r\n { name: '(UTC+09:00) Seoul, Tokyo, Yakutsk', id: '+09:00' },\r\n { name: '((UTC+09:30) Darwin, Adelaide', id: '+09:30' },\r\n { name: '(UTC+10:00) Sydney, Vladivostok, Port Moresby', id: '+10:00' },\r\n { name: '(UTC+11:00) Magadan, Solomon Islands, New Caledonia', id: '+11:00' },\r\n { name: '(UTC+12:00) Fiji Islands, Auckland, Wellington', id: '+12:00' },\r\n { name: \"(UTC+13:00) Nuku'alofa\", id: '+13:00' }\r\n];\r\n\r\nexport { TimeZones };\r\n","import { Grid, makeStyles, Typography } from '@material-ui/core/';\r\nimport moment from 'moment';\r\nimport React, { useState, useEffect } from 'react';\r\nimport {\r\n FormDataConsumer,\r\n NumberInput,\r\n SelectInput,\r\n TextInput\r\n} from 'react-admin';\r\nimport { Field } from 'react-final-form';\r\n\r\nimport CheckBoxField from '../../core/components/CheckBoxField';\r\nimport RichTextInput from '../../core/components/inputs/RichTextInput';\r\nimport TimeInput from '../../core/components/inputs/TimeInput';\r\nimport { TimeZones } from './TenantConfigurationLookups';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport InputLabel from '@material-ui/core/InputLabel';\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n },\r\n formCheckBox: {\r\n marginTop: '19px'\r\n },\r\n checkboxContainer: {\r\n paddingRight: '8px'\r\n },\r\n checkboxLabel: {\r\n fontSize: '14px',\r\n lineHeight: '20px',\r\n whiteSpace: 'nowrap'\r\n },\r\n checkbox: {\r\n padding: 0,\r\n margin: '7px 0'\r\n },\r\n gridContainer: {\r\n display: 'flex',\r\n alignItems: 'center'\r\n }\r\n});\r\n\r\nconst CheckboxShow = props => {\r\n const { label } = props;\r\n const classes = useStyles();\r\n return (\r\n
    \r\n \r\n {label}\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * Hours Interval Input: expected value from '00' to '23'\r\n * uncheck the Checkbox will set the value to ''\r\n * check the Checkbox will set the value to '00'\r\n * @param {*} props\r\n */\r\nconst IntervalInput = props => {\r\n const {\r\n onChange,\r\n onCheckboxChange,\r\n multipleSource,\r\n source,\r\n variant,\r\n label,\r\n disabled,\r\n record,\r\n formData\r\n } = props;\r\n const currentValue = multipleSource ? formData[source] : record[source];\r\n const [checked, setChecked] = useState(!!currentValue);\r\n\r\n useEffect(() => {\r\n setChecked(!!currentValue);\r\n }, [currentValue]);\r\n\r\n const hoursParser = value => {\r\n if (value) {\r\n const val = parseInt(value, 10);\r\n if (val < 10) {\r\n return '0' + val;\r\n }\r\n return value;\r\n }\r\n return '';\r\n };\r\n\r\n const handleCheckboxChange = () => {\r\n onCheckboxChange(checked, source, multipleSource, formData);\r\n setChecked(!checked);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * Time & Time Zone Input: expected value 'HH:mm +HH:mm' or 'HH:mm -HH:mm'\r\n * expected value for Time component a string in time fromat 'HH:mm'\r\n * expected value for Time Zone component a string format '+HH:mm' or '-HH:mm'\r\n * uncheck the Checkbox will set the Time and the Time Zone values to ''\r\n * check the Checkbox will set the Time value to '00:00' and the Time Zone value to '+00:00'\r\n * @param {*} props\r\n */\r\nconst TimeZoneInput = props => {\r\n const {\r\n onTimeChange,\r\n onZoneChange,\r\n onCheckboxChange,\r\n source,\r\n variant,\r\n label,\r\n formData\r\n } = props;\r\n const classes = useStyles();\r\n const currentValue = formData[source];\r\n const [checked, setChecked] = useState(!!currentValue);\r\n\r\n useEffect(() => {\r\n setChecked(!!currentValue);\r\n }, [currentValue]);\r\n\r\n const handleCheckboxChange = () => {\r\n onCheckboxChange(checked, formData);\r\n setChecked(!checked);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {\r\n onTimeChange(value, formData);\r\n }}\r\n />\r\n \r\n \r\n {\r\n onZoneChange(event.target.value, formData);\r\n }}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nconst ValueInput = props => {\r\n const { variant, classes, record = {} } = props;\r\n const { type } = record;\r\n\r\n const handleIntervalCheckboxChange = (\r\n checked,\r\n source,\r\n multipleSource,\r\n formData\r\n ) => {\r\n const { formApi } = props;\r\n formApi.change(source, checked ? '' : '00');\r\n if (multipleSource) {\r\n const { value = '' } = formData;\r\n const parts = value.split('#');\r\n const part1 = parts[0] || '';\r\n const part2 = parts[1] || '';\r\n\r\n let newValue;\r\n if (source === 'interval0') {\r\n formApi.change('interval1', '');\r\n formApi.change('interval2', '');\r\n newValue = checked ? '' : '00##';\r\n } else if (source === 'interval1') {\r\n formApi.change('interval2', '');\r\n newValue = checked ? `${part1}##` : `${part1}#00#`;\r\n } else {\r\n newValue = checked ? `${part1}#${part2}#` : `${part1}#${part2}#00`;\r\n }\r\n formApi.change(multipleSource, newValue);\r\n }\r\n };\r\n\r\n /**\r\n * handle interval change: if multiple intervals set 'value' to :\r\n * one interval active 'val1##'\r\n * two intervals active 'val1#val2#'\r\n * tree intervals active 'val1#val2#val3'\r\n * @param {*} interval\r\n * @param {*} formData\r\n * @param {*} source\r\n */\r\n const handleIntervalChange = (interval, formData, source) => {\r\n const { formApi } = props;\r\n const { value = '' } = formData;\r\n const parts = value.split('#');\r\n const part1 = parts[0] || '';\r\n const part2 = parts[1] || '';\r\n const part3 = parts[2] || '';\r\n\r\n if (interval) {\r\n const val = parseInt(interval, 10);\r\n if (val < 10) {\r\n interval = '0' + val;\r\n }\r\n } else {\r\n interval = '';\r\n }\r\n\r\n let newValue;\r\n if (source === 'interval0') {\r\n newValue = `${interval}#${part2}#${part3}`;\r\n } else if (source === 'interval1') {\r\n newValue = `${part1}#${interval}#${part3}`;\r\n } else {\r\n newValue = `${part1}#${part2}#${interval}`;\r\n }\r\n\r\n formApi.change('value', newValue);\r\n };\r\n\r\n const handleTimeZoneCheckboxChange = checked => {\r\n const { formApi } = props;\r\n formApi.change('value', checked ? '' : '00:00 +00:00');\r\n formApi.change('time', checked ? '' : '00:00');\r\n formApi.change('zone', checked ? '' : '+00:00');\r\n };\r\n\r\n const handleTimeChange = (timeValue, formData) => {\r\n const { formApi } = props;\r\n const time = timeValue && moment(timeValue).format('HH:mm');\r\n const newValue = time + ' ' + formData.zone;\r\n\r\n formApi.change('value', newValue);\r\n };\r\n\r\n const handleZoneChange = (zoneValue, formData) => {\r\n const { formApi } = props;\r\n const newValue = formData.time + ' ' + zoneValue;\r\n\r\n formApi.change('value', newValue);\r\n };\r\n\r\n const booleanParser = value => {\r\n if (value) {\r\n return '1';\r\n }\r\n return '0';\r\n };\r\n\r\n const textParser = value => {\r\n if (!value) {\r\n return '';\r\n }\r\n return value;\r\n };\r\n\r\n switch (type) {\r\n case 'CHECKBOX_O':\r\n return (\r\n \r\n {({ formData, ...rest }) =>\r\n formData && (\r\n \r\n \r\n !(value === 'false' || formData.value === '0' || !value)\r\n }\r\n parse={booleanParser}\r\n type=\"checkbox\"\r\n id=\"Checkbox\"\r\n />\r\n \r\n )\r\n }\r\n \r\n );\r\n case 'TIME_I':\r\n return (\r\n \r\n {({ formData }) =>\r\n formData && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n case 'TIME_M':\r\n return (\r\n \r\n {({ formData, ...rest }) =>\r\n formData && (\r\n \r\n \r\n \r\n handleIntervalChange(\r\n event.target.value,\r\n formData,\r\n 'interval0'\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n handleIntervalChange(\r\n event.target.value,\r\n formData,\r\n 'interval1'\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n handleIntervalChange(\r\n event.target.value,\r\n formData,\r\n 'interval2'\r\n )\r\n }\r\n />\r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n case 'TIME_T':\r\n return (\r\n \r\n {({ formData }) =>\r\n formData && (\r\n \r\n )\r\n }\r\n \r\n );\r\n case 'EDITOR_C':\r\n return (\r\n \r\n {({ formData }) =>\r\n formData && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n default:\r\n return (\r\n \r\n {({ formData }) =>\r\n formData && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n );\r\n }\r\n};\r\n\r\nconst TenantConfigurationSummary = props => {\r\n const classes = useStyles();\r\n\r\n return (\r\n
    \r\n \r\n \r\n Global Configuration Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default TenantConfigurationSummary;\r\n","import React from 'react';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport TenantConfigurationSummary from './TenantConfigurationSummary';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst valideIntervals = (interval1, interval2) => {\r\n let isValid = true;\r\n if (interval1 && interval2) {\r\n const val1 = parseInt(interval1, 10);\r\n const val2 = parseInt(interval2, 10);\r\n const difference = Math.abs(val1 - val2);\r\n if (difference < 4 || difference > 20) {\r\n isValid = false;\r\n }\r\n }\r\n return isValid;\r\n};\r\n\r\n/**\r\n * Tenant Configuration form validation rules\r\n * @param {*} values Form values\r\n * @returns errors object\r\n */\r\nconst validateTenantConfiguration = values => {\r\n const errors = {};\r\n const intervalMessageError =\r\n 'Minimum difference between two execution times must be at least 4h.';\r\n if (!valideIntervals(values.interval0, values.interval1)) {\r\n errors.interval1 = intervalMessageError;\r\n }\r\n if (!valideIntervals(values.interval1, values.interval2)) {\r\n errors.interval2 = intervalMessageError;\r\n }\r\n if (!valideIntervals(values.interval0, values.interval2)) {\r\n errors.interval2 = intervalMessageError;\r\n }\r\n return errors;\r\n};\r\n\r\nconst TenantConfigurationForm = props => {\r\n const {\r\n hasCreate,\r\n hasList,\r\n hasEdit,\r\n hasShow,\r\n handleFormIsDirty,\r\n displayToolbar,\r\n ...rest\r\n } = props;\r\n\r\n const { record = {} } = props;\r\n const initialValues = {};\r\n if (record.type === 'TIME_T') {\r\n if (typeof record.value === 'string') {\r\n const parts = record.value.split(' ');\r\n if (parts.length === 2) {\r\n initialValues['time'] = parts[0];\r\n initialValues['zone'] = parts[1];\r\n }\r\n }\r\n } else if (record.type === 'TIME_M') {\r\n if (typeof record.value === 'string') {\r\n const parts = record.value.split('#');\r\n parts.forEach(\r\n (part, index) => (initialValues[`interval${index}`] = part)\r\n );\r\n }\r\n }\r\n\r\n return (\r\n : <>\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n validate={validateTenantConfiguration}\r\n {...rest}\r\n >\r\n \r\n {formprops => {\r\n return (\r\n \r\n );\r\n }}\r\n \r\n {\r\n handleFormIsDirty(formProps.dirty);\r\n }}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default TenantConfigurationForm;\r\n","import { withStyles } from '@material-ui/core/styles';\r\nimport React from 'react';\r\nimport { Edit } from 'react-admin';\r\n\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport { getInitials, removePathEnd } from '../../core/utils';\r\nimport TenantConfigurationForm from './TenantConfigurationForm.js';\r\n\r\nconst styles = () => ({\r\n gridTab: {\r\n marginTop: '-17px !important'\r\n },\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst TenantConfigurationTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nclass TenantConfigurationEdit extends React.Component {\r\n state = {\r\n whenBlockNavigation: false\r\n };\r\n\r\n handleFormIsDirty = dirty => {\r\n // Block navigation if the form is dirty\r\n this.setState({ whenBlockNavigation: dirty });\r\n };\r\n\r\n render() {\r\n const { whenBlockNavigation } = this.state;\r\n const {\r\n classes,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n ...rest\r\n } = this.props;\r\n const displayToolbar = this.props.match.isExact;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(TenantConfigurationEdit);\r\n","import TenantConfigurationList from './TenantConfigurationList';\r\nimport TenantConfigurationEdit from './TenantConfigurationEdit';\r\nimport { TenantConfigurationIcon } from '../../core/themes/icons/TenantConfigurationIcon';\r\n\r\nexport default {\r\n list: TenantConfigurationList,\r\n edit: TenantConfigurationEdit,\r\n icon: TenantConfigurationIcon\r\n};\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\nimport { stringify } from '../components/forked/stringify';\r\n\r\n/**\r\n * Investor Organization API\r\n */\r\nclass OrganizationApi extends ApiBase {\r\n /**\r\n * Check if organization ID already exists\r\n * @param {*} organizationId\r\n */\r\n async checkIdExists(organizationId) {\r\n const request = {\r\n url: `${this.API_URL}/organization?id=${organizationId}`,\r\n headers: this.getHeaders(),\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return status === 200 || status === 403 || status === 404;\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200 || response.status === 403) {\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * Get related contacts in excel .investorName\r\n * @param organizationId\r\n * @param {*} filters\r\n */\r\n async getRelatedContactsAsExcel(organizationId, filters) {\r\n const queryParameters = stringify(\r\n {\r\n organizationId: organizationId,\r\n investorName: filters.name\r\n },\r\n {\r\n arrayFormat: 'comma'\r\n }\r\n );\r\n const request = {\r\n url: `${this.API_URL}/organization/relatedinvestors/excel?${queryParameters}`,\r\n headers: this.getHeaders(),\r\n method: 'GET',\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async downloadOrganizationImportTemplate() {\r\n const request = {\r\n url: `${this.API_URL}/organization/import/template`,\r\n method: 'GET',\r\n headers: this.getHeaders(),\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async validateImportFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/organizations/validateimport`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async importOrganizationsFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/organizations/importexcel`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async exportOrganizationsExcel(filters, orphanVisibility) {\r\n const queryParameters = stringify(\r\n {\r\n name: filters.name,\r\n id: filters.id,\r\n status: filters.status,\r\n aka: filters.aka,\r\n fundFamilyId: filters.fundFamilyId,\r\n orphanVisibility: orphanVisibility\r\n },\r\n {\r\n arrayFormat: 'comma'\r\n }\r\n );\r\n\r\n const request = {\r\n url: `${this.API_URL}/organizations/export/excel?${queryParameters}`,\r\n method: 'GET',\r\n headers: this.getHeaders(),\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new OrganizationApi();\r\n","import React, { useState } from 'react';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport { Grid, Typography, CircularProgress, Button } from '@material-ui/core/';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport ButtonMUI from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport { FormDataConsumer, refreshView, Loading } from 'react-admin';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport TabList from '@material-ui/lab/TabList';\r\nimport TabPanel from '@material-ui/lab/TabPanel';\r\nimport TabContext from '@material-ui/lab/TabContext';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport { useNotify } from 'ra-core';\r\n\r\nimport { ExcelIcon } from '../../../core/themes/icons/ExcelIcon';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport FileInput from '../../../core/components/forked/input/FileInput';\r\nimport FileField from '../../../core/components/forked/field/FileField';\r\nimport OrganizationApi from '../../../core/apis/OrganizationApi';\r\nimport { saveAs } from 'file-saver';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = {\r\n avatar: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\r\n height: '36px',\r\n width: '36px',\r\n color: '#757575'\r\n },\r\n errorIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'red'\r\n },\r\n toolbarStyle: {\r\n backgroundColor: '#FFFFFF',\r\n borderBottom: '1px solid #E5E5E5',\r\n minHeight: '54px',\r\n paddingTop: '0',\r\n paddingBottom: '0'\r\n },\r\n firstButtonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px'\r\n },\r\n buttonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px',\r\n marginRight: '10px'\r\n },\r\n root: {\r\n flexGrow: 1\r\n },\r\n barTitle: {\r\n flexGrow: 1,\r\n paddingLeft: '8px'\r\n },\r\n label: {\r\n paddingRight: '0px'\r\n },\r\n horisontalRule: {\r\n height: '1px',\r\n backgroundColor: '#E0E0E0',\r\n border: 'none'\r\n },\r\n ButtonMUISpan: {\r\n paddingLeft: '4px'\r\n },\r\n excelIcon: {\r\n verticalAlign: 'middle',\r\n paddingRight: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n validateButton: {\r\n textAlign: 'center',\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)'\r\n },\r\n validateButtonText: {\r\n color: 'grey'\r\n },\r\n validationColumn: {\r\n color: 'red'\r\n },\r\n noRows: {\r\n color: 'red'\r\n },\r\n circularProgress: {\r\n paddingRight: '3px'\r\n },\r\n tabsStyle: {\r\n color: 'black',\r\n background: 'transparent'\r\n },\r\n tableWrapper: {\r\n maxHeight: '70vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n};\r\n\r\nconst AvatarImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ErrorImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ExcelIconImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst ExcelOrganizationImportTitleBarWithDropbox = withStyles(styles)(\r\n ({\r\n classes,\r\n type,\r\n title,\r\n createUrl,\r\n secondTitle,\r\n secondCreateUrl,\r\n icon,\r\n hasCreatePermission,\r\n hasExportOrganizationsExcelPermission,\r\n hasImportOrganizationExcelPermission,\r\n filters,\r\n ...rest\r\n }) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [importModelViewToggle, setsViewOfImport] = useState(false);\r\n const [validateButtonVisibile, setValidateButtonVisibility] = useState(\r\n false\r\n );\r\n const [submitting, setSubmitting] = useState(false);\r\n const [disableImportButton, setImportButtonDisabled] = useState(true);\r\n const [loaderVisible, setLoaderVisible] = useState(false);\r\n const [showGrid, setShowGrid] = useState(false);\r\n const [showNoDataInExcelError, setShowNoDataInExcelError] = useState(false);\r\n const [isFileFieldDisabled, setIsFileFieldDisabled] = useState(false);\r\n const [downloadingTemplate, setDownloadingTemplate] = useState(false);\r\n const [excelFileData, setExcelFileData] = useState('');\r\n\r\n const [value, setValue] = useState('1');\r\n const [order, setOrder] = useState('desc');\r\n const [orderBy, setOrderBy] = useState(-1);\r\n const [response, setResponse] = useState('');\r\n const [responseTab2, setResponseTab2] = useState('');\r\n const [responseTab3, setResponseTab3] = useState('');\r\n const [tab1ContainsErrors, setTab1ContainsErrors] = useState(false);\r\n const [tab2ContainsErrors, setTab2ContainsErrors] = useState(false);\r\n const [tab3ContainsErrors, setTab3ContainsErrors] = useState(false);\r\n\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleImportClick = () => {\r\n setAnchorEl(null);\r\n setsViewOfImport(true);\r\n };\r\n\r\n const handleCloseImportClick = () => {\r\n setAnchorEl(null);\r\n cleanUpData();\r\n setsViewOfImport(false);\r\n };\r\n\r\n const handleRequestSort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'investorFamilyId';\r\n break;\r\n case 2:\r\n sortColumnName = 'investorFamilyName';\r\n break;\r\n case 3:\r\n sortColumnName = 'aka';\r\n break;\r\n case 4:\r\n sortColumnName = 'status';\r\n break;\r\n case 5:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n var sortedTableData = response.sort(function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowIndex') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab2Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'investorFamilyId';\r\n break;\r\n case 2:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 3:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n var sortedTableData = responseTab2.sort(function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowIndex') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab3Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'investorFamilyId';\r\n break;\r\n case 2:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 3:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowNum';\r\n }\r\n\r\n var sortedTableData = responseTab3.sort(function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowNum') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n });\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleChange = (event, newValue) => {\r\n setValue(newValue);\r\n };\r\n\r\n const cleanUpData = value => {\r\n setTab1ContainsErrors(false);\r\n setTab2ContainsErrors(false);\r\n setTab3ContainsErrors(false);\r\n setShowGrid(false);\r\n setImportButtonDisabled(true);\r\n setShowNoDataInExcelError(false);\r\n if (value) {\r\n setValidateButtonVisibility(true);\r\n } else {\r\n setValidateButtonVisibility(false);\r\n }\r\n };\r\n\r\n const handleClickValidation = async values => {\r\n var payload = new FormData();\r\n if (values.file) {\r\n payload.append('excelFile', values.file.rawFile, values.file.title);\r\n setExcelFileData(values);\r\n }\r\n\r\n setValidateButtonVisibility(false);\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setIsFileFieldDisabled(true);\r\n try {\r\n const responseData = await OrganizationApi.validateImportFromExcel(\r\n payload\r\n );\r\n var arrayData = responseData['validatedOrganizationDetails'];\r\n setResponse(arrayData);\r\n\r\n var arrayDataTab2 =\r\n responseData['validatedAddingOrganizationInvestorImport'];\r\n setResponseTab2(arrayDataTab2);\r\n\r\n var arrayDataTab3 =\r\n responseData['validatedDeletingOrganizationInvestorImport'];\r\n setResponseTab3(arrayDataTab3);\r\n\r\n const validationErrors = arrayData\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n validationErrors.length > 0 && setTab1ContainsErrors(true);\r\n\r\n const validationErrorsTab2 = arrayDataTab2\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n validationErrorsTab2.length > 0 && setTab2ContainsErrors(true);\r\n\r\n const validationErrorsTab3 = arrayDataTab3\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n validationErrorsTab3.length > 0 && setTab3ContainsErrors(true);\r\n\r\n if (\r\n arrayData.length > 0 ||\r\n arrayDataTab2.length > 0 ||\r\n arrayDataTab3.length > 0\r\n ) {\r\n var errors = false;\r\n if (\r\n arrayData.length > 0 &&\r\n validationErrors &&\r\n validationErrors.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab2.length > 0 &&\r\n validationErrorsTab2 &&\r\n validationErrorsTab2.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab3.length > 0 &&\r\n validationErrorsTab3 &&\r\n validationErrorsTab3.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n setImportButtonDisabled(errors);\r\n } else {\r\n setImportButtonDisabled(true);\r\n setShowNoDataInExcelError(true);\r\n }\r\n\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n setShowGrid(true);\r\n } catch (e) {\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n notifyServerError(e);\r\n }\r\n };\r\n\r\n const handleImportOrganizationsClick = async values => {\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setShowGrid(false);\r\n setIsFileFieldDisabled(true);\r\n var payload = new FormData();\r\n if (values && values.file) {\r\n payload.append('excelFile', values.file.rawFile, values.file.title);\r\n }\r\n\r\n try {\r\n await OrganizationApi.importOrganizationsFromExcel(payload);\r\n notify('ra.notification.custom_updated_message');\r\n } catch (e) {\r\n setLoaderVisible(false);\r\n notifyServerError(e);\r\n } finally {\r\n setShowGrid(false);\r\n setLoaderVisible(false);\r\n setsViewOfImport(false);\r\n setIsFileFieldDisabled(false);\r\n refreshView();\r\n }\r\n };\r\n\r\n /**\r\n * Click on button 'Download as Excel' to download the excel file\r\n */\r\n const handleClickDownloadAsExcel = async () => {\r\n setDownloadingTemplate(true);\r\n OrganizationApi.downloadOrganizationImportTemplate()\r\n .then(resp => {\r\n const fileName = 'Investor Families Import Template.xlsx';\r\n saveAs(resp, fileName);\r\n })\r\n .catch(e => {\r\n notify(getIcError(e), { type: 'error' });\r\n })\r\n .finally(() => {\r\n setDownloadingTemplate(false);\r\n });\r\n };\r\n\r\n const handleExportClick = filters => {\r\n setSubmitting(true);\r\n OrganizationApi.exportOrganizationsExcel(filters, 'ALL_VISIBLE')\r\n .then(resp => {\r\n const fileName = 'Investor Families Export.xlsx';\r\n saveAs(resp, fileName);\r\n setSubmitting(false);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n setSubmitting(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n\r\n \r\n {type}\r\n \r\n {(hasImportOrganizationExcelPermission ||\r\n hasExportOrganizationsExcelPermission) && (\r\n
    \r\n \r\n
    \r\n \r\n \r\n Import/Export Investor Families\r\n \r\n
    \r\n \r\n \r\n {hasImportOrganizationExcelPermission && (\r\n \r\n Import Investor Families from Excel\r\n \r\n )}\r\n {hasExportOrganizationsExcelPermission && (\r\n handleExportClick(filters)}\r\n disabled={submitting}\r\n >\r\n {submitting && (\r\n \r\n \r\n \r\n )}\r\n Export Investor Families to Excel\r\n \r\n )}\r\n {hasImportOrganizationExcelPermission && (\r\n
    \r\n
    \r\n \r\n {downloadingTemplate && (\r\n \r\n \r\n \r\n )}\r\n Download Template\r\n \r\n
    \r\n )}\r\n \r\n
    \r\n )}\r\n\r\n {hasCreatePermission && title && (\r\n \r\n {title}\r\n \r\n )}\r\n\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseImportClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Import Investor Families from Excel\r\n \r\n\r\n \r\n
    \r\n \r\n \r\n {({ formData, ...rest }) => (\r\n \r\n {!isFileFieldDisabled && (\r\n cleanUpData(value)}\r\n >\r\n \r\n \r\n )}\r\n {loaderVisible && }\r\n {validateButtonVisibile && (\r\n
    \r\n

    \r\n No Data To Display\r\n
    \r\n Click 'Validate' to parse and display Excel Data\r\n

    \r\n handleClickValidation(formData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n >\r\n Validate\r\n \r\n
    \r\n )}\r\n\r\n {showGrid && (\r\n
    \r\n \r\n \r\n \r\n {\r\n if (tab1ContainsErrors) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n />\r\n {\r\n if (tab2ContainsErrors) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n />\r\n {\r\n if (tab3ContainsErrors) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n />\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Investor Family ID' },\r\n { id: 'Investor Family Name' },\r\n { id: 'A.K.A.' },\r\n { id: 'Status' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestSort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {response.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n \r\n {item.investorFamilyId}\r\n \r\n \r\n {item.investorFamilyName}\r\n \r\n {item.aka}\r\n {item.status}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Investor Family ID' },\r\n { id: 'Investor ID' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab2Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab2.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n \r\n {item.investorFamilyId}\r\n \r\n \r\n {item.investorId}\r\n \r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Investor Family ID' },\r\n { id: 'Investor ID' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab3Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab3.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n \r\n {item.investorFamilyId}\r\n \r\n \r\n {item.investorId}\r\n \r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Close\r\n \r\n
    \r\n handleImportOrganizationsClick(excelFileData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className={classes.button}\r\n disabled={disableImportButton}\r\n >\r\n Import\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n);\r\n\r\nexport default ExcelOrganizationImportTitleBarWithDropbox;\r\n","const organizationStatus = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'INACTIVE', name: 'Inactive' }\r\n];\r\n\r\nexport { organizationStatus };\r\n","import React, { useEffect, useMemo } from 'react';\r\nimport {\r\n Datagrid,\r\n TextField,\r\n useUnselectAll,\r\n ReferenceField,\r\n linkToRecord\r\n} from 'react-admin';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport StatusSelectField from '../../../core/components/StatusSelectField';\r\nimport { investorStatus } from '../../investors/InvestorLookups';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nconst styles = () => ({\r\n table: {\r\n '& tbody>.MuiTableRow-root:hover': {\r\n background: 'unset',\r\n cursor: 'default'\r\n }\r\n },\r\n statusColumnStyle: {\r\n width: '68px'\r\n },\r\n label: {\r\n color: '#424242',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n paddingBottom: '10px'\r\n },\r\n expandLabel: {\r\n color: '#757575',\r\n fontSize: '14px',\r\n display: 'inline-block',\r\n transform: 'translateY(-10px)'\r\n },\r\n progress: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n editButton: {\r\n color: '#757575',\r\n minWidth: '24px',\r\n padding: '6px 0',\r\n '& span': {\r\n paddingRight: 0\r\n }\r\n },\r\n editButtonColumnStyle: {\r\n width: '24px'\r\n }\r\n});\r\n\r\nconst OrganizationInvestorDatagrid = props => {\r\n const {\r\n handleRowClick,\r\n classes,\r\n expand,\r\n permissions,\r\n hasList,\r\n userProfile,\r\n hasShow,\r\n hasEdit,\r\n ...datagridProps\r\n } = props;\r\n\r\n //unselecting all the checkboxes from the deleting actions in the ComponenWillUnmount listener\r\n const unSelectAll = useUnselectAll(datagridProps.resource);\r\n\r\n useEffect(() => () => unSelectAll(), [unSelectAll]);\r\n\r\n const hasReadInvestorPermission = useMemo(() => {\r\n return permissions.includes('AUTH_READ_INVESTOR_NA');\r\n }, [permissions]);\r\n\r\n if (props.total > 0) {\r\n return (\r\n <>\r\n {expand && Related Investors}\r\n \r\n \r\n hasReadInvestorPermission\r\n ? `${linkToRecord(`/${reference}`, record.id)}`\r\n : false\r\n }\r\n sortBy=\"name\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n } else if (props.loaded) {\r\n return (\r\n \r\n There are no related Investors to be displayed\r\n \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nexport default withStyles(styles)(OrganizationInvestorDatagrid);\r\n","import { makeStyles } from '@material-ui/core';\r\nimport OrganizationIcon from '@material-ui/icons/Business';\r\nimport React, { useEffect, useState, useMemo } from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n ReferenceManyField,\r\n Responsive,\r\n TextInput,\r\n SelectInput,\r\n SimpleList,\r\n TextField,\r\n TopToolbar,\r\n Pagination,\r\n useGetList\r\n} from 'react-admin';\r\n\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from './importorganizations/ExcelOrganizationImportTitleBarWithDropbox';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport { organizationStatus } from './OrganizationLookups';\r\nimport OrganizationInvestorDatagrid from './organizationsinvestor/OrganizationInvestorDatagrid';\r\nimport AutocompleteInput from '../../core/components/forked/input/AutocompleteInput';\r\n\r\nconst useStyles = makeStyles({\r\n expandOnlyDataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '14px'\r\n }\r\n }\r\n },\r\n expandDataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '14px'\r\n },\r\n '& th:nth-of-type(2)': {\r\n width: '24px'\r\n }\r\n }\r\n },\r\n expandIconCell: {\r\n width: '14px',\r\n '& div': {\r\n width: '14px',\r\n padding: '0'\r\n },\r\n '& div:hover ': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n statusColumnStyle: {\r\n width: '68px'\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n }\r\n});\r\n\r\nconst useshowStyles = makeStyles({\r\n root: {\r\n padding: '16px 16px 10px 16px'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst OrganizationFilter = ({ filterValues, setAppliedFilters, ...props }) => {\r\n useEffect(() => {\r\n if (filterValues) {\r\n setAppliedFilters(filterValues);\r\n }\r\n }, [filterValues, setAppliedFilters]);\r\n\r\n const { data } = useGetList('fundfamilies', { perPage: -1 }, nameSort, null);\r\n\r\n const fundFamilies = useMemo(() => Object.values(data), [data]);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {fundFamilies && fundFamilies.length > 0 && (\r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst OrganizationShow = props => {\r\n const classes = useshowStyles();\r\n\r\n const handleRowClick = investorId => {\r\n return `/investors/${investorId}`;\r\n };\r\n\r\n const { permissions, ...rest } = props;\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst OrganizationTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n hasImportOrganizationExcelPermission={\r\n props.hasImportOrganizationExcelPermission\r\n }\r\n hasExportOrganizationsExcelPermission={\r\n props.hasExportOrganizationsExcelPermission\r\n }\r\n filters={props.filters}\r\n />\r\n );\r\n};\r\n\r\nconst nameSort = { field: 'name', order: 'ASC' };\r\nconst organizationFilter = { orphanVisibility: 'ALL_VISIBLE' };\r\n\r\nconst OrganizationList = props => {\r\n const classes = useStyles();\r\n const [appliedFilters, setAppliedFilters] = useState([]);\r\n const {\r\n permissions = [],\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProofile,\r\n ...rest\r\n } = props;\r\n\r\n const [\r\n hasImportOrganizationExcelPermission,\r\n hasExportOrganizationsExcelPermission\r\n ] = useMemo(\r\n () =>\r\n props.permissions\r\n ? [\r\n props.permissions.includes(\r\n 'AUTH_IMPORT_INVESTOR_FAMILIES_FROM_EXCEL'\r\n ),\r\n props.permissions.includes('AUTH_EXPORT_INVESTOR_ORGANIZATION')\r\n ]\r\n : [false, false],\r\n [props.permissions]\r\n );\r\n\r\n return (\r\n \r\n }\r\n filters={}\r\n perPage={20}\r\n pagination={}\r\n bulkActionButtons={hasDeletePermission && }\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.name}\r\n secondaryText={record => record.id}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default OrganizationList;\r\n","import { makeStyles } from '@material-ui/core';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport React, { useState } from 'react';\r\nimport { required, SelectInput, TextInput } from 'react-admin';\r\n\r\nimport OrganizationApi from '../../core/apis/OrganizationApi';\r\nimport {\r\n isStringAlphaNumericUnderscoreHyphen,\r\n fieldLengthValidator,\r\n isStringOnlyUnderscoreHyphen\r\n} from '../../core/utils/index';\r\nimport { organizationStatus } from './OrganizationLookups';\r\n\r\nconst useStyles = makeStyles({\r\n headerContainer: {\r\n paddingTop: '0px !important'\r\n }\r\n});\r\n\r\nconst OrganizationSummary = props => {\r\n const [formErrors, setFormErrors] = useState({});\r\n const classes = useStyles();\r\n const { variant, creation } = props;\r\n\r\n /*\r\n * Verify that Family ID is unique and alpha numeric,\r\n * also check if ID is not made just from Underscore and Hyphens\r\n */\r\n const validateOrganizationId = async (value, allValues, props) => {\r\n if (props.active) {\r\n const idValid = isStringAlphaNumericUnderscoreHyphen(value);\r\n const isValueOnlyUnderscoreHyphen = isStringOnlyUnderscoreHyphen(value);\r\n let error;\r\n\r\n if (!idValid) {\r\n error =\r\n 'Family ID must be unique and only contain numbers letters, underscore and hyphen symbols without any spaces';\r\n } else if (!isValueOnlyUnderscoreHyphen) {\r\n error =\r\n 'Family ID must contain at least one number or letter character';\r\n } else {\r\n const idExists = await OrganizationApi.checkIdExists(value);\r\n\r\n if (idExists) {\r\n error = 'ID already exists';\r\n } else {\r\n error = undefined;\r\n }\r\n }\r\n setFormErrors({ ...formErrors, id: error });\r\n return error;\r\n }\r\n return formErrors.id;\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n Investor Family Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default OrganizationSummary;\r\n","import { withStyles } from '@material-ui/core/styles';\r\nimport React from 'react';\r\nimport { Create, FormTab, TabbedForm } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport OrganizationSummary from './OrganizationSummary';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst OrganizationTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nclass OrganizationCreate extends React.Component {\r\n state = {\r\n whenBlockNavigation: false\r\n };\r\n\r\n handleFormIsDirty(dirty) {\r\n // Block bnavigation when the form is dirty\r\n this.setState({ whenBlockNavigation: dirty });\r\n }\r\n allowNavigationOnSave = () => {\r\n this.setState({ whenBlockNavigation: false });\r\n };\r\n\r\n render() {\r\n const { whenBlockNavigation } = this.state;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }>\r\n \r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n \r\n {\r\n this.handleFormIsDirty(props.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(OrganizationCreate);\r\n","import React, { useMemo } from 'react';\r\nimport { ReferenceArrayInput } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\n\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\n\r\nconst validateInvestors = value => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Investor must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst InvestorsGridInput = props => {\r\n const { choices } = props;\r\n\r\n //Preselecting the investors:\r\n //First lets select only investors which are not associated with an Family\r\n //That is necessary because orphan investors can be added to an Family.\r\n const preselectedChoices = useMemo(() => {\r\n return choices.filter(item => {\r\n return !item.organizationId;\r\n });\r\n }, [choices]);\r\n\r\n return preselectedChoices.length > 0 ? (\r\n \r\n ) : (\r\n There are no Investors to be displayed\r\n );\r\n};\r\n\r\nconst AddExistingInvestorSummary = () => {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default AddExistingInvestorSummary;\r\n","import React from 'react';\r\nimport AddExistingInvestorSummary from './AddExistingInvestorSummary';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { FormSpy } from 'react-final-form';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n },\r\n form: {\r\n '& > div': {\r\n paddingTop: '0px !important',\r\n paddingBottom: '0px !important'\r\n }\r\n }\r\n});\r\n\r\nconst AddExistingInvestorForm = props => {\r\n const { handleSubmit, setInvestorFormProps, investorId, classes } = props;\r\n return (\r\n \r\n \r\n {props => {\r\n setInvestorFormProps(props);\r\n return (\r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(AddExistingInvestorForm);\r\n","import React from 'react';\r\nimport {\r\n SaveButton,\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n} from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { connect } from 'react-redux';\r\n\r\nimport AddExistingInvestorForm from './AddExistingInvestorForm';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport InvestorApi from '../../../core/apis/InvestorApi';\r\nimport { createPluralizedMessage } from '../../../core/utils/index';\r\nimport messages from '../../../core/i18n/englishLanguageMessages';\r\nimport { getIcError } from '../../../core/providers/utils';\r\n\r\nclass AddExistingInvestorDialog extends React.Component {\r\n investorFormProps;\r\n\r\n state = {\r\n submitting: false\r\n };\r\n\r\n setInvestorFormProps = props => {\r\n this.investorFormProps = props;\r\n };\r\n\r\n handleSaveClick = event => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n this.investorFormProps.form.submit(event);\r\n };\r\n\r\n handleClose = () => {\r\n const { handleDialogToggle } = this.props;\r\n const { submitting } = this.state;\r\n if (submitting) return;\r\n this.investorFormProps.form.reset();\r\n handleDialogToggle();\r\n };\r\n\r\n handleSubmit = values => {\r\n const {\r\n organizationId,\r\n fetchStart,\r\n fetchEnd,\r\n showNotification,\r\n handleDialogToggle,\r\n investors,\r\n refreshView\r\n } = this.props;\r\n\r\n this.setState({ submitting: true });\r\n\r\n // Prepare the list of investors to update and set specific family as a parent\r\n const investorsToBeUpdated = [];\r\n values.investors.forEach(investor => {\r\n let visibleInvestors = investors.data;\r\n let initialInvestor = visibleInvestors[investor];\r\n investorsToBeUpdated.push({\r\n ...initialInvestor,\r\n organizationId: organizationId\r\n });\r\n });\r\n\r\n // Dispatch an action letting react-admin know a API call is ongoing\r\n fetchStart();\r\n\r\n // As we want to know when the new investor has been created/updated in order to close the modal, we use the\r\n // dataProvider directly to update, and async api call to update many\r\n const resultOperation = InvestorApi.update(investorsToBeUpdated);\r\n\r\n resultOperation\r\n .then(() => {\r\n refreshView();\r\n handleDialogToggle();\r\n showNotification(\r\n createPluralizedMessage(\r\n messages.ra.notification.updated,\r\n investorsToBeUpdated.length\r\n )\r\n );\r\n })\r\n .catch(error => {\r\n showNotification('ra.notification.server', 'error', {\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n })\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n this.investorFormProps.form.reset();\r\n fetchEnd();\r\n this.setState({ submitting: false });\r\n });\r\n };\r\n\r\n render() {\r\n const { showDialog, refreshView, ...rest } = this.props;\r\n const { submitting } = this.state;\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n this.handleClose();\r\n }}\r\n >\r\n \r\n {'Add Existing Investor to Family'}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(AddExistingInvestorDialog);\r\n","import Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport React, { useState, useRef, useCallback } from 'react';\r\nimport { CREATE, Create, SaveButton, useNotify, useRefresh } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport SimpleFormWithSave from '../../../core/components/form/SimpleFormWithSave';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport dataProvider from '../../../core/providers/IccUserDataProvider';\r\nimport InvestorDetails from '../../investors/InvestorDetails';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nconst OrganizationInvestorCreateDialog = props => {\r\n let investorFormProps = useRef({});\r\n const {\r\n handleDialogToggle,\r\n showDialog,\r\n classes,\r\n refreshView,\r\n ...createProps\r\n } = props;\r\n const [submitting, setSubmitting] = useState(false);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const refresh = useRefresh();\r\n\r\n const setInvestorFormProps = useCallback(formProps => {\r\n investorFormProps.current = formProps;\r\n }, []);\r\n\r\n const handleSaveClick = useCallback(() => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n investorFormProps.current.form.submit();\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n if (submitting) return;\r\n investorFormProps.current.form.reset();\r\n handleDialogToggle();\r\n }, [handleDialogToggle, submitting]);\r\n\r\n const handleSubmit = useCallback(\r\n values => {\r\n setSubmitting(true);\r\n\r\n dataProvider(CREATE, 'investors', {\r\n data: values\r\n })\r\n .then(() => {\r\n refresh();\r\n handleDialogToggle();\r\n notify('ra.notification.created');\r\n })\r\n .catch(notifyServerError)\r\n .finally(() => {\r\n investorFormProps.current.form.reset();\r\n setSubmitting(false);\r\n });\r\n },\r\n [handleDialogToggle, notify, refresh, notifyServerError]\r\n );\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n Create new investor\r\n \r\n \r\n {/* Override record object that contains investor information */}\r\n \r\n \r\n \r\n {props => {\r\n setInvestorFormProps(props);\r\n return ;\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(OrganizationInvestorCreateDialog);\r\n","import React, { Fragment, useState } from 'react';\r\nimport {\r\n Button,\r\n useUnselectAll,\r\n useNotify,\r\n showNotification,\r\n refreshView\r\n} from 'react-admin';\r\nimport { connect } from 'react-redux';\r\nimport InvestorApi from '../../../core/apis/InvestorApi';\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\nimport { getIcError } from '../../../core/providers/utils';\r\n\r\nconst RemoveButton = props => {\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleClick = () => setOpen(true);\r\n const handleDialogClose = () => setOpen(false);\r\n\r\n const notify = useNotify();\r\n const unselectAll = useUnselectAll();\r\n\r\n const handleConfirm = async () => {\r\n try {\r\n let count = await props.updateMany(props);\r\n notify('ra.notification.deleted', {\r\n messageArgs: { smart_count: count }\r\n });\r\n\r\n unselectAll('investors');\r\n } catch (error) {\r\n notify('ra.notification.delete_error', {\r\n type: 'error',\r\n messageArgs: { message: getIcError(error) }\r\n });\r\n }\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = {\r\n fetchEnd,\r\n fetchStart,\r\n showNotification,\r\n refreshView\r\n};\r\n\r\nexport default connect(null, mapDispatchToProps)(AddExistingOrphanFundDialog);\r\n","import React, { useState, useCallback, useRef } from 'react';\r\nimport { SaveButton, CREATE, Create, useRefresh, useNotify } from 'react-admin';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport dataProvider from '../../../core/providers/IccUserDataProvider';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport SimpleFormWithSave from '../../../core/components/form/SimpleFormWithSave';\r\nimport FundSummary from '../../funds/FundSummary';\r\nimport { validateFund } from '../../funds/creationSteps/utils';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\n\r\nconst styles = () => ({\r\n fullWidth: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nconst FundFamilyFundCreateDialog = props => {\r\n const refresh = useRefresh();\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const [submitting, setSubmitting] = useState(false);\r\n let fundFormProps = useRef({});\r\n const { handleDialogToggle, id, showDialog, classes, ...createProps } = props;\r\n\r\n const setFundFormProps = useCallback(formProps => {\r\n fundFormProps.current = formProps;\r\n }, []);\r\n\r\n const handleSaveClick = useCallback(() => {\r\n // Trigger a submit of our custom quick create/update form\r\n // This is needed because our modal action buttons are oustide the form\r\n fundFormProps.current.form.submit();\r\n }, []);\r\n\r\n const handleClose = useCallback(() => {\r\n if (submitting) return;\r\n fundFormProps.current.form.reset();\r\n handleDialogToggle();\r\n }, [handleDialogToggle, submitting]);\r\n\r\n const handleSubmit = useCallback(\r\n values => {\r\n setSubmitting(true);\r\n\r\n // As we want to know when the new fund has been created in order to close the modal, we use the\r\n // dataProvider directly\r\n let result = dataProvider(CREATE, 'funds', { data: values });\r\n result\r\n .then(() => {\r\n refresh();\r\n handleDialogToggle();\r\n notify('ra.notification.created');\r\n })\r\n .catch(notifyServerError)\r\n .finally(() => {\r\n // Dispatch an action letting react-admin know a API call has ended\r\n fundFormProps.current.form.reset();\r\n setSubmitting(false);\r\n });\r\n },\r\n [handleDialogToggle, notify, refresh, notifyServerError]\r\n );\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n Create new fund\r\n \r\n \r\n \r\n \r\n \r\n {props => {\r\n setFundFormProps(props);\r\n return ;\r\n }}\r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n );\r\n};\r\nexport default withStyles(styles)(FundFamilyFundCreateDialog);\r\n","import React, { Fragment, useState } from 'react';\r\nimport {\r\n Button,\r\n useUnselectAll,\r\n useNotify,\r\n showNotification,\r\n refreshView\r\n} from 'react-admin';\r\nimport { connect } from 'react-redux';\r\nimport FundApi from '../../../core/apis/FundApi';\r\nimport Confirm from '../../../core/components/forked/layout/Confirm';\r\nimport { getIcError } from '../../../core/providers/utils';\r\n\r\nconst RemoveButton = props => {\r\n const [open, setOpen] = useState(false);\r\n\r\n const handleClick = () => setOpen(true);\r\n const handleDialogClose = () => setOpen(false);\r\n\r\n const notify = useNotify();\r\n const unselectAll = useUnselectAll();\r\n\r\n const handleConfirm = async () => {\r\n try {\r\n let count = await props.updateMany(props);\r\n notify('ra.notification.deleted', {\r\n messageArgs: { smart_count: count }\r\n });\r\n\r\n unselectAll('funds');\r\n } catch (error) {\r\n notify('Error: Items was not deleted', { type: 'error' });\r\n }\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n )}\r\n\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseImportClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Import Fund Tags from Excel\r\n \r\n\r\n \r\n
    \r\n \r\n \r\n {({ formData, ...rest }) => (\r\n \r\n {!isFileFieldDisabled && (\r\n cleanUpData(value)}\r\n >\r\n \r\n \r\n )}\r\n {loaderVisible && }\r\n\r\n {validateButtonVisibile && (\r\n
    \r\n

    \r\n No Data To Display\r\n
    \r\n Click 'Validate' to parse and display Excel Data\r\n

    \r\n handleClickValidation(formData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n >\r\n Validate\r\n \r\n
    \r\n )}\r\n\r\n {showGrid && (\r\n
    \r\n \r\n \r\n \r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n {/* evading console errors - should find a better way */}\r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n {/* evading console errors - should find a better way */}\r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Tag Name' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestSort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {response.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.tagName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There is no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Fund ID' },\r\n { id: 'Fund Tag' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab2Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab2.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.fundId}\r\n {item.tagName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Fund ID' },\r\n { id: 'Fund Tag' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab3Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab3.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.fundId}\r\n {item.tagName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Close\r\n \r\n
    \r\n \r\n Import\r\n \r\n
    \r\n \r\n \r\n );\r\n }\r\n);\r\n\r\nexport default ExcelFundTagImportTitleBarWithDropbox;\r\n","import React, { useMemo } from 'react';\r\nimport {\r\n List,\r\n Datagrid,\r\n TextInput,\r\n Pagination,\r\n TextField,\r\n ReferenceField\r\n} from 'react-admin';\r\n\r\nimport get from 'lodash/get';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport ListTitleBar from './fundtagimport/ExcelFundTagImportTitleBarWithDropbox';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport PopupField from '../../core/components/grid/PopupField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport { FundTagIcon } from '../../core/themes/icons/FundTagIcon';\r\n\r\nconst useStyles = makeStyles({\r\n nameColumnStyle: {\r\n width: '75%'\r\n },\r\n inputCustomWidth: {\r\n width: '25%'\r\n },\r\n formFullWidth: {\r\n width: '100%',\r\n marginTop: '0px',\r\n marginBottom: '-8px',\r\n '& > div': {\r\n width: '100%'\r\n }\r\n },\r\n tag: {\r\n color: '#212121',\r\n 'font-size': '12px',\r\n 'line-height': '12px',\r\n textDecoration: 'none',\r\n 'box-sizing': 'border-box',\r\n\r\n background: '#F5F5F5',\r\n border: '1px solid #E0E0E0',\r\n 'border-radius': '2px',\r\n padding: '0 5px'\r\n },\r\n funds: {\r\n color: '#2962FF',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n textDecoration: 'underline'\r\n }\r\n },\r\n button: {\r\n justifyContent: 'flex-start'\r\n }\r\n});\r\n\r\nconst TagsTitle = props => {\r\n return (\r\n }\r\n />\r\n );\r\n};\r\n\r\nconst FundTagNameFilters = ({ ...props }) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst FundField = ({ record, ...rest }) => {\r\n const classes = useStyles();\r\n const fundIds = get(record, 'fundIds', []);\r\n\r\n if (fundIds.length > 1) {\r\n const getFundsList = () => {\r\n return fundIds.sort().map((_fundId, index) => (\r\n \r\n \r\n \r\n ));\r\n };\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (fundIds.length === 1) {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return 0 Funds;\r\n};\r\n\r\nconst FundTagList = props => {\r\n const classes = useStyles();\r\n const { hasDeletePermission, hasCreatePermission, ...rest } = props;\r\n\r\n const { hasImportFundTagExcelPermission } = useMemo(() => {\r\n return {\r\n hasImportFundTagExcelPermission: props.permissions\r\n ? props.permissions.includes('AUTH_IMPORT_FUND_TAG_FROM_EXCEL')\r\n : false\r\n };\r\n }, [props.permissions]);\r\n\r\n return (\r\n \r\n }\r\n sort={{ field: 'name', order: 'ASC' }}\r\n exporter={false}\r\n perPage={20}\r\n filters={}\r\n pagination={}\r\n bulkActionButtons={\r\n hasDeletePermission && (\r\n \r\n )\r\n }\r\n empty={}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default FundTagList;\r\n","import { FundTagIcon } from '../../core/themes/icons/FundTagIcon';\r\nimport FundTagCreate from './FundTagCreate';\r\nimport FundTagEdit from './FundTagEdit';\r\nimport FundTagList from './FundTagList';\r\n\r\nexport default {\r\n list: FundTagList,\r\n create: FundTagCreate,\r\n edit: FundTagEdit,\r\n icon: FundTagIcon\r\n};\r\n","import React from 'react';\r\n\r\nexport const InvestorTagIcon = () => (\r\n \r\n \r\n \r\n);\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\n\r\n/**\r\n * Investor Tag API\r\n */\r\nclass InvestorTagApi extends ApiBase {\r\n /**\r\n * Check if Investor Tag Name already exists\r\n * @param {*} investorTagName\r\n */\r\n async checkInvestorTagNameExists(investorTagName) {\r\n const request = {\r\n url: `${this.API_URL}/investortag?name=${investorTagName}`,\r\n headers: this.getHeaders(),\r\n method: 'HEAD',\r\n validateStatus: function(status) {\r\n return (status >= 200 && status < 300) || status === 404;\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n if (response.status === 200) {\r\n return true;\r\n } else if (response.status === 404) {\r\n return false;\r\n } else {\r\n throw Error('An error has occurred');\r\n }\r\n }\r\n\r\n /**\r\n * Create Investor Tag\r\n * @param payload { name: investorTagName }\r\n */\r\n async create(payload) {\r\n const request = {\r\n url: `${this.API_URL}/investortag`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n /**\r\n * Update Investor Tag Name\r\n * @param id\r\n * @param payload { name: investorTagName }\r\n */\r\n async update(id, payload) {\r\n const request = {\r\n url: `${this.API_URL}/investortag?id=${id}`,\r\n headers: this.getHeaders(),\r\n method: 'PUT',\r\n data: payload\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n return response.data;\r\n }\r\n\r\n async downloadInvestorTagImportTemplate() {\r\n const request = {\r\n url: `${this.API_URL}/investortag/import/template`,\r\n method: 'GET',\r\n headers: this.getHeaders(),\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async validateImportFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/investortag/validateimport`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n\r\n async importInvestorTagFromExcel(payload) {\r\n const request = {\r\n url: `${this.API_URL}/investortag/importexcel`,\r\n method: 'POST',\r\n headers: this.getHeaders(),\r\n data: payload\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new InvestorTagApi();\r\n","import React, { useState } from 'react';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport { Grid, Typography, CircularProgress, Button } from '@material-ui/core/';\r\nimport ButtonMUI from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { ExcelIcon } from '../../../core/themes/icons/ExcelIcon';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport FileInput from '../../../core/components/forked/input/FileInput';\r\nimport FileField from '../../../core/components/forked/field/FileField';\r\nimport { FormDataConsumer, refreshView, Loading } from 'react-admin';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport TabList from '@material-ui/lab/TabList';\r\nimport TabPanel from '@material-ui/lab/TabPanel';\r\nimport TabContext from '@material-ui/lab/TabContext';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport InvestorApi from '../../../core/apis/InvestorApi';\r\nimport { useNotify } from 'ra-core';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport { saveAs } from 'file-saver';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\nimport InvestorTagApi from '../../../core/apis/InvestorTagApi';\r\n\r\nconst styles = {\r\n avatar: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\r\n height: '36px',\r\n width: '36px',\r\n color: '#757575'\r\n },\r\n errorIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'red'\r\n },\r\n warningIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'orange'\r\n },\r\n toolbarStyle: {\r\n backgroundColor: '#FFFFFF',\r\n borderBottom: '1px solid #E5E5E5',\r\n minHeight: '54px',\r\n paddingTop: '0',\r\n paddingBottom: '0'\r\n },\r\n firstButtonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px'\r\n },\r\n buttonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px',\r\n marginRight: '10px'\r\n },\r\n root: {\r\n flexGrow: 1\r\n },\r\n barTitle: {\r\n flexGrow: 1,\r\n paddingLeft: '8px'\r\n },\r\n label: {\r\n paddingRight: '0px'\r\n },\r\n horisontalRule: {\r\n height: '1px',\r\n backgroundColor: '#E0E0E0',\r\n border: 'none'\r\n },\r\n ButtonMUISpan: {\r\n paddingLeft: '4px'\r\n },\r\n excelIcon: {\r\n verticalAlign: 'middle',\r\n paddingRight: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n validateButton: {\r\n textAlign: 'center',\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)'\r\n },\r\n circularProgress: {\r\n paddingRight: '3px'\r\n },\r\n validateButtonText: {\r\n color: 'grey'\r\n },\r\n validationColumn: {\r\n color: 'red'\r\n },\r\n validationColumnWarning: {\r\n color: 'orange'\r\n },\r\n noRows: {\r\n color: 'red'\r\n },\r\n tabsStyle: {\r\n color: 'black',\r\n background: 'transparent'\r\n },\r\n tableWrapper: {\r\n maxHeight: '70vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n};\r\n\r\nconst AvatarImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ExcelIconImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ErrorImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst ExcelInvestorTagImportTitleBarWithDropbox = withStyles(styles)(\r\n ({\r\n classes,\r\n type,\r\n title,\r\n createUrl,\r\n icon,\r\n hasExportInvestorTagExcelPermission,\r\n hasImportInvestorTagExcelPermission,\r\n hasCreatePermission,\r\n filters\r\n }) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [importModelViewToggle, setsViewOfImport] = useState(false);\r\n const [validateButtonVisibile, setValidateButtonVisibility] = useState(\r\n false\r\n );\r\n const [submitting, setSubmitting] = useState(false);\r\n const [downloadingTemplate, setDownloadingTemplate] = useState(false);\r\n const [disableImportButton, setImportButtonDisabled] = useState(true);\r\n const [loaderVisible, setLoaderVisible] = useState(false);\r\n const [showGrid, setShowGrid] = useState(false);\r\n const [showNoDataInExcelError, setShowNoDataInExcelError] = useState(false);\r\n const [isFileFieldDisabled, setIsFileFieldDisabled] = useState(false);\r\n const [value, setValue] = useState('1');\r\n const [order, setOrder] = useState('desc');\r\n const [orderBy, setOrderBy] = useState(-1);\r\n const [response, setResponse] = useState('');\r\n const [responseTab2, setResponseTab2] = useState('');\r\n const [responseTab3, setResponseTab3] = useState('');\r\n const [tab1ContainsErrors, setTab1ContainsErrors] = useState(false);\r\n const [tab2ContainsErrors, setTab2ContainsErrors] = useState(false);\r\n const [tab3ContainsErrors, setTab3ContainsErrors] = useState(false);\r\n\r\n const [excelPayload, setExcelPayload] = useState(null);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleImportClick = () => {\r\n setAnchorEl(null);\r\n setsViewOfImport(true);\r\n };\r\n\r\n const handleCloseImportClick = () => {\r\n setAnchorEl(null);\r\n cleanUpData();\r\n setsViewOfImport(false);\r\n };\r\n\r\n const columnDirectionSort = (sortColumnName, isDesc) => {\r\n return function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowNumber') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n };\r\n };\r\n\r\n const handleRequestSort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'tagName';\r\n break;\r\n case 2:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n var sortedTableData = response.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab2Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 2:\r\n sortColumnName = 'tagName';\r\n break;\r\n case 3:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n var sortedTableData = responseTab2.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab3Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 2:\r\n sortColumnName = 'tagName';\r\n break;\r\n case 3:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n var sortedTableData = responseTab3.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const cleanUpData = value => {\r\n setTab1ContainsErrors(false);\r\n setTab2ContainsErrors(false);\r\n setTab3ContainsErrors(false);\r\n setShowGrid(false);\r\n setImportButtonDisabled(true);\r\n if (value) {\r\n setValidateButtonVisibility(true);\r\n } else {\r\n setValidateButtonVisibility(false);\r\n }\r\n };\r\n\r\n function getExcelPayload(values) {\r\n const payload = new FormData();\r\n if (values.file) {\r\n payload.append('excelFile', values.file.rawFile, values.file.title);\r\n }\r\n return payload;\r\n }\r\n\r\n const handleClickValidation = async values => {\r\n const payload = getExcelPayload(values);\r\n\r\n setValidateButtonVisibility(false);\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setIsFileFieldDisabled(true);\r\n\r\n InvestorTagApi.validateImportFromExcel(payload)\r\n .then(responseData => {\r\n var arrayData = responseData['validatedAddNewInvestorTagImportDto'];\r\n setResponse(arrayData);\r\n\r\n var arrayDataTab2 =\r\n responseData['validatedAddInvestorTagAssociationImportDto'];\r\n setResponseTab2(arrayDataTab2);\r\n\r\n var arrayDataTab3 =\r\n responseData['validatedRemoveInvestorTagAssociationImportDto'];\r\n setResponseTab3(arrayDataTab3);\r\n\r\n const validationErrors = arrayData\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab1ContainsErrors(validationErrors.length > 0);\r\n\r\n const validationErrorsTab2 = arrayDataTab2\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab2ContainsErrors(validationErrorsTab2.length > 0);\r\n\r\n const validationErrorsTab3 = arrayDataTab3\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab3ContainsErrors(validationErrorsTab3.length > 0);\r\n\r\n if (\r\n arrayData.length > 0 ||\r\n arrayDataTab2.length > 0 ||\r\n arrayDataTab3.length > 0\r\n ) {\r\n var errors = false;\r\n\r\n if (\r\n arrayData.length > 0 &&\r\n validationErrors &&\r\n validationErrors.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab2.length > 0 &&\r\n validationErrorsTab2 &&\r\n validationErrorsTab2.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab3.length > 0 &&\r\n validationErrorsTab3 &&\r\n validationErrorsTab3.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n setImportButtonDisabled(errors);\r\n } else {\r\n setImportButtonDisabled(false);\r\n setShowNoDataInExcelError(false);\r\n }\r\n\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n setShowGrid(true);\r\n setExcelPayload(payload);\r\n })\r\n .catch(e => {\r\n setExcelPayload(null);\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n notify(getIcError(e), { type: 'error' });\r\n });\r\n };\r\n\r\n const handleImportInvestorTagClick = () => {\r\n if (!excelPayload) {\r\n setImportButtonDisabled(true);\r\n return;\r\n }\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setShowGrid(false);\r\n InvestorTagApi.importInvestorTagFromExcel(excelPayload)\r\n .then(() => {\r\n notify('ra.notification.custom_updated_message');\r\n })\r\n .catch(e => {\r\n setLoaderVisible(false);\r\n notifyServerError(e);\r\n })\r\n .finally(() => {\r\n setLoaderVisible(false);\r\n setsViewOfImport(false);\r\n handleCloseImportClick();\r\n refreshView();\r\n });\r\n };\r\n\r\n const handleTemplateDownload = () => {\r\n setDownloadingTemplate(true);\r\n InvestorTagApi.downloadInvestorTagImportTemplate()\r\n .then(resp => {\r\n const fileName = 'Investor Tag Import Template.xlsx';\r\n saveAs(resp, fileName);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n })\r\n .finally(() => {\r\n setDownloadingTemplate(false);\r\n });\r\n };\r\n\r\n const handleExportClick = filters => {\r\n setSubmitting(true);\r\n InvestorApi.exportInvestorsExcel(\r\n filters.id,\r\n filters.name,\r\n filters.investorFamilyId,\r\n filters.investorTagId,\r\n filters.status\r\n )\r\n .then(resp => {\r\n const fileName = 'Investor Tag Export.xlsx';\r\n saveAs(resp, fileName);\r\n setSubmitting(false);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n setSubmitting(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {type}\r\n \r\n {\r\n
    \r\n {(hasImportInvestorTagExcelPermission ||\r\n hasExportInvestorTagExcelPermission) && (\r\n \r\n
    \r\n \r\n \r\n Import Investor Tags\r\n \r\n
    \r\n \r\n )}\r\n \r\n {hasImportInvestorTagExcelPermission && (\r\n \r\n Import Investor Tags from Excel\r\n \r\n )}\r\n {hasExportInvestorTagExcelPermission && (\r\n handleExportClick(filters)}\r\n disabled={submitting}\r\n >\r\n {submitting && (\r\n \r\n \r\n \r\n )}\r\n Export Investor Tags to Excel\r\n \r\n )}\r\n\r\n {hasImportInvestorTagExcelPermission && (\r\n
    \r\n
    \r\n \r\n {downloadingTemplate && (\r\n \r\n \r\n \r\n )}\r\n Download Template\r\n \r\n
    \r\n )}\r\n \r\n
    \r\n }\r\n\r\n {hasCreatePermission && title && (\r\n \r\n {title}\r\n \r\n )}\r\n\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseImportClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Import Investor Tags from Excel\r\n \r\n\r\n \r\n
    \r\n \r\n \r\n {({ formData, ...rest }) => (\r\n \r\n {!isFileFieldDisabled && (\r\n cleanUpData(value)}\r\n >\r\n \r\n \r\n )}\r\n {loaderVisible && }\r\n\r\n {validateButtonVisibile && (\r\n
    \r\n

    \r\n No Data To Display\r\n
    \r\n Click 'Validate' to parse and display Excel Data\r\n

    \r\n handleClickValidation(formData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n >\r\n Validate\r\n \r\n
    \r\n )}\r\n\r\n {showGrid && (\r\n
    \r\n \r\n \r\n \r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n {/* evading console errors - should find a better way */}\r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n {/* evading console errors - should find a better way */}\r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Tag Name' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestSort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {response.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.tagName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There is no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Investor ID' },\r\n { id: 'Investor Tag' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab2Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab2.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n \r\n {item.investorId}\r\n \r\n {item.tagName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Investor ID' },\r\n { id: 'Investor Tag' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab3Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab3.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n \r\n {item.investorId}\r\n \r\n {item.tagName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Close\r\n \r\n
    \r\n \r\n Import\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n);\r\n\r\nexport default ExcelInvestorTagImportTitleBarWithDropbox;\r\n","import React, { useCallback, useEffect, useState, useMemo } from 'react';\r\nimport {\r\n List,\r\n Datagrid,\r\n TextInput,\r\n TextField,\r\n Pagination,\r\n SingleFieldList,\r\n ReferenceManyField\r\n} from 'react-admin';\r\nimport {\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n makeStyles,\r\n LinearProgress\r\n} from '@material-ui/core';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\n\r\nimport InvestorApi from '../../core/apis/InvestorApi';\r\nimport { InvestorTagIcon } from '../../core/themes/icons/InvestorTagIcon';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport GridPopover from '../../core/components/grid/GridPopover';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from './investortagimport/ExcelInvestorTagImportTitleBarWithDropbox';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst useStyles = makeStyles({\r\n nameColumnStyle: {\r\n width: '75%'\r\n },\r\n inputCustomWidth: {\r\n width: '25%'\r\n },\r\n formFullWidth: {\r\n width: '100%',\r\n marginTop: '0px',\r\n marginBottom: '-8px',\r\n '& > div': {\r\n width: '100%'\r\n }\r\n },\r\n tag: {\r\n color: '#212121',\r\n 'font-size': '12px',\r\n 'line-height': '12px',\r\n textDecoration: 'none',\r\n 'box-sizing': 'border-box',\r\n background: '#F5F5F5',\r\n border: '1px solid #E0E0E0',\r\n 'border-radius': '2px',\r\n padding: '0 5px'\r\n },\r\n investors: {\r\n color: '#2962FF',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n textDecoration: 'underline'\r\n }\r\n },\r\n button: {\r\n padding: 0,\r\n justifyContent: 'flex-start'\r\n },\r\n progress: {\r\n margin: 10\r\n },\r\n errorIcon: {\r\n margin: '2px',\r\n verticalAlign: 'middle',\r\n color: 'red'\r\n }\r\n});\r\n\r\nconst TagsTitle = props => {\r\n return (\r\n }\r\n />\r\n );\r\n};\r\n\r\nconst InvestorTagNameFilters = props => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst DisplayInvestors = ({ record }) => {\r\n const classes = useStyles();\r\n const [fetchedInvestors, setFetchedInvestors] = useState([]);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState(false);\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const fetchInvestors = useCallback(async () => {\r\n return InvestorApi.getInvestors(record.investorIds);\r\n }, [record.investorIds]);\r\n\r\n useEffect(() => {\r\n fetchInvestors()\r\n .then(res => {\r\n setFetchedInvestors(res);\r\n })\r\n .catch(err => {\r\n setError(true);\r\n notifyServerError(err, undefined);\r\n })\r\n .finally(() => setLoading(false));\r\n }, [fetchInvestors, notifyServerError]);\r\n\r\n function renderInvestors() {\r\n if (error) return ;\r\n\r\n if (loading) return ;\r\n\r\n return (\r\n <>\r\n {fetchedInvestors.map(item => {\r\n return (\r\n \r\n {item.name}\r\n \r\n );\r\n })}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Investors\r\n \r\n \r\n {renderInvestors()}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst InvestorField = ({ record }) => {\r\n const classes = useStyles();\r\n\r\n if (record.investorIds.length > 1) {\r\n return (\r\n }\r\n />\r\n );\r\n } else if (record.investorIds.length === 1) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n return 0 Investors;\r\n};\r\n\r\nconst InvestorTagList = props => {\r\n const classes = useStyles();\r\n const { hasCreatePermission, hasDeletePermission, basePath } = props;\r\n\r\n const { hasImportInvestorTagExcelPermission } = useMemo(() => {\r\n return {\r\n hasImportInvestorTagExcelPermission: props.permissions\r\n ? props.permissions.includes('AUTH_IMPORT_INVESTOR_TAG_FROM_EXCEL')\r\n : false\r\n };\r\n }, [props.permissions]);\r\n\r\n return (\r\n \r\n }\r\n sort={{ field: 'name', order: 'ASC' }}\r\n exporter={false}\r\n perPage={20}\r\n filters={}\r\n pagination={}\r\n bulkActionButtons={\r\n hasDeletePermission && (\r\n \r\n )\r\n }\r\n empty={}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default InvestorTagList;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { ReferenceArrayInput, required, TextInput } from 'react-admin';\r\nimport { RadioGroup, Radio, FormControlLabel, Grid } from '@material-ui/core';\r\nimport { memoize } from 'lodash';\r\n\r\nimport GridInputFilter from '../../core/components/inputs/GridInputFilter';\r\nimport {\r\n fieldLengthValidator,\r\n isFieldContainsOnlySpaces\r\n} from '../../core/utils/index';\r\n\r\nimport InvestorTagApi from '../../core/apis/InvestorTagApi';\r\nimport { useStyles } from '../fundtags/FundTagSummary';\r\n\r\nconst InvestorTagSummary = props => {\r\n const classes = useStyles();\r\n const { creation, record, resetFilter, hasEditPermission } = props;\r\n\r\n const [formErrors, setFormErrors] = useState({});\r\n const [filter, setFilter] = useState(creation ? 'ALL' : 'ONLY_ASSIGNED');\r\n const selectedInvestorIds = record.investorIds;\r\n const disableCheckBoxes = creation ? false : !hasEditPermission;\r\n\r\n useEffect(() => {\r\n if (!creation && resetFilter) {\r\n setFilter('ONLY_ASSIGNED');\r\n }\r\n }, [creation, resetFilter]);\r\n\r\n const validateInvestorTagName = memoize(\r\n async (value, _allValues, fieldState) => {\r\n if (record && value === record.name) {\r\n return;\r\n }\r\n if (fieldState.active) {\r\n const investorTagNameValid = !!value.trim();\r\n let error;\r\n\r\n if (!investorTagNameValid) {\r\n error = `Investor Tag Name can't be empty space(s)`;\r\n } else {\r\n const nameExists = await InvestorTagApi.checkInvestorTagNameExists(\r\n value\r\n );\r\n if (nameExists) {\r\n error = 'Investor Tag Name already exists';\r\n } else {\r\n error = undefined;\r\n }\r\n }\r\n setFormErrors({ ...formErrors, name: error });\r\n return error;\r\n }\r\n return formErrors.name;\r\n }\r\n );\r\n\r\n const filterFunction = choices => {\r\n if (filter === 'ALL') {\r\n return choices;\r\n }\r\n if (typeof choices !== 'undefined') {\r\n return choices.filter(choice => {\r\n return !!selectedInvestorIds.find(item => item === choice.id);\r\n });\r\n }\r\n };\r\n\r\n const ReferenceArrayInputProps = {\r\n label: '',\r\n optionTextLabel: 'Investor Name',\r\n optionValueLabel: 'Investor ID',\r\n additionalColumns: [\r\n { label: 'Status', name: 'status', isStatusColumn: true }\r\n ],\r\n resource: 'investors',\r\n reference: 'investors',\r\n source: 'investorIds',\r\n filter: { orphanVisibility: 'ALL_VISIBLE' }\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {!creation && (\r\n setFilter(target.value)}\r\n value={filter}\r\n >\r\n }\r\n />\r\n }\r\n />\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default InvestorTagSummary;\r\n","import React, { useCallback, useState } from 'react';\r\nimport { useNotify, useRefresh, useEditController } from 'react-admin';\r\nimport { Edit } from 'ra-ui-materialui';\r\nimport { withStyles } from '@material-ui/styles';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport { getInitials, removePathEnd } from '../../core/utils';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\nimport { getIcError } from '../../core/providers/utils';\r\nimport InvestorTagApi from '../../core/apis/InvestorTagApi';\r\nimport InvestorTagsAssociationsApi from '../../core/apis/InvestorTagsAssociationsApi';\r\nimport InvestorTagSummary from './InvestorTagSummary';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst InvestorTagTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst InvestorTagEdit = props => {\r\n const displayToolbar = props.match.isExact;\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n const {\r\n classes,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n id,\r\n basePath,\r\n resource,\r\n history\r\n } = props;\r\n\r\n const notify = useNotify();\r\n const refresh = useRefresh();\r\n const { record } = useEditController(props);\r\n const [resetFilter, setResetFilter] = useState(false);\r\n\r\n const onBeforeDelete = () => {\r\n // Unblock navigation before deleting\r\n setWhenBlockNavigation(false);\r\n };\r\n\r\n const handleFormIsDirty = useCallback(\r\n dirty => {\r\n // Block navigation when the form is dirty\r\n setWhenBlockNavigation(dirty);\r\n },\r\n [setWhenBlockNavigation]\r\n );\r\n\r\n const onSave = async values => {\r\n setResetFilter(false);\r\n let hasError = false;\r\n let hasModification = false;\r\n if (record.name !== values.name) {\r\n hasModification = true;\r\n const payload = { name: values.name };\r\n await InvestorTagApi.update(record.id, payload).catch(err => {\r\n hasError = true;\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n messageArgs: {\r\n message:\r\n 'Investor Tag name has not been updated. ' + getIcError(err),\r\n isForkedWarning: true\r\n }\r\n });\r\n });\r\n }\r\n\r\n const investorIdsToAdd = values.investorIds\r\n .filter(investorId => !record.investorIds.includes(investorId))\r\n .map(investorId => {\r\n return { investorTagId: `${record.id}`, investorId: `${investorId}` };\r\n });\r\n if (investorIdsToAdd.length > 0) {\r\n hasModification = true;\r\n await InvestorTagsAssociationsApi.create(investorIdsToAdd).catch(err => {\r\n hasError = true;\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n messageArgs: {\r\n message:\r\n 'New Investor Tag associations have not been created. ' +\r\n getIcError(err),\r\n isForkedWarning: true\r\n }\r\n });\r\n });\r\n }\r\n\r\n const investorIdsToDelete = record.investorIds\r\n .filter(investorId => !values.investorIds.includes(investorId))\r\n .map(investorId => {\r\n return { investorTagId: `${record.id}`, investorId: `${investorId}` };\r\n });\r\n if (investorIdsToDelete.length > 0) {\r\n hasModification = true;\r\n await InvestorTagsAssociationsApi.delete(investorIdsToDelete).catch(\r\n err => {\r\n hasError = true;\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n messageArgs: {\r\n message:\r\n 'Investor Tag associations have not been deleted. ' +\r\n getIcError(err),\r\n isForkedWarning: true\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n if (!hasError && hasModification) {\r\n notify('ra.notification.custom_updated_message');\r\n setResetFilter(true);\r\n refresh();\r\n } else {\r\n setResetFilter(true);\r\n refresh();\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n ) : null\r\n }\r\n >\r\n handleFormIsDirty(formStateProps.dirty)}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(InvestorTagEdit);\r\n","import React, { useCallback, useState } from 'react';\r\nimport { Create, useNotify, useRedirect } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport { getIcError } from '../../core/providers/utils';\r\nimport InvestorTagApi from '../../core/apis/InvestorTagApi';\r\nimport InvestorTagsAssociationsApi from '../../core/apis/InvestorTagsAssociationsApi';\r\nimport InvestorTagSummary from './InvestorTagSummary';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst InvestorTagTitle = () => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst InvestorTagCreate = props => {\r\n const { classes } = props;\r\n\r\n const notify = useNotify();\r\n const redirect = useRedirect();\r\n const notifyServerError = useNotifyServerError();\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n\r\n const allowNavigationOnSave = () => {\r\n setWhenBlockNavigation(false);\r\n };\r\n\r\n const handleFormIsDirty = useCallback(\r\n dirty => {\r\n // Block navigation when the form is dirty\r\n setWhenBlockNavigation(dirty);\r\n },\r\n [setWhenBlockNavigation]\r\n );\r\n\r\n const onSave = async values => {\r\n let hasPostError = false;\r\n const payload = { name: values.name };\r\n const data = await InvestorTagApi.create(payload).catch(err => {\r\n hasPostError = true;\r\n notifyServerError(err);\r\n });\r\n\r\n if (!hasPostError) {\r\n if (data.id && values.investorIds.length > 0) {\r\n const investorIdsToAdd = values.investorIds.map(id => {\r\n return { investorTagId: `${data.id}`, investorId: `${id}` };\r\n });\r\n InvestorTagsAssociationsApi.create(investorIdsToAdd)\r\n .then(() => {\r\n setWhenBlockNavigation(false);\r\n notify('ra.notification.created');\r\n redirect(`/investortags/${data.id}`);\r\n })\r\n .catch(err => {\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n messageArgs: {\r\n message:\r\n 'Investor Tag has been created without associations. ' +\r\n getIcError(err),\r\n isForkedWarning: true\r\n }\r\n });\r\n });\r\n } else {\r\n setWhenBlockNavigation(false);\r\n notify('ra.notification.created');\r\n redirect(`/investortags/${data.id}`);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n record={{\r\n name: '',\r\n investorIds: []\r\n }}\r\n >\r\n \r\n }\r\n >\r\n handleFormIsDirty(e.dirty)}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(InvestorTagCreate);\r\n","import { InvestorTagIcon } from '../../core/themes/icons/InvestorTagIcon';\r\nimport InvestorTagList from './InvestorTagList';\r\nimport InvestorTagEdit from './InvestorTagEdit';\r\nimport InvestorTagCreate from './InvestorTagCreate';\r\n\r\nexport default {\r\n list: InvestorTagList,\r\n edit: InvestorTagEdit,\r\n create: InvestorTagCreate,\r\n icon: InvestorTagIcon\r\n};\r\n","import React from 'react';\r\n\r\nexport const FundInvestorTagIcon = () => (\r\n \r\n \r\n \r\n);\r\n","import React, { useState } from 'react';\r\nimport {\r\n Grid,\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n withStyles\r\n} from '@material-ui/core';\r\nimport { SaveButton, FormWithRedirect, ReferenceArrayInput } from 'react-admin';\r\nimport GridInput from '../../core/components/inputs/GridInput';\r\nimport FundInvestorApi from '../../core/apis/FundInvestorApi';\r\nimport GridInputChoices from '../users/userauthorization/GridInputChoices';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst styles = () => ({\r\n dialogContainer: {\r\n '& .MuiDialog-paper': {\r\n width: '970px',\r\n maxWidth: 'unset'\r\n }\r\n },\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n display: 'flex',\r\n margin: '10px 8px 0 auto',\r\n height: '32px'\r\n },\r\n form: {\r\n '& > div': {\r\n paddingTop: '0px !important',\r\n paddingBottom: '0px !important'\r\n }\r\n },\r\n title: {\r\n flex: 1,\r\n paddingTop: '20px'\r\n }\r\n});\r\n\r\nconst AddFundsDialog = props => {\r\n const { classes, fundInvestors, handleNewFundInv, hasEditPermission } = props;\r\n\r\n const [open, setOpen] = useState(false);\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const handleClickOpen = () => {\r\n setOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const validateFunds = value => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Fund must be selected';\r\n }\r\n return undefined;\r\n };\r\n\r\n const referenceArrayInputProps = {\r\n label:\r\n 'To add a Fund, select one or multiple items from the list of the Funds below.',\r\n optionTextLabel: 'Fund Name',\r\n optionValueLabel: 'Fund ID',\r\n resource: 'funds',\r\n reference: 'funds',\r\n source: 'funds',\r\n validate: [validateFunds],\r\n perPage: -1,\r\n sort: { field: 'name', order: 'ASC' },\r\n filter: { onlyFundsWithFundInvestorRelation: 'true' },\r\n additionalColumns: [\r\n { label: 'Fund Family', name: 'fundFamilyName' },\r\n { label: 'Status', name: 'status', isStatusColumn: true }\r\n ]\r\n };\r\n\r\n const handleSubmit = async values => {\r\n let pageData = [];\r\n const choicesIds = fundInvestors.map(\r\n choice => `${choice.fundId}:${choice.investorId}`\r\n );\r\n try {\r\n pageData = await FundInvestorApi.getByFundIds(values.funds);\r\n } catch (e) {\r\n notifyServerError(e);\r\n }\r\n const newData = pageData.filter(data => {\r\n return !choicesIds.includes(`${data.fundId}:${data.investorId}`);\r\n });\r\n handleNewFundInv(newData);\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <>\r\n {hasEditPermission && (\r\n \r\n Add Fund\r\n \r\n )}\r\n {open && (\r\n (\r\n \r\n \r\n Add Fund\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n )}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(AddFundsDialog);\r\n","import { makeStyles } from '@material-ui/core';\r\n\r\nexport const useStyles = makeStyles({\r\n mainRow: {\r\n '& > td:first-child': {\r\n width: '60%',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap'\r\n },\r\n '& > td:nth-child(2)': {\r\n width: '40%',\r\n borderLeft: '1px solid #E0E0E0'\r\n }\r\n },\r\n collapseRow: {\r\n width: '100%',\r\n display: 'flex',\r\n '& > td': {\r\n maxWidth: 'none'\r\n },\r\n '& > td:first-child': {\r\n width: '60%',\r\n paddingLeft: '24px !important',\r\n textOverflow: 'ellipsis',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap'\r\n },\r\n '& > td:nth-child(2)': {\r\n width: '40%',\r\n paddingLeft: '7px',\r\n borderLeft: '1px solid #E0E0E0'\r\n }\r\n },\r\n cellRightScroll: {\r\n marginRight: '-15px'\r\n }\r\n});\r\n","import {\r\n Grid,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n Checkbox,\r\n withStyles,\r\n IconButton,\r\n Collapse,\r\n Box,\r\n TablePagination\r\n} from '@material-ui/core';\r\nimport { required, TextInput, useInput } from 'react-admin';\r\nimport React, { useCallback, useMemo, useState } from 'react';\r\nimport { AutoSizer, List as VirtualizedList } from 'react-virtualized';\r\nimport { memoize } from 'lodash';\r\n\r\nimport {\r\n fieldLengthValidator,\r\n isFieldContainsOnlySpaces\r\n} from '../../core/utils';\r\nimport FundInvestorTagApi from '../../core/apis/FundInvestorTagApi';\r\nimport { ChevronDownIcon } from '../../core/themes/icons/ChevronDownIcon';\r\nimport { ChevronRightIcon } from '../../core/themes/icons/ChevronRightIcon';\r\n\r\nimport AddFundsDialog from './AddFundsDialog';\r\nimport { useStyles } from './utils/styles';\r\n\r\nconst styles = () => ({\r\n gridLarge: {\r\n width: '100%'\r\n },\r\n containerFlex: {\r\n display: 'flex',\r\n width: '100%',\r\n padding: '8px',\r\n margin: 0\r\n },\r\n buttonFlex: {\r\n display: 'flex',\r\n alignSelf: 'end',\r\n marginBottom: '8px'\r\n },\r\n borderLeft: {\r\n borderLeft: '1px solid #E0E0E0'\r\n },\r\n tableWrapper: {\r\n width: '100%',\r\n maxHeight: 'calc(100vh - 364px)',\r\n overflowY: 'scroll',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n expandAllCell: {\r\n cursor: 'pointer',\r\n marginLeft: '-10px'\r\n }\r\n});\r\n\r\nconst classChevron = {\r\n chevron: {\r\n fontSize: '14px',\r\n color: '#757575',\r\n transform: 'scale(0.7)'\r\n }\r\n};\r\n\r\nconst FundInvestorSelection = props => {\r\n const {\r\n classes,\r\n fundId,\r\n fundName,\r\n investors,\r\n formValuesIds,\r\n expandAll,\r\n handleChecked,\r\n hasEditPermission\r\n } = props;\r\n\r\n const stylesSelection = useStyles();\r\n const [expandInvestors, setExpandInvestors] = useState(false);\r\n\r\n const totalInvRows = investors.length;\r\n const calcHeight = totalInvRows < 10 ? `${totalInvRows * 30}px` : `${300}px`;\r\n const selectedInvestorRows = formValuesIds.filter(id =>\r\n id.startsWith(`${fundId}:`)\r\n ).length;\r\n\r\n function investorRenderer({ _key, index, style }) {\r\n const id = `${fundId}:${investors[index].investorId}`;\r\n return (\r\n \r\n {investors[index].investorName}\r\n 10 ? stylesSelection.cellRightScroll : ''}\r\n >\r\n handleChecked([id], isChecked)}\r\n />\r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n {expandAll && (\r\n \r\n \r\n setExpandInvestors(!expandInvestors)}\r\n >\r\n {expandInvestors ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {fundName}\r\n \r\n \r\n \r\n handleChecked(\r\n investors.map(choice => `${fundId}:${choice.investorId}`),\r\n isChecked\r\n )\r\n }\r\n checked={\r\n selectedInvestorRows > 0 &&\r\n totalInvRows === selectedInvestorRows\r\n }\r\n indeterminate={\r\n selectedInvestorRows > 0 && totalInvRows > selectedInvestorRows\r\n }\r\n />\r\n \r\n \r\n )}\r\n {expandAll && expandInvestors && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Investors\r\n \r\n \r\n \r\n \r\n {({ height, width }) => (\r\n \r\n )}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\nconst RenderFunds = props => {\r\n const {\r\n fundTagName,\r\n classes,\r\n source,\r\n resource,\r\n fundInvestors,\r\n mapFundInvSorted,\r\n numberOfTotalRows,\r\n hasEditPermission\r\n } = props;\r\n\r\n const {\r\n input: { onChange: finalFormOnChange, onBlur: finalFormOnBlur, value }\r\n } = useInput({\r\n resource,\r\n source\r\n });\r\n\r\n const [expandAll, setExpandAll] = useState(true);\r\n const [rowsPerPage, setRowsPerPage] = useState(25);\r\n const [page, setPage] = useState(0);\r\n\r\n const investorSelectedRows = useMemo(() => value || [], [value]);\r\n\r\n const rowsCount = mapFundInvSorted.length;\r\n\r\n const handleChangePage = (_event, newPage) => setPage(newPage);\r\n\r\n const handleChangeRowsPerPage = event => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n };\r\n\r\n const handleExpandAll = () => {\r\n setExpandAll(!expandAll);\r\n };\r\n\r\n const handleChecked = useCallback(\r\n (newValues, isChecked) => {\r\n if (isChecked) {\r\n const filteredNewValues = newValues.filter(val => !value.includes(val));\r\n finalFormOnChange([...(value || []), ...filteredNewValues]);\r\n } else {\r\n finalFormOnChange(value.filter(v => !newValues.includes(v)));\r\n }\r\n finalFormOnBlur(); // HACK: See https://github.com/final-form/react-final-form/issues/365#issuecomment-515045503\r\n },\r\n [finalFormOnChange, finalFormOnBlur, value]\r\n );\r\n\r\n const handleAllChecked = useCallback(\r\n (_event, isChecked) => {\r\n if (isChecked) {\r\n finalFormOnChange(\r\n fundInvestors.map(choice => `${choice.fundId}:${choice.investorId}`)\r\n );\r\n } else {\r\n finalFormOnChange([]);\r\n }\r\n finalFormOnBlur(); // HACK: See https://github.com/final-form/react-final-form/issues/365#issuecomment-515045503\r\n },\r\n [finalFormOnChange, finalFormOnBlur, fundInvestors]\r\n );\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n Funds\r\n {fundTagName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {expandAll ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n All\r\n \r\n \r\n 0 &&\r\n numberOfTotalRows === investorSelectedRows.length\r\n }\r\n indeterminate={\r\n investorSelectedRows.length > 0 &&\r\n numberOfTotalRows > investorSelectedRows.length\r\n }\r\n />\r\n \r\n \r\n {mapFundInvSorted\r\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n .map(([fundId, { fundName, investors }]) => (\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nconst RenderFundInvestors = props => {\r\n const {\r\n fundTagName,\r\n classes,\r\n fundInvestors,\r\n mapFundInvSorted,\r\n numberOfTotalRows,\r\n hasEditPermission\r\n } = props;\r\n\r\n if (mapFundInvSorted.length === 0) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n Funds\r\n {fundTagName}\r\n \r\n \r\n \r\n \r\n \r\n There are no Fund-Investor Relationships assigned.\r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n );\r\n};\r\n\r\nconst FundInvestorTagSummary = props => {\r\n const {\r\n record,\r\n classes,\r\n fundInvestors,\r\n numberOfTotalRow,\r\n handleNewFundInv,\r\n hasEditPermission\r\n } = props;\r\n\r\n const [formErrors, setFormErrors] = useState({});\r\n\r\n const mapFundInvSorted = useMemo(() => {\r\n if (!fundInvestors.length) {\r\n return [];\r\n }\r\n const mapFundInvestors = fundInvestors.reduce((acc, fi) => {\r\n if (!acc[fi.fundId]) {\r\n acc[fi.fundId] = { fundName: fi.fundName, investors: [] };\r\n }\r\n acc[fi.fundId].investors.push({\r\n investorId: fi.investorId,\r\n investorName: fi.investorName\r\n });\r\n return acc;\r\n }, {});\r\n\r\n // sort by fund name\r\n const mapFundSorted = Object.entries(mapFundInvestors).sort((a, b) => {\r\n const [, value1] = a;\r\n const [, value2] = b;\r\n return value1.fundName\r\n .toLowerCase()\r\n .localeCompare(value2.fundName.toLowerCase());\r\n });\r\n\r\n // sort by investor name\r\n mapFundSorted.forEach(entry => {\r\n const [, val] = entry;\r\n val.investors.sort((a, b) =>\r\n a.investorName.toLowerCase().localeCompare(b.investorName.toLowerCase())\r\n );\r\n });\r\n\r\n return mapFundSorted;\r\n }, [fundInvestors]);\r\n\r\n const validateFundInvestorTagName = memoize(\r\n async (value, _allValues, fieldSate) => {\r\n if (record && value === record.name) {\r\n return;\r\n }\r\n if (fieldSate.active) {\r\n const fundInvestorTagNameValid = !!value.trim();\r\n let error;\r\n\r\n if (!fundInvestorTagNameValid) {\r\n error = `Fund Tag Name can't be empty space(s)`;\r\n } else {\r\n const fundInvestorTagNameExists = await FundInvestorTagApi.checkIfNameExists(\r\n value\r\n );\r\n if (fundInvestorTagNameExists) {\r\n error = 'Fund Investor Tag Name already exists';\r\n } else {\r\n error = undefined;\r\n }\r\n }\r\n setFormErrors({ ...formErrors, name: error });\r\n return error;\r\n }\r\n return formErrors.name;\r\n }\r\n );\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(FundInvestorTagSummary);\r\n","import { Edit } from 'ra-ui-materialui';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/styles';\r\nimport { useNotify, useRefresh } from 'react-admin';\r\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\r\n\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\nimport { getInitials, removePathEnd } from '../../core/utils';\r\n\r\nimport FundInvestorTagApi from '../../core/apis/FundInvestorTagApi';\r\nimport FundInvestorTagSummary from './FundInvestorTagSummary';\r\nimport FundInvestorTagsAssociationsApi from '../../core/apis/FundInvestorTagsAssociationsApi';\r\nimport { getIcError } from '../../core/providers/utils';\r\n\r\nconst styles = () => ({\r\n noActions: { marginTop: '0px' }\r\n});\r\n\r\nconst FundInvestorTagTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst FundInvestorTagForm = props => {\r\n const {\r\n record,\r\n history,\r\n basePath,\r\n resource,\r\n displayToolbar,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n setWhenBlockNavigation,\r\n ...rest\r\n } = props;\r\n\r\n const formRef = useRef();\r\n const initialValuesRef = useRef();\r\n const notify = useNotify();\r\n const refresh = useRefresh();\r\n\r\n const [ids, setIds] = useState([]);\r\n const [fundInvestors, setFundInvestors] = useState({});\r\n const [numberOfTotalRow, setNumberOfTotalRow] = useState(0);\r\n\r\n useEffect(() => {\r\n setIds(record.fundInvestors.map(fi => `${fi.fundId}:${fi.investorId}`));\r\n setFundInvestors(record.fundInvestors);\r\n setNumberOfTotalRow(record.fundInvestors.length);\r\n }, [record.fundInvestors]);\r\n\r\n const onBeforeDelete = () => {\r\n // Unblock navigation before deleting\r\n setWhenBlockNavigation(false);\r\n };\r\n\r\n const handleFormIsDirty = useCallback(\r\n dirty => {\r\n // Block navigation when the form is dirty\r\n setWhenBlockNavigation(dirty);\r\n },\r\n [setWhenBlockNavigation]\r\n );\r\n\r\n const handleNewFundInv = useCallback(\r\n newData => {\r\n if (newData.length > 0) {\r\n const parsedNewFundInv = newData.map(item => {\r\n return {\r\n fundId: item.fundId,\r\n fundName: item.fundName,\r\n investorId: item.investorId,\r\n investorName: item.investorName\r\n };\r\n });\r\n const newFundInvestors = record.fundInvestors.concat(parsedNewFundInv);\r\n setNumberOfTotalRow(newFundInvestors.length);\r\n setFundInvestors(newFundInvestors);\r\n } else {\r\n setNumberOfTotalRow(record.fundInvestors.length);\r\n setFundInvestors(record.fundInvestors);\r\n }\r\n },\r\n [record.fundInvestors]\r\n );\r\n\r\n const formReset = useCallback(() => {\r\n refresh();\r\n const initialValues = initialValuesRef.current;\r\n Object.keys(initialValues).forEach(key => {\r\n formRef.current.change(key, initialValues[key]);\r\n });\r\n }, [formRef, refresh]);\r\n\r\n const onSave = async formValues => {\r\n setWhenBlockNavigation(false);\r\n let hasModification = false;\r\n let hasError = false;\r\n\r\n /**\r\n * PUT v1/fundinvestortag\r\n */\r\n if (record.name !== formValues.name) {\r\n hasModification = true;\r\n let payloadTag = { name: formValues.name };\r\n await FundInvestorTagApi.update(payloadTag, record.id).catch(err => {\r\n hasError = true;\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n messageArgs: {\r\n message:\r\n 'Fund-Investor Tag name has not been updated. ' + getIcError(err),\r\n isForkedWarning: true\r\n }\r\n });\r\n });\r\n }\r\n\r\n const initialIds = record.fundInvestors.map(\r\n fi => `${fi.fundId}:${fi.investorId}`\r\n );\r\n const formIds = formValues.ids;\r\n\r\n /**\r\n * POST v1/fundinvestortags/associations\r\n */\r\n let payloadTagAssociationToAdd = [];\r\n const associationsIdsToAdd = formIds.filter(id => !initialIds.includes(id));\r\n associationsIdsToAdd\r\n .map(relation => relation.split(':'))\r\n .forEach(relation => {\r\n payloadTagAssociationToAdd.push({\r\n fundInvestorTagId: record.id,\r\n fundInvestor: {\r\n fundId: relation[0],\r\n investorId: relation[1]\r\n }\r\n });\r\n });\r\n\r\n if (payloadTagAssociationToAdd.length > 0) {\r\n hasModification = true;\r\n await FundInvestorTagsAssociationsApi.create(\r\n payloadTagAssociationToAdd\r\n ).catch(err => {\r\n hasError = true;\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n messageArgs: {\r\n message:\r\n 'New Fund Investor Tag associations have not been created. ' +\r\n getIcError(err),\r\n isForkedWarning: true\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * DELETE v1/fundinvestortags/associations\r\n */\r\n let payloadTagAssociationToDelete = [];\r\n const associationsIdsToDelete = initialIds.filter(\r\n id => !formIds.includes(id)\r\n );\r\n associationsIdsToDelete\r\n .map(relation => relation.split(':'))\r\n .forEach(relation => {\r\n payloadTagAssociationToDelete.push({\r\n fundInvestorTagId: record.id,\r\n fundInvestor: {\r\n fundId: relation[0],\r\n investorId: relation[1]\r\n }\r\n });\r\n });\r\n if (payloadTagAssociationToDelete.length > 0) {\r\n hasModification = true;\r\n await FundInvestorTagsAssociationsApi.delete(\r\n payloadTagAssociationToDelete\r\n ).catch(err => {\r\n hasError = true;\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n messageArgs: {\r\n message:\r\n 'New Fund Investor Tag associations have not been deleted. ' +\r\n getIcError(err),\r\n isForkedWarning: true\r\n }\r\n });\r\n });\r\n }\r\n\r\n if (!hasError && hasModification) {\r\n notify('ra.notification.custom_updated_message');\r\n formReset();\r\n } else {\r\n formReset();\r\n }\r\n };\r\n\r\n return (\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n >\r\n \r\n {formProps => {\r\n formRef.current = formProps.form;\r\n initialValuesRef.current = formProps.initialValues;\r\n return (\r\n \r\n );\r\n }}\r\n \r\n handleFormIsDirty(e.dirty)}\r\n />\r\n \r\n );\r\n};\r\n\r\nconst FundInvestorTagEdit = props => {\r\n const {\r\n classes,\r\n userProfile,\r\n hasReadPermission,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n ...rest\r\n } = props;\r\n\r\n const displayToolbar = props.match.isExact;\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(FundInvestorTagEdit);\r\n","import React, { useState } from 'react';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport Avatar from '@material-ui/core/Avatar';\r\nimport Toolbar from '@material-ui/core/Toolbar';\r\nimport { Grid, Typography, CircularProgress, Button } from '@material-ui/core/';\r\nimport ButtonMUI from '@material-ui/core/Button';\r\nimport Menu from '@material-ui/core/Menu';\r\nimport MenuItem from '@material-ui/core/MenuItem';\r\nimport { ExcelIcon } from '../../../core/themes/icons/ExcelIcon';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport FileInput from '../../../core/components/forked/input/FileInput';\r\nimport FileField from '../../../core/components/forked/field/FileField';\r\nimport { FormDataConsumer, refreshView, Loading } from 'react-admin';\r\nimport Tab from '@material-ui/core/Tab';\r\nimport AppBar from '@material-ui/core/AppBar';\r\nimport TabList from '@material-ui/lab/TabList';\r\nimport TabPanel from '@material-ui/lab/TabPanel';\r\nimport TabContext from '@material-ui/lab/TabContext';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\nimport { useNotify } from 'ra-core';\r\nimport { getIcError } from '../../../core/providers/utils';\r\nimport { saveAs } from 'file-saver';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport ErrorIcon from '@material-ui/icons/Error';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\nimport FundInvestorTagApi from '../../../core/apis/FundInvestorTagApi';\r\n\r\nconst styles = {\r\n avatar: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n backgroundColor: 'rgba(0, 0, 0, 0.12)',\r\n height: '36px',\r\n width: '36px',\r\n color: '#757575'\r\n },\r\n errorIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'red'\r\n },\r\n warningIcon: {\r\n marginRight: 0,\r\n marginLeft: 0,\r\n verticalAlign: 'middle',\r\n color: 'orange'\r\n },\r\n toolbarStyle: {\r\n backgroundColor: '#FFFFFF',\r\n borderBottom: '1px solid #E5E5E5',\r\n minHeight: '54px',\r\n paddingTop: '0',\r\n paddingBottom: '0'\r\n },\r\n firstButtonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px'\r\n },\r\n buttonStyle: {\r\n minHeight: '30px',\r\n padding: '5px 10px',\r\n marginRight: '10px'\r\n },\r\n root: {\r\n flexGrow: 1\r\n },\r\n barTitle: {\r\n flexGrow: 1,\r\n paddingLeft: '8px'\r\n },\r\n label: {\r\n paddingRight: '0px'\r\n },\r\n horisontalRule: {\r\n height: '1px',\r\n backgroundColor: '#E0E0E0',\r\n border: 'none'\r\n },\r\n ButtonMUISpan: {\r\n paddingLeft: '4px'\r\n },\r\n excelIcon: {\r\n verticalAlign: 'middle',\r\n paddingRight: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n validateButton: {\r\n textAlign: 'center',\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n transform: 'translate(-50%, -50%)'\r\n },\r\n circularProgress: {\r\n paddingRight: '3px'\r\n },\r\n validateButtonText: {\r\n color: 'grey'\r\n },\r\n validationColumn: {\r\n color: 'red'\r\n },\r\n validationColumnWarning: {\r\n color: 'orange'\r\n },\r\n noRows: {\r\n color: 'red'\r\n },\r\n tabsStyle: {\r\n color: 'black',\r\n background: 'transparent'\r\n },\r\n tableWrapper: {\r\n maxHeight: '70vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n }\r\n};\r\n\r\nconst AvatarImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ExcelIconImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst ErrorImage = withStyles(styles)(({ classes, icon }) => {\r\n return {icon};\r\n});\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst ExcelFundInvestorTagImportTitleBarWithDropBox = withStyles(styles)(\r\n ({\r\n classes,\r\n type,\r\n title,\r\n createUrl,\r\n icon,\r\n hasExportFundInvestorTagExcelPermission,\r\n hasImportFundInvestorTagExcelPermission,\r\n hasCreatePermission,\r\n filters\r\n }) => {\r\n const [anchorEl, setAnchorEl] = useState(null);\r\n const [importModelViewToggle, setsViewOfImport] = useState(false);\r\n const [validateButtonVisibile, setValidateButtonVisibility] = useState(\r\n false\r\n );\r\n const [downloadingTemplate, setDownloadingTemplate] = useState(false);\r\n const [disableImportButton, setImportButtonDisabled] = useState(true);\r\n const [loaderVisible, setLoaderVisible] = useState(false);\r\n const [showGrid, setShowGrid] = useState(false);\r\n const [showNoDataInExcelError, setShowNoDataInExcelError] = useState(false);\r\n const [isFileFieldDisabled, setIsFileFieldDisabled] = useState(false);\r\n const [value, setValue] = useState('1');\r\n const [order, setOrder] = useState('desc');\r\n const [orderBy, setOrderBy] = useState(-1);\r\n const [response, setResponse] = useState('');\r\n const [responseTab2, setResponseTab2] = useState('');\r\n const [responseTab3, setResponseTab3] = useState('');\r\n const [tab1ContainsErrors, setTab1ContainsErrors] = useState(false);\r\n const [tab2ContainsErrors, setTab2ContainsErrors] = useState(false);\r\n const [tab3ContainsErrors, setTab3ContainsErrors] = useState(false);\r\n\r\n const [excelPayload, setExcelPayload] = useState(null);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const handleClick = event => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleImportClick = () => {\r\n setAnchorEl(null);\r\n setsViewOfImport(true);\r\n };\r\n\r\n const handleCloseImportClick = () => {\r\n setAnchorEl(null);\r\n cleanUpData();\r\n setsViewOfImport(false);\r\n };\r\n\r\n const columnDirectionSort = (sortColumnName, isDesc) => {\r\n return function(a, b) {\r\n var x = a[sortColumnName]\r\n ? a[sortColumnName].toString().toLowerCase()\r\n : '';\r\n var y = b[sortColumnName]\r\n ? b[sortColumnName].toString().toLowerCase()\r\n : '';\r\n if (sortColumnName === 'rowNumber') {\r\n return isDesc ? x - y : y - x;\r\n }\r\n if (isDesc) {\r\n return x < y ? -1 : x > y ? 1 : 0;\r\n } else {\r\n return x < y ? 1 : x > y ? -1 : 0;\r\n }\r\n };\r\n };\r\n\r\n const handleRequestSort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'tagName';\r\n break;\r\n case 2:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n var sortedTableData = response.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab2Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'fundId';\r\n break;\r\n case 2:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 3:\r\n sortColumnName = 'tagName';\r\n break;\r\n case 4:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n var sortedTableData = responseTab2.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const handleRequestTab3Sort = index => {\r\n const isDesc = order === 'desc';\r\n isDesc ? setOrder('asc') : setOrder('desc');\r\n setOrderBy(index);\r\n\r\n var sortColumnName;\r\n switch (index) {\r\n case 0:\r\n sortColumnName = 'rowIndex';\r\n break;\r\n case 1:\r\n sortColumnName = 'fundId';\r\n break;\r\n case 2:\r\n sortColumnName = 'investorId';\r\n break;\r\n case 3:\r\n sortColumnName = 'tagName';\r\n break;\r\n case 4:\r\n sortColumnName = 'validationError';\r\n break;\r\n default:\r\n sortColumnName = 'rowIndex';\r\n }\r\n\r\n var sortedTableData = responseTab3.sort(\r\n columnDirectionSort(sortColumnName, isDesc)\r\n );\r\n\r\n setResponse(sortedTableData);\r\n };\r\n\r\n const cleanUpData = value => {\r\n setTab1ContainsErrors(false);\r\n setTab2ContainsErrors(false);\r\n setTab3ContainsErrors(false);\r\n setShowGrid(false);\r\n setImportButtonDisabled(true);\r\n if (value) {\r\n setValidateButtonVisibility(true);\r\n } else {\r\n setValidateButtonVisibility(false);\r\n }\r\n };\r\n\r\n function getExcelPayload(values) {\r\n const payload = new FormData();\r\n if (values.file) {\r\n payload.append('excelFile', values.file.rawFile, values.file.title);\r\n }\r\n return payload;\r\n }\r\n\r\n const handleClickValidation = async values => {\r\n const payload = getExcelPayload(values);\r\n\r\n setValidateButtonVisibility(false);\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setIsFileFieldDisabled(true);\r\n\r\n FundInvestorTagApi.validateImportFromExcel(payload)\r\n .then(responseData => {\r\n var arrayData =\r\n responseData['validatedAddNewFundInvestorTagImportDto'];\r\n setResponse(arrayData);\r\n\r\n var arrayDataTab2 =\r\n responseData['validatedAddFundInvestorTagAssociationImportDto'];\r\n setResponseTab2(arrayDataTab2);\r\n\r\n var arrayDataTab3 =\r\n responseData['validatedRemoveFundInvestorTagAssociationImportDto'];\r\n setResponseTab3(arrayDataTab3);\r\n\r\n const validationErrors = arrayData\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab1ContainsErrors(validationErrors.length > 0);\r\n\r\n const validationErrorsTab2 = arrayDataTab2\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab2ContainsErrors(validationErrorsTab2.length > 0);\r\n\r\n const validationErrorsTab3 = arrayDataTab3\r\n .slice(0)\r\n .filter(r => r.validationError !== '');\r\n setTab3ContainsErrors(validationErrorsTab3.length > 0);\r\n\r\n if (\r\n arrayData.length > 0 ||\r\n arrayDataTab2.length > 0 ||\r\n arrayDataTab3.length > 0\r\n ) {\r\n var errors = false;\r\n\r\n if (\r\n arrayData.length > 0 &&\r\n validationErrors &&\r\n validationErrors.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab2.length > 0 &&\r\n validationErrorsTab2 &&\r\n validationErrorsTab2.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n if (\r\n arrayDataTab3.length > 0 &&\r\n validationErrorsTab3 &&\r\n validationErrorsTab3.length > 0\r\n ) {\r\n errors = true;\r\n }\r\n setImportButtonDisabled(errors);\r\n } else {\r\n setImportButtonDisabled(false);\r\n setShowNoDataInExcelError(false);\r\n }\r\n\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n setShowGrid(true);\r\n setExcelPayload(payload);\r\n })\r\n .catch(e => {\r\n setExcelPayload(null);\r\n setLoaderVisible(false);\r\n setIsFileFieldDisabled(false);\r\n notify(getIcError(e), { type: 'error' });\r\n });\r\n };\r\n\r\n const handleImportInvestorTagClick = () => {\r\n if (!excelPayload) {\r\n setImportButtonDisabled(true);\r\n return;\r\n }\r\n setImportButtonDisabled(true);\r\n setLoaderVisible(true);\r\n setShowGrid(false);\r\n FundInvestorTagApi.importInvestorTagFromExcel(excelPayload)\r\n .then(() => {\r\n notify('ra.notification.custom_updated_message');\r\n })\r\n .catch(e => {\r\n setLoaderVisible(false);\r\n notifyServerError(e);\r\n })\r\n .finally(() => {\r\n setLoaderVisible(false);\r\n setsViewOfImport(false);\r\n handleCloseImportClick();\r\n refreshView();\r\n });\r\n };\r\n\r\n const handleTemplateDownload = () => {\r\n setDownloadingTemplate(true);\r\n FundInvestorTagApi.downloadInvestorTagImportTemplate()\r\n .then(resp => {\r\n const fileName = 'Fund-Investor Tag Import Template.xlsx';\r\n saveAs(resp, fileName);\r\n })\r\n .catch(e => {\r\n notifyServerError(e);\r\n })\r\n .finally(() => {\r\n setDownloadingTemplate(false);\r\n });\r\n };\r\n\r\n return (\r\n \r\n \r\n \r\n {type}\r\n \r\n {\r\n
    \r\n {(hasImportFundInvestorTagExcelPermission ||\r\n hasExportFundInvestorTagExcelPermission) && (\r\n \r\n
    \r\n \r\n \r\n Import Fund-Investor Tags\r\n \r\n
    \r\n \r\n )}\r\n \r\n {hasImportFundInvestorTagExcelPermission && (\r\n \r\n Import Fund-Investor Tags from Excel\r\n \r\n )}\r\n\r\n {hasImportFundInvestorTagExcelPermission && (\r\n
    \r\n
    \r\n \r\n {downloadingTemplate && (\r\n \r\n \r\n \r\n )}\r\n Download Template\r\n \r\n
    \r\n )}\r\n \r\n
    \r\n }\r\n\r\n {hasCreatePermission && title && (\r\n \r\n {title}\r\n \r\n )}\r\n\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseImportClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n Import Fund-Investor Tags from Excel\r\n \r\n\r\n \r\n
    \r\n \r\n \r\n {({ formData, ...rest }) => (\r\n \r\n {!isFileFieldDisabled && (\r\n cleanUpData(value)}\r\n >\r\n \r\n \r\n )}\r\n {loaderVisible && }\r\n\r\n {validateButtonVisibile && (\r\n
    \r\n

    \r\n No Data To Display\r\n
    \r\n Click 'Validate' to parse and display Excel Data\r\n

    \r\n handleClickValidation(formData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n >\r\n Validate\r\n \r\n
    \r\n )}\r\n\r\n {showGrid && (\r\n
    \r\n \r\n \r\n \r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n {/* evading console errors - should find a better way */}\r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n {/* evading console errors - should find a better way */}\r\n {\r\n return (\r\n \r\n );\r\n })}\r\n />\r\n \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Tag Name' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestSort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {response.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.tagName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There is no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Fund ID' },\r\n { id: 'Investor ID' },\r\n { id: 'Fund-Investor Tag' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab2Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab2.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.fundId}\r\n \r\n {item.investorId}\r\n \r\n {item.tagName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n {[\r\n { id: 'Row Number' },\r\n { id: 'Fund ID' },\r\n { id: 'Investor ID' },\r\n { id: 'Fund-Investor Tag' },\r\n { id: 'Validation Error' }\r\n ].map((headCell, index) => (\r\n \r\n \r\n handleRequestTab3Sort(index)\r\n }\r\n >\r\n {headCell.id}\r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n {responseTab3.map((item, index) => {\r\n return (\r\n \r\n {item.rowIndex}\r\n {item.fundId}\r\n \r\n {item.investorId}\r\n \r\n {item.tagName}\r\n \r\n {item.validationError}\r\n \r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n {showNoDataInExcelError && (\r\n \r\n There are no data in excel file to be\r\n validated. Please, provide excel file with\r\n data.\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )}\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n Close\r\n \r\n
    \r\n \r\n Import\r\n \r\n
    \r\n \r\n
    \r\n );\r\n }\r\n);\r\n\r\nexport default ExcelFundInvestorTagImportTitleBarWithDropBox;\r\n","import { List, Datagrid, TextInput, Pagination } from 'react-admin';\r\nimport {\r\n Grid,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n makeStyles\r\n} from '@material-ui/core';\r\nimport React, { useMemo, useState } from 'react';\r\n\r\nimport GridPopover from '../../core/components/grid/GridPopover';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport ListTitleBar from './fundinvestortagimport/ExcelFundInvestorTagImportTitleBarWithDropBox';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\n\r\nimport { FundInvestorTagIcon } from '../../core/themes/icons/FundInvestorTagIcon';\r\nimport { ChevronDownIcon } from '../../core/themes/icons/ChevronDownIcon';\r\nimport { ChevronRightIcon } from '../../core/themes/icons/ChevronRightIcon';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\n\r\nconst useStyles = makeStyles({\r\n nameColumnStyle: {\r\n width: '75%'\r\n },\r\n inputCustomWidth: {\r\n width: '25%'\r\n },\r\n formFullWidth: {\r\n width: '100%',\r\n marginTop: '0px',\r\n marginBottom: '-8px',\r\n '& > div': {\r\n width: '100%'\r\n }\r\n },\r\n tag: {\r\n color: '#212121',\r\n 'font-size': '12px',\r\n 'line-height': '12px',\r\n textDecoration: 'none',\r\n 'box-sizing': 'border-box',\r\n background: '#F5F5F5',\r\n border: '1px solid #E0E0E0',\r\n 'border-radius': '2px',\r\n padding: '0 5px'\r\n },\r\n fundInvestors: {\r\n color: '#2962FF',\r\n cursor: 'pointer',\r\n '&:hover': {\r\n textDecoration: 'underline'\r\n }\r\n },\r\n button: {\r\n padding: 0,\r\n justifyContent: 'flex-start'\r\n },\r\n paper: {\r\n '& > div': {\r\n maxHeight: '300px'\r\n }\r\n },\r\n cellChild: {\r\n paddingLeft: '36px !important',\r\n paddingRight: '0px !important'\r\n },\r\n expandCell: {\r\n cursor: 'pointer',\r\n marginRight: '5px'\r\n }\r\n});\r\n\r\nconst classChevron = {\r\n chevron: {\r\n fontSize: '10px',\r\n color: '#757575',\r\n transform: 'scale(0.7)'\r\n }\r\n};\r\n\r\nconst TagsTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n hasImportFundInvestorTagExcelPermission={\r\n props.hasImportFundInvestorTagExcelPermission\r\n }\r\n filters={props.filters}\r\n />\r\n );\r\n};\r\n\r\nconst FundInvestorTagNameFilters = props => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst Investors = ({ investors }) => {\r\n const classes = useStyles();\r\n // sorting the investors alphabetically case-insensitive\r\n return investors\r\n .sort((a, b) => a.toLowerCase().localeCompare(b.toLowerCase()))\r\n .map(investor => {\r\n return (\r\n \r\n \r\n {investor}\r\n \r\n \r\n );\r\n });\r\n};\r\n\r\nexport const Funds = ({ fundName, investorNames }) => {\r\n const classes = useStyles();\r\n const [expand, setExpand] = useState(false);\r\n\r\n const handleExpand = () => {\r\n setExpand(!expand);\r\n };\r\n\r\n const RenderChevron = () => {\r\n return expand ? (\r\n \r\n ) : (\r\n \r\n );\r\n };\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n {fundName}\r\n \r\n \r\n \r\n {expand && }\r\n \r\n );\r\n};\r\n\r\nconst DisplayFundInvestors = ({ record }) => {\r\n function renderFundInvestors() {\r\n /**\r\n * Build a map[key, value] from fetched fund investor relation\r\n * where key = fund name & value = array of investor name\r\n */\r\n const mapFundInvestorsNames = record.fundInvestors.reduce((acc, fi) => {\r\n if (!acc[fi.fundName]) {\r\n acc[fi.fundName] = [];\r\n }\r\n acc[fi.fundName].push(fi.investorName);\r\n return acc;\r\n }, {});\r\n\r\n return (\r\n <>\r\n {Object.entries(mapFundInvestorsNames)\r\n .sort((a, b) => a[0].toLowerCase().localeCompare(b[0].toLowerCase()))\r\n .map(([fundName, investors]) => (\r\n \r\n ))}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Fund-Investor Relationships\r\n \r\n \r\n {renderFundInvestors()}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst FundInvestorField = ({ record }) => {\r\n const classes = useStyles();\r\n\r\n return record.fundInvestors.length >= 1 ? (\r\n }\r\n />\r\n ) : (\r\n 0 Fund-Investor Relationships\r\n );\r\n};\r\n\r\nconst FundInvestorTagList = props => {\r\n const classes = useStyles();\r\n const { hasCreatePermission, hasDeletePermission, basePath } = props;\r\n\r\n const { hasImportFundInvestorTagExcelPermission } = useMemo(() => {\r\n return {\r\n hasImportFundInvestorTagExcelPermission: props.permissions\r\n ? props.permissions.includes('AUTH_IMPORT_FUND_INVESTOR_TAG_FROM_EXCEL')\r\n : false\r\n };\r\n }, [props.permissions]);\r\n\r\n return (\r\n \r\n }\r\n sort={{ field: 'name', order: 'ASC' }}\r\n exporter={false}\r\n perPage={20}\r\n filters={}\r\n pagination={}\r\n bulkActionButtons={\r\n hasDeletePermission && (\r\n \r\n )\r\n }\r\n empty={}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FundInvestorTagList;\r\n","import { createContext } from 'react';\r\n\r\nexport const CreationFundInvestorTagContext = createContext(null);\r\n","import React, { useContext, useRef } from 'react';\r\nimport { Form, FormSpy } from 'react-final-form';\r\nimport { createForm } from 'final-form';\r\nimport { Grid, makeStyles } from '@material-ui/core';\r\nimport { TextField } from 'mui-rff';\r\nimport { fieldLengthValidator } from '../../../core/utils';\r\nimport { ReferenceArrayInput } from 'ra-ui-materialui';\r\nimport GridInputChoices from '../../users/userauthorization/GridInputChoices';\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\nimport { validateFundInvestorTagNameRff } from './utils';\r\nimport { CreationFundInvestorTagContext } from './CreationFundInvestorTagContext';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport FundInvestorApi from '../../../core/apis/FundInvestorApi';\r\nimport FundInvestorTagApi from '../../../core/apis/FundInvestorTagApi';\r\n\r\nconst tagNameMaxLength = 30;\r\n\r\nconst useStyle = makeStyles({\r\n formGroup: {\r\n marginBlock: '16px'\r\n }\r\n});\r\n\r\nconst TagDetailsStep = ({\r\n onSubmitEnd,\r\n setIsNextAvailable,\r\n setIsSpinnerOnNextButton\r\n}) => {\r\n const classes = useStyle();\r\n const { setFundInvestorTagContext } = useContext(\r\n CreationFundInvestorTagContext\r\n );\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const validateFunds = value => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Fund must be selected';\r\n }\r\n return undefined;\r\n };\r\n\r\n const mapInvestorsToSelectedFunds = async selectedFundIds => {\r\n // The API expects a string as parameter formatted like so: [F1,F2,...]\r\n try {\r\n await FundInvestorApi.getByFundIds(selectedFundIds)\r\n .then(allFunds => {\r\n /**\r\n * mapFundInvestor: {\r\n * fundId1: {\r\n * fundName: \"fundName 1\",\r\n * investors: [{ investorId: \"investorId1\", investorName: \"investorName1\", ... }]\r\n * },\r\n * fundId2 : { ... }\r\n * }\r\n */\r\n const mapFundInvestors = allFunds.reduce((acc, fi) => {\r\n if (!acc[fi.fundId]) {\r\n acc[fi.fundId] = { investors: [], fundName: fi.fundName };\r\n }\r\n acc[fi.fundId].investors.push({\r\n investorId: fi.investorId,\r\n investorName: fi.investorName\r\n });\r\n return acc;\r\n }, {});\r\n\r\n const mapFundInvestorSortedByFund = Object.entries(\r\n mapFundInvestors\r\n ).sort((a, b) => {\r\n const [, value1] = a;\r\n const [, value2] = b;\r\n return value1.fundName\r\n .toLowerCase()\r\n .localeCompare(value2.fundName.toLowerCase());\r\n });\r\n setFundInvestorTagContext(prevState => ({\r\n ...prevState,\r\n mapFundInvestorSortedByFund\r\n }));\r\n })\r\n .finally(() => setIsSpinnerOnNextButton(false));\r\n } catch (e) {\r\n notifyServerError(e, undefined);\r\n }\r\n };\r\n\r\n const onSubmit = async formValues => {\r\n setIsSpinnerOnNextButton(true);\r\n const payloadTag = { name: formValues.name };\r\n await FundInvestorTagApi.create(payloadTag)\r\n .then(async response => {\r\n setFundInvestorTagContext(() => ({\r\n id: response.id,\r\n name: formValues.name\r\n }));\r\n await mapInvestorsToSelectedFunds(formValues.funds);\r\n onSubmitEnd();\r\n })\r\n .catch(err => {\r\n notifyServerError(err);\r\n setIsSpinnerOnNextButton(false);\r\n });\r\n };\r\n\r\n const formRef = useRef(\r\n createForm({\r\n onSubmit: onSubmit\r\n })\r\n );\r\n\r\n const required = value => (value ? undefined : 'Required');\r\n const composeValidators = (...validators) => (value, values, fieldState) =>\r\n validators.reduce(\r\n (error, validator) => error || validator(value, values, fieldState),\r\n undefined\r\n );\r\n\r\n const referenceArrayInputProps = {\r\n label: '',\r\n optionTextLabel: 'Fund Name',\r\n optionValueLabel: 'Fund ID',\r\n resource: 'funds',\r\n reference: 'funds',\r\n source: 'funds',\r\n validate: [validateFunds],\r\n perPage: -1,\r\n sort: { field: 'name', order: 'ASC' },\r\n additionalColumns: [\r\n { label: 'Status', name: 'status', isStatusColumn: true }\r\n ]\r\n };\r\n\r\n return (\r\n
    \r\n {({ handleSubmit, valid, submitting }) => (\r\n <>\r\n {\r\n setTimeout(() => {\r\n setIsNextAvailable(props.valid && !props.submitting);\r\n }, 1);\r\n }}\r\n />\r\n \r\n \r\n \r\n validateFundInvestorTagNameRff(value)\r\n )\r\n }}\r\n required\r\n disabled={submitting}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default TagDetailsStep;\r\n","import React from 'react';\r\nimport TagDetailsStep from './TagDetailsStep';\r\nimport FundInvestorTagApi from '../../../core/apis/FundInvestorTagApi';\r\nimport { memoize, isEmpty } from 'lodash';\r\nimport AssignTagStep from './assignTag/AssignTagStep';\r\n\r\nexport const STEP = {\r\n tagDetails: 'tagDetails',\r\n assignTag: 'assignTag'\r\n};\r\n\r\nexport const listOfSteps = [\r\n {\r\n name: STEP.tagDetails,\r\n label: 'Tag Details',\r\n description: 'Set Tag Details and select Funds',\r\n component: TagDetailsStep\r\n },\r\n {\r\n name: STEP.assignTag,\r\n label: 'Assign Tag',\r\n description: 'Tick checkboxes to assign Tag for Fund-Investor Relationship',\r\n component: AssignTagStep\r\n }\r\n];\r\n\r\nexport const GenerateMessageOnLeave = ({ name }) => (\r\n

    \r\n You are about to quit the creation process and return to Fund-Investor Tag\r\n {!isEmpty(name) ? ` details ` : ` list `}\r\n screen.\r\n
    \r\n Your progress on this step will not be saved.\r\n {!isEmpty(name) && (\r\n

    \r\n {name} \r\n has been created without Fund-Investor Relationships.\r\n

    \r\n )}\r\n

    \r\n);\r\n\r\n/**\r\n * Verify that Fund-Investor Tag name is unique\r\n */\r\n\r\n// rff\r\nexport function validateFundInvestorTagNameRff(value) {\r\n return validateFundInvestorTagName(value);\r\n}\r\n\r\nconst validateFundInvestorTagName = memoize(async name => {\r\n let error;\r\n const investorTagNameValid = !!name.trim();\r\n if (!investorTagNameValid) {\r\n error = `Fund Investor Tag Name can't be empty space(s)`;\r\n } else {\r\n try {\r\n const nameExists = await FundInvestorTagApi.checkIfNameExists(name);\r\n if (nameExists) {\r\n error = 'Fund Investor Tag Name already exists';\r\n }\r\n } catch (e) {\r\n error = 'Cannot validate name';\r\n }\r\n }\r\n return error;\r\n});\r\n","import React, { useCallback, useEffect, useMemo, useState } from 'react';\r\nimport {\r\n TableRow,\r\n TableCell,\r\n IconButton,\r\n Collapse,\r\n Box,\r\n Table,\r\n TableHead,\r\n TableBody\r\n} from '@material-ui/core';\r\nimport { Checkboxes } from 'mui-rff';\r\nimport { AutoSizer, List as VirtualizedList } from 'react-virtualized';\r\nimport { ChevronRightIcon } from '../../../../core/themes/icons/ChevronRightIcon';\r\nimport { ChevronDownIcon } from '../../../../core/themes/icons/ChevronDownIcon';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\n\r\nimport { useStyles } from '../../utils/styles';\r\n\r\nconst classChevron = {\r\n chevron: {\r\n fontSize: '10px',\r\n color: '#757575'\r\n }\r\n};\r\n\r\nconst FundInvestorSelection = ({\r\n fundName,\r\n fundId,\r\n investors,\r\n formValues,\r\n formRef,\r\n setShouldHideBackButton\r\n}) => {\r\n const [open, setOpen] = useState(false);\r\n const styles = useStyles();\r\n\r\n const numberOfSelectedRows = useMemo(() => {\r\n const values = { ...formValues };\r\n return Object.values(values[`id-${fundId}`]).filter(\r\n entry => entry !== false\r\n ).length;\r\n }, [fundId, formValues]);\r\n\r\n const rowCount = investors.length;\r\n const calcHeight = rowCount < 10 ? `${rowCount * 30}px` : `${300}px`;\r\n\r\n const handleClickAll = useCallback(() => {\r\n let updatedValues = {};\r\n if (numberOfSelectedRows === rowCount) {\r\n Object.keys(formValues[`id-${fundId}`]).forEach(investor => {\r\n updatedValues = {\r\n ...updatedValues,\r\n [investor]: false\r\n };\r\n });\r\n formRef.change(`id-${fundId}`, updatedValues);\r\n } else if (numberOfSelectedRows !== rowCount) {\r\n investors.forEach(investor => {\r\n updatedValues = {\r\n ...updatedValues,\r\n [`id-${investor.investorId}`]: true\r\n };\r\n });\r\n formRef.change(`id-${fundId}`, updatedValues);\r\n }\r\n }, [numberOfSelectedRows, investors, rowCount, fundId, formRef, formValues]);\r\n\r\n useEffect(() => {\r\n setShouldHideBackButton(true);\r\n }, [setShouldHideBackButton]);\r\n\r\n function investorRenderer({ key, index, style }) {\r\n return (\r\n \r\n {investors[index].investorName}\r\n 10 ? styles.cellRightScroll : ''}>\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n setOpen(!open)}\r\n >\r\n {open ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n {fundName}\r\n \r\n \r\n 0}\r\n indeterminate={\r\n numberOfSelectedRows > 0 && numberOfSelectedRows < rowCount\r\n }\r\n />\r\n \r\n \r\n {open && (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Investors\r\n \r\n \r\n {/*Height is calculated based on the size of the list to display*/}\r\n \r\n \r\n {({ height, width }) => (\r\n \r\n )}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default FundInvestorSelection;\r\n","import React, { useRef, useState } from 'react';\r\nimport { createForm } from 'final-form';\r\nimport { Form } from 'react-final-form';\r\nimport {\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TablePagination,\r\n TableRow\r\n} from '@material-ui/core';\r\nimport { useNotify, useRedirect } from 'react-admin';\r\nimport FundInvestorSelection from './FundInvestorSelection';\r\nimport FundInvestorTagsAssociationsApi from '../../../../core/apis/FundInvestorTagsAssociationsApi';\r\nimport { getIcError } from '../../../../core/providers/utils';\r\n\r\nconst AssignTagForm = ({\r\n tagId,\r\n tagName,\r\n mapFundInvestors,\r\n initialFormValues,\r\n setShouldHideBackButton\r\n}) => {\r\n const notify = useNotify();\r\n const redirect = useRedirect();\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(25);\r\n\r\n const rowsCount = mapFundInvestors.length;\r\n\r\n const handleChangePage = (_event, newPage) => setPage(newPage);\r\n\r\n const handleChangeRowsPerPage = event => {\r\n setRowsPerPage(parseInt(event.target.value, 10));\r\n setPage(0);\r\n };\r\n\r\n const onSubmit = async formValues => {\r\n if (tagId) {\r\n let payloadTagAssociation = [];\r\n Object.entries(formValues).forEach(([fundId, associations]) => {\r\n Object.entries(associations).forEach(([investorId, value]) => {\r\n if (value === true) {\r\n payloadTagAssociation.push({\r\n fundInvestorTagId: tagId,\r\n fundInvestor: {\r\n fundId: fundId.slice(3),\r\n investorId: investorId.slice(3)\r\n }\r\n });\r\n }\r\n });\r\n });\r\n if (payloadTagAssociation.length > 0) {\r\n FundInvestorTagsAssociationsApi.create(payloadTagAssociation)\r\n .then(() => {\r\n notify('ra.notification.custom_updated_message');\r\n redirect(`/fundinvestortags/${tagId}`);\r\n })\r\n .catch(err => {\r\n notify('ra.notification.server', {\r\n type: 'warning',\r\n messageArgs: {\r\n message:\r\n 'Fund-Investor Tag has been created without associations. ' +\r\n getIcError(err),\r\n isForkedWarning: true\r\n }\r\n });\r\n });\r\n } else {\r\n notify('ra.notification.created');\r\n redirect(`/fundinvestortags/${tagId}`);\r\n }\r\n }\r\n };\r\n\r\n const formRef = useRef(\r\n createForm({\r\n onSubmit: onSubmit,\r\n initialValues: initialFormValues\r\n })\r\n );\r\n\r\n return (\r\n <>\r\n
    \r\n {({ handleSubmit, values }) => (\r\n \r\n \r\n \r\n \r\n \r\n Funds\r\n {tagName}\r\n \r\n \r\n \r\n {mapFundInvestors\r\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n .map(([fundId, { fundName, investors }]) => (\r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n \r\n \r\n );\r\n};\r\nexport default AssignTagForm;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { isEmpty } from 'lodash';\r\nimport AssignTagForm from './AssignTagForm';\r\nimport {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow\r\n} from '@material-ui/core';\r\nimport { LinearProgress } from 'ra-ui-materialui';\r\n\r\nconst AssignTagStep = ({ fundInvestorTagContext, setShouldHideBackButton }) => {\r\n const [initialFormValues, setInitialFormValues] = useState({});\r\n const {\r\n id: tagId,\r\n name: tagName,\r\n mapFundInvestorSortedByFund: mapFundInvestors\r\n } = fundInvestorTagContext;\r\n\r\n /**\r\n * note: We need to prefix every key because react-final-form does not handle numeric keys.\r\n * >> e.g: \"id-\"\r\n */\r\n useEffect(() => {\r\n if (!isEmpty(fundInvestorTagContext.mapFundInvestorSortedByFund)) {\r\n fundInvestorTagContext.mapFundInvestorSortedByFund.forEach(\r\n ([fundId, { _fundName, investors }]) => {\r\n investors\r\n .sort((a, b) =>\r\n a.investorName\r\n .toLowerCase()\r\n .localeCompare(b.investorName.toLowerCase())\r\n )\r\n .forEach(investor => {\r\n setInitialFormValues(prev => ({\r\n ...prev,\r\n [`id-${fundId}`]: {\r\n ...prev[`id-${fundId}`],\r\n [`id-${investor.investorId}`]: false\r\n }\r\n }));\r\n });\r\n }\r\n );\r\n }\r\n }, [fundInvestorTagContext.mapFundInvestorSortedByFund]);\r\n\r\n if (isEmpty(initialFormValues)) {\r\n return (\r\n \r\n \r\n \r\n Funds\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n};\r\n\r\nexport default AssignTagStep;\r\n","import React, { useEffect, useCallback, useMemo, useState } from 'react';\r\nimport { useRedirect } from 'react-admin';\r\nimport WizardStepper from '../../core/components/wizardStepper/WizardStepper';\r\nimport { CreationFundInvestorTagContext } from './creationSteps/CreationFundInvestorTagContext';\r\nimport {\r\n GenerateMessageOnLeave,\r\n listOfSteps,\r\n STEP\r\n} from './creationSteps/utils';\r\nimport { isEmpty } from 'lodash';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport { getInitials } from '../../core/utils';\r\n\r\nconst FundInvestorTagCreate = () => {\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [fundInvestorTagContext, setFundInvestorTagContext] = useState({});\r\n const providerFormContext = useMemo(\r\n () => ({ fundInvestorTagContext, setFundInvestorTagContext }),\r\n [fundInvestorTagContext, setFundInvestorTagContext]\r\n );\r\n const [isNextAvailable, setIsNextAvailable] = useState(false);\r\n const redirect = useRedirect();\r\n const [shouldHideBackButton, setShouldHideBackButton] = useState(false);\r\n const [isSpinnerOnNextButton, setIsSpinnerOnNextButton] = useState(false);\r\n const [isSaveAndCloseStep, setIsSaveAndCloseStep] = useState(false);\r\n\r\n const isLastStep = useCallback(() => {\r\n return !!(!isEmpty(listOfSteps) && listOfSteps.length === activeStep + 1);\r\n }, [activeStep]);\r\n\r\n const isItSaveAndCloseStep = useCallback(() => {\r\n if (!isEmpty(listOfSteps)) {\r\n return !!(\r\n listOfSteps[activeStep].name === STEP.assignTag && !isLastStep()\r\n );\r\n }\r\n }, [activeStep, isLastStep]);\r\n\r\n useEffect(() => {\r\n isItSaveAndCloseStep()\r\n ? setIsSaveAndCloseStep(true)\r\n : setIsSaveAndCloseStep(false);\r\n }, [isItSaveAndCloseStep]);\r\n\r\n const getActiveStep = () => {\r\n const step = listOfSteps[activeStep];\r\n return (\r\n \r\n );\r\n };\r\n\r\n const onSubmitEnd = () => {\r\n if (listOfSteps[activeStep].name === STEP.tagDetails) {\r\n setActiveStep(activeStep + 1);\r\n }\r\n if (listOfSteps[activeStep].name === STEP.assignTag) {\r\n handleClose();\r\n }\r\n };\r\n\r\n const handleClose = () => {\r\n if (fundInvestorTagContext.id === undefined) {\r\n redirect('list', '/fundinvestortags');\r\n } else {\r\n redirect(`/fundinvestortags/${fundInvestorTagContext.id}`);\r\n }\r\n };\r\n\r\n const handleNextForm = () => {\r\n if (listOfSteps[activeStep].name === STEP.tagDetails) {\r\n document\r\n .getElementById('formTagDetails')\r\n .dispatchEvent(new Event('submit', { cancelable: true }));\r\n }\r\n if (listOfSteps[activeStep].name === STEP.assignTag) {\r\n document\r\n .getElementById('formTagRelationship')\r\n .dispatchEvent(new Event('submit', { cancelable: true }));\r\n }\r\n };\r\n\r\n const displayCreatedInfo = () => {\r\n return (\r\n \r\n );\r\n };\r\n\r\n return (\r\n \r\n }\r\n resourceCreated={fundInvestorTagContext}\r\n shouldDisplayResourceCreatedInfo={true}\r\n displayResourceCreatedInfo={displayCreatedInfo}\r\n isFirstStepPristine={true}\r\n isNextAvailable={isNextAvailable}\r\n shouldHideBackButton={shouldHideBackButton}\r\n isSpinnerOnNextButton={isSpinnerOnNextButton}\r\n isSaveAndCloseStep={isSaveAndCloseStep}\r\n />\r\n );\r\n};\r\nexport default FundInvestorTagCreate;\r\n","import { FundInvestorTagIcon } from '../../core/themes/icons/FundInvestorTagIcon';\r\nimport FundInvestorTagEdit from './FundInvestorTagEdit';\r\nimport FundInvestorTagList from './FundInvestorTagList';\r\nimport FundInvestorTagCreate from './FundInvestorTagCreate';\r\n\r\nexport default {\r\n list: FundInvestorTagList,\r\n create: FundInvestorTagCreate,\r\n edit: FundInvestorTagEdit,\r\n icon: FundInvestorTagIcon\r\n};\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\nimport { stringify } from '../components/forked/stringify';\r\n\r\n/**\r\n * EmailArchiveAttachment Api\r\n */\r\nclass EmailArchiveAttachmentApi extends ApiBase {\r\n /**\r\n * Download proofing file\r\n * @param {*} attachment\r\n */\r\n async downloadAttachmentFile({\r\n emailArchiveId,\r\n id: fileId,\r\n attachmentIdType\r\n }) {\r\n const payload = { emailArchiveId, fileId, attachmentIdType };\r\n const request = {\r\n url: `${this.API_URL}/emailarchive/attachment/download?${stringify(\r\n payload\r\n )}`,\r\n headers: this.getHeaders(),\r\n method: 'GET',\r\n responseType: 'blob'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response;\r\n }\r\n}\r\n\r\nexport default new EmailArchiveAttachmentApi();\r\n","import ArchiveIcon from '@material-ui/icons/Archive';\r\nimport React, { useCallback } from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n Responsive,\r\n TextInput,\r\n SimpleList,\r\n TopToolbar,\r\n TextField,\r\n FunctionField,\r\n useQuery,\r\n Error,\r\n Pagination,\r\n useListContext\r\n} from 'react-admin';\r\nimport {\r\n makeStyles,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n Typography,\r\n Paper,\r\n CircularProgress,\r\n Button\r\n} from '@material-ui/core/';\r\nimport moment from 'moment';\r\nimport { saveAs } from 'file-saver';\r\n\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport GridPopover from '../../core/components/grid/GridPopover';\r\nimport EmailArchiveAttachmentApi from '../../core/apis/EmailArchiveAttachmentApi';\r\nimport DateInput from '../../core/components/forked/input/DateInput';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\nimport PopupField from '../../core/components/grid/PopupField';\r\n\r\nconst useStyles = makeStyles({\r\n rootList: {\r\n '& form:first-child': {\r\n alignItems: 'flex-start'\r\n }\r\n },\r\n textInput: {\r\n minWidth: '225px'\r\n },\r\n dataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n display: 'none'\r\n }\r\n }\r\n },\r\n tbody: {\r\n '& td:nth-of-type(1)': {\r\n display: 'none'\r\n }\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n },\r\n attachments: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n button: {\r\n marginRight: '0px'\r\n },\r\n buttonDownload: {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n color: '#2962FF',\r\n marginRight: '16px',\r\n '&:hover': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n rootCell: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n maxWidth: 'none'\r\n },\r\n iconButton: {\r\n borderLeft: '1px solid #E0E0E0',\r\n borderRadius: '0px'\r\n },\r\n input: {\r\n '&::before': {\r\n zIndex: 1\r\n }\r\n },\r\n inputContainer: {\r\n '& p': {\r\n marginTop: '4px',\r\n whiteSpace: 'nowrap'\r\n }\r\n },\r\n dateFilterStyle: {\r\n display: 'flex',\r\n marginBottom: '4px'\r\n },\r\n dateInputStyle: {\r\n width: '130px',\r\n marginRight: '5px'\r\n },\r\n dateRangeSeparator: {\r\n marginTop: '25px',\r\n marginRight: '5px',\r\n color: '#757575'\r\n },\r\n centerProgress: {\r\n textAlign: 'center'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst formatStartDate = value => {\r\n const mmt = moment(value);\r\n return mmt.isValid()\r\n ? mmt\r\n .startOf('day')\r\n .utc()\r\n .toISOString()\r\n : null;\r\n};\r\n\r\nconst formatEndDate = value => {\r\n const mmt = moment(value);\r\n return mmt.isValid()\r\n ? mmt\r\n .endOf('day')\r\n .utc()\r\n .toISOString()\r\n : null;\r\n};\r\n\r\nconst isValidDate = value => {\r\n const dateValue = moment(value);\r\n if (dateValue.isValid() && dateValue.isAfter(moment().endOf('day'))) {\r\n return 'ra.notification.date_after_today';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst DateRangeFilter = props => {\r\n const classes = useStyles();\r\n const maxDate = moment(props.filterValues.endDate).subtract(1, 'day');\r\n const minDate = props.filterValues.startDate;\r\n\r\n return (\r\n
    \r\n \r\n \r\n -\r\n \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst EmailArchiveFilters = props => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst EmailArchiveTitle = () => {\r\n return } />;\r\n};\r\n\r\nconst Attachments = ({ id: emailArchiveId, classes }) => {\r\n const { data, loading, error } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'emailarchiveattachments',\r\n payload: {\r\n target: 'emailArchiveId',\r\n id: emailArchiveId\r\n }\r\n });\r\n const notifyServerError = useNotifyServerError();\r\n const downloadAttachment = useCallback(\r\n async attachment => {\r\n try {\r\n const response = await EmailArchiveAttachmentApi.downloadAttachmentFile(\r\n attachment\r\n );\r\n saveAs(response.data, attachment.fileName);\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n },\r\n [notifyServerError]\r\n );\r\n\r\n if (loading) return ;\r\n if (error) return ;\r\n if (!data) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Attachment\r\n \r\n \r\n \r\n {Object.values(data).map((attachment, index) => (\r\n \r\n \r\n {attachment.fileName}\r\n downloadAttachment(attachment)}\r\n className={classes.buttonDownload}\r\n >\r\n Download\r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst BlockedDatagrid = ({ children, ...props }) => {\r\n const classes = useStyles();\r\n const listContext = useListContext();\r\n if (listContext && listContext.loaded && !listContext.loading) {\r\n return {children};\r\n }\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nconst EmailArchiveList = props => {\r\n const classes = useStyles();\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n }\r\n filters={}\r\n perPage={20}\r\n pagination={}\r\n actions={}\r\n empty={}\r\n classes={{ root: classes.rootList }}\r\n syncWithLocation\r\n >\r\n record.subject}\r\n secondaryText={record => record.id}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n false}\r\n >\r\n \r\n \r\n record.emailSentFromSystem ||\r\n (!record.userFirstName && !record.userLastName)\r\n ? 'System'\r\n : record.userDeleted\r\n ? `${record.userFirstName ? record.userFirstName : ''} ${\r\n record.userLastName ? record.userLastName : ''\r\n } (D)`\r\n : `${record.userFirstName ? record.userFirstName : ''} ${\r\n record.userLastName ? record.userLastName : ''\r\n }`\r\n }\r\n sortBy=\"userFirstName\"\r\n label=\"Sender\"\r\n id=\"sender\"\r\n />\r\n \r\n \r\n {\r\n const funds = record.fundNames\r\n ? Object.values(record.fundNames)\r\n : [];\r\n if (funds && funds.length > 1) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (funds && funds.length === 1) {\r\n return {funds[0]};\r\n } else return ;\r\n }}\r\n />\r\n \r\n moment(record.timestamp).format('MM/DD/YYYY [at] hh:mm A')\r\n }\r\n />\r\n \r\n record.noOfAttachments > 0 && (\r\n \r\n }\r\n />\r\n )\r\n }\r\n />\r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default EmailArchiveList;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\nimport { stringify } from '../components/forked/stringify';\r\n\r\nclass EmailArchiveExcelDownloadApi extends ApiBase {\r\n /**\r\n * Get email archive details and recipients\r\n * as an excel file.\r\n * Filter by emailArchiveId (mandatory), firstName, lastName,\r\n * email address and email status.\r\n * @param filters\r\n * @param id\r\n * @param filters\r\n */\r\n async downloadEmailArchiveAsExcel(id, filters) {\r\n const queryParameters = stringify(\r\n {\r\n emailArchiveId: id,\r\n firstName: filters.firstName,\r\n lastName: filters.lastName,\r\n email: filters.email,\r\n emailStatus: filters.status\r\n },\r\n {\r\n arrayFormat: 'comma'\r\n }\r\n );\r\n const request = {\r\n url: `${this.API_URL}/emailarchive/emailrecipients/excel?${queryParameters}`,\r\n headers: this.getHeaders(),\r\n responseType: 'blob',\r\n method: 'GET'\r\n };\r\n const response = await axios.request(request);\r\n return response.data;\r\n }\r\n}\r\n\r\nexport default new EmailArchiveExcelDownloadApi();\r\n","import React, { useCallback, useState, useMemo, useEffect } from 'react';\r\nimport {\r\n Show,\r\n Labeled,\r\n TextField,\r\n RichTextField,\r\n useQuery,\r\n useNotify,\r\n FunctionField,\r\n Pagination,\r\n Responsive,\r\n SimpleList,\r\n Datagrid,\r\n Filter,\r\n TextInput,\r\n SelectInput,\r\n List\r\n} from 'react-admin';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport { getInitials } from '../../core/utils';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport { Grid, Typography } from '@material-ui/core/';\r\nimport moment from 'moment';\r\nimport {\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableHead,\r\n TableRow,\r\n Paper,\r\n CircularProgress,\r\n Button\r\n} from '@material-ui/core/';\r\nimport EmailArchiveAttachmentApi from '../../core/apis/EmailArchiveAttachmentApi';\r\nimport GridPopover from '../../core/components/grid/GridPopover';\r\nimport { isEmpty } from 'lodash';\r\nimport { saveAs } from 'file-saver';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Accordion from '@material-ui/core/Accordion';\r\nimport AccordionDetails from '@material-ui/core/AccordionDetails';\r\nimport AccordionSummary from '@material-ui/core/AccordionSummary';\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport EmailArchiveExcelDownloadApi from '../../core/apis/EmailArchiveExcelDownloadApi';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst useStyles = makeStyles(() => ({\r\n accordionDetails: {\r\n display: 'block'\r\n },\r\n filterLabel: {\r\n color: '#757575',\r\n marginBottom: '-15px'\r\n },\r\n root: {\r\n minWidth: '60%',\r\n height: '100%'\r\n },\r\n fundName: {\r\n fontSize: 'large',\r\n fontWeight: 'bold'\r\n },\r\n accordionBottomBorder: {\r\n borderBottom: '1px solid lightgray'\r\n }\r\n}));\r\n\r\nconst styles = () => ({\r\n listPage: {\r\n margin: '0'\r\n },\r\n noActions: {\r\n marginTop: '0px'\r\n },\r\n headerContainer: {\r\n paddingTop: '0px !important',\r\n paddingBottom: '12px'\r\n },\r\n buttonDownload: {\r\n fontSize: 14,\r\n fontWeight: 400,\r\n color: '#2962FF',\r\n marginRight: '16px',\r\n '&:hover': {\r\n backgroundColor: 'transparent'\r\n }\r\n },\r\n rootContent: {\r\n paddingTop: '8px',\r\n paddingLeft: '16px',\r\n paddingRight: '16px'\r\n },\r\n paper: {\r\n marginTop: '-8px'\r\n },\r\n rootItem: {\r\n marginBottom: '20px',\r\n ' & > div': {\r\n '& > div': {\r\n '& > div': {\r\n padding: '0'\r\n }\r\n }\r\n }\r\n },\r\n rootCell: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n maxWidth: 'none'\r\n },\r\n rootRichText: {\r\n marginBottom: '16px',\r\n ' & > div': {\r\n '& > div': {\r\n '& > div': {\r\n height: '220px',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n },\r\n backgroundColor: 'white',\r\n border: '1px solid #E0E0E0',\r\n padding: '0 0 0 7px'\r\n }\r\n }\r\n }\r\n },\r\n filtersLabel: {\r\n fontSize: 15,\r\n alignSelf: 'center',\r\n color: '#2962FF',\r\n paddingRight: '18px',\r\n '&:hover': {\r\n cursor: 'pointer'\r\n }\r\n },\r\n root: {\r\n minWidth: '60%',\r\n height: '100%'\r\n },\r\n buttonSpan: {\r\n marginBottom: '0px'\r\n }\r\n});\r\n\r\nconst EmailArchiveTitle = ({ record, hasExportPermission, filters }) => {\r\n const [isLoading, setLoading] = useState(false);\r\n\r\n const notify = useNotify();\r\n /**\r\n * Click on button 'Download as Excel' to download the excel file\r\n */\r\n const handleClickDownloadAsExcel = useCallback(\r\n id => {\r\n setLoading(true);\r\n EmailArchiveExcelDownloadApi.downloadEmailArchiveAsExcel(id, filters)\r\n .then(resp => {\r\n const fileName = 'email_content_recipients_filters.xlsx';\r\n saveAs(resp, fileName);\r\n setLoading(false);\r\n })\r\n .catch(() => {\r\n setLoading(false);\r\n notify('ra.page.error', { type: 'error' });\r\n });\r\n },\r\n [notify, filters]\r\n );\r\n\r\n return (\r\n handleClickDownloadAsExcel(record.id)}\r\n isLoading={isLoading}\r\n id=\"download-excel\"\r\n />\r\n );\r\n};\r\n\r\nconst Attachments = ({ id: emailArchiveId, classes, ...props }) => {\r\n const { data, loading } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'emailarchiveattachments',\r\n payload: {\r\n target: 'emailArchiveId',\r\n id: emailArchiveId\r\n }\r\n });\r\n const notifyServerError = useNotifyServerError();\r\n const downloadAttachment = useCallback(\r\n async attachment => {\r\n try {\r\n const response = await EmailArchiveAttachmentApi.downloadAttachmentFile(\r\n attachment\r\n );\r\n saveAs(response.data, attachment.fileName);\r\n } catch (error) {\r\n notifyServerError(error);\r\n }\r\n },\r\n [notifyServerError]\r\n );\r\n\r\n if (loading) return ;\r\n if (!data) return null;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Attachment\r\n \r\n \r\n \r\n {Object.values(data).map((attachment, index) => (\r\n \r\n \r\n {attachment.fileName}\r\n downloadAttachment(attachment)}\r\n className={classes.buttonDownload}\r\n >\r\n Download\r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nconst emailTermStatus = [\r\n { id: 'SUCCESS', name: 'Sent' },\r\n { id: 'INVALID', name: 'Not Sent' }\r\n];\r\n\r\nconst RecipientsFilter = ({ filterValues, setAppliedFilters, ...rest }) => {\r\n useEffect(() => {\r\n if (filterValues) {\r\n setAppliedFilters(filterValues);\r\n }\r\n }, [filterValues, setAppliedFilters]);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst displayItems = (investor, items, buttonClass) => {\r\n if (!isEmpty(items)) {\r\n const itemsArray = Object.values(items);\r\n return (\r\n 1\r\n ? investor\r\n ? 'Multiple Investors'\r\n : `${itemsArray.length}`\r\n : itemsArray[0].name\r\n }\r\n classes={{ button: buttonClass }}\r\n multiple={itemsArray.length > 1}\r\n popoverContent={\r\n \r\n \r\n \r\n \r\n \r\n {investor ? 'Investor Name' : 'Permission Groups Name'}\r\n \r\n \r\n \r\n \r\n {itemsArray.map(item => {\r\n return (\r\n \r\n {item.name}\r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n }\r\n />\r\n );\r\n } else {\r\n return null;\r\n }\r\n};\r\n\r\nconst Recipients = ({ id: emailArchiveId, classes, ...props }) => (\r\n }\r\n filters={}\r\n filter={{ emailArchiveId }}\r\n bulkActionButtons={false}\r\n perPage={20}\r\n pagination={}\r\n actions={null}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.userId}\r\n secondaryText={displayUserName}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n \r\n \r\n displayItems(true, record.investors, classes.button)\r\n }\r\n />\r\n \r\n displayItems(false, record.groups, classes.button)\r\n }\r\n />\r\n \r\n \r\n }\r\n />\r\n \r\n);\r\n\r\nconst displayStatus = record =>\r\n record.status === 'SUCCESS' ? 'Sent' : 'Not sent';\r\n\r\nconst getFormattedUserName = record =>\r\n record.userDeleted\r\n ? `${record.firstName} ${record.lastName} (D)`\r\n : `${record.firstName} ${record.lastName}`;\r\n\r\nconst displayUserName = record =>\r\n record.userId ? getFormattedUserName(record) : '';\r\n\r\n/**\r\n * Get a custom field for rendering text\r\n */\r\nconst CustomTextField = ({\r\n record,\r\n label,\r\n source,\r\n emptyText = ' ',\r\n secondSource = ''\r\n}) => {\r\n if (secondSource !== '') {\r\n return (\r\n `${record[source]} ${record[secondSource]}`}\r\n />\r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n};\r\n\r\nconst CustomFunctionField = ({ record, label, source, render }) => {\r\n if (render) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n return null;\r\n};\r\n\r\nconst ShowFiltersGrid = ({ record }) => {\r\n const filters = record.filters;\r\n const classes = useStyles();\r\n\r\n const handleChange = panel => (event, isExpanded) => {\r\n setExpanded(isExpanded ? panel : false);\r\n };\r\n const [expanded, setExpanded] = React.useState(false);\r\n\r\n const isAdministrators = includeAdministrator => {\r\n if (includeAdministrator) {\r\n return Administrators;\r\n } else {\r\n return
    ;\r\n }\r\n };\r\n const isInactiveInvestors = inactiveInvestors => {\r\n if (inactiveInvestors) {\r\n return Inactive Investors;\r\n } else {\r\n return
    ;\r\n }\r\n };\r\n const isLoggedInUsers = loggedInUsers => {\r\n if (loggedInUsers) {\r\n return Logged in Contacts;\r\n } else {\r\n return
    ;\r\n }\r\n };\r\n const isUsersWhoHaveNotLoggedIn = usersWhoHaveNotLoggedIn => {\r\n if (usersWhoHaveNotLoggedIn) {\r\n return Not Logged in Contacts;\r\n } else {\r\n return
    ;\r\n }\r\n };\r\n const getExcudedEmailDomains = excludeEmailDomains => {\r\n if (excludeEmailDomains && excludeEmailDomains.length > 0) {\r\n const excludeEmailDomainsBody = excludeEmailDomains.map(\r\n (excludeEmailDomain, i) => {\r\n return (\r\n \r\n );\r\n }\r\n );\r\n return excludeEmailDomainsBody;\r\n } else {\r\n return ;\r\n }\r\n };\r\n const getGroupNames = groups => {\r\n if (groups && groups.length > 0) {\r\n const groupBody = groups.map((group, i) => {\r\n return (\r\n \r\n );\r\n });\r\n return groupBody;\r\n } else {\r\n return ;\r\n }\r\n };\r\n const getResourceUploadNames = resourceUpload => {\r\n if (resourceUpload && resourceUpload.length > 0) {\r\n const resourceUploadBody = resourceUpload.map((resourceUpload, i) => {\r\n return (\r\n \r\n );\r\n });\r\n return resourceUploadBody;\r\n } else {\r\n return ;\r\n }\r\n };\r\n\r\n let accordionBody;\r\n if (filters) {\r\n accordionBody = filters.map((filter, i) => {\r\n return (\r\n
    \r\n \r\n }\r\n aria-controls={'panel' + i + 'a-content'}\r\n id={'panel' + i + 'a-header'}\r\n className={classes.accordionBottomBorder}\r\n >\r\n
    {filter.fund.name}
    \r\n \r\n \r\n
    Selected Contact Types
    {' '}\r\n
    \r\n
    {isAdministrators(filter.includeAdministrator)}
    \r\n
    {isInactiveInvestors(filter.includeInactiveInvestors)}
    \r\n
    {isLoggedInUsers(filter.includeLoggedInUsers)}
    \r\n
    \r\n {isUsersWhoHaveNotLoggedIn(\r\n filter.includeUsersWhoHaveNotLoggedIn\r\n )}\r\n
    \r\n
    \r\n
    Excluded Email Domains
    \r\n
    \r\n
    {getExcudedEmailDomains(filter.excludeEmailDomains)}
    \r\n
    \r\n
    \r\n Selected Permission Groups\r\n
    \r\n
    \r\n
    {getGroupNames(filter.groups)}

    \r\n
    Selected Documents
    {' '}\r\n
    \r\n
    {getResourceUploadNames(filter.resourceUploads)}

    \r\n
    \r\n \r\n
    \r\n );\r\n });\r\n }\r\n\r\n return
    {accordionBody}
    ;\r\n};\r\n\r\n/**\r\n * Get User first and last name with checking if the user\r\n * is deleted in order to add flag: 'D'\r\n */\r\nconst UserNamesTextField = ({ record, label }) => {\r\n let recipientName =\r\n record.emailSentFromSystem ||\r\n (!record.userFirstName && !record.userLastName) ? (\r\n
    {'System'}
    \r\n ) : record.userDeleted ? (\r\n
    \r\n {record.userFirstName} {record.userLastName} {' (D)'}\r\n
    \r\n ) : (\r\n
    \r\n {record.userFirstName} {record.userLastName}\r\n
    \r\n );\r\n return (\r\n
    \r\n {recipientName}\r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * rendering date field in a custom component\r\n */\r\nconst CustomDateField = ({ record, label, source }) => {\r\n return (\r\n
    \r\n \r\n \r\n moment(record.timestamp).format('MM/DD/YYYY [at] hh:mm A')\r\n }\r\n />\r\n \r\n
    \r\n );\r\n};\r\n\r\n/**\r\n * rendering email body custom\r\n */\r\nconst EmailBodyField = ({ record, label, source }) => (\r\n
    \r\n \r\n {\r\n if (e.target.href) {\r\n e.target.target = '_blank';\r\n e.target.rel = 'noreferrer noopener';\r\n }\r\n }}\r\n />\r\n \r\n
    \r\n);\r\n\r\nconst AttachmentsField = ({ record, label, source, classes }) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n);\r\n\r\nconst RecipientsField = ({\r\n record,\r\n label,\r\n source,\r\n classes,\r\n setAppliedFilters\r\n}) => (\r\n
    \r\n \r\n \r\n \r\n
    \r\n);\r\n\r\nconst AdvancedOptionsButton = ({ record, classes, setFiltersDialogOpen }) => {\r\n if (record.filters && record.filters.length > 0) {\r\n return (\r\n
    \r\n \r\n setFiltersDialogOpen(true)}\r\n >\r\n See Details\r\n \r\n
    \r\n );\r\n } else {\r\n return (\r\n
    \r\n \r\n None\r\n
    \r\n );\r\n }\r\n};\r\n\r\n/**\r\n * We cant rendering children as we want inside a Labeled component so we need to create custom field for each data to display\r\n * can only accept one child and doing condition not working like passing a custom props to displaying a field for text, or date or email body\r\n * {type === \"date\" && (...)} rendering basically a \r\n * {type === \"text\" && (...)} rendering basically a \r\n * those two conditions inside the not working.\r\n */\r\nconst EmailArchiveSummary = ({ ...props }) => {\r\n const { classes, record } = props;\r\n\r\n const [filtersDialogOpen, setFiltersDialogOpen] = useState(false);\r\n\r\n return (\r\n \r\n \r\n Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n `${(record['nbEmailsSent'] || 0) +\r\n (record['nbEmailsNotSent'] || 0)}`\r\n }\r\n {...props}\r\n />\r\n \r\n \r\n \r\n {record.noOfAttachments > 0 && (\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n if (reason === 'backdropClick') return null;\r\n setFiltersDialogOpen(false);\r\n }}\r\n classes={{ paper: classes.root }}\r\n >\r\n setFiltersDialogOpen(false)}>\r\n {'Advanced Email Options'}\r\n \r\n \r\n \r\n \r\n \r\n setFiltersDialogOpen(false)}\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n label=\"Close\"\r\n >\r\n Close\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst EmailArchiveShow = ({\r\n classes,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n}) => {\r\n const { hasExportPermission } = useMemo(() => {\r\n return {\r\n hasExportPermission:\r\n rest.permissions &&\r\n rest.permissions.includes('AUTH_EXPORT_EMAIL_ARCHIVE')\r\n };\r\n }, [rest.permissions]);\r\n\r\n // keep track of applied filters so they can be passed while downloading archive as Excel\r\n const [appliedFilters, setAppliedFilters] = useState([]);\r\n\r\n return (\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(EmailArchiveShow);\r\n","import ArchiveIcon from '@material-ui/icons/Archive';\r\nimport EmailArchiveList from './EmailArchiveList';\r\nimport EmailArchiveShow from './EmailArchiveShow';\r\n\r\nexport default {\r\n list: EmailArchiveList,\r\n show: EmailArchiveShow,\r\n icon: ArchiveIcon\r\n};\r\n","const categoryTermStatus = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'INACTIVE', name: 'Inactive' }\r\n];\r\n\r\nconst categoryTermFrequency = [\r\n { id: 'YEARLY', name: 'Yearly' },\r\n { id: 'DAILY', name: 'Daily' },\r\n { id: 'ONCE', name: 'Once' },\r\n { id: 'EVERY_TIME', name: 'Every Time' },\r\n { id: 'NEVER', name: 'Never' }\r\n];\r\n\r\nexport { categoryTermFrequency, categoryTermStatus };\r\n","import React from 'react';\r\nimport {\r\n List,\r\n Datagrid,\r\n Responsive,\r\n TextInput,\r\n SimpleList,\r\n TopToolbar,\r\n DateField,\r\n SelectInput,\r\n ReferenceManyField,\r\n Pagination\r\n} from 'react-admin';\r\n\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport { makeStyles, Typography } from '@material-ui/core';\r\nimport CategoryTermsIcon from '@material-ui/icons/Description';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport { categoryTermStatus } from './CategoryTermsLookups';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport PopupField from '../../core/components/grid/PopupField';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n marginRight: 'auto'\r\n },\r\n button: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginRight: '9px'\r\n },\r\n termNameFilterStyle: {\r\n minWidth: '200px'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst CategoryTermsFilter = props => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst CategoryTermsName = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n />\r\n );\r\n};\r\n\r\nconst CategoryField = props => {\r\n const { data } = props;\r\n const categories = data ? Object.values(data) : [];\r\n if (categories && categories.length > 1) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (categories && categories.length === 1) {\r\n return (\r\n {categories[0].categoryName}\r\n );\r\n } else return ;\r\n};\r\n\r\nconst CategoryTermsList = props => {\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n }\r\n filters={}\r\n bulkActionButtons={false}\r\n perPage={20}\r\n pagination={}\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.title}\r\n secondaryText={record => record.status}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default CategoryTermsList;\r\n","import React from 'react';\r\nimport { TextInput, required, SelectInput } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\nimport DateInput from '../../core/components/forked/input/DateInput';\r\nimport {\r\n categoryTermStatus,\r\n categoryTermFrequency\r\n} from './CategoryTermsLookups';\r\nimport RichTextInput from '../../core/components/inputs/RichTextInput';\r\nimport CheckBoxField from '../../core/components/CheckBoxField';\r\nimport { Typography } from '@material-ui/core';\r\nimport { isValidDate, formatDate } from '../../core/utils/index';\r\nimport { Field } from 'react-final-form';\r\n\r\nconst CategoryTermsSummary = () => {\r\n return (\r\n \r\n \r\n Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CategoryTermsSummary;\r\n","import React, { useCallback, useState } from 'react';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogContent,\r\n DialogActions,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { withStyles, makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n FormWithRedirect,\r\n ReferenceArrayInput,\r\n SaveButton,\r\n useCreate,\r\n useQuery,\r\n Loading\r\n} from 'react-admin';\r\n\r\nimport GridInput from '../../core/components/inputs/GridInput';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport { Typography } from '@material-ui/core';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst styles = () => ({\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginLeft: '10px',\r\n marginTop: '10px',\r\n height: '30px'\r\n },\r\n form: {\r\n '& > div': {\r\n paddingTop: '0px !important',\r\n paddingBottom: '0px !important'\r\n }\r\n },\r\n title: {\r\n flex: 1,\r\n paddingTop: '20px'\r\n }\r\n});\r\n\r\nconst useStyles = makeStyles({\r\n loading: {\r\n height: 'calc(100vh - 230px)'\r\n }\r\n});\r\n\r\nconst CategoryTermsRelationsGridComponent = props => {\r\n const { existingRelations, choices, categoryTermId, ...rest } = props;\r\n const classes = useStyles();\r\n let { data, loading } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'categorytermsrelations',\r\n payload: {\r\n target: 'categoryTermIds',\r\n id: categoryTermId,\r\n sort: {\r\n order: 'ASC'\r\n }\r\n }\r\n });\r\n if (loading) return ;\r\n const existingRelationsCategoryIds =\r\n (data && data.map(e => e.categoryId)) || [];\r\n const availableChoices = choices.filter(\r\n e => !existingRelationsCategoryIds.includes(e.id)\r\n );\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst AddCategories = props => {\r\n const { classes, categoryTermId, onChange, ids } = props;\r\n const [showDialog, setShowDialog] = useState(false);\r\n\r\n const [create] = useCreate('categorytermsrelations');\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const handleClose = useCallback(() => {\r\n setShowDialog(false);\r\n }, [setShowDialog]);\r\n\r\n const handleOpen = useCallback(() => {\r\n setShowDialog(true);\r\n }, [setShowDialog]);\r\n\r\n const handleSubmit = async values => {\r\n const payload = values.categories.map(currentValue => {\r\n return {\r\n categoryTermId: categoryTermId,\r\n categoryId: currentValue\r\n };\r\n });\r\n create(\r\n { payload: { data: payload } },\r\n {\r\n onSuccess: () => {\r\n setShowDialog(false);\r\n onChange();\r\n },\r\n onFailure: notifyServerError\r\n }\r\n );\r\n };\r\n\r\n const validateCategories = value => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Category must be selected';\r\n }\r\n return undefined;\r\n };\r\n\r\n return (\r\n <>\r\n {/* Show grid label only if there are some records, otherwise Empty component will render title itself */}\r\n {ids && ids.length > 0 && (\r\n \r\n {'Related Categories'}\r\n \r\n )}\r\n \r\n Add Categories\r\n \r\n (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n {'Add Category To Category Term'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n )}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(AddCategories);\r\n","import React, { useCallback, useState, useMemo } from 'react';\r\nimport { Datagrid, TextField, List, ReferenceField } from 'react-admin';\r\n\r\nimport { ListPagination } from '../../core/components/list/ListPagination';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport AddCategories from './AddCategories';\r\n\r\nconst CategoryTermsRelations = ({\r\n id: categoryTermId,\r\n permissions = [],\r\n ...rest\r\n}) => {\r\n const [version, setVersion] = useState(0);\r\n\r\n const {\r\n hasCreate,\r\n hasShow,\r\n hasEdit,\r\n hasList,\r\n variant,\r\n ...datagridProps\r\n } = rest;\r\n\r\n const hasWriteCategoryTermRelationPermission = useMemo(() => {\r\n return permissions.includes('AUTH_WRITE_CATEGORY_TERM_AND_CONDITION');\r\n }, [permissions]);\r\n\r\n // We store a version in the state to be able to refrehs the list on adding funds\r\n const handleChange = useCallback(() => setVersion(version + 1), [version]);\r\n\r\n return (\r\n }\r\n {...rest}\r\n resource=\"categorytermsrelations\"\r\n filter={{\r\n categoryTermIds: categoryTermId,\r\n orphanVisibility: 'ALL_VISIBLE'\r\n }}\r\n sort={{ field: 'categoryTermId', order: 'ASC' }}\r\n title=\" \"\r\n actions={\r\n hasWriteCategoryTermRelationPermission ? (\r\n \r\n ) : null\r\n }\r\n bulkActionButtons={\r\n hasWriteCategoryTermRelationPermission ? (\r\n \r\n ) : null\r\n }\r\n empty={\r\n \r\n ]\r\n : []\r\n }\r\n title=\"Related Categories\"\r\n />\r\n }\r\n >\r\n hasWriteCategoryTermRelationPermission}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CategoryTermsRelations;\r\n","import React, { useState, useCallback } from 'react';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport { removePathEnd, getInitials } from '../../core/utils';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport { Edit, FormTab, TabbedForm } from 'react-admin';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\n\r\nimport CategoryTermsSummary from './CategoryTermsSummary';\r\nimport CategoryTermsRelations from './CategoryTermsRelations';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst CategoryTermsTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst CategoryTermsEdit = props => {\r\n const {\r\n classes,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasReadPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n\r\n const handleFormIsDirty = useCallback(\r\n dirty => {\r\n // Block navigation when the form is dirty\r\n setWhenBlockNavigation(dirty);\r\n },\r\n [setWhenBlockNavigation]\r\n );\r\n\r\n const displayToolbar = props.match.isExact;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n {\r\n handleFormIsDirty(props.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n {/** cutting props from the formTab because a fixed width class was given to the child, and making the list smaller*/}\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(CategoryTermsEdit);\r\n","import { makeStyles } from '@material-ui/core';\r\nimport React, { useState, useCallback } from 'react';\r\nimport { Create } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport omit from 'lodash/omit';\r\n\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport CategoryTermsSummary from './CategoryTermsSummary';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst useStyles = makeStyles({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst CategoryTermTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst CategoryTermsCreate = props => {\r\n const classes = useStyles();\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n\r\n const handleFormIsDirty = useCallback(\r\n dirty => {\r\n // Block navigation when the form is dirty\r\n setWhenBlockNavigation(dirty);\r\n },\r\n [setWhenBlockNavigation]\r\n );\r\n\r\n const allowNavigationOnSave = () => {\r\n setWhenBlockNavigation(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n }\r\n >\r\n {\r\n setTimeout(() => handleFormIsDirty(props.dirty), 1);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default CategoryTermsCreate;\r\n","import CategoryTermsIcon from '@material-ui/icons/Description';\r\nimport CategoryTermsList from './CategoryTermsList';\r\nimport CategoryTermsEdit from './CategoryTermsEdit';\r\nimport CategoryTermsCreate from './CategoryTermsCreate';\r\n\r\nexport default {\r\n create: CategoryTermsCreate,\r\n list: CategoryTermsList,\r\n edit: CategoryTermsEdit,\r\n icon: CategoryTermsIcon\r\n};\r\n","const fundTermStatus = [\r\n { id: 'ACTIVE', name: 'Active' },\r\n { id: 'INACTIVE', name: 'Inactive' }\r\n];\r\n\r\nexport { fundTermStatus };\r\n","import React from 'react';\r\nimport {\r\n List,\r\n Datagrid,\r\n Responsive,\r\n TextInput,\r\n SimpleList,\r\n TopToolbar,\r\n DateField,\r\n SelectInput,\r\n ReferenceManyField,\r\n Pagination\r\n} from 'react-admin';\r\n\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport { makeStyles, Typography } from '@material-ui/core';\r\nimport FundTermsIcon from '@material-ui/icons/Work';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport { fundTermStatus } from './FundTermsLookup';\r\nimport StatusSelectField from '../../core/components/StatusSelectField';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport PopupField from '../../core/components/grid/PopupField';\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n marginRight: 'auto'\r\n },\r\n termNameFilterStyle: {\r\n minWidth: '200px'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst FundTermsFilter = props => {\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst FundTermsName = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n />\r\n );\r\n};\r\n\r\n// const FundsColumn = props => {\r\n// if (size(props.data) > 1) {\r\n// return Multiple Funds;\r\n// } else if (props.data && size(props.data) === 1) {\r\n// let fund = Object.values(props.data)[0];\r\n// if (fund.fundId === '*') {\r\n// return All Funds;\r\n// }\r\n// return (\r\n// \r\n// \r\n// \r\n// );\r\n// }\r\n// return null;\r\n// };\r\n\r\n// const FundName = props => {\r\n// if (props.fundId && props.data && props.data[props.fundId]) {\r\n// return (\r\n// {props.data[props.fundId].name}\r\n// );\r\n// }\r\n// return null;\r\n// };\r\n\r\nconst FundField = props => {\r\n const { data } = props;\r\n const funds = data ? Object.values(data) : [];\r\n if (funds && funds.length > 1) {\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n } else if (funds && funds.length === 1) {\r\n return {funds[0].fundName};\r\n } else return ;\r\n};\r\n\r\nconst FundTermsList = props => {\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n }\r\n filters={}\r\n perPage={20}\r\n pagination={}\r\n bulkActionButtons={false}\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.name}\r\n secondaryText={record => record.activeVersion}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default FundTermsList;\r\n","import React from 'react';\r\nimport { TextInput, required, SelectInput } from 'react-admin';\r\nimport { Grid } from '@material-ui/core/';\r\nimport DateInput from '../../core/components/forked/input/DateInput';\r\nimport { fundTermStatus } from './FundTermsLookup';\r\nimport RichTextInput from '../../core/components/inputs/RichTextInput';\r\nimport { Typography } from '@material-ui/core';\r\nimport { isValidDate, formatDate } from '../../core/utils/index';\r\n\r\nconst FundTermsSummary = () => {\r\n return (\r\n \r\n \r\n Details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FundTermsSummary;\r\n","import React, { useCallback, useState, useEffect } from 'react';\r\nimport {\r\n Button,\r\n Dialog,\r\n DialogContent,\r\n DialogActions,\r\n Grid\r\n} from '@material-ui/core';\r\nimport { withStyles, makeStyles } from '@material-ui/core/styles';\r\nimport {\r\n FormWithRedirect,\r\n ReferenceArrayInput,\r\n SaveButton,\r\n useCreate,\r\n useQuery,\r\n Loading\r\n} from 'react-admin';\r\n\r\nimport GridInput from '../../core/components/inputs/GridInput';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport Confirm from '../../core/components/forked/layout/Confirm';\r\nimport { Typography } from '@material-ui/core';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst styles = () => ({\r\n addButton: {\r\n border: '1px solid #E0E0E0',\r\n background: '#FFFFFF',\r\n marginLeft: '10px',\r\n marginTop: '10px',\r\n height: '30px'\r\n },\r\n form: {\r\n '& > div': {\r\n paddingTop: '0px !important',\r\n paddingBottom: '0px !important'\r\n }\r\n },\r\n title: {\r\n flex: 1,\r\n paddingTop: '20px'\r\n }\r\n});\r\n\r\nconst useStyles = makeStyles({\r\n loading: {\r\n height: 'calc(100vh - 230px)'\r\n }\r\n});\r\n\r\nconst TermsRelationsGridComponent = props => {\r\n const { choices, fundTermId, ...rest } = props;\r\n const classes = useStyles();\r\n let { data, loading } = useQuery({\r\n type: 'getManyReference',\r\n resource: 'fundtermsrelations',\r\n payload: {\r\n target: 'fundTermId',\r\n id: fundTermId,\r\n sort: {\r\n order: 'ASC'\r\n }\r\n }\r\n });\r\n if (loading) return ;\r\n\r\n const existingRelationsFundIds = (data && data.map(e => e.fundId)) || [];\r\n const availableChoices = choices.filter(\r\n e => !existingRelationsFundIds.includes(e.id)\r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst AddFunds = props => {\r\n const { classes, fundTermId, onChange, ids, emptyComponent = false } = props;\r\n const [showDialog, setShowDialog] = useState(false);\r\n const [showAllFundsDialog, setShowAllFundsDialog] = useState(false);\r\n\r\n const [hasAllFundAction, setHasAllFundAction] = useState(false);\r\n const [hasAddExistingFundActions, setHasAddExistingFundActions] = useState(\r\n false\r\n );\r\n\r\n const [create] = useCreate('fundtermsrelations');\r\n const notifyServerError = useNotifyServerError();\r\n\r\n useEffect(() => {\r\n if (emptyComponent || ids) {\r\n const showAddAllFundAction = emptyComponent || ids.length === 0;\r\n const showAddExistingFundsAction =\r\n emptyComponent ||\r\n ids.length === 0 ||\r\n (ids.length > 0 && ids.indexOf(`${fundTermId}:*`) === -1) ||\r\n emptyComponent;\r\n setHasAllFundAction(showAddAllFundAction);\r\n setHasAddExistingFundActions(showAddExistingFundsAction);\r\n }\r\n }, [ids, fundTermId, emptyComponent]);\r\n\r\n const handleClose = useCallback(() => {\r\n setShowDialog(false);\r\n }, [setShowDialog]);\r\n\r\n const handleOpen = useCallback(() => {\r\n setShowDialog(true);\r\n }, [setShowDialog]);\r\n\r\n const handleSubmit = async values => {\r\n const payload = values.funds.map(currentValue => {\r\n return {\r\n fundTermId: fundTermId,\r\n fundId: currentValue\r\n };\r\n });\r\n create(\r\n { payload: { data: payload } },\r\n {\r\n onSuccess: () => {\r\n setShowDialog(false);\r\n onChange();\r\n },\r\n onFailure: notifyServerError\r\n }\r\n );\r\n };\r\n\r\n const handleOpenAllFunds = useCallback(() => {\r\n setShowAllFundsDialog(true);\r\n }, [setShowAllFundsDialog]);\r\n\r\n const handleCloseAllFunds = useCallback(() => {\r\n setShowAllFundsDialog(false);\r\n }, [setShowAllFundsDialog]);\r\n\r\n const handleSubmitAllFunds = () => {\r\n const payload = [\r\n {\r\n fundTermId: fundTermId,\r\n fundId: '*'\r\n }\r\n ];\r\n create(\r\n { payload: { data: payload } },\r\n {\r\n onSuccess: () => {\r\n setShowAllFundsDialog(false);\r\n onChange();\r\n },\r\n onFailure: notifyServerError\r\n }\r\n );\r\n };\r\n\r\n const validateFunds = value => {\r\n if (Array.isArray(value) && value.length < 1) {\r\n return 'At least one Fund must be selected';\r\n }\r\n return undefined;\r\n };\r\n\r\n return (\r\n <>\r\n {/* Show grid label only if there are some records, otherwise Empty component will render title itself */}\r\n {ids && ids.length > 0 && (\r\n \r\n {'Related Funds'}\r\n \r\n )}\r\n {hasAllFundAction && (\r\n \r\n Add All Funds\r\n \r\n )}\r\n {hasAddExistingFundActions && (\r\n \r\n Add Funds\r\n \r\n )}\r\n (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n {'Add Fund to Fund Term'}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n }\r\n />\r\n \r\n Cancel\r\n \r\n \r\n \r\n )}\r\n />\r\n handleCloseAllFunds()}\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(AddFunds);\r\n","import React, { useCallback, useState, useMemo } from 'react';\r\n\r\nimport { ListPagination } from '../../core/components/list/ListPagination';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport AddFunds from './AddFunds';\r\n\r\nimport { Datagrid, TextField, List } from 'react-admin';\r\n\r\nconst FundRelationsEmpty = props => {\r\n const {\r\n hasEditFundTermRelationPermission,\r\n handleChange,\r\n fundTermId,\r\n ids\r\n } = props;\r\n return (\r\n \r\n ]\r\n : []\r\n }\r\n title=\"Related Funds\"\r\n />\r\n );\r\n};\r\n\r\nconst FundTermsRelations = ({ id: fundTermId, permissions = [], ...rest }) => {\r\n const { hasList, hasShow, hasEdit, ...datagridProps } = rest;\r\n const [version, setVersion] = useState(0);\r\n\r\n const hasEditFundTermRelationPermission = useMemo(() => {\r\n return permissions.includes('AUTH_WRITE_FUND_TERM_AND_CONDITION');\r\n }, [permissions]);\r\n\r\n // We store a version in the state to be able to refrehs the list on adding funds\r\n const handleChange = useCallback(\r\n () => setVersion(version => version + 1),\r\n []\r\n );\r\n\r\n return (\r\n <>\r\n }\r\n {...rest}\r\n resource=\"fundtermsrelations\"\r\n filter={{ fundTermId }}\r\n sort={{ field: 'fundTermId', order: 'ASC' }}\r\n title=\" \"\r\n actions={\r\n hasEditFundTermRelationPermission ? (\r\n \r\n ) : null\r\n }\r\n bulkActionButtons={\r\n hasEditFundTermRelationPermission ? : null\r\n }\r\n empty={\r\n \r\n }\r\n >\r\n hasEditFundTermRelationPermission}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FundTermsRelations;\r\n","import React, { useState, useCallback } from 'react';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { withStyles } from '@material-ui/core/styles';\r\n\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport { removePathEnd, getInitials } from '../../core/utils';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport { Edit, FormTab, TabbedForm } from 'react-admin';\r\nimport EditToolbar from '../../core/components/edit/EditToolbar';\r\n\r\nimport FundTermsSummary from './FundTermsSummary';\r\nimport FundTermsRelations from './FundTermsRelations';\r\n\r\nconst styles = () => ({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst FundTermsTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst FundTermsEdit = props => {\r\n const {\r\n classes,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasReadPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n\r\n const handleFormIsDirty = useCallback(\r\n dirty => {\r\n // Block navigation when the form is dirty\r\n setWhenBlockNavigation(dirty);\r\n },\r\n [setWhenBlockNavigation]\r\n );\r\n\r\n const displayToolbar = props.match.isExact;\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n ) : (\r\n <>\r\n )\r\n }\r\n variant=\"standard\"\r\n margin=\"normal\"\r\n >\r\n \r\n {\r\n handleFormIsDirty(props.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n {/** cutting props from the formTab because a fixed width class was given to the child, and making the list smaller*/}\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(FundTermsEdit);\r\n","import { makeStyles } from '@material-ui/core';\r\nimport React, { useState, useCallback } from 'react';\r\nimport { Create } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport omit from 'lodash/omit';\r\n\r\nimport CreateToolbar from '../../core/components/CreateToolbar';\r\nimport LeaveConfirm from '../../core/components/LeaveConfirmWrapper';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport NavigationPrompt from '../../core/components/NavigationPrompt';\r\nimport FundTermsSummary from './FundTermsSummary';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst useStyles = makeStyles({\r\n noActions: {\r\n marginTop: '0px'\r\n }\r\n});\r\n\r\nconst FundTermTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst FundTermsCreate = props => {\r\n const classes = useStyles();\r\n const [whenBlockNavigation, setWhenBlockNavigation] = useState(false);\r\n\r\n const handleFormIsDirty = useCallback(\r\n dirty => {\r\n // Block navigation when the form is dirty\r\n setWhenBlockNavigation(dirty);\r\n },\r\n [setWhenBlockNavigation]\r\n );\r\n\r\n const allowNavigationOnSave = () => {\r\n setWhenBlockNavigation(false);\r\n };\r\n\r\n return (\r\n \r\n \r\n {(isOpen, onConfirm, onCancel) => (\r\n \r\n )}\r\n \r\n }\r\n classes={{ noActions: classes.noActions }}\r\n >\r\n \r\n }\r\n >\r\n {\r\n handleFormIsDirty(props.dirty);\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default FundTermsCreate;\r\n","import FundTermsIcon from '@material-ui/icons/Work';\r\nimport FundTermsList from './FundTermsList';\r\nimport FundTermsEdit from './FundTermsEdit';\r\nimport FundTermsCreate from './FundTermsCreate';\r\n\r\nexport default {\r\n create: FundTermsCreate,\r\n edit: FundTermsEdit,\r\n list: FundTermsList,\r\n icon: FundTermsIcon\r\n};\r\n","import React from 'react';\r\nimport {\r\n List,\r\n Datagrid,\r\n Responsive,\r\n TextInput,\r\n SimpleList,\r\n TopToolbar,\r\n Pagination\r\n} from 'react-admin';\r\nimport {\r\n predictiveSearchFormatter,\r\n predictiveSearchParser\r\n} from '../../core/utils';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport BulkActionDeleteButton from '../../core/components/BulkActionDeleteButton';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport DistributionListIcon from '@material-ui/icons/Subject';\r\nimport LinkField from '../../core/components/LinkField';\r\n\r\nconst useStyles = makeStyles({\r\n textInput: {\r\n minWidth: '225px'\r\n },\r\n dataGridHead: {\r\n '& tr': {\r\n '& th:nth-of-type(1)': {\r\n width: '24px'\r\n }\r\n }\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst DistributionListFilter = props => {\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nconst DistributionListTitle = props => {\r\n return (\r\n }\r\n hasCreatePermission={props.hasCreatePermission}\r\n />\r\n );\r\n};\r\n\r\nconst DistributionListList = props => {\r\n const classes = useStyles();\r\n const {\r\n hasDeletePermission,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n userProfile,\r\n ...rest\r\n } = props;\r\n\r\n return (\r\n \r\n }\r\n exporter={false}\r\n perPage={20}\r\n pagination={}\r\n filters={}\r\n bulkActionButtons={hasDeletePermission && }\r\n actions={}\r\n empty={}\r\n syncWithLocation\r\n >\r\n record.name}\r\n tertiaryText={() => ''}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default DistributionListList;\r\n","import { createContext } from 'react';\r\n\r\nexport const DistributionListContext = createContext(null);\r\n","const excelColumns = [\r\n { id: 'rowIndex', color: '#000000' },\r\n { id: 'email', color: '#000000' },\r\n { id: 'validationError', color: 'red' }\r\n];\r\n\r\nexport { excelColumns };\r\n","import React, { useState } from 'react';\r\nimport FileInput from './forked/input/FileInput';\r\nimport { Button, makeStyles } from '@material-ui/core';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport FileField from './forked/field/FileField';\r\nimport { ExcelIcon } from '../themes/icons/ExcelIcon';\r\nimport DistributionListApi from '../../core/apis/DistributionListApi';\r\nimport VirtualizedGrid from '../../core/components/VirtualizedGrid';\r\nimport { excelColumns } from '../../features/distributionlists/createsteps/RecipientsLookups';\r\nimport { saveAs } from 'file-saver';\r\n\r\nimport { FormDataConsumer, Loading } from 'react-admin';\r\nimport useNotifyServerError from '../hooks/useNotifyServerError';\r\n\r\nconst useStyles = makeStyles({\r\n inputField: {\r\n width: '48%'\r\n },\r\n validateButton: {\r\n marginLeft: '22%',\r\n marginBottom: '5px'\r\n },\r\n templateButton: {\r\n marginLeft: '4%',\r\n marginTop: '1.7%'\r\n },\r\n templateSpan: {\r\n color: '#2962FF',\r\n paddingLeft: '4px',\r\n fontSize: '15px'\r\n },\r\n noRows: {\r\n color: 'red',\r\n marginTop: '5px',\r\n marginBottom: '5px',\r\n display: 'inline-block',\r\n float: 'right'\r\n }\r\n});\r\n\r\nconst createCellStyle = (rowData, color) => {\r\n return {\r\n ...rowData.style,\r\n color: color,\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginLeft: '3px',\r\n borderTop: '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n};\r\n\r\nconst StyledFileInput = withStyles({\r\n dropZone: {\r\n background: '#ffffff',\r\n border: '1px dashed #E0E0E0'\r\n },\r\n removeButton: {\r\n textAlign: 'center',\r\n padding: '.5rem'\r\n }\r\n})(FileInput);\r\n\r\nconst ImportExcelGroup = props => {\r\n const classes = useStyles();\r\n const {\r\n variant,\r\n setIsNextAvailable,\r\n setPreselectedUsersEmails,\r\n setUserIdList\r\n } = props;\r\n const notifyServerError = useNotifyServerError();\r\n\r\n const [validateButtonVisibile, setValidateButtonVisibility] = useState(false);\r\n const [loadingDownload, setLoadingDownload] = useState(false);\r\n const [showGrid, setShowGrid] = useState(false);\r\n const [showNoRowsError, setShowNoRowsError] = useState(false);\r\n const [loaderVisible, setLoaderVisible] = useState(false);\r\n\r\n var [data, setData] = useState([\r\n {\r\n rowIndex: 'Row Number',\r\n email: 'Email',\r\n userId: 'User ID',\r\n validationError: 'Validation Error'\r\n }\r\n ]);\r\n\r\n const cleanUpData = value => {\r\n setData([\r\n {\r\n rowIndex: 'Row Number',\r\n email: 'Email',\r\n userId: 'User ID',\r\n validationError: 'Validation Error'\r\n }\r\n ]);\r\n setShowGrid(false);\r\n setShowNoRowsError(false);\r\n setIsNextAvailable(false);\r\n if (value) {\r\n setValidateButtonVisibility(true);\r\n } else {\r\n setValidateButtonVisibility(false);\r\n }\r\n };\r\n\r\n const columns = excelColumns.map(col => ({\r\n id: col.id,\r\n source: col.id,\r\n type: 'text',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = createCellStyle(row_data, col.color);\r\n return (\r\n \r\n {rowVal[column.source]}\r\n \r\n );\r\n }\r\n }));\r\n\r\n const handleClickValidation = async values => {\r\n const formData = new FormData();\r\n if (values.file) {\r\n formData.append('file', values.file.rawFile, values.file.title);\r\n }\r\n setValidateButtonVisibility(false);\r\n\r\n setLoaderVisible(true);\r\n DistributionListApi.validateImportFromExcel(formData)\r\n .then(responseData => {\r\n setData(data.concat(responseData));\r\n var arrayData = data.concat(responseData);\r\n const validationErrors = arrayData\r\n .slice(1)\r\n .filter(r => r.validationError !== null);\r\n if (responseData.length === 0) {\r\n setShowNoRowsError(true);\r\n }\r\n if (validationErrors.length === 0 && responseData.length > 0) {\r\n setIsNextAvailable(true);\r\n const emails = arrayData.slice(1).map(r => r.email);\r\n const userIds = arrayData.slice(1).map(u => u.userId);\r\n setPreselectedUsersEmails(emails);\r\n setUserIdList(userIds);\r\n }\r\n setLoaderVisible(false);\r\n setShowGrid(true);\r\n })\r\n .catch(e => {\r\n setLoaderVisible(false);\r\n notifyServerError(e);\r\n });\r\n };\r\n\r\n const handleDownloadClick = async () => {\r\n setLoadingDownload(true);\r\n DistributionListApi.downloadDistributionListImportTemplate()\r\n .then(resp => {\r\n const fileName = 'Distribution List Import Template.xlsx';\r\n saveAs(resp, fileName);\r\n setLoadingDownload(false);\r\n })\r\n .catch(e => {\r\n setLoadingDownload(false);\r\n notifyServerError(e);\r\n });\r\n };\r\n\r\n return (\r\n
    \r\n cleanUpData(value)}\r\n className={classes.inputField}\r\n setIsNextAvailable={props.setIsNextAvailable}\r\n >\r\n \r\n \r\n \r\n \r\n Download Excel Template\r\n \r\n {loaderVisible && }\r\n \r\n {({ formData, ...rest }) =>\r\n formData &&\r\n formData.recipientsChoice === 'FILE' &&\r\n validateButtonVisibile && (\r\n
    \r\n handleClickValidation(formData)}\r\n color=\"primary\"\r\n variant=\"contained\"\r\n >\r\n Validate\r\n \r\n
    \r\n )\r\n }\r\n
    \r\n {showGrid && (\r\n
    \r\n \r\n {showNoRowsError && (\r\n \r\n There are no rows in excel file to be validated. Please, provide\r\n excel file with data.\r\n \r\n )}\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default ImportExcelGroup;\r\n","import React, { useContext, useState } from 'react';\r\nimport {\r\n Query,\r\n ReferenceArrayInput,\r\n ReferenceInput,\r\n required,\r\n SelectInput,\r\n TextInput,\r\n RadioButtonGroupInput,\r\n FormDataConsumer,\r\n useGetList,\r\n Loading,\r\n Error\r\n} from 'react-admin';\r\nimport { Grid, Typography, makeStyles } from '@material-ui/core';\r\nimport { FormSpy } from 'react-final-form';\r\n\r\nimport DoubleListArrayInput from '../../../core/components/inputs/DoubleListArrayInput';\r\nimport { DistributionListContext } from './DistributionListContext';\r\nimport VirtualizedGrid from '../../../core/components/VirtualizedGrid';\r\nimport { excelColumns } from './RecipientsLookups';\r\nimport ImportExcelGroup from '../../../core/components/ImportExcelGroup';\r\nimport { fieldLengthValidator } from '../../../core/utils/index';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst useStyles = makeStyles({\r\n header: {\r\n paddingTop: '0px',\r\n fontSize: 20,\r\n fontWeight: 600\r\n },\r\n description: {\r\n display: 'flex',\r\n marginTop: '7px',\r\n fontSize: 14\r\n },\r\n radioContainer: {\r\n '& span': {\r\n marginTop: '-17px',\r\n fontSize: '14px'\r\n }\r\n },\r\n gridItem: {\r\n height: 'calc(100vh - 400px)'\r\n },\r\n gridLarge: {\r\n maxWidth: '47.83333%',\r\n flexBasis: '47.83333%',\r\n display: 'flex',\r\n flexDirection: 'row'\r\n },\r\n loading: {\r\n alignSelf: 'center'\r\n }\r\n});\r\n\r\nconst radioContainer = {\r\n marginTop: '-25px'\r\n};\r\n\r\nconst validateFunds = value => {\r\n if (!value || (value && value.length < 1)) {\r\n return 'At least one Fund must be selected';\r\n }\r\n return undefined;\r\n};\r\n\r\nconst emptySubject = value => {\r\n const subjectValid = !!value.trim();\r\n\r\n if (!subjectValid) {\r\n return `Subject can't be empty space(s)`;\r\n }\r\n};\r\n\r\n/**\r\n * Wrap DoubleListArrayInput with list of fund families ==> groups property\r\n */\r\nconst FundDoubleList = ({\r\n classes,\r\n fundTagsLoading,\r\n fundTagsError,\r\n ...props\r\n}) => (\r\n \r\n {({ data, _total, loading, error }) => {\r\n if (loading || fundTagsLoading) {\r\n return ;\r\n } else if (error || fundTagsError) {\r\n return ;\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n }}\r\n \r\n);\r\n\r\nconst RecipientsStep = props => {\r\n const { dlContext, setDlContext } = useContext(DistributionListContext);\r\n const classes = useStyles();\r\n const {\r\n setIsNextAvailable,\r\n variant,\r\n onSubmitEnd,\r\n setPreselectedUsersEmails,\r\n setUserIdList,\r\n permissions\r\n } = props;\r\n\r\n const { distributionList = { funds: [] } } = dlContext;\r\n\r\n const hasImportPermission =\r\n permissions && permissions.includes('AUTH_IMPORT_DISTRIBUTION_LIST_EXCEL');\r\n\r\n const data = [\r\n {\r\n rowIndex: 'Row Number',\r\n email: 'Email',\r\n validationError: 'Validation Error'\r\n }\r\n ];\r\n\r\n const [showGrid, setShowGrid] = useState(false);\r\n\r\n const setRecipients = async values => {\r\n const newDistributionList = {\r\n name: values.name,\r\n templateId: values.templateId,\r\n funds: values.funds\r\n };\r\n\r\n setDlContext({\r\n ...dlContext,\r\n currentForm: undefined,\r\n distributionList: newDistributionList\r\n });\r\n onSubmitEnd();\r\n };\r\n\r\n const createCellStyle = (rowData, color) => {\r\n return {\r\n ...rowData.style,\r\n color: color,\r\n fontSize: '14px',\r\n fontWeight: '400',\r\n textAlign: 'left',\r\n background: 'white',\r\n display: 'flex',\r\n alignItems: 'center',\r\n marginLeft: '3px',\r\n borderTop: '1px solid #E0E0E0',\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n };\r\n };\r\n\r\n const columns = excelColumns.map(col => ({\r\n id: col.id,\r\n source: col.id,\r\n type: 'text',\r\n renderer: params => {\r\n const { column, row_data, rowVal } = params;\r\n const cellStyle = createCellStyle(row_data, col.color);\r\n return (\r\n \r\n {rowVal[column.source]}\r\n \r\n );\r\n }\r\n }));\r\n\r\n const {\r\n data: fundTags,\r\n loading: fundTagsLoading,\r\n error: fundTagsError\r\n } = useGetList('fundtags', null, undefined, {\r\n orderBy: 'name',\r\n orderDirection: 'ASC'\r\n });\r\n\r\n return (\r\n \r\n \r\n {formprops => {\r\n // Store current form API object\r\n if (dlContext.currentForm === undefined) {\r\n setDlContext({ ...dlContext, currentForm: formprops.form });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Create List of Recipients\r\n \r\n \r\n Set the Details of the Distribution list such as name, email\r\n template. Create List of Recipients by selecting Funds.\r\n \r\n \r\n \r\n \r\n \r\n emptySubject(value),\r\n fieldLengthValidator(75)\r\n ]}\r\n options={{ autoComplete: 'off' }}\r\n variant={variant}\r\n helperText={false}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {hasImportPermission && (\r\n {\r\n setIsNextAvailable(value !== 'FILE');\r\n setShowGrid(false);\r\n setPreselectedUsersEmails([]);\r\n setUserIdList([]);\r\n }}\r\n />\r\n )}\r\n
    \r\n
    \r\n \r\n \r\n {({ formData, ..._rest }) =>\r\n formData &&\r\n formData.recipientsChoice === 'FUND' && (\r\n \r\n \r\n \r\n )\r\n }\r\n \r\n \r\n {({ formData, ..._rest }) =>\r\n formData &&\r\n formData.recipientsChoice === 'FILE' && (\r\n \r\n )\r\n }\r\n \r\n {showGrid && (\r\n \r\n )}\r\n \r\n
    \r\n );\r\n }}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default RecipientsStep;\r\n","import React, { useRef, useState, useEffect } from 'react';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { TextInput, ReferenceArrayInput } from 'react-admin';\r\nimport { Grid, makeStyles } from '@material-ui/core';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\n\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport SimpleFormWithSave from '../../../core/components/form/SimpleFormWithSave';\r\nimport GridInput from '../../../core/components/inputs/GridInput';\r\nimport CheckBoxInput from '../../../core/components/inputs/CheckBoxInput';\r\nimport { isValidMultipleDomains } from '../../../core/utils/index';\r\n\r\nconst useStyles = makeStyles({\r\n checkboxLabel: {\r\n color: '#757575'\r\n },\r\n checkbox: {\r\n display: 'flex',\r\n marginRight: '12px',\r\n '& label': {\r\n color: '#212121',\r\n display: 'flex',\r\n alignItems: 'center'\r\n }\r\n },\r\n firstCheckbox: {\r\n display: 'flex',\r\n marginRight: '12px',\r\n '& label': {\r\n color: '#212121',\r\n display: 'flex',\r\n alignItems: 'center'\r\n },\r\n marginLeft: '-7px'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n form: {\r\n '& > div': {\r\n padding: '0px !important'\r\n }\r\n }\r\n});\r\n\r\n/**\r\n * Form level validation for Option\r\n * @param {*} values Option values\r\n * @returns errors object\r\n */\r\nexport const validateOption = values => {\r\n const errors = {};\r\n if (!values.includeUsersWhoHaveNotLoggedIn && !values.includeLoggedInUsers) {\r\n errors.includeUsersWhoHaveNotLoggedIn =\r\n 'At least one of: Not Logged-In Contacts, Logged-In Contacts must be checked';\r\n }\r\n return errors;\r\n};\r\n\r\n/**\r\n * Validate domains value\r\n * @param {*} value\r\n */\r\nconst validateDomains = value => {\r\n if (value && value.length > 0 && !isValidMultipleDomains(value)) {\r\n return 'Please enter a valid domain or multiple domain separated by comma';\r\n }\r\n return undefined;\r\n};\r\n\r\n/**\r\n * Parse a comma separated list of domains as an array\r\n * @param {*} value comma separated list\r\n * @returns array of domains\r\n */\r\nconst domainsParser = value => {\r\n if (value && value.length > 0) {\r\n return value.split(',');\r\n }\r\n return [];\r\n};\r\n\r\nconst AdvancedOptionsDialog = props => {\r\n const classes = useStyles();\r\n const {\r\n handleClose,\r\n showDialog,\r\n option = {},\r\n handleSetAdvancedOptions\r\n } = props;\r\n\r\n const handleApplyClick = advancedFormProps => {\r\n // Trigger a submit of our custom form\r\n advancedFormProps.form.submit();\r\n };\r\n\r\n const formRef = useRef();\r\n const [contactsCheckBoxDisabled, setContactsCheckBoxDisabled] = useState(\r\n true\r\n );\r\n\r\n useEffect(() => {\r\n if (!formRef.current) return;\r\n if (\r\n contactsCheckBoxDisabled &&\r\n formRef.current.getState().values.includeUsersWhoDidNotAccessDocument\r\n ) {\r\n formRef.current.change('includeUsersWhoDidNotAccessDocument', false);\r\n }\r\n }, [contactsCheckBoxDisabled]);\r\n\r\n const handleFormChange = values => {\r\n if (!values || !formRef.current) return;\r\n if (\r\n formRef.current.getState().values.resourceUploadIds === undefined ||\r\n formRef.current.getState().values.resourceUploadIds.length === 0\r\n ) {\r\n if (!contactsCheckBoxDisabled) {\r\n setContactsCheckBoxDisabled(true);\r\n }\r\n } else if (\r\n formRef.current.getState().values.resourceUploadIds &&\r\n formRef.current.getState().values.resourceUploadIds.length > 0\r\n ) {\r\n if (contactsCheckBoxDisabled) {\r\n setContactsCheckBoxDisabled(false);\r\n }\r\n }\r\n };\r\n const handleSubmit = values => {\r\n handleSetAdvancedOptions(values);\r\n handleClose();\r\n };\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n >\r\n \r\n handleFormChange(formProps)}\r\n >\r\n \r\n {advancedFormProps => {\r\n formRef.current = advancedFormProps.form;\r\n const formState = advancedFormProps.form.getState() || {};\r\n handleFormChange(advancedFormProps);\r\n return (\r\n <>\r\n \r\n Advanced Options for {option.fundId} Fund\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n return event;\r\n }}\r\n />\r\n \r\n \r\n {\r\n return event;\r\n }}\r\n />\r\n \r\n \r\n {\r\n return event;\r\n }}\r\n />\r\n \r\n \r\n {\r\n return event;\r\n }}\r\n />\r\n \r\n \r\n {\r\n return event;\r\n }}\r\n />\r\n \r\n \r\n {formState &&\r\n formState.errors.includeUsersWhoHaveNotLoggedIn && (\r\n \r\n {\r\n formState.errors\r\n .includeUsersWhoHaveNotLoggedIn\r\n }\r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n Cancel\r\n \r\n
    \r\n {\r\n return event;\r\n }}\r\n />\r\n handleApplyClick(advancedFormProps)}\r\n >\r\n Apply\r\n \r\n
    \r\n \r\n );\r\n }}\r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default AdvancedOptionsDialog;\r\n","import React, { useState, useMemo } from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport Button from '@material-ui/core/Button';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { makeStyles } from '@material-ui/core';\r\nimport { omit } from 'lodash';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\n\r\nimport AdvancedOptionsDialog from './AdvancedOptionsDialog';\r\n\r\nconst useStyles = makeStyles({\r\n tableWrapper: {\r\n maxHeight: '60vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n checkboxContainer: {\r\n display: 'flex',\r\n minWidth: '175px',\r\n alignItems: 'center'\r\n },\r\n checkbox: {\r\n padding: '0'\r\n },\r\n button: {\r\n padding: '0'\r\n }\r\n});\r\n\r\nconst OptionsGrid = props => {\r\n const classes = useStyles();\r\n const [showAdvancedDialog, setShowAdvancedDialog] = useState(false);\r\n const [currentOption, setCurrentOption] = useState();\r\n\r\n const { choices, formprops, meta } = props;\r\n const { error, touched } = meta;\r\n const {\r\n values: { options = [] }\r\n } = formprops;\r\n\r\n const { selectedAllContact = [], selectedCcContacts = [] } = useMemo(() => {\r\n const selectedAllContact = [];\r\n const selectedCcContacts = [];\r\n options.forEach(option => {\r\n if (option.includeAllPrimary) {\r\n selectedAllContact.push(option.fundId);\r\n }\r\n if (option.includeAllWithCC) {\r\n selectedCcContacts.push(option.fundId);\r\n }\r\n });\r\n return { selectedAllContact, selectedCcContacts };\r\n }, [options]);\r\n\r\n /**\r\n * Handle checkbox select includeAllPrimary for the passed fund\r\n * @param {*} fundId\r\n */\r\n const handleAllContactSelect = fundId => {\r\n const array = [...options];\r\n const index = array.findIndex(obj => obj.fundId === fundId);\r\n\r\n if (index >= 0) {\r\n if (array[index].includeAllPrimary && !array[index].includeAllWithCC) {\r\n // remove option from the list when both contact and contactCc become unselected\r\n array.splice(index, 1);\r\n } else {\r\n array[index] = {\r\n ...array[index],\r\n includeAllPrimary: !array[index].includeAllPrimary\r\n };\r\n }\r\n } else {\r\n array.push({\r\n fundId,\r\n includeAllPrimary: true,\r\n includeUsersWhoHaveNotLoggedIn: true,\r\n includeLoggedInUsers: true,\r\n includeInactiveInvestors: true,\r\n includeAdministrator: false,\r\n includeUsersWhoDidNotAccessDocument: false\r\n });\r\n }\r\n\r\n formprops.form.change('options', array);\r\n };\r\n\r\n /**\r\n * Handle checkbox select includeAllPrimary for ALL funds\r\n */\r\n const handleAllContactsSelectAll = () => {\r\n let array = [...options];\r\n if (selectedAllContact.length < choices.length) {\r\n choices.forEach(choice => {\r\n const index = array.findIndex(obj => obj.fundId === choice.id);\r\n if (index >= 0) {\r\n array[index] = {\r\n ...array[index],\r\n includeAllPrimary: true\r\n };\r\n } else {\r\n array.push({\r\n fundId: choice.id,\r\n includeAllPrimary: true,\r\n includeUsersWhoHaveNotLoggedIn: true,\r\n includeLoggedInUsers: true,\r\n includeInactiveInvestors: true,\r\n includeAdministrator: false,\r\n includeUsersWhoDidNotAccessDocument: false\r\n });\r\n }\r\n });\r\n } else {\r\n // remove options from the list when both contact and contactCc become unselected\r\n array = array.filter(option => option.includeAllWithCC);\r\n array.forEach((option, index) => {\r\n array[index] = {\r\n ...option,\r\n includeAllPrimary: false\r\n };\r\n });\r\n }\r\n\r\n formprops.form.change('options', array);\r\n };\r\n\r\n /**\r\n * Handle checkbox select includeAllWithCC for the passed fund\r\n * @param {*} fundId\r\n */\r\n const handleCcContactSelect = fundId => {\r\n const array = [...options];\r\n const index = array.findIndex(obj => obj.fundId === fundId);\r\n\r\n if (index >= 0) {\r\n if (!array[index].includeAllPrimary && array[index].includeAllWithCC) {\r\n // remove option from the list when both contact and contactCc become unselected\r\n array.splice(index, 1);\r\n } else {\r\n array[index] = {\r\n ...array[index],\r\n includeAllWithCC: !array[index].includeAllWithCC\r\n };\r\n }\r\n } else {\r\n array.push({\r\n fundId,\r\n includeAllWithCC: true,\r\n includeUsersWhoHaveNotLoggedIn: true,\r\n includeLoggedInUsers: true,\r\n includeInactiveInvestors: true,\r\n includeAdministrator: false,\r\n includeUsersWhoDidNotAccessDocument: false\r\n });\r\n }\r\n formprops.form.change('options', array);\r\n };\r\n\r\n /**\r\n * Handle checkbox select includeAllWithCC for ALL funds\r\n */\r\n const handleCcContactsSelectAll = () => {\r\n let array = [...options];\r\n if (selectedCcContacts.length < choices.length) {\r\n choices.forEach(choice => {\r\n const index = array.findIndex(obj => obj.fundId === choice.id);\r\n if (index >= 0) {\r\n array[index] = {\r\n ...array[index],\r\n includeAllWithCC: true\r\n };\r\n } else {\r\n array.push({\r\n fundId: choice.id,\r\n includeAllWithCC: true,\r\n includeUsersWhoHaveNotLoggedIn: true,\r\n includeLoggedInUsers: true,\r\n includeInactiveInvestors: true,\r\n includeAdministrator: false,\r\n includeUsersWhoDidNotAccessDocument: false\r\n });\r\n }\r\n });\r\n } else {\r\n // remove options from the list when both contact and contactCc become unselected\r\n array = array.filter(option => option.includeAllPrimary);\r\n array.forEach((option, index) => {\r\n array[index] = {\r\n ...option,\r\n includeAllWithCC: false\r\n };\r\n });\r\n }\r\n\r\n formprops.form.change('options', array);\r\n };\r\n\r\n const handleAdvancedDialogToggle = toggle => {\r\n setShowAdvancedDialog(toggle);\r\n };\r\n\r\n const handleAdvancedClick = fundId => {\r\n const option = options.find(obj => obj.fundId === fundId);\r\n\r\n setCurrentOption(\r\n option || {\r\n fundId,\r\n includeUsersWhoHaveNotLoggedIn: true,\r\n includeLoggedInUsers: true,\r\n includeInactiveInvestors: true,\r\n includeAdministrator: false,\r\n includeUsersWhoDidNotAccessDocument: false\r\n }\r\n );\r\n setShowAdvancedDialog(true);\r\n };\r\n\r\n const handleSetAdvancedOptions = advancedOptions => {\r\n const array = [...options];\r\n\r\n if (advancedOptions.applyToAll) {\r\n const anonAdvancedOptions = omit({ ...advancedOptions }, [\r\n 'fundId',\r\n 'includeAllPrimary',\r\n 'includeAllWithCC',\r\n 'applyToAll'\r\n ]);\r\n choices.forEach(choice => {\r\n const index = array.findIndex(obj => obj.fundId === choice.id);\r\n if (index >= 0) {\r\n array[index] = {\r\n ...array[index],\r\n ...anonAdvancedOptions\r\n };\r\n } else {\r\n array.push({\r\n fundId: choice.id,\r\n ...anonAdvancedOptions\r\n });\r\n }\r\n });\r\n } else {\r\n const anonAdvancedOptions = omit({ ...advancedOptions }, ['applyToAll']);\r\n const index = array.findIndex(\r\n obj => obj.fundId === advancedOptions.fundId\r\n );\r\n if (index >= 0) {\r\n array[index] = {\r\n ...array[index],\r\n ...anonAdvancedOptions\r\n };\r\n } else {\r\n array.push({\r\n ...anonAdvancedOptions\r\n });\r\n }\r\n }\r\n\r\n formprops.form.change('options', array);\r\n };\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n Fund\r\n \r\n
    \r\n 0 &&\r\n selectedAllContact.length < choices.length\r\n }\r\n checked={\r\n selectedAllContact.length > 0 &&\r\n selectedAllContact.length === choices.length\r\n }\r\n onChange={handleAllContactsSelectAll}\r\n />\r\n Include All Contacts\r\n
    \r\n
    \r\n \r\n
    \r\n 0 &&\r\n selectedCcContacts.length < choices.length\r\n }\r\n checked={\r\n selectedCcContacts.length > 0 &&\r\n selectedCcContacts.length === choices.length\r\n }\r\n onChange={handleCcContactsSelectAll}\r\n />\r\n Include CC Contacts\r\n
    \r\n
    \r\n Advanced Options\r\n
    \r\n
    \r\n \r\n {choices.map(choice => {\r\n return (\r\n \r\n {choice.name}\r\n \r\n handleAllContactSelect(choice.id)}\r\n />\r\n \r\n \r\n handleCcContactSelect(choice.id)}\r\n />\r\n \r\n \r\n handleAdvancedClick(choice.id)}\r\n >\r\n Advanced\r\n \r\n \r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n {!!(touched && error) && {error}}\r\n handleAdvancedDialogToggle(false)}\r\n handleSetAdvancedOptions={handleSetAdvancedOptions}\r\n />\r\n
    \r\n );\r\n};\r\n\r\nexport default OptionsGrid;\r\n","import React, { useContext } from 'react';\r\nimport { ReferenceArrayInput } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { Grid, Typography, makeStyles } from '@material-ui/core';\r\n\r\nimport OptionsGrid from './OptionsGrid';\r\nimport { DistributionListContext } from './DistributionListContext';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst useStyles = makeStyles({\r\n header: {\r\n paddingTop: '0px',\r\n fontSize: 20,\r\n fontWeight: 600\r\n },\r\n description: {\r\n display: 'flex',\r\n marginTop: '7px',\r\n fontSize: 14\r\n }\r\n});\r\n\r\n// Validate we have some contacts selected\r\n// Form level validator\r\nconst validateOptions = ({ options }) => {\r\n const errors = {};\r\n if (options === undefined || options.length < 1) {\r\n errors.funds = 'At least one Contact/Contact CC must be selected';\r\n } else {\r\n options.forEach(option => {\r\n if (!option.includeAllPrimary && !option.includeAllWithCC) {\r\n errors.funds = `For every filter at least one Contact/Contact CC must be selected`;\r\n }\r\n });\r\n }\r\n\r\n return errors;\r\n};\r\n\r\nconst FundsArrayInput = props => {\r\n const limitToCall = 50;\r\n if (props.distributionList.funds.length < limitToCall) {\r\n return (\r\n \r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n};\r\n\r\nconst OptionsArray = props => {\r\n let preselectedChoices = props.choices.filter(choice =>\r\n props.distributionList.funds.includes(choice.id)\r\n );\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nconst OptionsStep = props => {\r\n const { dlContext, setDlContext } = useContext(DistributionListContext);\r\n const classes = useStyles();\r\n\r\n const { variant, onSubmitEnd, preselectedUsersEmails, userIdList } = props;\r\n const { distributionList = {}, options = [] } = dlContext;\r\n\r\n const setOptions = async values => {\r\n var options = values.options;\r\n if (\r\n options &&\r\n preselectedUsersEmails &&\r\n preselectedUsersEmails.length > 0\r\n ) {\r\n options.forEach(o => (o.preselectedUsersEmails = preselectedUsersEmails));\r\n }\r\n setDlContext({\r\n ...dlContext,\r\n currentForm: undefined,\r\n options: options\r\n });\r\n onSubmitEnd();\r\n };\r\n\r\n return (\r\n \r\n \r\n {formprops => {\r\n // Store current form API object\r\n if (dlContext.currentForm === undefined) {\r\n setDlContext({ ...dlContext, currentForm: formprops.form });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Options\r\n \r\n \r\n Check if you want to Include all Contacts and the CC Contact\r\n assigned to the listed Funds, or customize the options for\r\n each Fund by clicking Advanced link\r\n \r\n \r\n \r\n {Array.isArray(distributionList.funds) &&\r\n distributionList.funds.length > 0 &&\r\n preselectedUsersEmails &&\r\n preselectedUsersEmails.length < 1 && (\r\n \r\n )}\r\n \r\n \r\n {preselectedUsersEmails && preselectedUsersEmails.length > 0 && (\r\n 0\r\n ? `[${userIdList}]`\r\n : [],\r\n chunk: true,\r\n getFundsForDistributionList: true\r\n }}\r\n >\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n }}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default OptionsStep;\r\n","import { Button, Grid } from '@material-ui/core';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport CKEditor from 'ckeditor4-react';\r\nimport { Labeled } from 'react-admin';\r\nimport { indexOf } from 'lodash';\r\nimport React, { useCallback, useEffect, useState } from 'react';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport PreviewEmailApi from '../../../core/apis/PreviewEmailApi';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\nimport RichTextInput from '../../../core/components/inputs/RichTextInput';\r\n\r\n/**\r\n * Email preview dialog for distribution list\r\n */\r\n\r\nconst EmailPreviewDialog = ({\r\n showDialog,\r\n formData,\r\n handleDialogToggle,\r\n resourceUploadId\r\n}) => {\r\n // Unsubstituted subject and body come from formData\r\n const { subject, msgBody, selectedItems } = formData;\r\n const [substitutedSubject, setSubstitutedSubject] = useState();\r\n const [substitutedBody, setSubstitutedBody] = useState();\r\n\r\n // Current Distribution list item we are previewing\r\n const [currentItem, setCurrentItem] = useState(0);\r\n const item = selectedItems[currentItem];\r\n\r\n // Perform the variable substitution by calling the API\r\n const [loading, setLoading] = useState(false);\r\n const previewItem = useCallback(\r\n async item => {\r\n if (item) {\r\n setLoading(true);\r\n\r\n const data = await PreviewEmailApi.previewforSavedDL(\r\n subject,\r\n msgBody,\r\n item.email,\r\n item.fundId,\r\n item.investors.length === 1 ? item.investors[0].id : '*',\r\n false,\r\n resourceUploadId\r\n );\r\n\r\n setSubstitutedSubject(data.subject);\r\n setSubstitutedBody(data.msgBody);\r\n setLoading(false);\r\n }\r\n },\r\n [subject, msgBody, resourceUploadId]\r\n );\r\n\r\n // Go to next/previous item\r\n const nextItem = useCallback(() => {\r\n const newItem =\r\n currentItem + 1 >= selectedItems.length ? 0 : currentItem + 1;\r\n setCurrentItem(newItem);\r\n }, [currentItem, selectedItems]);\r\n\r\n const previousItem = useCallback(() => {\r\n const prevItem =\r\n currentItem - 1 < 0 ? selectedItems.length - 1 : currentItem - 1;\r\n setCurrentItem(prevItem);\r\n }, [currentItem, selectedItems]);\r\n\r\n // Preview current item whenver index has changed\r\n useEffect(() => {\r\n if (showDialog) {\r\n previewItem(selectedItems[currentItem]);\r\n }\r\n }, [selectedItems, currentItem, previewItem, showDialog]);\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleDialogToggle();\r\n }}\r\n >\r\n \r\n {'Preview Email'}\r\n \r\n \r\n \r\n {selectedItems.length === 0 ? (\r\n \r\n No contacts are selected. Please select some contacts before see\r\n the Preview email.\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n \r\n {selectedItems.length === 0 ? (\r\n <>\r\n ) : (\r\n \r\n
    \r\n {`${item.firstName} ${item.lastName} / ${item.fundName}`}\r\n
    \r\n {loading && }\r\n {`Contact: ${indexOf(selectedItems, item) + 1} of ${\r\n selectedItems.length\r\n }`}\r\n \r\n \r\n
    \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default EmailPreviewDialog;\r\n","import React, { useMemo, useState } from 'react';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport Button from '@material-ui/core/Button';\r\nimport { FormSpy } from 'react-final-form';\r\nimport { Grid, makeStyles } from '@material-ui/core';\r\nimport { useNotify, FormDataConsumer, SaveButton } from 'react-admin';\r\nimport { defaultTo } from 'lodash';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport SimpleFormWithSave from '../../../core/components/form/SimpleFormWithSave';\r\nimport EmailForm from '../../resourceuploads/uploadsteps/emailDialog/EmailForm';\r\nimport DistributionListApi from '../../../core/apis/DistributionListApi';\r\nimport DistributionListContactDialog from '../../testemail/DistributionListContactDialog';\r\nimport EmailPreviewDialog from './EmailPreviewDialog';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\n\r\nconst useStyles = makeStyles({\r\n paperWidthFalse: {\r\n height: 'inherit'\r\n },\r\n primaryButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n secondaryButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n },\r\n marginLeft: '10px'\r\n },\r\n form: {\r\n height: 'inherit',\r\n '& > div': {\r\n padding: '0px !important',\r\n height: 'inherit'\r\n },\r\n '& > div > div': {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n height: 'inherit'\r\n }\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n }\r\n});\r\n\r\nconst splitEmails = value => {\r\n if (value && value.length > 0) {\r\n const emailParts = value.split(';');\r\n const mailDto = [];\r\n for (var i = 0; i <= emailParts.length - 1; i++) {\r\n var emailAddress = emailParts[i].trim();\r\n if (emailAddress !== '') {\r\n mailDto.push({\r\n name: null,\r\n address: emailAddress\r\n });\r\n }\r\n }\r\n return mailDto;\r\n }\r\n return [];\r\n};\r\n\r\nconst getResourceUploadId = filters => {\r\n const resourceuploadId =\r\n filters &&\r\n filters[0] &&\r\n filters[0].resourceUploadIds &&\r\n filters[0].resourceUploadIds.length === 1\r\n ? filters[0].resourceUploadIds[0]\r\n : null;\r\n if (resourceuploadId === null) {\r\n return null;\r\n }\r\n for (let f of filters) {\r\n if (f && f.resourceUploadIds && f.resourceUploadIds.length === 1) {\r\n if (resourceuploadId !== f.resourceUploadIds[0]) {\r\n return null;\r\n }\r\n }\r\n }\r\n return resourceuploadId;\r\n};\r\n\r\nconst EmailDialog = props => {\r\n const [\r\n showDistributionListTestEmailDialog,\r\n setShowDistributionListTestEmailDialog\r\n ] = useState(false);\r\n\r\n const [\r\n showDistributionListPreviewEmailDialog,\r\n setShowDistributionListPreviewEmailDialog\r\n ] = useState(false);\r\n\r\n const [submitting, setSubmitting] = useState(false);\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const classes = useStyles();\r\n const {\r\n handleClose,\r\n showDialog,\r\n choices,\r\n recipients,\r\n templateId,\r\n distributionListName = 'Unsaved Distribution List',\r\n variableType = 'distributionList',\r\n distributionListId,\r\n userProfile,\r\n dlOptions\r\n } = props;\r\n\r\n const initRecipients = useMemo(() => {\r\n const initRecipients = [];\r\n recipients.forEach(recipient => {\r\n const choice = choices.find(\r\n obj => obj.userId === recipient.userId && obj.fundId === recipient.fund\r\n );\r\n if (choice) {\r\n if (recipient.includeAllCcEmails) {\r\n initRecipients.push(choice);\r\n } else {\r\n initRecipients.push({ ...choice, ccEmails: [] });\r\n }\r\n }\r\n });\r\n return initRecipients;\r\n }, [choices, recipients]);\r\n\r\n const handleSendClick = formProps => {\r\n // Trigger a submit of our custom form\r\n formProps.form.submit();\r\n };\r\n\r\n const handleSubmit = async values => {\r\n setSubmitting(true);\r\n const distributionListRecipients = values.selectedItems.map(item => {\r\n return {\r\n userId: item.userId,\r\n name: `${item.firstName} ${item.lastName}`,\r\n emailAddress: item.email,\r\n fundId: item.fundId,\r\n investorId: item.investors.length === 1 ? item.investors[0].id : '*',\r\n ccEmails: item.ccEmails\r\n };\r\n });\r\n\r\n const getBase64 = file => {\r\n return new Promise((resolve, reject) => {\r\n let reader = new FileReader();\r\n reader.readAsDataURL(file);\r\n reader.onload = function() {\r\n resolve(reader.result);\r\n };\r\n });\r\n };\r\n\r\n const attachments = await defaultTo(values.attachments, []).map(\r\n async item => {\r\n let base64Content = await getBase64(item.rawFile);\r\n // base64Content have form of: \"mimeType;base64,fileCodedInBase64\"\r\n let splitedRawFileData = base64Content.split(',');\r\n let base64FileContent = splitedRawFileData[1];\r\n return {\r\n content: base64FileContent,\r\n mimeType: item.type,\r\n fileName: item.title,\r\n disposition: null,\r\n contentId: null\r\n };\r\n }\r\n );\r\n\r\n let body = {\r\n distributionListRecipients,\r\n sendEmailDto: {\r\n from: {\r\n fromAddress: {\r\n name: values.alias,\r\n address: values.from\r\n },\r\n replyToAddress: {\r\n name: null,\r\n address: values.aliasTo\r\n },\r\n rememberEmailAddressAlias: !!values.rememberMe\r\n },\r\n cc: splitEmails(values.cc),\r\n bcc: splitEmails(values.bcc),\r\n subject: values.subject,\r\n msgBody: values.msgBody,\r\n attachments: await Promise.all(attachments),\r\n isTestEmail: false\r\n },\r\n filters: dlOptions\r\n };\r\n\r\n if (distributionListId) {\r\n body = { ...body, distributionListId };\r\n }\r\n\r\n try {\r\n await DistributionListApi.sendMail(body);\r\n notify('ra.notification.distribution_email_sent');\r\n } catch (error) {\r\n notifyServerError(error);\r\n } finally {\r\n setSubmitting(false);\r\n handleClose();\r\n }\r\n };\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n handleClose();\r\n }}\r\n disableEnforceFocus={true}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n \r\n {formProps => {\r\n return (\r\n <>\r\n \r\n Edit Email\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {({ formData, ...rest }) =>\r\n formData && (\r\n \r\n )\r\n }\r\n \r\n \r\n {({ formData, ...rest }) =>\r\n formData && (\r\n \r\n setShowDistributionListPreviewEmailDialog(\r\n !showDistributionListPreviewEmailDialog\r\n )\r\n }\r\n formData={formData}\r\n resourceUploadId={getResourceUploadId(dlOptions)}\r\n {...formProps}\r\n />\r\n )\r\n }\r\n \r\n \r\n \r\n
    \r\n \r\n setShowDistributionListTestEmailDialog(\r\n !showDistributionListTestEmailDialog\r\n )\r\n }\r\n >\r\n Test Email\r\n \r\n \r\n setShowDistributionListPreviewEmailDialog(\r\n !showDistributionListPreviewEmailDialog\r\n )\r\n }\r\n >\r\n Preview Email\r\n \r\n
    \r\n handleSendClick(formProps)}\r\n color=\"primary\"\r\n disabled={submitting}\r\n variant=\"contained\"\r\n className={classes.button}\r\n label={'Send Email'}\r\n icon={<>}\r\n />\r\n
    \r\n \r\n );\r\n }}\r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EmailDialog;\r\n","import React, {\r\n useMemo,\r\n useState,\r\n useCallback,\r\n useEffect,\r\n useRef\r\n} from 'react';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { makeStyles, Button, Grid, TablePagination } from '@material-ui/core';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport TableSortLabel from '@material-ui/core/TableSortLabel';\r\n\r\nimport PopupField from '../../../core/components/grid/PopupField';\r\nimport EmailDialog from './EmailDialog';\r\nimport { useNotify, TextInput, SaveButton } from 'react-admin';\r\nimport { saveAs } from 'file-saver';\r\nimport DistributionListApi from '../../../core/apis/DistributionListApi';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogTitleWithCloseButton from '../../../core/components/DialogTitleWithCloseButton';\r\nimport { difference } from 'lodash';\r\nimport { splitAndTrimString } from '../../../core/utils/index';\r\n\r\nconst useStyles = makeStyles({\r\n tableWrapper: {\r\n maxHeight: '60vh',\r\n overflow: 'auto',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n checkboxContainer: {\r\n display: 'flex',\r\n minWidth: '175px',\r\n alignItems: 'center'\r\n },\r\n checkbox: {\r\n padding: '0'\r\n },\r\n button: {\r\n padding: '0px',\r\n margin: '0px'\r\n },\r\n actionBarContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between',\r\n alignItems: 'center'\r\n },\r\n indicatorLabel: {\r\n fontSize: 14,\r\n color: '#757575',\r\n paddingRight: '18px'\r\n },\r\n excludedContactsLabel: {\r\n fontSize: 14,\r\n color: '#2962FF',\r\n paddingRight: '18px',\r\n '&:hover': {\r\n cursor: 'pointer'\r\n }\r\n },\r\n indicatorNumber: {\r\n fontSize: 14,\r\n color: '#212121'\r\n },\r\n excludedContactsIndicatorLabel: {\r\n fontSize: 14,\r\n color: '#2962FF'\r\n },\r\n composeEmail: {\r\n marginLeft: '10px',\r\n border: 'solid 1px rgba(0, 0, 0, 0.12)',\r\n marginBottom: '9px',\r\n height: '35px'\r\n },\r\n indicatorDiv: {\r\n flex: 'none',\r\n marginBottom: '15px'\r\n },\r\n searchDiv: {\r\n display: 'flex',\r\n alignItems: 'flex-end'\r\n },\r\n searchTextInput: {\r\n marginRight: '20px'\r\n },\r\n buttonsDiv: {\r\n display: 'flex',\r\n alignSelf: 'flex-end'\r\n },\r\n helperSearchInput: {\r\n fontSize: '0.75rem',\r\n fontFamily: '\"Segoe UI\",Arial,sans-serif',\r\n color: 'rgba(0, 0, 0, 0.54)',\r\n fontWeight: '400',\r\n lineHeight: '1.66',\r\n marginBottom: '10px'\r\n },\r\n searchNotAddedInput: {\r\n marginTop: '25px',\r\n marginBottom: '10px'\r\n },\r\n paperContainer: {\r\n width: '100%'\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n tableContainer: {\r\n borderTop: '0px'\r\n },\r\n checkboxCell: {\r\n width: '24px',\r\n borderLeft: '0',\r\n borderRight: '1px solid rgba(224, 224, 224, 1)'\r\n },\r\n cell: {\r\n borderLeft: '0',\r\n '&:last-child': {\r\n borderRight: '0'\r\n }\r\n },\r\n pagination: {\r\n width: '100%'\r\n }\r\n});\r\n\r\nconst descendingComparator = (a, b, orderBy) => {\r\n switch (orderBy) {\r\n case 'contact':\r\n return (\r\n b['firstName']\r\n .toLowerCase()\r\n .localeCompare(a['firstName'].toLowerCase()) ||\r\n b['lastName'].toLowerCase().localeCompare(a['lastName'].toLowerCase())\r\n );\r\n case 'investor':\r\n return (b['investors'].length === 1\r\n ? b['investors'][0].name.toLowerCase()\r\n : 'Multiple Investors'\r\n ).localeCompare(\r\n a['investors'].length === 1\r\n ? a['investors'][0].name.toLowerCase()\r\n : 'Multiple Investors'\r\n );\r\n default:\r\n return b[orderBy].toLowerCase() < a[orderBy].toLowerCase() ? -1 : 1;\r\n }\r\n};\r\n\r\nconst getComparator = (order, orderBy) => {\r\n return order === 'desc'\r\n ? (a, b) => descendingComparator(a, b, orderBy)\r\n : (a, b) => -descendingComparator(a, b, orderBy);\r\n};\r\n\r\nconst stableSort = (array, comparator) => {\r\n const stabilizedThis = array.map((el, index) => [el, index]);\r\n stabilizedThis.sort((a, b) => {\r\n const order = comparator(a[0], b[0]);\r\n if (order !== 0) return order;\r\n return a[1] - b[1];\r\n });\r\n return stabilizedThis.map(el => el[0]);\r\n};\r\n\r\nconst SummaryGrid = props => {\r\n const classes = useStyles();\r\n const [showEmaildDialog, setShowEmaildDialog] = useState(false);\r\n const [isLoading, setLoading] = useState(false);\r\n\r\n const {\r\n choices,\r\n formprops,\r\n distributionList,\r\n dlOptions,\r\n hasComposeEmailDLPermission,\r\n hasExportPermission,\r\n userProfile,\r\n filterByName,\r\n filterByEmail,\r\n filterByFund,\r\n filterByInvestor,\r\n addExcludedContacts,\r\n finalData\r\n } = props;\r\n const { values: { recipients = [] } = {} } = formprops;\r\n const notify = useNotify();\r\n const [excludedContacts, setExcludedContacts] = useState([]);\r\n const [excludedContactsDialogOpen, setExcludedContactsDialogOpen] = useState(\r\n false\r\n );\r\n const [selectedRows, setSelectedRows] = useState([]);\r\n const [filteredExcludedContacts, setFilteredExcludedContacts] = useState([]);\r\n const [excludedContactsLoaded, setExcludedContactsLoaded] = useState(false);\r\n const [addDisabled, setAddDisabled] = useState(true);\r\n const [order, setOrder] = useState('asc');\r\n const [orderBy, setOrderBy] = useState('email');\r\n const [rowsPerPage, setRowsPerPage] = useState(25);\r\n const [page, setPage] = React.useState(0);\r\n\r\n const tableEl = useRef(null);\r\n const pageOptions = [25, 50, 100];\r\n const backIconProps = { 'aria-label': 'previous page' };\r\n const nextIconProps = { 'aria-label': 'next page' };\r\n\r\n /**\r\n * Click on button 'Download as Excel' to download the excel file\r\n */\r\n const handleClickDownloadAsExcel = useCallback(\r\n payload => {\r\n setLoading(true);\r\n DistributionListApi.getEmailAddressesExcelByFilter(payload)\r\n .then(resp => {\r\n const fileName = 'distributionlist.xlsx';\r\n saveAs(resp, fileName);\r\n setLoading(false);\r\n })\r\n .catch(() => {\r\n setLoading(false);\r\n notify('ra.page.error', { type: 'error' });\r\n });\r\n },\r\n [notify]\r\n );\r\n\r\n const handleChangePage = useCallback(\r\n (_event, newPage) => {\r\n tableEl.current.scrollTop = 0;\r\n setPage(newPage);\r\n },\r\n [tableEl]\r\n );\r\n\r\n const handleChangeRowsPerPage = useCallback(event => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n }, []);\r\n\r\n const [paginationCls] = useMemo(() => [{ root: classes.pagination }], [\r\n classes\r\n ]);\r\n\r\n const filterExcludedContacts = event => {\r\n let excludedContactsFilter = splitAndTrimString(event.target.value, ',');\r\n\r\n let filteredList = excludedContacts.filter(item => {\r\n return (\r\n !excludedContactsFilter ||\r\n excludedContactsFilter.some(\r\n value =>\r\n item.firstName\r\n .concat(' ' + item.lastName)\r\n .toLowerCase()\r\n .includes(value === '' ? null : value.toLowerCase()) ||\r\n item.email\r\n .toLowerCase()\r\n .includes(value === '' ? null : value.toLowerCase()) ||\r\n item.fundName\r\n .toLowerCase()\r\n .includes(value === '' ? null : value.toLowerCase()) ||\r\n item.fundId\r\n .toLowerCase()\r\n .includes(value === '' ? null : value.toLowerCase())\r\n )\r\n );\r\n });\r\n\r\n setFilteredExcludedContacts(filteredList);\r\n };\r\n\r\n useEffect(() => {\r\n if (!excludedContactsLoaded && finalData && dlOptions) {\r\n const paramNotSelected = {\r\n fundIds: dlOptions.map(item => item.fundId),\r\n excludedUserFundRelations: finalData.map(item => {\r\n return {\r\n userId: item.userId,\r\n fundId: item.fundId\r\n };\r\n })\r\n };\r\n async function getExcludedContacts() {\r\n let responseList = await DistributionListApi.getExcludedContactsFromDistributionList(\r\n paramNotSelected\r\n );\r\n setExcludedContacts(responseList);\r\n setFilteredExcludedContacts(responseList);\r\n }\r\n\r\n // Execute the created function directly\r\n getExcludedContacts();\r\n setExcludedContactsLoaded(true);\r\n }\r\n }, [excludedContactsLoaded, dlOptions, finalData]);\r\n\r\n /**\r\n * Get contacts indicators (Memoized)\r\n */\r\n const contactsIndicators = useMemo(() => {\r\n const total = [];\r\n const distinct = [];\r\n const nonAdmin = [];\r\n choices.forEach(choice => {\r\n total.push(choice.email);\r\n choice.ccEmails.forEach(ccEmail => {\r\n total.push(ccEmail);\r\n });\r\n\r\n if (!distinct.includes(choice.email)) {\r\n distinct.push(choice.email);\r\n if (choice.userType === 'REGULAR_CONTACT') {\r\n nonAdmin.push(choice.email);\r\n }\r\n }\r\n });\r\n return {\r\n total: total.length,\r\n distinct: distinct.length,\r\n nonAdmin: nonAdmin.length\r\n };\r\n }, [choices]);\r\n\r\n /**\r\n * Get the list of recipients with ccEmails set to true (Memorized)\r\n */\r\n const recipientsWithCcEmails = useMemo(\r\n () =>\r\n recipients.filter(recipient => {\r\n return recipient.includeAllCcEmails;\r\n }),\r\n [recipients]\r\n );\r\n\r\n /**\r\n * Get the list of choices that have at least one ccEmail (Memorized)\r\n */\r\n const choicesHaveCcEmails = useMemo(\r\n () =>\r\n choices.filter(choice => {\r\n return choice.ccEmails.length > 0;\r\n }),\r\n [choices]\r\n );\r\n\r\n /**\r\n * Handle checkbox select primary email\r\n * @param {*} choice\r\n */\r\n const handleSelect = choice => {\r\n const array = [...recipients];\r\n const index = array.findIndex(\r\n obj => obj.userId === choice.userId && obj.fund === choice.fundId\r\n );\r\n\r\n if (index >= 0) {\r\n array.splice(index, 1);\r\n } else {\r\n array.push({\r\n userId: choice.userId,\r\n fund: choice.fundId,\r\n email: choice.email,\r\n ccEmails: choice.ccEmails,\r\n includeAllCcEmails: false\r\n });\r\n }\r\n\r\n formprops.form.change('recipients', array);\r\n };\r\n\r\n /**\r\n * Handle checkbox select ALL primary emails\r\n */\r\n const handleSelectAll = () => {\r\n let array = [...recipients];\r\n if (recipients.length < choices.length) {\r\n choices.forEach(choice => {\r\n const index = array.findIndex(\r\n obj => obj.userId === choice.userId && obj.fund === choice.fundId\r\n );\r\n\r\n if (index < 0) {\r\n array.push({\r\n userId: choice.userId,\r\n fund: choice.fundId,\r\n email: choice.email,\r\n ccEmails: choice.ccEmails,\r\n includeAllCcEmails: false\r\n });\r\n }\r\n });\r\n } else {\r\n array = [];\r\n }\r\n\r\n formprops.form.change('recipients', array);\r\n };\r\n\r\n /**\r\n * Handle checkbox select with CC email\r\n * @param {*} choice\r\n */\r\n const handleSelectWithCcEmails = choice => {\r\n const array = [...recipients];\r\n const index = array.findIndex(\r\n obj => obj.userId === choice.userId && obj.fund === choice.fundId\r\n );\r\n\r\n if (index >= 0) {\r\n array[index] = {\r\n ...array[index],\r\n includeAllCcEmails: !array[index].includeAllCcEmails\r\n };\r\n } else {\r\n array.push({\r\n userId: choice.userId,\r\n fund: choice.fundId,\r\n email: choice.email,\r\n ccEmails: choice.ccEmails,\r\n includeAllCcEmails: true\r\n });\r\n }\r\n\r\n formprops.form.change('recipients', array);\r\n };\r\n\r\n /**\r\n * Handle checkbox select ALL with CC emails\r\n */\r\n const handleSelectAllWithCcEmails = () => {\r\n let array = [];\r\n if (recipientsWithCcEmails.length < choicesHaveCcEmails.length) {\r\n choices.forEach(choice => {\r\n if (choice.ccEmails.length > 0) {\r\n array.push({\r\n userId: choice.userId,\r\n fund: choice.fundId,\r\n email: choice.email,\r\n ccEmails: choice.ccEmails,\r\n includeAllCcEmails: true\r\n });\r\n } else {\r\n const index = recipients.findIndex(\r\n obj => obj.userId === choice.userId && obj.fund === choice.fundId\r\n );\r\n if (index >= 0) {\r\n array.push({\r\n userId: choice.userId,\r\n fund: choice.fundId,\r\n email: choice.email,\r\n ccEmails: choice.ccEmails\r\n });\r\n }\r\n }\r\n });\r\n } else {\r\n array = recipients.map(recipient => {\r\n return { ...recipient, includeAllCcEmails: false };\r\n });\r\n }\r\n\r\n formprops.form.change('recipients', array);\r\n };\r\n\r\n /**\r\n * When we click on the checkbox in a row\r\n * @param {*} checked\r\n * @param {*} item\r\n */\r\n const handleRowSelect = useCallback((checked, item) => {\r\n if (checked) {\r\n setSelectedRows(selectedRows => selectedRows.concat(item));\r\n } else {\r\n setSelectedRows(selectedRows =>\r\n selectedRows.filter(itemRow => item !== itemRow)\r\n );\r\n }\r\n }, []);\r\n\r\n /**\r\n * Calculating number of rows depending of the filter\r\n */\r\n const numSelectedRows = useMemo(() => {\r\n let newArray = [];\r\n filteredExcludedContacts.forEach(item => {\r\n if (selectedRows.includes(item)) {\r\n newArray.push(item);\r\n }\r\n });\r\n return newArray.length;\r\n }, [filteredExcludedContacts, selectedRows]);\r\n\r\n const rowCount = useMemo(() => {\r\n return filteredExcludedContacts.length;\r\n }, [filteredExcludedContacts]);\r\n\r\n /**\r\n * When we click the global checkbox\r\n */\r\n const handleClickAll = useCallback(() => {\r\n if (numSelectedRows === rowCount) {\r\n let newArray = [];\r\n filteredExcludedContacts.forEach(item => {\r\n if (selectedRows.includes(item)) {\r\n newArray.push(item);\r\n }\r\n });\r\n setSelectedRows(difference(selectedRows, newArray));\r\n } else {\r\n setSelectedRows(selectedRows.concat(filteredExcludedContacts));\r\n }\r\n }, [numSelectedRows, filteredExcludedContacts, rowCount, selectedRows]);\r\n\r\n const handleEmailDialogToggle = toggle => {\r\n setShowEmaildDialog(toggle);\r\n };\r\n\r\n const handleRequestSort = (_event, property) => {\r\n const isAsc = orderBy === property && order === 'asc';\r\n setOrder(isAsc ? 'desc' : 'asc');\r\n setOrderBy(property);\r\n };\r\n\r\n const createSortHandler = property => event => {\r\n handleRequestSort(event, property);\r\n };\r\n\r\n useEffect(() => {\r\n setAddDisabled(selectedRows.length === 0);\r\n }, [selectedRows]);\r\n\r\n return (\r\n <>\r\n \r\n
    \r\n filterByEmail(event)}\r\n className={classes.searchTextInput}\r\n />\r\n\r\n filterByName(event)}\r\n className={classes.searchTextInput}\r\n />\r\n filterByFund(event)}\r\n className={classes.searchTextInput}\r\n />\r\n filterByInvestor(event)}\r\n className={classes.searchTextInput}\r\n />\r\n
    \r\n \r\n Total Number of Contacts:\r\n {` ${contactsIndicators.total}`}\r\n \r\n \r\n Distinct Contacts:\r\n {` ${contactsIndicators.distinct}`}\r\n \r\n \r\n Non-Admin Contacts:\r\n {` ${contactsIndicators.nonAdmin}`}\r\n \r\n setExcludedContactsDialogOpen(true)}\r\n >\r\n Excluded Contacts:\r\n {` ${excludedContacts.length}`}\r\n \r\n
    \r\n
    \r\n
    \r\n {hasExportPermission && (\r\n handleClickDownloadAsExcel(dlOptions)\r\n }\r\n disabled={recipients.length < 1 || isLoading}\r\n >\r\n Download as Excel\r\n \r\n )}\r\n {hasComposeEmailDLPermission && (\r\n handleEmailDialogToggle(true)}\r\n className={classes.composeEmail}\r\n >\r\n Compose Email\r\n \r\n )}\r\n
    \r\n \r\n
    \r\n You can input multiple keywords by separating them with comma\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n 0 &&\r\n recipients.length < choices.length\r\n }\r\n checked={\r\n recipients.length > 0 &&\r\n recipients.length === choices.length\r\n }\r\n onChange={handleSelectAll}\r\n onClick={e => {\r\n e.stopPropagation();\r\n }}\r\n />\r\n Email\r\n {orderBy === 'email' ? (\r\n \r\n ) : null}\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n 0 &&\r\n recipientsWithCcEmails.length <\r\n choicesHaveCcEmails.length\r\n }\r\n checked={\r\n recipientsWithCcEmails.length > 0 &&\r\n recipientsWithCcEmails.length ===\r\n choicesHaveCcEmails.length\r\n }\r\n onChange={handleSelectAllWithCcEmails}\r\n />\r\n CC Email\r\n
    \r\n
    \r\n \r\n \r\n Contact\r\n {orderBy === 'contact' ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n Fund\r\n {orderBy === 'fundName' ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n Investor\r\n {orderBy === 'investor' ? (\r\n \r\n ) : null}\r\n \r\n \r\n Permission Group\r\n
    \r\n
    \r\n \r\n {stableSort(choices, getComparator(order, orderBy))\r\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n .map(choice => {\r\n return (\r\n \r\n \r\n
    \r\n \r\n obj.userId === choice.userId &&\r\n obj.fund === choice.fundId\r\n ) >= 0\r\n }\r\n onClick={event => handleSelect(choice)}\r\n />\r\n {choice.email}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n obj.userId === choice.userId &&\r\n obj.fund === choice.fundId\r\n ) >= 0\r\n }\r\n onClick={event => handleSelectWithCcEmails(choice)}\r\n disabled={choice.ccEmails.length < 1}\r\n />\r\n {choice.ccEmails.length === 1 && choice.ccEmails[0]}\r\n {choice.ccEmails.length > 1 && (\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n {choice.firstName} {choice.lastName}\r\n \r\n {choice.fundName}\r\n \r\n {choice.investors.length === 1 &&\r\n choice.investors[0].name}\r\n {choice.investors.length > 1 && (\r\n \r\n )}\r\n \r\n \r\n {choice.groups.length > 0 && (\r\n \r\n )}\r\n \r\n
    \r\n );\r\n })}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n {recipients.length < 1 && (\r\n \r\n At least one recipient must be selected.\r\n \r\n )}\r\n handleEmailDialogToggle(false)}\r\n choices={choices}\r\n recipients={recipients}\r\n templateId={distributionList.templateId}\r\n userProfile={userProfile}\r\n dlOptions={dlOptions}\r\n />\r\n {\r\n if (reason === 'backdropClick') return null;\r\n setExcludedContactsDialogOpen(false);\r\n }}\r\n >\r\n setExcludedContactsDialogOpen(false)}\r\n >\r\n {'Add Excluded Contacts'}\r\n \r\n \r\n \r\n These Contacts are excluded from Distribution List.\r\n
    \r\n You can add them back, by selecting Contacts you want, and clicking\r\n the Add button.\r\n
    \r\n filterExcludedContacts(event)}\r\n className={classes.searchNotAddedInput}\r\n />\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n 0 && numSelectedRows < rowCount\r\n }\r\n checked={numSelectedRows === rowCount && rowCount > 0}\r\n onClick={handleClickAll}\r\n className={classes.checkbox}\r\n />\r\n \r\n {[\r\n { id: 'Contact Name' },\r\n { id: 'Email' },\r\n { id: 'Fund Name' },\r\n { id: 'Fund ID' }\r\n ].map(headCell => (\r\n \r\n {headCell.id}\r\n \r\n ))}\r\n \r\n \r\n \r\n {filteredExcludedContacts.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n handleRowSelect(event.target.checked, item)\r\n }\r\n className={item.checkbox}\r\n checked={selectedRows.includes(item)}\r\n />\r\n \r\n \r\n {item.firstName + ' ' + item.lastName}\r\n \r\n {item.email}\r\n {item.fundName}\r\n {item.fundId}\r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n addExcludedContacts(selectedRows);\r\n setSelectedRows([]);\r\n let newExcludedContacts = [...excludedContacts];\r\n newExcludedContacts = newExcludedContacts.filter(\r\n item => !selectedRows.includes(item)\r\n );\r\n setExcludedContacts(newExcludedContacts);\r\n setFilteredExcludedContacts(newExcludedContacts);\r\n setExcludedContactsDialogOpen(false);\r\n }}\r\n disabled={addDisabled}\r\n label={'Add'}\r\n icon={<>}\r\n />\r\n setExcludedContactsDialogOpen(false)}\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n >\r\n Cancel\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SummaryGrid;\r\n","import React, { useContext, useEffect, useMemo, useState } from 'react';\r\nimport { useNotify, CREATE } from 'react-admin';\r\nimport { FormSpy } from 'react-final-form';\r\nimport {\r\n Grid,\r\n Typography,\r\n makeStyles,\r\n CircularProgress\r\n} from '@material-ui/core';\r\n\r\nimport { DistributionListContext } from './DistributionListContext';\r\nimport DistributionListApi from '../../../core/apis/DistributionListApi';\r\nimport { useFetch } from '../../../core/hooks/UseFetch';\r\nimport SummaryGrid from './SummaryGrid';\r\nimport dataProvider from '../../../core/providers/IccUserDataProvider';\r\nimport { splitAndTrimString } from '../../../core/utils/index';\r\nimport useNotifyServerError from '../../../core/hooks/useNotifyServerError';\r\nimport CustomSimpleForm from '../../../core/components/form/CustomSimpleForm';\r\n\r\nconst useStyles = makeStyles({\r\n header: {\r\n paddingTop: '0px',\r\n fontSize: 20,\r\n fontWeight: 600\r\n },\r\n description: {\r\n display: 'flex',\r\n marginTop: '7px',\r\n fontSize: 14\r\n },\r\n loaderContainer: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n }\r\n});\r\n\r\n/*\r\n * Form level validation.\r\n * Verify that recipients list has one item at least\r\n */\r\nconst validateRecipients = values => {\r\n const errors = {};\r\n if (!values.recipients || values.recipients.length < 1) {\r\n errors.recipients = 'At least one recipient must be selected.';\r\n }\r\n return errors;\r\n};\r\n\r\nconst SummaryStep = props => {\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const { dlContext, setDlContext } = useContext(DistributionListContext);\r\n const classes = useStyles();\r\n\r\n const { variant, onSubmitEnd, permissions = [], userProfile } = props;\r\n const { distributionList = {}, options } = dlContext;\r\n const [filteredData, setFilteredData] = useState([]);\r\n const [nameFilter, setNameFilter] = useState();\r\n const [emailFilter, setEmailFilter] = useState();\r\n const [fundFilter, setFundFilter] = useState();\r\n const [investorFilter, setInvestorFilter] = useState();\r\n\r\n const { data = [], loading } = useFetch(\r\n DistributionListApi.getEmailAddressesByFilter,\r\n options\r\n );\r\n const [finalData, setFinalData] = useState([]);\r\n\r\n const { hasComposeEmailDLPermission, hasExportPermission } = useMemo(() => {\r\n return {\r\n hasComposeEmailDLPermission: permissions.includes(\r\n 'AUTH_COMPOSE_EMAIL_DL'\r\n ),\r\n hasExportPermission: permissions.includes('AUTH_EXPORT_EXCEL')\r\n };\r\n }, [permissions]);\r\n\r\n const { initRecipients = [] } = useMemo(() => {\r\n const initRecipients = [];\r\n\r\n setFilteredData(data);\r\n setFinalData(data);\r\n\r\n if (data) {\r\n data.forEach(obj => {\r\n initRecipients.push({\r\n userId: obj.userId,\r\n fund: obj.fundId,\r\n email: obj.email,\r\n ccEmails: obj.ccEmails,\r\n includeAllCcEmails: obj.ccEmails.length > 0\r\n });\r\n });\r\n }\r\n return { initRecipients };\r\n }, [data]);\r\n\r\n const addExcludedContacts = excludedContacts => {\r\n if (excludedContacts) {\r\n let newArray = [];\r\n excludedContacts.forEach(item => {\r\n let userType;\r\n if (item.userAdmingFlag && item.fundAdminFlag) userType = 'SUPER_ADMIN';\r\n else if (!item.userAdminFlag && item.fundAdminFlag)\r\n userType = 'FUND_ADMIN';\r\n else if (!item.userAdminFlag && !item.fundAdminFlag)\r\n userType = 'REGULAR_CONTACT';\r\n let newValue = {\r\n ccEmails: item.ccEmails,\r\n email: item.email,\r\n firstName: item.firstName,\r\n fundId: item.fundId,\r\n fundName: item.fundName,\r\n groups: item.groups,\r\n investors: item.investors,\r\n lastName: item.lastName,\r\n userId: item.userId,\r\n userType: userType\r\n };\r\n newArray.push(newValue);\r\n });\r\n let newValue = finalData.concat(newArray);\r\n setFinalData(newValue);\r\n }\r\n };\r\n\r\n const handleCreateDistributionList = async values => {\r\n const emailFundRecipientList = [...values.recipients];\r\n emailFundRecipientList.forEach(recipient => {\r\n delete recipient.userId;\r\n delete recipient.ccEmails;\r\n });\r\n const body = {\r\n name: distributionList.name,\r\n emailTemplateId: distributionList.templateId,\r\n emailFundRecipientList: [...emailFundRecipientList]\r\n };\r\n\r\n try {\r\n await dataProvider(CREATE, 'distributionlists', { data: body });\r\n } catch (error) {\r\n notifyServerError(error);\r\n } finally {\r\n notify('ra.notification.created');\r\n onSubmitEnd();\r\n }\r\n };\r\n\r\n const filterByEmail = event => {\r\n setEmailFilter(cleanInputFilter(event.target.value));\r\n };\r\n\r\n const filterByName = event => {\r\n setNameFilter(cleanInputFilter(event.target.value));\r\n };\r\n\r\n const filterByFund = event => {\r\n setFundFilter(cleanInputFilter(event.target.value));\r\n };\r\n\r\n const filterByInvestor = event => {\r\n setInvestorFilter(cleanInputFilter(event.target.value));\r\n };\r\n\r\n const cleanInputFilter = filterText => {\r\n return filterText.trim().toLowerCase();\r\n };\r\n\r\n useEffect(() => {\r\n if (finalData) {\r\n let dataToFilter = finalData;\r\n\r\n const contactNameList = splitAndTrimString(nameFilter, ',');\r\n const emailList = splitAndTrimString(emailFilter, ',');\r\n const investorList = splitAndTrimString(investorFilter, ',');\r\n const fundList = splitAndTrimString(fundFilter, ',');\r\n\r\n setFilteredData(\r\n dataToFilter\r\n .filter(obj =>\r\n contactNameList\r\n ? contactNameList.some(name =>\r\n obj.firstName\r\n .concat(' ' + obj.lastName)\r\n .toLowerCase()\r\n .includes(name === '' ? null : name)\r\n )\r\n : true\r\n )\r\n .filter(obj =>\r\n emailList\r\n ? emailList.some(email =>\r\n obj.email.toLowerCase().includes(email === '' ? null : email)\r\n )\r\n : true\r\n )\r\n .filter(obj =>\r\n fundList\r\n ? fundList.some(fund =>\r\n obj.fundName.toLowerCase().includes(fund === '' ? null : fund)\r\n )\r\n : true\r\n )\r\n .filter(obj =>\r\n investorList\r\n ? investorList.some(investorNameFilter =>\r\n obj.investors.some(investor =>\r\n investor.name\r\n .toLowerCase()\r\n .includes(\r\n investorNameFilter === '' ? null : investorNameFilter\r\n )\r\n )\r\n )\r\n : true\r\n )\r\n );\r\n }\r\n }, [nameFilter, investorFilter, fundFilter, emailFilter, finalData]);\r\n\r\n const populateRecipients = () => {\r\n if (finalData && initRecipients.length < finalData.length) {\r\n let newRecipients = [];\r\n finalData.forEach(item => {\r\n newRecipients.push({\r\n userId: item.userId,\r\n fund: item.fundId,\r\n email: item.email,\r\n ccEmails: item.ccEmails,\r\n includeAllCcEmails: item.ccEmails.length > 0\r\n });\r\n });\r\n return newRecipients;\r\n }\r\n return initRecipients;\r\n };\r\n\r\n return (\r\n \r\n \r\n {formprops => {\r\n // Store current form API object\r\n if (dlContext.currentForm === undefined) {\r\n setDlContext({ ...dlContext, currentForm: formprops.form });\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Summary\r\n \r\n \r\n Review the results and save the Distribution List\r\n \r\n \r\n \r\n {loading ? (\r\n
    \r\n \r\n
    \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n }}\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default SummaryStep;\r\n","import Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport Step from '@material-ui/core/Step';\r\nimport StepLabel from '@material-ui/core/StepLabel';\r\nimport Stepper from '@material-ui/core/Stepper';\r\nimport withStyles from '@material-ui/core/styles/withStyles';\r\nimport React, { useState, useMemo } from 'react';\r\nimport { resolveRedirectTo } from 'react-admin';\r\n\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport Confirm from '../../core/components/forked/layout/Confirm';\r\nimport RecipientsStep from './createsteps/RecipientsStep.js';\r\nimport OptionsStep from './createsteps/OptionsStep.js';\r\nimport SummaryStep from './createsteps/SummaryStep.js';\r\nimport { DistributionListContext } from './createsteps/DistributionListContext';\r\n\r\nconst styles = () => ({\r\n stepper: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '0 0 0px',\r\n display: 'inline-flex'\r\n },\r\n leftWrapper: {\r\n flexGrow: 1\r\n },\r\n button: {\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n backButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n saveButton: {\r\n border: '1px solid #E0E0E0',\r\n '& span': {\r\n padding: 0\r\n }\r\n },\r\n root: {\r\n paddingTop: '10px',\r\n paddingBottom: '10px'\r\n },\r\n paperWidthFalse: {\r\n height: 'inherit',\r\n width: '100%'\r\n },\r\n dialogContent: {\r\n display: 'flex',\r\n flex: 1,\r\n padding: '0px'\r\n },\r\n stepperContainer: {\r\n backgroundColor: '#FFFFFF',\r\n padding: '11px 8px',\r\n height: '24px',\r\n borderBottom: '1px solid #E0E0E0'\r\n },\r\n stepContainer: {\r\n display: 'flex',\r\n width: '100%',\r\n padding: '16px',\r\n overflowX: 'auto',\r\n '& .simple-form': {\r\n width: '100%'\r\n }\r\n }\r\n});\r\n\r\nconst DistributionListCreate = props => {\r\n const [activeStep, setActiveStep] = useState(0);\r\n const [confirmDialogIsOpen, setConfirmDialogIsOpen] = useState(false);\r\n const [dlContext, setDlContext] = useState({});\r\n\r\n const providerDlContext = useMemo(() => ({ dlContext, setDlContext }), [\r\n dlContext,\r\n setDlContext\r\n ]);\r\n\r\n const { classes, permissions, ...rest } = props;\r\n\r\n // List of steps\r\n const steps = [\r\n {\r\n name: 'recipients',\r\n label: 'Create List of Recipients',\r\n component: RecipientsStep,\r\n nextButton: true,\r\n backButton: false\r\n },\r\n {\r\n name: 'options',\r\n label: 'Options',\r\n component: OptionsStep,\r\n nextButton: true,\r\n backButton: true\r\n },\r\n {\r\n name: 'summary',\r\n label: 'Summary',\r\n component: SummaryStep,\r\n nextButton: false,\r\n backButton: true\r\n }\r\n ];\r\n\r\n const hasNext = steps[activeStep] ? steps[activeStep].nextButton : false;\r\n const hasBack = steps[activeStep] ? steps[activeStep].backButton : false;\r\n\r\n const [isNextAvailable, setIsNextAvailable] = useState(true);\r\n const [preselectedUsersEmails, setPreselectedUsersEmails] = useState([]);\r\n const [userIdList, setUserIdList] = useState([]);\r\n\r\n const getActiveStep = () => {\r\n const step = steps[activeStep];\r\n return (\r\n \r\n );\r\n };\r\n\r\n const onSubmitEnd = async () => {\r\n if (activeStep === 2) {\r\n handleClose();\r\n } else {\r\n setActiveStep(activeStep + 1);\r\n }\r\n };\r\n\r\n const handleCloseClick = () => {\r\n setConfirmDialogIsOpen(true);\r\n };\r\n\r\n const handleClose = () => {\r\n props.history.push(resolveRedirectTo('list', props.basePath));\r\n };\r\n\r\n const handleConfirmDialogClose = () => {\r\n setConfirmDialogIsOpen(false);\r\n };\r\n\r\n const handleNextForm = () => {\r\n // Trigger a submit to active form\r\n // This is needed because our modal action buttons are oustide the form\r\n dlContext.currentForm && dlContext.currentForm.submit();\r\n };\r\n\r\n const handleBackForm = () => {\r\n if (activeStep > 0) {\r\n setDlContext({ ...dlContext, currentForm: undefined });\r\n setActiveStep(activeStep - 1);\r\n }\r\n };\r\n\r\n return (\r\n {\r\n if (reason === 'backdropClick') return null;\r\n if (reason === 'escapeKeyDown') return handleCloseClick();\r\n }}\r\n classes={{\r\n paperWidthFalse: classes.paperWidthFalse // class name, e.g. `classes-nesting-root-x`\r\n }}\r\n >\r\n \r\n New Distribution List\r\n \r\n
    \r\n \r\n {steps.map(step => (\r\n \r\n {step.label}\r\n \r\n ))}\r\n \r\n
    \r\n \r\n
    \r\n \r\n {getActiveStep()}\r\n \r\n
    \r\n \r\n

    \r\n You are about to quit the create operation, and return to\r\n Distribution Lists page.\r\n

    \r\n
    \r\n Your progress on this step will not be saved.\r\n \r\n }\r\n onConfirm={handleClose}\r\n onClose={handleConfirmDialogClose}\r\n confirm=\"ra.action.close\"\r\n />\r\n
    \r\n \r\n
    \r\n {hasBack && (\r\n \r\n Back\r\n \r\n )}\r\n
    \r\n \r\n Close\r\n \r\n \r\n {hasNext ? 'Next' : 'Save Distribution List'}\r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default withStyles(styles)(DistributionListCreate);\r\n","import { Button as MUIButton, Typography, Checkbox } from '@material-ui/core/';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport debounce from 'lodash/debounce';\r\nimport React, {\r\n useCallback,\r\n useState,\r\n useMemo,\r\n useEffect,\r\n useContext,\r\n createContext\r\n} from 'react';\r\nimport { sortBy } from 'lodash';\r\nimport {\r\n Button,\r\n Datagrid,\r\n Filter,\r\n FunctionField,\r\n TextInput,\r\n Show,\r\n TextField,\r\n Toolbar,\r\n TopToolbar,\r\n useQuery,\r\n Loading,\r\n useNotify,\r\n resolveRedirectTo,\r\n SaveButton,\r\n useRefresh\r\n} from 'react-admin';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport { getInitials } from '../../core/utils';\r\nimport EmailDialog from './createsteps/EmailDialog';\r\nimport PopupField from '../../core/components/grid/PopupField';\r\nimport DistributionListApi from '../../core/apis/DistributionListApi';\r\nimport { saveAs } from 'file-saver';\r\nimport FormHelperText from '@material-ui/core/FormHelperText';\r\nimport Paper from '@material-ui/core/Paper';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogTitleWithCloseButton from '../../core/components/DialogTitleWithCloseButton';\r\nimport { difference } from 'lodash';\r\nimport { splitAndTrimString } from '../../core/utils/index';\r\nimport { TextField as MUITextField } from '@material-ui/core';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\n/* MUI styles */\r\nconst styles = theme => ({\r\n root: {\r\n marginLeft: '28px',\r\n marginRight: '28px'\r\n },\r\n toolbar: {\r\n justifyContent: 'space-between',\r\n alignItems: 'inherit',\r\n backgroundColor: 'transparent',\r\n marginTop: 0,\r\n paddingRight: 0,\r\n [theme.breakpoints.up('xs')]: {\r\n paddingLeft: 0\r\n },\r\n [theme.breakpoints.down('xs')]: {\r\n paddingLeft: theme.spacing(2),\r\n backgroundColor: theme.palette.background.paper\r\n }\r\n },\r\n composeEmailButton: {\r\n marginLeft: '10px',\r\n border: '1px solid #E0E0E0',\r\n background: 'white',\r\n alignSelf: 'center'\r\n },\r\n actionBarContainer: {\r\n display: 'flex',\r\n justifyContent: 'flex-end'\r\n },\r\n indicatorLabel: {\r\n fontSize: 14,\r\n color: '#757575',\r\n paddingRight: '18px'\r\n },\r\n indicatorNumber: {\r\n fontSize: 14,\r\n color: '#212121'\r\n },\r\n loading: {\r\n width: '100%',\r\n height: '100%',\r\n alignSelf: 'center'\r\n },\r\n helperSearchInput: {\r\n fontSize: '0.75rem',\r\n fontFamily: '\"Segoe UI\",Arial,sans-serif',\r\n color: 'rgba(0, 0, 0, 0.54)',\r\n fontWeight: '400',\r\n lineHeight: '1.66'\r\n },\r\n notSelectedUsersIndicatorLabel: {\r\n fontSize: 14,\r\n color: '#2962FF'\r\n },\r\n paperContainer: {\r\n width: '100%'\r\n },\r\n table: {\r\n overflow: 'auto',\r\n maxHeight: 'calc(100vh - 364px)',\r\n '&::-webkit-scrollbar': {\r\n width: '8px',\r\n height: '8px'\r\n },\r\n /* Track */\r\n '&::-webkit-scrollbar-track': {\r\n background: '#ebebeb',\r\n borderRadius: '10px',\r\n margin: '2px'\r\n },\r\n /* Handle */\r\n '&::-webkit-scrollbar-thumb': {\r\n background: '#9E9E9E',\r\n borderRadius: '10px'\r\n },\r\n /* Handle on hover */\r\n '&::-webkit-scrollbar-thumb:hover': {\r\n background: '#7b7a7a'\r\n }\r\n },\r\n tableContainer: {\r\n borderTop: '0px'\r\n },\r\n checkboxCell: {\r\n width: '24px',\r\n borderLeft: '0',\r\n borderRight: '1px solid rgba(224, 224, 224, 1)'\r\n },\r\n cell: {\r\n borderLeft: '0',\r\n '&:last-child': {\r\n borderRight: '0'\r\n }\r\n },\r\n excludedContactsLabel: {\r\n fontSize: 14,\r\n alignSelf: 'center',\r\n color: '#2962FF',\r\n paddingRight: '18px',\r\n '&:hover': {\r\n cursor: 'pointer'\r\n }\r\n },\r\n searchTextInput: {\r\n marginTop: '25px',\r\n marginBottom: '10px'\r\n },\r\n checkbox: {\r\n padding: '0'\r\n }\r\n});\r\n\r\n/**\r\n * Screen title\r\n */\r\nconst DistributionListTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Recipients list filter\r\n */\r\nconst RecipientsFilters = props => {\r\n return (\r\n {}}\r\n resource=\"distributionlistrecipients\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * RecipientsList actions\r\n */\r\nconst RecipientsActions = ({\r\n classes,\r\n selectedIds,\r\n onCompose,\r\n ids,\r\n onDownloadToExcel,\r\n isLoading,\r\n hasComposeEmailDLPermission,\r\n hasExportPermission,\r\n setExcludedContactsDialogOpen,\r\n numberOfExcludedContacts\r\n}) => (\r\n \r\n 0\r\n ? () => setExcludedContactsDialogOpen(true)\r\n : null\r\n }\r\n disabled={numberOfExcludedContacts === 0}\r\n style={{ color: numberOfExcludedContacts === 0 ? 'black' : '#2962FF' }}\r\n >\r\n Add Excluded Contacts\r\n \r\n {hasExportPermission && (\r\n \r\n )}\r\n {hasComposeEmailDLPermission && (\r\n \r\n )}\r\n \r\n);\r\n\r\nconst calculateSelectedCCAll = users => {\r\n const ccCount = users.reduce(\r\n (accu, user) => [\r\n accu[0] +\r\n (user.isSelected && user.ccEmails && user.ccEmails.length ? 1 : 0),\r\n accu[1] +\r\n (user.isSelected &&\r\n user.ccEmails &&\r\n user.ccEmails.length &&\r\n user.isSelectedCC\r\n ? 1\r\n : 0)\r\n ],\r\n [0, 0]\r\n );\r\n return ccCount[0] === ccCount[1] ? ccCount[0] !== 0 : false;\r\n};\r\n\r\nconst CkAllContext = createContext({ checked: true });\r\n\r\nconst CkAllLabel = ({ label, onChange }) => {\r\n const { checked } = useContext(CkAllContext);\r\n return (\r\n \r\n );\r\n};\r\n/**\r\n * List of recipients\r\n */\r\nconst RecipientsGrid = ({\r\n record,\r\n classes,\r\n data,\r\n ids = [],\r\n ccIds = [],\r\n recipients,\r\n handleFilters,\r\n hasComposeEmailDLPermission,\r\n hasExportPermission,\r\n userProfile,\r\n setFinalData,\r\n ...rest\r\n}) => {\r\n // email dialog\r\n const [showEmaildDialog, setShowEmaildDialog] = useState(false);\r\n const [isLoading, setLoading] = useState(false);\r\n const [submitting, setSubmitting] = useState(false);\r\n const [notChanged, setNothingChanged] = useState(true);\r\n\r\n const checkedState = useContext(CkAllContext);\r\n\r\n const notify = useNotify();\r\n const notifyServerError = useNotifyServerError();\r\n const refresh = useRefresh();\r\n\r\n const handleEmailDialogToggle = useCallback(toggle => {\r\n setShowEmaildDialog(toggle);\r\n }, []);\r\n\r\n //ids of visible recipients in grid\r\n const recipientsIds = useMemo(() => {\r\n return Object.keys(recipients);\r\n }, [recipients]);\r\n\r\n //selected ids of all recipients\r\n const selectedIds = useMemo(() => {\r\n const selectedUsers = data.users.filter(user => user.isSelected);\r\n return selectedUsers.map(user => `${user.userId}:${user.fundId}`);\r\n }, [data.users]);\r\n\r\n //selected ccIds of all recipients\r\n const selectedCCIds = useMemo(() => {\r\n const selectedCCUsers = data.users.filter(\r\n user =>\r\n user.isSelectedCC &&\r\n selectedIds.indexOf(`${user.userId}:${user.fundId}`) !== -1\r\n );\r\n return selectedCCUsers.map(user => `${user.userId}:${user.fundId}`);\r\n }, [data.users, selectedIds]);\r\n\r\n //selected Ids of filtered recipients visible in grid\r\n const gridSelectedIds = useMemo(() => {\r\n return selectedIds.filter(\r\n selectedId => recipientsIds.indexOf(selectedId) !== -1\r\n );\r\n }, [selectedIds, recipientsIds]);\r\n\r\n const [excludedContactsDialogOpen, setExcludedContactsDialogOpen] = useState(\r\n false\r\n );\r\n const [filteredExcludedContacts, setFilteredExcludedContacts] = useState([]);\r\n const [excludedContacts, setExcludedContacts] = useState([]);\r\n const [selectedRows, setSelectedRows] = useState([]);\r\n const [addDisabled, setAddDisabled] = useState(true);\r\n\r\n //save action of dialog for adding excluded contacts\r\n const addExcludedContacts = excludedContacts => {\r\n if (excludedContacts) {\r\n const addedContacts = excludedContacts.map(contact => ({\r\n ...contact,\r\n isSelected: true,\r\n isSelectedCC:\r\n Array.isArray(contact.ccEmails) && contact.ccEmails.length > 0\r\n }));\r\n let combinedUsers = [...data.users, ...addedContacts];\r\n let newFinalData = { ...data, users: combinedUsers };\r\n setFinalData(newFinalData);\r\n setNothingChanged(false);\r\n }\r\n };\r\n\r\n //effect used to fetch from api service list of excluded contacts\r\n useEffect(() => {\r\n if (data && data.users) {\r\n const paramNotSelected = {\r\n fundIds: [...new Set(data.users.map(item => item.fundId))],\r\n excludedUserFundRelations: data.users.map(item => {\r\n return {\r\n userId: item.userId,\r\n fundId: item.fundId\r\n };\r\n })\r\n };\r\n async function getExcludedContacts() {\r\n let responseList = await DistributionListApi.getExcludedContactsFromDistributionList(\r\n paramNotSelected\r\n );\r\n setExcludedContacts(responseList);\r\n setFilteredExcludedContacts(responseList);\r\n }\r\n\r\n // Execute the created function directly\r\n getExcludedContacts();\r\n }\r\n }, [data]);\r\n\r\n const filterExcludedContacts = event => {\r\n let excludedContactsFilter = splitAndTrimString(event.target.value, ',');\r\n\r\n let filteredList = excludedContacts.filter(item => {\r\n return (\r\n !excludedContactsFilter ||\r\n excludedContactsFilter.some(\r\n value =>\r\n item.firstName\r\n .concat(' ' + item.lastName)\r\n .toLowerCase()\r\n .includes(value === '' ? null : value.toLowerCase()) ||\r\n item.email\r\n .toLowerCase()\r\n .includes(value === '' ? null : value.toLowerCase()) ||\r\n item.fundName\r\n .toLowerCase()\r\n .includes(value === '' ? null : value.toLowerCase()) ||\r\n item.fundId\r\n .toLowerCase()\r\n .includes(value === '' ? null : value.toLowerCase())\r\n )\r\n );\r\n });\r\n\r\n setFilteredExcludedContacts(filteredList);\r\n };\r\n\r\n //callback used when single line checked is changed\r\n const handleToggleRecipient = useCallback(\r\n id => {\r\n setNothingChanged(false);\r\n const index = selectedIds.indexOf(id);\r\n const distributionListUsers = [...data.users];\r\n const changedUserIndex = distributionListUsers.findIndex(\r\n user => `${user.userId}:${user.fundId}` === id\r\n );\r\n if (index === -1) {\r\n distributionListUsers[changedUserIndex] = muteObject(\r\n distributionListUsers[changedUserIndex],\r\n {\r\n isSelected: true\r\n }\r\n );\r\n } else {\r\n distributionListUsers[changedUserIndex] = muteObject(\r\n distributionListUsers[changedUserIndex],\r\n {\r\n isSelected: false\r\n }\r\n );\r\n // Also remove selected CCs\r\n const ccIndex = selectedCCIds.indexOf(id);\r\n if (ccIndex >= 0) {\r\n distributionListUsers[changedUserIndex] = muteObject(\r\n distributionListUsers[changedUserIndex],\r\n {\r\n isSelectedCC: false\r\n }\r\n );\r\n }\r\n }\r\n checkedState.checked = calculateSelectedCCAll(distributionListUsers);\r\n setFinalData(muteObject(data, { users: distributionListUsers }));\r\n },\r\n [selectedIds, selectedCCIds, data, setFinalData, checkedState]\r\n );\r\n\r\n /**\r\n * Click on button 'Download as Excel' to download the excel file\r\n */\r\n const handleClickDownloadAsExcel = useCallback(\r\n id => {\r\n setLoading(true);\r\n DistributionListApi.getRecipientsExcelForDistList(id)\r\n .then(resp => {\r\n const fileName = 'distributionlist.xlsx';\r\n saveAs(resp, fileName);\r\n setLoading(false);\r\n })\r\n .catch(() => {\r\n setLoading(false);\r\n notify('ra.page.error', { type: 'error' });\r\n });\r\n },\r\n [notify]\r\n );\r\n\r\n /**\r\n * Close button will return us to Distribution Lists page\r\n */\r\n const handleClose = () => {\r\n rest.history.push(resolveRedirectTo('list', rest.basePath));\r\n };\r\n\r\n //callback used for grid checkbox selection changed (for all recipients)\r\n const handleSelectRecipients = useCallback(\r\n ids => {\r\n const distributionListUsers = [...data.users];\r\n if (ids.length === 0 && recipientsIds.length > 0) {\r\n recipientsIds.forEach(id => {\r\n const changedUserIndex = distributionListUsers.findIndex(\r\n user => `${user.userId}:${user.fundId}` === id\r\n );\r\n distributionListUsers[changedUserIndex] = muteObject(\r\n distributionListUsers[changedUserIndex],\r\n {\r\n isSelected: !distributionListUsers[changedUserIndex].isSelected\r\n }\r\n );\r\n\r\n if (distributionListUsers[changedUserIndex].isSelectedCC) {\r\n distributionListUsers[changedUserIndex] = muteObject(\r\n distributionListUsers[changedUserIndex],\r\n {\r\n isSelectedCC: distributionListUsers[changedUserIndex].isSelected\r\n }\r\n );\r\n }\r\n });\r\n } else {\r\n ids.forEach(id => {\r\n const changedUserIndex = distributionListUsers.findIndex(\r\n user => `${user.userId}:${user.fundId}` === id\r\n );\r\n distributionListUsers[changedUserIndex] = muteObject(\r\n distributionListUsers[changedUserIndex],\r\n {\r\n isSelected: true,\r\n isSelectedCC: true\r\n }\r\n );\r\n });\r\n }\r\n checkedState.checked = calculateSelectedCCAll(distributionListUsers);\r\n setNothingChanged(false);\r\n setFinalData(muteObject(data, { users: distributionListUsers }));\r\n },\r\n [data, recipientsIds, setFinalData, checkedState]\r\n );\r\n\r\n //callback used when single line CC Email checkbox is changed\r\n const handleToggleRecipientCCs = useCallback(\r\n id => {\r\n setNothingChanged(false);\r\n const index = selectedCCIds.indexOf(id);\r\n const distributionListUsers = [...data.users];\r\n const changedUserIndex = distributionListUsers.findIndex(\r\n user => `${user.userId}:${user.fundId}` === id\r\n );\r\n if (index === -1) {\r\n distributionListUsers[changedUserIndex] = muteObject(\r\n distributionListUsers[changedUserIndex],\r\n {\r\n isSelected: true,\r\n isSelectedCC: true\r\n }\r\n );\r\n } else {\r\n distributionListUsers[changedUserIndex] = muteObject(\r\n distributionListUsers[changedUserIndex],\r\n {\r\n isSelectedCC: false\r\n }\r\n );\r\n }\r\n checkedState.checked = calculateSelectedCCAll(distributionListUsers);\r\n setFinalData(muteObject(data, { users: distributionListUsers }));\r\n },\r\n [selectedCCIds, data, setFinalData, checkedState]\r\n );\r\n\r\n /**\r\n * When we click on the checkbox in a row on excluded contacts dialog\r\n * @param {*} checked\r\n * @param {*} item\r\n */\r\n const handleRowSelect = useCallback((checked, item) => {\r\n if (checked) {\r\n setSelectedRows(selectedRows => selectedRows.concat(item));\r\n } else {\r\n setSelectedRows(selectedRows =>\r\n selectedRows.filter(itemRow => item !== itemRow)\r\n );\r\n }\r\n }, []);\r\n\r\n /**\r\n * Update recepients in distribution list\r\n */\r\n const handleSaveClick = async data => {\r\n //Prepare selected funds to be updated for curent distribution list\r\n const fundRecListToBeUpdated = [];\r\n data.users.forEach(recipient => {\r\n if (recipient.isSelected) {\r\n fundRecListToBeUpdated.push({\r\n fund: recipient.fundId,\r\n email: recipient.email,\r\n includeAllCcEmails: recipient.isSelectedCC\r\n });\r\n }\r\n });\r\n const payload = {\r\n name: record.name,\r\n emailTemplateId: record.emailTemplateId,\r\n emailFundRecipientList: fundRecListToBeUpdated\r\n };\r\n setSubmitting(true);\r\n try {\r\n await DistributionListApi.updateDistributionList(record.id, payload);\r\n notify('ra.notification.distribution_list_updated');\r\n } catch (error) {\r\n notifyServerError(error);\r\n } finally {\r\n setSubmitting(false);\r\n setNothingChanged(true);\r\n handleFilters([]);\r\n refresh();\r\n }\r\n };\r\n\r\n /**\r\n * Calculating number of rows depending of the filter\r\n */\r\n const numSelectedRows = useMemo(() => {\r\n let newArray = [];\r\n filteredExcludedContacts.forEach(item => {\r\n if (selectedRows.includes(item)) {\r\n newArray.push(item);\r\n }\r\n });\r\n return newArray.length;\r\n }, [filteredExcludedContacts, selectedRows]);\r\n\r\n const rowCount = useMemo(() => {\r\n return filteredExcludedContacts.length;\r\n }, [filteredExcludedContacts]);\r\n\r\n /**\r\n * When we click the global checkbox\r\n */\r\n const handleClickAll = useCallback(() => {\r\n if (numSelectedRows === rowCount) {\r\n const newArray = [];\r\n filteredExcludedContacts.forEach(item => {\r\n if (selectedRows.includes(item)) {\r\n newArray.push(item);\r\n }\r\n });\r\n setSelectedRows(difference(selectedRows, newArray));\r\n } else {\r\n setSelectedRows(selectedRows.concat(filteredExcludedContacts));\r\n }\r\n }, [numSelectedRows, filteredExcludedContacts, rowCount, selectedRows]);\r\n\r\n // Selection, EmailDialog style !!\r\n const selectedRecipients = [];\r\n if (selectedIds) {\r\n selectedIds.forEach(id => {\r\n const recipient = recipients[id];\r\n if (recipient) {\r\n selectedRecipients.push({\r\n userId: recipient.userId,\r\n fund: recipient.fundId,\r\n email: recipient.email,\r\n ccEmails: recipient.ccEmails,\r\n includeAllCcEmails: selectedCCIds.includes(id)\r\n });\r\n }\r\n });\r\n }\r\n\r\n const handleToggleAllRecipientCCs = useCallback(() => {\r\n const checked = !checkedState.checked;\r\n const newUsers = data.users.map(user => {\r\n if (user.isSelected && user.isSelectedCC !== checked) {\r\n return muteObject(user, { isSelectedCC: checked });\r\n } else {\r\n return user;\r\n }\r\n });\r\n checkedState.checked = checked;\r\n setFinalData(muteObject(data, { users: newUsers }));\r\n }, [data, setFinalData, checkedState]);\r\n\r\n useEffect(() => {\r\n setAddDisabled(selectedRows.length === 0);\r\n }, [selectedRows]);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n <>\r\n \r\n \r\n handleEmailDialogToggle(true)}\r\n onDownloadToExcel={() => handleClickDownloadAsExcel(record.id)}\r\n ids={ids}\r\n isLoading={isLoading}\r\n hasComposeEmailDLPermission={hasComposeEmailDLPermission}\r\n hasExportPermission={hasExportPermission}\r\n setExcludedContactsDialogOpen={setExcludedContactsDialogOpen}\r\n numberOfExcludedContacts={excludedContacts.length}\r\n />\r\n \r\n \r\n
    \r\n You can input multiple keywords by separating them with comma\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n }\r\n render={record => {\r\n let label;\r\n if (record.ccEmails.length === 0) {\r\n label = null;\r\n } else if (record.ccEmails.length === 1) {\r\n label = record.ccEmails[0];\r\n } else {\r\n label = (\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n {record.ccEmails.length > 0 && (\r\n \r\n handleToggleRecipientCCs(\r\n `${record.userId}:${record.fundId}`\r\n )\r\n }\r\n />\r\n )}\r\n {label}\r\n \r\n );\r\n }}\r\n />\r\n `${record.firstName} ${record.lastName}`}\r\n />\r\n \r\n {\r\n if (record.investors.length === 0) {\r\n return null;\r\n } else if (record.investors.length === 1) {\r\n return record.investors[0].name === 'ALL INVESTORS'\r\n ? 'All Investors'\r\n : record.investors[0].name;\r\n } else {\r\n return (\r\n investor.name)}\r\n label=\"Multiple Investors\"\r\n headLabel=\"Investors\"\r\n />\r\n );\r\n }\r\n }}\r\n />\r\n \r\n \r\n {selectedIds.length < 1 && (\r\n \r\n At least one recipient must be selected.\r\n \r\n )}\r\n \r\n \r\n
    \r\n
    \r\n \r\n Total Number of Contacts:\r\n {data && data.listInfo && (\r\n {` ${data.listInfo.totalNumberOfContacts}`}\r\n )}\r\n \r\n \r\n Distinct Contacts:\r\n {data && data.listInfo && (\r\n {` ${data.listInfo.distinctContacts}`}\r\n )}\r\n \r\n \r\n Non-Admin Contacts:\r\n {data && data.listInfo && (\r\n {` ${data.listInfo.nonAdminContacts}`}\r\n )}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n handleSaveClick(data)}\r\n color=\"primary\"\r\n disabled={\r\n notChanged ||\r\n submitting ||\r\n (selectedIds && selectedIds.length < 1)\r\n }\r\n variant=\"contained\"\r\n className={classes.button}\r\n label={'Save'}\r\n icon={<>}\r\n />\r\n handleClose()}\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n className={classes.composeEmailButton}\r\n >\r\n Close\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n handleEmailDialogToggle(false)}\r\n choices={data ? data.users : []}\r\n recipients={selectedRecipients}\r\n templateId={record.emailTemplateId}\r\n distributionListId={record.id}\r\n distributionListName={record.name}\r\n userProfile={userProfile}\r\n />\r\n {\r\n if (reason === 'backdropClick') return null;\r\n setExcludedContactsDialogOpen(false);\r\n }}\r\n >\r\n setExcludedContactsDialogOpen(false)}\r\n >\r\n {'Add Excluded Contacts'}\r\n \r\n \r\n \r\n These Contacts are excluded from Distribution List.\r\n
    \r\n You can add them back, by selecting Contacts you want, and clicking\r\n the Add button.\r\n
    \r\n filterExcludedContacts(event)}\r\n className={classes.searchTextInput}\r\n />\r\n\r\n \r\n
    \r\n \r\n \r\n \r\n \r\n 0 && numSelectedRows < rowCount\r\n }\r\n checked={numSelectedRows === rowCount && rowCount > 0}\r\n onClick={handleClickAll}\r\n className={classes.checkbox}\r\n />\r\n \r\n {[\r\n { id: 'Contact Name' },\r\n { id: 'Email' },\r\n { id: 'Fund Name' },\r\n { id: 'Fund ID' }\r\n ].map(headCell => (\r\n \r\n {headCell.id}\r\n \r\n ))}\r\n \r\n \r\n \r\n {filteredExcludedContacts.map((item, index) => {\r\n return (\r\n \r\n \r\n \r\n handleRowSelect(event.target.checked, item)\r\n }\r\n className={item.checkbox}\r\n checked={selectedRows.includes(item)}\r\n />\r\n \r\n \r\n {item.firstName + ' ' + item.lastName}\r\n \r\n {item.email}\r\n {item.fundName}\r\n {item.fundId}\r\n \r\n );\r\n })}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n {\r\n addExcludedContacts(selectedRows);\r\n setSelectedRows([]);\r\n let newExcludedContacts = [...excludedContacts];\r\n newExcludedContacts = newExcludedContacts.filter(\r\n item => !selectedRows.includes(item)\r\n );\r\n setExcludedContacts(newExcludedContacts);\r\n setFilteredExcludedContacts(newExcludedContacts);\r\n setExcludedContactsDialogOpen(false);\r\n }}\r\n disabled={addDisabled}\r\n label={'Add'}\r\n icon={<>}\r\n />\r\n setExcludedContactsDialogOpen(false)}\r\n variant=\"outlined\"\r\n color=\"primary\"\r\n label=\"Cancel\"\r\n />\r\n \r\n \r\n \r\n );\r\n};\r\n\r\n/**\r\n * List of recipients\r\n */\r\nconst Recipients = ({ record, classes, permissions = [], ...rest }) => {\r\n // Filters\r\n const [filters, setFilters] = useState({});\r\n //distribution list data with users and list info fetched from service\r\n const [finalData, setFinalData] = useState({});\r\n // DL recipients visible in grid after applying filters\r\n const [finalRecipients, setFinalRecipients] = useState({});\r\n\r\n const { hasComposeEmailDLPermission, hasExportPermission } = useMemo(() => {\r\n return {\r\n hasComposeEmailDLPermission: permissions.includes(\r\n 'AUTH_COMPOSE_EMAIL_DL'\r\n ),\r\n hasExportPermission: permissions.includes('AUTH_EXPORT_EXCEL')\r\n };\r\n }, [permissions]);\r\n\r\n // Render after querying the recipients\r\n const { data, loading, error } = useQuery({\r\n type: 'getOne',\r\n resource: 'distributionlistrecipients',\r\n payload: {\r\n id: record.id,\r\n target: 'id'\r\n }\r\n });\r\n\r\n //effect used to set data about distribution list in state\r\n useEffect(() => {\r\n if (data && data.users) {\r\n const gridDataUsers = data.users.map(user => ({\r\n ...user,\r\n isSelected: true,\r\n isSelectedCC: Array.isArray(user.ccEmails) && user.ccEmails.length > 0\r\n }));\r\n const sortedUsers = sortBy(gridDataUsers, ['fundName', 'firstName']);\r\n setFinalData({ ...data, users: sortedUsers });\r\n }\r\n }, [data]);\r\n\r\n //list of all composite ids (userId:fundId pair) of all list recipients\r\n const ids = useMemo(() => {\r\n const newIds = [];\r\n if (finalData.users) {\r\n finalData.users.forEach(user => {\r\n const id = `${user.userId}:${user.fundId}`;\r\n newIds.push(id);\r\n });\r\n }\r\n return newIds;\r\n }, [finalData]);\r\n\r\n //list of all composite ids (userId:fundId pair) of all list recipients that has cc emails\r\n const ccIds = useMemo(() => {\r\n const newccIds = [];\r\n if (finalData.users) {\r\n finalData.users.forEach(user => {\r\n if (Array.isArray(user.ccEmails) && user.ccEmails.length > 0) {\r\n const id = `${user.userId}:${user.fundId}`;\r\n newccIds.push(id);\r\n }\r\n });\r\n }\r\n return newccIds;\r\n }, [finalData]);\r\n\r\n useEffect(() => {\r\n // Get filtered recipients\r\n // Mandatory input for Datagrid as data\r\n const recipients = {};\r\n if (finalData && finalData.users) {\r\n const contactList = filters.contact ? filters.contact.split(',') : [''];\r\n const emailList = filters.email ? filters.email.split(',') : [''];\r\n const investorList = filters.investors\r\n ? filters.investors.split(',')\r\n : [''];\r\n const fundList = filters.fundName ? filters.fundName.split(',') : [''];\r\n // filter by each user and check for email, names, funds, investors...\r\n finalData.users.forEach(user => {\r\n if (\r\n // filter by email address\r\n (!filters.email ||\r\n emailList.some(emailFilterValue =>\r\n user.email\r\n .toLowerCase()\r\n .includes(\r\n emailFilterValue.trim() === ''\r\n ? null\r\n : emailFilterValue.toLowerCase().trim()\r\n )\r\n )) &&\r\n // filter by contact name (first name && last name toogether)\r\n (!filters.contact ||\r\n contactList.some(contactFilterValue =>\r\n (user.firstName + ' ' + user.lastName)\r\n .toLowerCase()\r\n .includes(\r\n contactFilterValue.trim() === ''\r\n ? null\r\n : contactFilterValue.toLowerCase().trim()\r\n )\r\n )) &&\r\n // filter by fund name\r\n (!filters.fundName ||\r\n fundList.some(fundFilterValue =>\r\n user.fundName\r\n .toLowerCase()\r\n .includes(\r\n fundFilterValue.trim() === ''\r\n ? null\r\n : fundFilterValue.toLowerCase().trim()\r\n )\r\n )) &&\r\n // filter by investor name\r\n (!filters.investors ||\r\n investorList.some(investorFilterValue =>\r\n user.investors.some(investor =>\r\n investor.name\r\n .toLowerCase()\r\n .includes(\r\n investorFilterValue.trim() === ''\r\n ? null\r\n : investorFilterValue.toLowerCase().trim()\r\n )\r\n )\r\n ))\r\n ) {\r\n const id = `${user.userId}:${user.fundId}`;\r\n recipients[id] = user;\r\n }\r\n });\r\n setFinalRecipients(recipients);\r\n }\r\n }, [finalData, filters]);\r\n\r\n //start filtering 500 ms after last character input in filter\r\n const handleFilters = debounce(values => {\r\n setFilters(values);\r\n }, 500);\r\n if (loading) return ;\r\n if (error) return <>error;\r\n if (\r\n finalData &&\r\n (!Array.isArray(finalData.users) || finalData.users.length < 1)\r\n )\r\n return No Recipients to display;\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\n/**\r\n * Read-only screen to present the distribution list recipients\r\n */\r\nconst DistributionListShow = ({\r\n classes,\r\n userProfile,\r\n hasDeletePermission,\r\n hasEditPermission,\r\n hasCreatePermission,\r\n ...rest\r\n}) => (\r\n } className={classes.root} {...rest}>\r\n \r\n \r\n);\r\n\r\nconst muteObject = (data, newData) => ({ ...data, ...newData });\r\n\r\nexport default withStyles(styles)(DistributionListShow);\r\n","import DistributionListList from './DistributionListList';\r\nimport DistributionListCreate from './DistributionListCreate';\r\nimport DistributionListIcon from '@material-ui/icons/Subject';\r\nimport DistributionListShow from './DistributionListShow';\r\n\r\nexport default {\r\n list: DistributionListList,\r\n create: DistributionListCreate,\r\n show: DistributionListShow,\r\n icon: DistributionListIcon\r\n};\r\n","import React from 'react';\r\n\r\nexport const ReportIcon = props => {\r\n return (\r\n \r\n );\r\n};\r\n","const reportTypes = [\r\n { id: 'INVESTOR', name: 'Investor' },\r\n { id: 'CONTACT', name: 'Contact' },\r\n { id: 'ADMIN', name: 'Admin' }\r\n];\r\n\r\nexport { reportTypes };\r\n","import { makeStyles } from '@material-ui/core';\r\nimport React from 'react';\r\nimport {\r\n Datagrid,\r\n List,\r\n Responsive,\r\n SimpleList,\r\n TopToolbar,\r\n CheckboxGroupInput,\r\n SelectField,\r\n TextInput\r\n} from 'react-admin';\r\nimport omit from 'lodash/omit';\r\n\r\nimport { ReportIcon } from '../../core/themes/icons/ReportIcon';\r\nimport Empty from '../../core/components/list/Empty';\r\nimport ListTitleBar from '../../core/components/ListTitleBar';\r\nimport LinkField from '../../core/components/LinkField';\r\nimport Filter from '../../core/components/list/StyledFilter';\r\nimport { reportTypes } from './ReportLookups';\r\n\r\nconst useStyles = makeStyles({\r\n dataGridHead: {\r\n '& tr': {\r\n '& th:last-child': {\r\n width: '114px'\r\n }\r\n }\r\n },\r\n root: {\r\n marginRight: 'auto'\r\n },\r\n labelCheckbox: {\r\n display: 'none'\r\n },\r\n checkbox: {\r\n height: 'auto'\r\n },\r\n checkboxGroup: {\r\n marginBottom: '0',\r\n '& .MuiFormGroup-row': {\r\n marginLeft: '6px',\r\n '& .MuiCheckbox-root': {\r\n height: '24px'\r\n },\r\n '& .MuiFormControlLabel-label': {\r\n fontSize: '14px',\r\n color: '#212121',\r\n fontWeight: 'normal'\r\n }\r\n }\r\n }\r\n});\r\n\r\nconst Actions = ({\r\n displayedFilters,\r\n filters,\r\n filterValues,\r\n resource,\r\n showFilter\r\n}) => {\r\n const classes = useStyles();\r\n return (\r\n \r\n {filters &&\r\n React.cloneElement(filters, {\r\n resource,\r\n showFilter,\r\n displayedFilters,\r\n filterValues,\r\n context: 'button'\r\n })}\r\n \r\n );\r\n};\r\n\r\nconst Filters = props => {\r\n const classes = useStyles();\r\n return (\r\n \r\n ({\r\n name: `${reportType.name} Report`,\r\n id: reportType.id\r\n }))}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nconst ReportsTitle = () => {\r\n return } />;\r\n};\r\n\r\nconst ReportList = props => {\r\n const {\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n hasReadPermission,\r\n ...rest\r\n } = props;\r\n const classes = useStyles();\r\n\r\n return (\r\n }\r\n sort={{ field: 'id', order: 'ASC' }}\r\n exporter={false}\r\n pagination={null}\r\n actions={}\r\n filters={}\r\n empty={}\r\n syncWithLocation\r\n bulkActionButtons={false}\r\n filterDefaultValues={{\r\n type: reportTypes.map(reportType => reportType.id)\r\n }}\r\n >\r\n record.reportTypeName}\r\n secondaryText={record => record.type}\r\n tertiaryText={record => record.id}\r\n />\r\n }\r\n medium={\r\n \r\n \r\n \r\n \r\n }\r\n />\r\n \r\n );\r\n};\r\n\r\nexport default ReportList;\r\n","import ApiBase from './ApiBase';\r\nimport axios from 'axios';\r\nimport { stringify } from '../components/forked/stringify';\r\n\r\n/**\r\n * Administrative Report API\r\n */\r\nclass AdminReportApi extends ApiBase {\r\n /**\r\n * Download report file\r\n * @param {*} reportId id of the report\r\n * @param {*} format 'data_json' | 'excel'\r\n * @param {*} filters {\r\n * investorIds: ['AINV', 'BINV', ...],\r\n * fundIds: ['AAF', 'AMBF', ...],\r\n * }\r\n * @param filterLabels\r\n */\r\n async download(reportId, format, filters, filterLabels) {\r\n const notSupportedFilterCriteria =\r\n 'The report contains filter criteria that is not supported. One of the filters used must contain only one value checked/selected.';\r\n const maximumOutput =\r\n \"The report has reached it's maximum output. Please change your filter selection to get results.\";\r\n\r\n const queryParameters = stringify(\r\n {\r\n id: reportId,\r\n format\r\n },\r\n {\r\n arrayFormat: 'comma'\r\n }\r\n );\r\n\r\n let payload = { filters };\r\n if (format === 'excel') {\r\n payload = {\r\n ...payload,\r\n filterLabels\r\n };\r\n }\r\n\r\n const request = {\r\n url: `${this.API_URL}/adminreport/execute?${queryParameters}`,\r\n headers: this.getHeaders(),\r\n method: 'POST',\r\n responseType: format === 'data_json' ? 'json' : 'blob',\r\n data: payload,\r\n validateStatus: function(status) {\r\n return (status >= 200 && status < 300) || status === 400;\r\n }\r\n };\r\n\r\n const response = await axios.request(request);\r\n\r\n //Exception during report execution\r\n if (format === 'data_json') {\r\n if (response.status === 400) {\r\n if (response.data.errorMessage === notSupportedFilterCriteria) {\r\n throw new Error('report_has_bad_criteria');\r\n } else if (response.data.errorMessage === maximumOutput) {\r\n throw new Error('report_has_more_data');\r\n }\r\n throw new Error(response.data.errorMessage);\r\n }\r\n } else {\r\n // We requested blob format, but got error as JSON, decode it from BLOB\r\n if (response.status === 400) {\r\n const errorText = await response.data.text();\r\n const error = JSON.parse(errorText);\r\n if (error.errorMessage === notSupportedFilterCriteria) {\r\n throw new Error('report_has_bad_criteria');\r\n } else if (error.errorMessage === maximumOutput) {\r\n throw new Error('report_has_more_data');\r\n }\r\n throw new Error(error.errorMessage);\r\n }\r\n }\r\n\r\n return response;\r\n }\r\n}\r\n\r\nexport default new AdminReportApi();\r\n","import React, {\r\n useCallback,\r\n useRef,\r\n useEffect,\r\n useMemo,\r\n useState\r\n} from 'react';\r\nimport {\r\n makeStyles,\r\n CircularProgress,\r\n Table,\r\n TableBody,\r\n TableHead,\r\n TableRow,\r\n TableCell,\r\n TablePagination,\r\n TableSortLabel\r\n} from '@material-ui/core';\r\nimport { useNotify } from 'react-admin';\r\nimport classNames from 'classnames';\r\nimport moment from 'moment';\r\n\r\nconst useStyles = makeStyles({\r\n container: {\r\n border: '1px solid #E0E0E0',\r\n borderRadius: '2px',\r\n flex: 1,\r\n overflow: 'auto',\r\n width: '100%'\r\n },\r\n containerNoData: {\r\n flexDirection: 'column',\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n height: '100%',\r\n display: 'flex'\r\n },\r\n textNoData: {\r\n color: '#757575',\r\n fontSize: '14px',\r\n textAlign: 'center'\r\n },\r\n textNoDataMaximumReached: {\r\n color: '#ffa500',\r\n fontSize: '14px',\r\n textAlign: 'center'\r\n },\r\n circularProgress: {\r\n marginRight: '4px'\r\n },\r\n table: {\r\n border: 'none'\r\n },\r\n tableCellHead: {\r\n borderTop: 'none',\r\n position: 'sticky',\r\n top: 0,\r\n '&:first-child': {\r\n borderLeft: 'none'\r\n },\r\n '&:last-child': {\r\n borderRight: 'none'\r\n }\r\n },\r\n tableCellBody: {\r\n whiteSpace: 'nowrap',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n },\r\n pagination: {\r\n width: '100%'\r\n }\r\n});\r\n\r\n/**\r\n * Generic field compare function\r\n * @param {*} a 1st value\r\n * @param {*} b 2nd value\r\n * @param {*} orderBy Order by field\r\n * @param {*} columnDataTypes Data types for each columns\r\n */\r\nfunction desc(a, b, orderBy, columnDataTypes) {\r\n const valA = a[orderBy];\r\n const valB = b[orderBy];\r\n const currentDataType = columnDataTypes[orderBy];\r\n\r\n // Handle equality\r\n if (valA === valB) {\r\n return 0;\r\n }\r\n // Handle nulls and undefineds\r\n if (valA === null || valA === undefined) {\r\n return 1;\r\n }\r\n if (valB === null || valB === undefined) {\r\n return -1;\r\n }\r\n // Compare field values\r\n if (typeof valA === 'string' && typeof valB === 'string') {\r\n // Compare between 2 dates\r\n if (currentDataType && currentDataType === 'date') {\r\n const dateValA = new Date(valA);\r\n const dateValB = new Date(valB);\r\n return dateValB < dateValA ? -1 : 1;\r\n }\r\n // Special string compare (case insensitive)\r\n return valB.toLowerCase() < valA.toLowerCase() ? -1 : 1;\r\n } else {\r\n if (\r\n typeof valA === 'object' &&\r\n typeof valB === 'object' &&\r\n currentDataType &&\r\n currentDataType === 'date'\r\n ) {\r\n const dateA = new Date(valA.date);\r\n const dateB = new Date(valB.date);\r\n return dateB < dateA ? -1 : 1;\r\n }\r\n // Generic compare\r\n return valB < valA ? -1 : 1;\r\n }\r\n}\r\n\r\n/**\r\n * Use the function material-ui, to sort the data with an order and a function\r\n * see https://v4-3-3.material-ui.com/components/tables/#sorting-amp-selecting\r\n * @param {*} array\r\n * @param {*} cmp\r\n */\r\nfunction stableSort(array, cmp) {\r\n const stabilizedThis = array.map((el, index) => [el, index]);\r\n stabilizedThis.sort((a, b) => {\r\n const order = cmp(a[0], b[0]);\r\n if (order !== 0) return order;\r\n return a[1] - b[1];\r\n });\r\n return stabilizedThis.map(el => el[0]);\r\n}\r\n\r\n// Sorting function : ascending or descending\r\nfunction getSorting(order, orderBy, columnDataTypes) {\r\n return order === 'desc'\r\n ? (a, b) => desc(a, b, orderBy, columnDataTypes)\r\n : (a, b) => -desc(a, b, orderBy, columnDataTypes);\r\n}\r\n\r\nconst DEFAULT_DATE_FORMAT = 'MM/DD/YYYY';\r\nconst TZ_PLACEHOLDER = '_TZ_';\r\n\r\n/**\r\n * Format data for a specific column within the report table\r\n */\r\nconst formatValueByColumn = (value, currentColumn) => {\r\n if (value === null) {\r\n if (currentColumn && 'numeric' === currentColumn.dataType) {\r\n return '0';\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n // Handle column specific data format\r\n if (currentColumn) {\r\n switch (currentColumn.dataType) {\r\n case 'numeric':\r\n return value.toString();\r\n case 'date':\r\n if (\r\n currentColumn.format !== undefined &&\r\n currentColumn.format.length > 0\r\n ) {\r\n const colDate = typeof value === 'object' ? value.date : value;\r\n const tz = value.timeZone || '';\r\n const parsedDate = moment.parseZone(colDate);\r\n if (parsedDate.isValid()) {\r\n return parsedDate\r\n .format(currentColumn.format)\r\n .replace(TZ_PLACEHOLDER, tz);\r\n }\r\n }\r\n break;\r\n default:\r\n // Unhandled dataType : fallback on the default formatting (see below)\r\n break;\r\n }\r\n }\r\n\r\n // Hack warning : trying to guess a value is a date to format it (MM/dd/yyyy)\r\n if (\r\n value &&\r\n typeof value === 'string' &&\r\n !isNaN(value.charAt(0)) &&\r\n value.indexOf(':') > 0\r\n ) {\r\n const parsedDate = moment.parseZone(value);\r\n if (parsedDate.isValid()) {\r\n return parsedDate.format(DEFAULT_DATE_FORMAT);\r\n }\r\n }\r\n\r\n // Default, return value\r\n return value;\r\n};\r\n\r\nconst colStyles = {};\r\nconst emptyObject = {};\r\n\r\n/**\r\n * Get styling for a specific column within the report table\r\n * return the same object\r\n */\r\nconst getStylesByColumn = column => {\r\n if (column && column.width) {\r\n if (!colStyles[column.width]) {\r\n colStyles[column.width] = {\r\n width: column.width,\r\n minWidth: column.width,\r\n maxWidth: column.width\r\n };\r\n }\r\n return colStyles[column.width];\r\n }\r\n return emptyObject;\r\n};\r\n\r\n/**\r\n * fix date format\r\n * @param {*} data\r\n * @returns\r\n */\r\nconst fixColumns = data => {\r\n const cols = data && data.columns ? data.columns : [];\r\n return cols.map(col => {\r\n if (col.dataType === 'date') {\r\n col.format = col.format\r\n ? col.format\r\n .replaceAll('y', 'Y')\r\n .replaceAll('d', 'D')\r\n .replaceAll('z', 'Z')\r\n : DEFAULT_DATE_FORMAT;\r\n col.format = col.format.replace('Z', '[' + TZ_PLACEHOLDER + ']');\r\n }\r\n return col;\r\n });\r\n};\r\n\r\nconst pageOptions = [25, 50, 100];\r\nconst backIconProps = { 'aria-label': 'previous page' };\r\nconst nextIconProps = { 'aria-label': 'next page' };\r\n\r\n/**\r\n * Report datagrid component\r\n * @param {*} props\r\n */\r\nconst ReportDatagrid = props => {\r\n const notSupportedFilterCriteria =\r\n 'The report contains filter criteria that is not supported. One of the filters used must contain only one value checked/selected.';\r\n const maximumOutput =\r\n \"The report has reached it's maximum output. Please change your filter selection to get results.\";\r\n\r\n const { data, loading, filtersSentAreDifferent } = props;\r\n const classes = useStyles();\r\n const tableEl = useRef(null);\r\n const [page, setPage] = useState(0);\r\n const [rowsPerPage, setRowsPerPage] = useState(25);\r\n const [order, setOrder] = useState();\r\n const [orderBy, setOrderBy] = useState();\r\n const notify = useNotify();\r\n\r\n // Columns and rows\r\n // Data types for each column\r\n const [columns, rows, columnDataTypes] = useMemo(() => {\r\n const cols = fixColumns(data);\r\n return [\r\n cols,\r\n data && data.data ? data.data : [],\r\n cols.map(column => column.dataType)\r\n ];\r\n }, [data]);\r\n\r\n const [progressCls, cellHeadCls, cellBodyCls, paginationCls] = useMemo(\r\n () => [\r\n { root: classes.circularProgress },\r\n { head: classes.tableCellHead },\r\n { body: classes.tableCellBody },\r\n { root: classes.pagination }\r\n ],\r\n [classes]\r\n );\r\n\r\n const handleRequestSort = useCallback(\r\n index => {\r\n const isDesc = orderBy === index && order === 'desc';\r\n setOrder(isDesc ? 'asc' : 'desc');\r\n setOrderBy(index);\r\n },\r\n [orderBy, order]\r\n );\r\n\r\n const handleChangePage = useCallback(\r\n (event, newPage) => {\r\n tableEl.current.scrollTop = 0;\r\n setPage(newPage);\r\n },\r\n [tableEl]\r\n );\r\n\r\n const handleChangeRowsPerPage = useCallback(event => {\r\n setRowsPerPage(+event.target.value);\r\n setPage(0);\r\n }, []);\r\n\r\n // Reset pagination after every filter changes\r\n // Only when the filters are modified\r\n useEffect(() => {\r\n if (loading && filtersSentAreDifferent) {\r\n setPage(0);\r\n setRowsPerPage(25);\r\n }\r\n }, [loading, filtersSentAreDifferent]);\r\n\r\n useEffect(() => {\r\n if (!loading && data.rowLimit) {\r\n notify('ra.notification.report_has_more_data', {\r\n messageArgs: { row_limit: data.rowLimit }\r\n });\r\n }\r\n }, [loading, data.rowLimit, notify]);\r\n\r\n // Displays loader and loading text\r\n if (loading) {\r\n return (\r\n
    \r\n
    \r\n \r\n Generating Report. Please Wait\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n // Displays message when report has more data or bad criteria\r\n if (data === 'report_has_more_data' || data === 'report_has_bad_criteria') {\r\n return (\r\n
    \r\n
    \r\n No data to display.\r\n
    \r\n {data === 'report_has_more_data'\r\n ? maximumOutput\r\n : notSupportedFilterCriteria}\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n // Displays an empty state and instructions for displaying data\r\n if (data.length <= 0) {\r\n return (\r\n
    \r\n
    \r\n No Data to Display\r\n
    \r\n Select options on top and then click View Report or Download as Excel\r\n
    \r\n
    \r\n );\r\n }\r\n\r\n return (\r\n \r\n
    \r\n \r\n \r\n \r\n {columns.map((column, index) => {\r\n return !columns[index].hidden ? (\r\n \r\n handleRequestSort(index)}\r\n >\r\n {column.name}\r\n \r\n \r\n ) : null;\r\n })}\r\n \r\n \r\n \r\n {stableSort(rows, getSorting(order, orderBy, columnDataTypes))\r\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\r\n .map((row, index) => {\r\n return (\r\n \r\n {row.map((value, indexValue) => {\r\n return columns[indexValue] &&\r\n !columns[indexValue].hidden ? (\r\n \r\n {formatValueByColumn(value, columns[indexValue])}\r\n \r\n ) : null;\r\n })}\r\n \r\n );\r\n })}\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nReportDatagrid.defaultProps = {\r\n data: [],\r\n loading: false\r\n};\r\n\r\nexport default ReportDatagrid;\r\n","import React from 'react';\r\nimport { useInput } from 'react-admin';\r\nimport { makeStyles } from '@material-ui/core';\r\n\r\nimport CheckBoxInput from '../../../core/components/inputs/CheckBoxInput';\r\n\r\nconst useFilterStyles = makeStyles({\r\n checkBoxInput: {\r\n display: 'flex',\r\n marginTop: '17px'\r\n }\r\n});\r\n\r\n/**\r\n * Input for boolean filter\r\n * @param {*} props\r\n */\r\nconst CheckBoxFilter = props => {\r\n const { source, label, variant } = props;\r\n const { input, meta } = useInput(props);\r\n const classes = useFilterStyles(props);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CheckBoxFilter;\r\n","const SelectFilterStyles = theme => ({\r\n mainContainer: {\r\n zIndex: ({ open }) => (open ? 10000 : 0)\r\n },\r\n list: {\r\n outline: '0 !important'\r\n },\r\n listHeader: {\r\n borderBottom: '1px solid rgba(0, 0, 0, 0.30)'\r\n },\r\n listHeaderItem: {\r\n height: 32,\r\n backgroundColor: 'white',\r\n paddingLeft: 0,\r\n paddingRight: 0\r\n },\r\n searchItem: {\r\n height: 32,\r\n backgroundColor: 'white',\r\n border: '1px solid rgba(0, 0, 0, 0.30)',\r\n margin: 4,\r\n borderRadius: 5,\r\n display: 'flex',\r\n alignItems: 'center',\r\n paddingLeft: 5,\r\n paddingRight: 5\r\n },\r\n searchInput: {\r\n flex: 1,\r\n border: 'none',\r\n outline: '0 !important',\r\n fontSize: '14px',\r\n fontFamily: theme.typography.fontFamily,\r\n lineHeight: 'inherit',\r\n width: '50%'\r\n },\r\n searchIcon: {\r\n color: 'rgba(0, 0, 0, 0.30)'\r\n },\r\n switch: {\r\n top: -7,\r\n left: -7,\r\n '&:hover': {\r\n backgroundColor: 'transparent'\r\n },\r\n '& .MuiSwitch-thumb': {\r\n backgroundColor: '#e6e6e6'\r\n },\r\n '&.Mui-checked .MuiSwitch-thumb': {\r\n backgroundColor: 'currentColor'\r\n }\r\n },\r\n checkboxAllItemsIcon: {\r\n paddingLeft: 16,\r\n paddingRight: 13\r\n },\r\n lisItemContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n width: '100%'\r\n },\r\n listItemTextContainer: {\r\n marginRight: '11px'\r\n },\r\n listItemText: {\r\n fontSize: '14px',\r\n overflow: 'hidden',\r\n textOverflow: 'ellipsis'\r\n },\r\n fieldContainer: {\r\n border: '1px solid #E0E0E0',\r\n height: '29px',\r\n lineHeight: '29px',\r\n borderRadius: '2px',\r\n backgroundColor: 'white',\r\n marginTop: '16px',\r\n cursor: 'pointer',\r\n overflow: 'hidden',\r\n display: 'flex',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'space-between',\r\n '&:hover': {\r\n borderBottom: '1.2px solid rgba(0, 0, 0, 0.7)'\r\n },\r\n '& svg': {\r\n color: 'rgba(0, 0, 0, 0.54)'\r\n }\r\n },\r\n fieldContainerError: {\r\n borderBottom: '1.2px solid #f44336 !important'\r\n },\r\n field: {\r\n height: '100%',\r\n backgroundColor: 'transparent',\r\n cursor: 'pointer',\r\n lineHeight: 'inherit',\r\n overflow: 'hidden',\r\n whiteSpace: 'nowrap',\r\n textOverflow: 'ellipsis',\r\n paddingLeft: '5px',\r\n fontSize: '14px',\r\n fontFamily: theme.typography.fontFamily\r\n },\r\n customPopover: {\r\n display: 'none',\r\n position: 'absolute',\r\n top: ({ inputContainerEl }) => {\r\n return inputContainerEl\r\n ? inputContainerEl.offsetHeight + inputContainerEl.offsetTop\r\n : 0;\r\n },\r\n backgroundColor: 'white',\r\n zIndex: 2,\r\n boxShadow:\r\n '0px 5px 5px -3px rgba(0,0,0,0.2), 0px 8px 10px 1px rgba(0,0,0,0.14), 0px 3px 14px 2px rgba(0,0,0,0.12)',\r\n border: '1px solid #E0E0E0',\r\n outline: '0 !important'\r\n },\r\n customPopoverOpen: {\r\n display: 'initial'\r\n },\r\n backdrop: {\r\n position: 'fixed',\r\n top: 0,\r\n left: 0,\r\n right: 0,\r\n bottom: 0,\r\n backgroundColor: 'transparent',\r\n zIndex: 0\r\n }\r\n});\r\n\r\nexport default SelectFilterStyles;\r\n","import React, {\r\n useState,\r\n useMemo,\r\n useCallback,\r\n useEffect,\r\n useRef\r\n} from 'react';\r\nimport { useInput, useTranslate } from 'react-admin';\r\nimport {\r\n makeStyles,\r\n MenuItem,\r\n FormControl,\r\n InputLabel,\r\n FormHelperText,\r\n Checkbox,\r\n Radio,\r\n ListItemText,\r\n Tooltip,\r\n Switch\r\n} from '@material-ui/core';\r\nimport { useFormState, useForm } from 'react-final-form';\r\nimport get from 'lodash/get';\r\nimport omit from 'lodash/omit';\r\nimport defaultTo from 'lodash/defaultTo';\r\nimport isEqual from 'lodash/isEqual';\r\nimport isEmpty from 'lodash/isEmpty';\r\nimport upperFirst from 'lodash/upperFirst';\r\nimport { List, ArrowKeyStepper } from 'react-virtualized';\r\nimport classNames from 'classnames';\r\nimport PropTypes from 'prop-types';\r\nimport ArrowDropUpIcon from '@material-ui/icons/ArrowDropUp';\r\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\r\nimport SearchIcon from '@material-ui/icons/Search';\r\n\r\nimport SelectFilterStyles from './styles/SelectFilterStyles';\r\n\r\nconst useSelectFilterStyles = makeStyles(SelectFilterStyles);\r\n\r\n/**\r\n * Input to select one or multiple values\r\n * @param {*} props\r\n */\r\nconst SelectFilter = props => {\r\n const { source, label, variant, multiple, sort } = props;\r\n const lov = useMemo(() => props.lov || [], [props.lov]);\r\n\r\n const formState = useFormState(props);\r\n const translate = useTranslate();\r\n const form = useForm(props);\r\n const { isRequired } = useInput(omit(props, 'defaultValue'));\r\n\r\n const [touched, setTouched] = useState(false);\r\n const [error, setError] = useState(false);\r\n const [open, setOpen] = useState(false);\r\n const [searchValue, setSearchValue] = useState('');\r\n const [scrollToRow, setScrollToRow] = useState(0);\r\n const [showSelected, setShowSelected] = useState(false);\r\n const [lastItemSelected, setLastItemSelected] = useState(null);\r\n\r\n const inputContainerEl = useRef(null);\r\n\r\n /**\r\n * Update form values to know when user selects all values\r\n * regardless of the filter filter used\r\n */\r\n const setAllValuesChecked = useCallback(\r\n checked => {\r\n form.change('allValuesChecked' + upperFirst(source), checked);\r\n },\r\n [form, source]\r\n );\r\n\r\n const classes = useSelectFilterStyles({\r\n ...props,\r\n inputContainerEl: inputContainerEl ? inputContainerEl.current : null,\r\n open\r\n });\r\n\r\n const value = useMemo(() => {\r\n if (multiple) {\r\n return get(formState.values, source, []);\r\n } else {\r\n if (get(formState.values, source)) {\r\n return [get(formState.values, source)];\r\n }\r\n return [];\r\n }\r\n }, [formState.values, source, multiple]);\r\n\r\n useEffect(() => {\r\n if (value.length > 0) {\r\n const lovIds = lov.map(item => item.value);\r\n const nextCurrentValues = value.filter(id => lovIds.includes(id));\r\n if (!isEqual(value, nextCurrentValues)) {\r\n form.change(source, nextCurrentValues);\r\n }\r\n }\r\n }, [lov, value, form, source]);\r\n\r\n const sortedChoices = useMemo(() => {\r\n if (!sort) return lov;\r\n const collator = new Intl.Collator('en', {\r\n numeric: false,\r\n sensitivity: 'base'\r\n });\r\n return lov.sort((a, b) =>\r\n collator.compare(\r\n a.label === null ? a.label : a.label.toLowerCase(),\r\n b.label === null ? b.label : b.label.toLowerCase()\r\n )\r\n );\r\n }, [lov, sort]);\r\n\r\n // Creates the choice list with the dataProvider from the filter\r\n const choices = useMemo(() => {\r\n let values = sortedChoices.map(item => {\r\n // Checked if item is in the values\r\n let isChecked = value.indexOf(item.value) > -1;\r\n\r\n return {\r\n id: item.value,\r\n name: item.label,\r\n isChecked,\r\n ...item\r\n };\r\n });\r\n\r\n if (showSelected) {\r\n values = values.filter(item => item.isChecked);\r\n }\r\n\r\n if (searchValue) {\r\n return values.filter(\r\n item =>\r\n (item.name &&\r\n item.name.toLowerCase().includes(searchValue.toLowerCase())) ||\r\n item.id.toLowerCase().includes(searchValue.toLowerCase())\r\n );\r\n }\r\n\r\n return values;\r\n }, [sortedChoices, value, searchValue, showSelected]);\r\n\r\n /**\r\n * Overrides onChange's input,\r\n * To select or unselect all items\r\n */\r\n const handleChange = useCallback(\r\n newValue => {\r\n let values = newValue;\r\n\r\n // If we can select multiple values\r\n if (multiple) {\r\n // If the choice chosen is the \"All\" item\r\n if (values.indexOf('*') >= 0) {\r\n // If all items are selected, unselects all items\r\n if (value.length === lov.length) {\r\n form.change(source, []);\r\n setAllValuesChecked(false);\r\n } else {\r\n form.change(\r\n source,\r\n lov.map(item => item.value)\r\n );\r\n setAllValuesChecked(true);\r\n }\r\n } else {\r\n let currentValues = [...value];\r\n if (currentValues.indexOf(newValue) >= 0) {\r\n currentValues.splice(currentValues.indexOf(newValue), 1);\r\n form.change(source, currentValues);\r\n } else {\r\n form.change(source, currentValues.concat([newValue]));\r\n setLastItemSelected(newValue);\r\n }\r\n setSearchValue('');\r\n setAllValuesChecked(false);\r\n }\r\n } else {\r\n const currentValues = [...value];\r\n if (!currentValues.includes(newValue)) {\r\n form.change(source, newValue);\r\n }\r\n }\r\n },\r\n [form, lov, source, value, multiple, setAllValuesChecked]\r\n );\r\n\r\n const displayValue = useMemo(() => {\r\n // If all items are selected, displays \"All Items\"\r\n if (\r\n lov &&\r\n lov.length > 0 &&\r\n value.length > 0 &&\r\n value.length === lov.length\r\n ) {\r\n return `All ${label}`;\r\n }\r\n // If more 1 items are selected, displays \"3 Items selected\"\r\n else if (value.length > 1) {\r\n return `${value.length} ${label} selected`;\r\n } else if (!sortedChoices || sortedChoices.length === 0) {\r\n return null;\r\n }\r\n // By default, displays items seperated by a comma\r\n return sortedChoices\r\n .filter(choice => value.includes(choice.value))\r\n .map(choice => choice.label)\r\n .join(', ');\r\n }, [value, lov, sortedChoices, label]);\r\n\r\n useEffect(() => {\r\n if (isRequired) {\r\n if (touched && value.length === 0) {\r\n setError('ra.validation.required');\r\n } else {\r\n setError(false);\r\n }\r\n }\r\n }, [value, touched, isRequired]);\r\n\r\n useEffect(() => {\r\n if (lastItemSelected && choices.length === sortedChoices.length) {\r\n const index = choices.findIndex(choice => choice.id === lastItemSelected);\r\n setScrollToRow(index);\r\n setLastItemSelected(null);\r\n }\r\n }, [choices, sortedChoices, lastItemSelected]);\r\n\r\n const allItemsChecked = useMemo(() => {\r\n return value.length === sortedChoices.length;\r\n }, [value, sortedChoices]);\r\n\r\n // Memoize the component which displays icon for RadioButton or Checkboxe\r\n const SelectIconComponent = useMemo(() => {\r\n return multiple ? Checkbox : Radio;\r\n }, [multiple]);\r\n\r\n // Get component container width\r\n const inputContainerElHeight = get(inputContainerEl, 'current.offsetWidth');\r\n // Calculate the width for the suggestions list\r\n const listWidth = useMemo(() => {\r\n // - 2 to remove the border\r\n return defaultTo(inputContainerElHeight, 200) - 2;\r\n }, [inputContainerElHeight]);\r\n\r\n const uniqId = useCallback(\r\n selector => {\r\n return `select-filter-${selector}${source ? '-' + source : ''}`;\r\n },\r\n [source]\r\n );\r\n\r\n return (\r\n \r\n {/** Input label */}\r\n \r\n {label}\r\n \r\n\r\n {/** Input Container */}\r\n {\r\n setOpen(true);\r\n }}\r\n className={classNames(\r\n classes.fieldContainer,\r\n error && classes.fieldContainerError\r\n )}\r\n id={uniqId('value')}\r\n >\r\n {displayValue}\r\n {open ? : }\r\n \r\n\r\n {/** Popover to display suggestions */}\r\n \r\n {/* List header (only on multiselect) */}\r\n {sortedChoices.length > 0 && (\r\n
    \r\n
    \r\n {\r\n // Click on arrow down to focus the list of item\r\n if (evt.keyCode === 40) {\r\n document.querySelector('#' + uniqId('list')).focus();\r\n }\r\n }}\r\n onChange={evt => {\r\n setSearchValue(evt.target.value);\r\n }}\r\n placeholder=\"Search ...\"\r\n id={uniqId('search')}\r\n />\r\n \r\n
    \r\n {multiple && (\r\n {\r\n setShowSelected(!showSelected);\r\n }}\r\n classes={{ root: classes.listHeaderItem }}\r\n ContainerProps={{\r\n id: uniqId('showSelected')\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {!showSelected && multiple && isEmpty(searchValue) && (\r\n {\r\n handleChange('*');\r\n }}\r\n classes={{ root: classes.listHeaderItem }}\r\n ContainerProps={{\r\n id: uniqId('allItems')\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n
    \r\n )}\r\n {\r\n setScrollToRow(newScrollToRow);\r\n }}\r\n >\r\n {({ onSectionRendered, scrollToRow: scrollToIndex }) => {\r\n return (\r\n 300 ? 300 : choices.length * 30}\r\n rowHeight={30}\r\n rowCount={choices.length}\r\n scrollToIndex={scrollToIndex}\r\n onRowsRendered={onSectionRendered}\r\n className={classes.list}\r\n rowRenderer={row => {\r\n const { index, key, style } = row;\r\n const option = choices[index];\r\n return (\r\n \r\n {\r\n handleChange(option.id);\r\n }}\r\n style={{\r\n ...style,\r\n paddingLeft: '0',\r\n backgroundColor:\r\n scrollToIndex === index ? 'lightgrey' : 'white'\r\n }}\r\n value={option.id}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }}\r\n />\r\n );\r\n }}\r\n \r\n \r\n\r\n {/** Error message */}\r\n \r\n {!!error ? translate(error) : }\r\n \r\n\r\n {/** Backdrop to manage click outside */}\r\n {open && (\r\n {\r\n setOpen(false);\r\n setTouched(true);\r\n }}\r\n id={uniqId('backdrop')}\r\n />\r\n )}\r\n \r\n );\r\n};\r\n\r\nSelectFilter.propTypes = {\r\n multiple: PropTypes.bool,\r\n sort: PropTypes.bool\r\n};\r\n\r\nSelectFilter.defaultProps = {\r\n multiple: true,\r\n sort: true\r\n};\r\n\r\nexport default SelectFilter;\r\n","import React, { useState, useMemo, useEffect } from 'react';\r\nimport { TextInput, required, useDataProvider } from 'react-admin';\r\nimport { makeStyles, Grid } from '@material-ui/core';\r\nimport { useFormState } from 'react-final-form';\r\nimport { get, uniq } from 'lodash';\r\n\r\nimport CheckBoxFilter from './filters/CheckBoxFilter';\r\nimport DateRangeFilter from '../../core/components/DateRangeFilter';\r\nimport SelectFilter from './filters/SelectFilter';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst limitToCall = 50;\r\n\r\nconst SelectFilterWithDependency = props => {\r\n const {\r\n dependsOn,\r\n dependsOnFilterValues,\r\n lov,\r\n dependsOnFilterMultiple,\r\n source\r\n } = props;\r\n const dataProvider = useDataProvider();\r\n const notifyServerError = useNotifyServerError();\r\n const [data, setData] = useState();\r\n const formState = useFormState(props);\r\n\r\n /*\r\n Check on every change on the other filter,\r\n And if needed fetch the new values for the current filter\r\n */\r\n useEffect(() => {\r\n /*\r\n If the current filter is dependent on another filter,\r\n call an API on the association table to get list of linked values\r\n */\r\n if (\r\n dependsOnFilterValues &&\r\n (!dependsOnFilterMultiple ||\r\n (dependsOnFilterValues.length > 0 &&\r\n dependsOnFilterValues.length <= limitToCall))\r\n ) {\r\n let valuesToSearch = dependsOnFilterValues;\r\n let valuesToSearchIsArray = false;\r\n if (Array.isArray(dependsOnFilterValues)) {\r\n valuesToSearch = `[${dependsOnFilterValues}]`;\r\n valuesToSearchIsArray = true;\r\n }\r\n let resource = null;\r\n let target;\r\n if (source.includes('fundId') && dependsOn.includes('fundFamiliesId')) {\r\n resource = 'funds';\r\n target = 'fundFamilyId';\r\n } else if (source.includes('investorId')) {\r\n if (dependsOn.includes('fundId')) {\r\n resource = 'fundinvestors';\r\n target = 'fundId';\r\n }\r\n } else if (source.includes('fundId')) {\r\n if (dependsOn.includes('investorId')) {\r\n resource = 'fundinvestors';\r\n target = 'investorId';\r\n }\r\n } else if (source.includes('userId')) {\r\n if (dependsOn.includes('investorId')) {\r\n resource = 'investorcontacts';\r\n target = 'investorId';\r\n } else if (dependsOn.includes('fundId') && !valuesToSearchIsArray) {\r\n resource = 'userauthorizations';\r\n target = 'fundId';\r\n }\r\n }\r\n\r\n if (resource) {\r\n dataProvider\r\n .getManyReference(resource, {\r\n id: valuesToSearch,\r\n target\r\n })\r\n .then(({ data }) => {\r\n setData(data);\r\n })\r\n .catch(notifyServerError);\r\n }\r\n }\r\n }, [\r\n dataProvider,\r\n dependsOn,\r\n dependsOnFilterValues,\r\n notifyServerError,\r\n dependsOnFilterMultiple,\r\n source\r\n ]);\r\n\r\n /**\r\n * Filter list of values (LOV) with the result of the query\r\n */\r\n const lovOverride = useMemo(() => {\r\n /*\r\n If the current filter is dependent on another filter,\r\n filter with the data received from the API \r\n */\r\n if (\r\n data &&\r\n Array.isArray(data) &&\r\n dependsOnFilterValues &&\r\n (!dependsOnFilterMultiple ||\r\n (dependsOnFilterValues.length > 0 &&\r\n dependsOnFilterValues.length <= limitToCall))\r\n ) {\r\n if (data.length === 0) {\r\n //NOSONAR cwe\r\n return [];\r\n }\r\n let filterSource = null;\r\n // Users filter which depends on investors filter or funds filter\r\n if (\r\n (dependsOn.includes('investorIds') || dependsOn.includes('fundId')) &&\r\n source.includes('userIds')\r\n ) {\r\n filterSource = 'userId';\r\n }\r\n if (dependsOn.includes('fundFamiliesId') && source.includes('fundId')) {\r\n filterSource = 'id';\r\n }\r\n // Investors filter which depends on users filter or funds filter\r\n if (dependsOn.includes('fundId') && source.includes('investorId')) {\r\n filterSource = 'investorId';\r\n }\r\n\r\n // Funds filter which depends on investors filter\r\n if (dependsOn.includes('investorId') && source.includes('fundId')) {\r\n filterSource = 'fundId';\r\n }\r\n\r\n // Filter values in the current filter with the results of the request\r\n if (filterSource) {\r\n const listIds = uniq(data.map(item => item[filterSource]));\r\n const lovFiltered = lov.filter(item => listIds.includes(item.value));\r\n const { filters } = formState.values;\r\n\r\n if (filters && filters.investorIds) {\r\n const { investorIds } = filters;\r\n const allValuesCheckedFilters =\r\n formState.values.allValuesCheckedFilters;\r\n\r\n if (\r\n allValuesCheckedFilters &&\r\n lovFiltered.length > investorIds.length\r\n ) {\r\n allValuesCheckedFilters.investorIds = false;\r\n }\r\n }\r\n if (filters && filters.fundIds) {\r\n const { fundIds } = filters;\r\n const allValuesCheckedFilters =\r\n formState.values.allValuesCheckedFilters;\r\n\r\n if (allValuesCheckedFilters && lovFiltered.length > fundIds.length) {\r\n allValuesCheckedFilters.fundIds = false;\r\n }\r\n }\r\n return lovFiltered;\r\n }\r\n }\r\n\r\n return lov;\r\n }, [\r\n lov,\r\n data,\r\n dependsOn,\r\n dependsOnFilterValues,\r\n dependsOnFilterMultiple,\r\n source,\r\n formState\r\n ]);\r\n\r\n return React.cloneElement(props.children, {\r\n ...props,\r\n lov: lovOverride\r\n });\r\n};\r\n\r\nconst useFilterStyles = makeStyles({\r\n checkBoxInput: {\r\n display: 'flex',\r\n marginTop: '17px'\r\n },\r\n containerDateRange: {\r\n alignItems: 'baseline'\r\n }\r\n});\r\n\r\n/**\r\n * Filter component\r\n * Displays different filter depends on the type\r\n * and uses the input's behavior to be used in a form\r\n * @param {*} props\r\n */\r\nconst Filter = props => {\r\n const {\r\n type,\r\n filtersAreDependants,\r\n source,\r\n crossFilters,\r\n filters,\r\n sort\r\n } = props;\r\n const classes = useFilterStyles(props);\r\n const formState = useFormState();\r\n\r\n if (filtersAreDependants && type.includes('Select')) {\r\n const indexSource = crossFilters.findIndex(filter =>\r\n source.includes(filter)\r\n );\r\n let dependsOn = indexSource >= 1 && crossFilters[indexSource - 1];\r\n\r\n if (dependsOn) {\r\n const dependsOnFilter = filters.find(\r\n filter => filter.parameter === dependsOn\r\n );\r\n const dependsOnFilterMultiple =\r\n dependsOnFilter && dependsOnFilter.type === 'MultiSelect';\r\n const dependsOnFilterValues = get(\r\n formState,\r\n `values.filters.${dependsOn}`,\r\n dependsOnFilterMultiple ? [] : null\r\n );\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n // Multi select input which not displays more 2 elements in the field\r\n if (type === 'MultiSelect') {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n // Multi select input which not displays more 2 elements in the field\r\n if (type === 'MonoSelect') {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n // Boolean input\r\n if (type === 'checkbox') {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n // Date range input\r\n if (type === 'DateRange') {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const inputProps = {\r\n label: props.label,\r\n name: props.name,\r\n source: source,\r\n required: props.required,\r\n variant: props.variant,\r\n defaultValue: props.defaultValue,\r\n options: { autoComplete: 'off' }\r\n };\r\n // Default input, text input\r\n return (\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nFilter.defaultProps = {\r\n variant: 'standard',\r\n sort: true\r\n};\r\n\r\nconst ReportFilters = props => {\r\n const { filters } = props;\r\n\r\n const filterParameters = useMemo(() => {\r\n return filters.map(item => item.parameter);\r\n }, [filters]);\r\n\r\n const crossFilters = useMemo(() => {\r\n return filterParameters.filter(\r\n filter =>\r\n filter.includes('fundFamiliesId') ||\r\n filter.includes('fundId') ||\r\n filter.includes('investorId') ||\r\n filter.includes('userId')\r\n );\r\n }, [filterParameters]);\r\n\r\n // Check if the report have some filters\r\n const hasFundFilter = useMemo(\r\n () => crossFilters.includes('fundIds') || crossFilters.includes('fundId'),\r\n [crossFilters]\r\n );\r\n const hasFundFamilyFilter = useMemo(\r\n () =>\r\n crossFilters.includes('fundFamiliesIds') ||\r\n crossFilters.includes('fundFamiliesId'),\r\n [crossFilters]\r\n );\r\n const hasInvestorFilter = useMemo(\r\n () =>\r\n crossFilters.includes('investorIds') ||\r\n crossFilters.includes('investorId'),\r\n [crossFilters]\r\n );\r\n const hasUserFilter = useMemo(\r\n () => crossFilters.includes('userIds') || crossFilters.includes('userId'),\r\n [crossFilters]\r\n );\r\n\r\n // Help to know when the filters are dependants with others, and render specific component\r\n // And to add another dependency, add a new match between two filters\r\n const filtersAreDependants = useMemo(() => {\r\n return (\r\n (hasFundFamilyFilter && hasInvestorFilter) ||\r\n (hasFundFilter && hasFundFamilyFilter) ||\r\n (hasFundFamilyFilter && hasUserFilter) ||\r\n (hasFundFilter && hasInvestorFilter) ||\r\n (hasUserFilter && hasInvestorFilter) ||\r\n (hasUserFilter && hasFundFilter) ||\r\n (hasFundFamilyFilter && hasFundFilter && hasInvestorFilter) ||\r\n (hasFundFamilyFilter &&\r\n hasFundFilter &&\r\n hasInvestorFilter &&\r\n hasUserFilter)\r\n );\r\n }, [hasFundFamilyFilter, hasFundFilter, hasInvestorFilter, hasUserFilter]);\r\n\r\n // Return nothing when no filters\r\n if (filters.length === 0) {\r\n return null;\r\n }\r\n\r\n return (\r\n \r\n {filters.map((filter, index) => {\r\n const { parameter, name, ...rest } = filter;\r\n return (\r\n \r\n );\r\n })}\r\n \r\n );\r\n};\r\n\r\nReportFilters.defaultProps = {\r\n filters: []\r\n};\r\n\r\nexport default ReportFilters;\r\n","import React, { useState, useMemo, useCallback } from 'react';\r\nimport { Button } from 'react-admin';\r\nimport {\r\n Grid,\r\n makeStyles,\r\n createStyles,\r\n CircularProgress\r\n} from '@material-ui/core/';\r\nimport { useFormState } from 'react-final-form';\r\nimport { get, filter, isEmpty, replace, isEqual } from 'lodash';\r\nimport moment from 'moment';\r\nimport { saveAs } from 'file-saver';\r\n\r\nimport AdminReportApi from '../../core/apis/AdminReportApi';\r\n\r\nimport ReportDatagrid from './ReportDatagrid';\r\nimport ReportFilters from './ReportFilters';\r\nimport useNotifyServerError from '../../core/hooks/useNotifyServerError';\r\n\r\nconst useStyles = makeStyles(theme =>\r\n createStyles({\r\n container: {\r\n height: '100%'\r\n },\r\n button: {\r\n marginTop: '23px'\r\n },\r\n labelButton: {\r\n whiteSpace: 'nowrap'\r\n },\r\n datagridContainer: {\r\n height: '100%',\r\n overflow: 'hidden',\r\n paddingRight: '2px'\r\n },\r\n gridLg3: {\r\n // Styles when there is no filters\r\n '&:only-child': {\r\n alignSelf: 'flex-end',\r\n marginBottom: '15px',\r\n '& .MuiButton-root': {\r\n marginTop: '0'\r\n }\r\n },\r\n // Styles when the screen is smaller\r\n [theme.breakpoints.down('md')]: {\r\n marginBottom: '15px',\r\n '& .MuiButton-root': {\r\n marginTop: '0'\r\n }\r\n }\r\n }\r\n })\r\n);\r\n\r\nconst ReportSummary = props => {\r\n const { record } = props;\r\n const classes = useStyles();\r\n const formState = useFormState();\r\n const notifyServerError = useNotifyServerError();\r\n const [reportData, setReportData] = useState([]);\r\n const [previousFiltersSent, setPreviousFiltersSent] = useState();\r\n const [filtersSentAreDifferent, setFiltersSentAreDifferent] = useState(false);\r\n const [loadingViewReport, setLoadingViewReport] = useState(false);\r\n const [loadingDownloadReport, setLoadingDownloadReport] = useState(false);\r\n\r\n const filters = record.reportDefinition.filters;\r\n\r\n // Disable buttons when all filters are not filled\r\n const isEveryButtonDisabled = useMemo(() => {\r\n const nbFilters = filters.length;\r\n // If there is no filters to use, enables buttons\r\n if (nbFilters === 0) {\r\n return false;\r\n }\r\n\r\n const filtersRequired = filters.filter(filter => filter.required);\r\n // If there is no required filters to use, enables buttons\r\n if (filtersRequired.length === 0) {\r\n return false;\r\n }\r\n\r\n const filtersUsed = Object.keys(get(formState, 'values.filters', {}));\r\n\r\n // Get filters required in the filters list used\r\n const filtersRequiredUsed = filtersRequired.filter(item => {\r\n return filtersUsed.includes(item.parameter);\r\n });\r\n\r\n // If all required filters are not filled, disables buttons\r\n if (filtersRequired.length !== filtersRequiredUsed.length) {\r\n return true;\r\n }\r\n\r\n // If all filters are filled, checks values\r\n const filtersValues = Object.values(get(formState, 'values.filters', {}));\r\n // If all filters values are filled, checks values content\r\n if (filtersValues.length > 0) {\r\n // Get the list of the empty values\r\n const emptyFiltersRequired = filter(\r\n get(formState, 'values.filters', {}),\r\n (item, key) => {\r\n const currentFilter = filters.find(\r\n filter => filter.parameter === key\r\n );\r\n // Check only for the required filters\r\n return currentFilter.required && isEmpty(item);\r\n }\r\n );\r\n // If some values are empty, disables buttons\r\n return emptyFiltersRequired.length > 0;\r\n } else {\r\n return true;\r\n }\r\n }, [formState, filters]);\r\n\r\n /**\r\n * Gets and formats the filters to be sent in query parameters\r\n */\r\n const getFiltersToSend = useCallback(() => {\r\n let reportFilters = {};\r\n\r\n Object.keys(get(formState, 'values.filters', {})).forEach(key => {\r\n if (key.indexOf(',') > -1) {\r\n // Gets value for the key with a comma and split them into array\r\n const values = formState.values.filters[key].split('|');\r\n // Removes white in key to avoid request issues\r\n // And splits the key to get all parameters to send\r\n replace(key, ' ', '')\r\n .split(',')\r\n .forEach((subKey, index) => {\r\n // Stores each key and it value as a filter to send\r\n reportFilters[subKey] = values[index];\r\n });\r\n } else {\r\n if (!isEmpty(formState.values.filters[key])) {\r\n // Stores the key and it value as a filter to send\r\n reportFilters[key] = formState.values.filters[key];\r\n }\r\n }\r\n });\r\n\r\n return reportFilters;\r\n }, [formState]);\r\n\r\n /**\r\n * Gets and formats the filter labels to be sent in query parameters,\r\n * Only for the excel export\r\n */\r\n const getFilterLabelsToSend = useCallback(() => {\r\n let reportFilterLabels = {};\r\n\r\n Object.keys(get(formState, 'values.filters', {})).forEach(key => {\r\n const currentFilter = filters.find(item => item.parameter === key);\r\n\r\n // Check if it's the format for the date with a comma\r\n if (currentFilter.type === 'DateRange') {\r\n // Gets value for the key with a comma and split them into array\r\n let values = formState.values.filters[key].split('|');\r\n\r\n const isAllDates = values.reduce(\r\n (last, currentDate) => isEmpty(currentDate),\r\n false\r\n );\r\n\r\n if (isAllDates) {\r\n values = 'All dates';\r\n } else {\r\n values = values\r\n .map(date => moment(date).format('MM/DD/YYYY'))\r\n .join(' - ');\r\n }\r\n\r\n reportFilterLabels[currentFilter.label] = values;\r\n } else {\r\n let values = formState.values.filters[key];\r\n if (currentFilter.type.includes('Select')) {\r\n if (Array.isArray(formState.values.filters[key])) {\r\n if (\r\n get(formState, `values.allValuesCheckedFilters[${key}]`, false)\r\n ) {\r\n values = 'All ' + currentFilter.label;\r\n } else {\r\n values = (formState.values.filters[key] || [])\r\n .map(item => {\r\n return currentFilter.lov.find(({ value }) => value === item)\r\n .label;\r\n })\r\n .join(', ');\r\n }\r\n } else {\r\n const currentFilterValue = currentFilter.lov.find(\r\n item => item.value === values\r\n );\r\n if (currentFilterValue) values = currentFilterValue.label;\r\n }\r\n }\r\n // Store the label and its value label to send\r\n reportFilterLabels[currentFilter.label] = values;\r\n }\r\n });\r\n\r\n return reportFilterLabels;\r\n }, [formState, filters]);\r\n\r\n /**\r\n * Click on button 'View Report' to get all rows of the report\r\n */\r\n const handleClickViewReport = useCallback(() => {\r\n setLoadingViewReport(true);\r\n\r\n const reportFilters = getFiltersToSend();\r\n\r\n // If report filters sent are different then force reset pagination\r\n if (!isEqual(reportFilters, previousFiltersSent)) {\r\n setPreviousFiltersSent(reportFilters);\r\n setFiltersSentAreDifferent(true);\r\n } else {\r\n setFiltersSentAreDifferent(false);\r\n }\r\n\r\n AdminReportApi.download(record.id, 'data_json', reportFilters)\r\n .then(({ data }) => {\r\n // store report data\r\n setReportData(data);\r\n setLoadingViewReport(false);\r\n })\r\n .catch(error => {\r\n setLoadingViewReport(false);\r\n if (error.message === 'report_has_more_data') {\r\n setReportData('report_has_more_data');\r\n } else if (error.message === 'report_has_bad_criteria') {\r\n setReportData('report_has_bad_criteria');\r\n } else {\r\n notifyServerError(error);\r\n }\r\n });\r\n }, [notifyServerError, record, getFiltersToSend, previousFiltersSent]);\r\n\r\n /**\r\n * Click on button 'Download Report' to download the excel file\r\n */\r\n const handleClickDownloadReport = useCallback(() => {\r\n setLoadingDownloadReport(true);\r\n\r\n const reportFilters = getFiltersToSend();\r\n const reportFilterLabels = getFilterLabelsToSend();\r\n\r\n AdminReportApi.download(\r\n record.id,\r\n 'excel',\r\n reportFilters,\r\n reportFilterLabels\r\n )\r\n .then(resp => {\r\n setLoadingDownloadReport(false);\r\n //fileName (built from backend) is located in header, under content-disposition,\r\n //in filename field. We are using split string in order to get it, based on separators(= and ;)\r\n //and also, it should start from index 1 and end at -1 because there is '/' in\r\n var fileName = resp.headers['content-disposition']\r\n .split('filename=')[1]\r\n .split(';')[0]\r\n .slice(1, -1);\r\n saveAs(resp.data, fileName);\r\n })\r\n .catch(error => {\r\n setLoadingDownloadReport(false);\r\n if (error.message === 'report_has_more_data') {\r\n setReportData('report_has_more_data');\r\n } else if (error.message === 'report_has_bad_criteria') {\r\n setReportData('report_has_bad_criteria');\r\n } else {\r\n notifyServerError(error);\r\n }\r\n });\r\n }, [\r\n record,\r\n setLoadingDownloadReport,\r\n notifyServerError,\r\n getFiltersToSend,\r\n getFilterLabelsToSend\r\n ]);\r\n\r\n return (\r\n \r\n {/* Header for filters and buttons */}\r\n 0 ? 'row' : 'column'}\r\n >\r\n {/* Component for filters */}\r\n \r\n {/* Buttons to get rows or Excel file */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {loadingDownloadReport ? : null}\r\n \r\n \r\n \r\n \r\n {/* Component to display rows */}\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReportSummary;\r\n","import React from 'react';\r\nimport { Edit } from 'react-admin';\r\nimport { withStyles } from '@material-ui/core/styles';\r\nimport FormTitleBar from '../../core/components/FormTitleBar';\r\nimport { getInitials } from '../../core/utils';\r\nimport ReportSummary from './ReportSummary';\r\nimport CustomSimpleForm from '../../core/components/form/CustomSimpleForm';\r\n\r\nconst styles = () => ({\r\n gridTab: {\r\n marginTop: '-17px !important'\r\n },\r\n noActions: {\r\n marginTop: '0px',\r\n height: '100%'\r\n },\r\n edit: {\r\n height: '100%'\r\n },\r\n form: {\r\n display: 'flex',\r\n height: '100%',\r\n flexDirection: 'column',\r\n '& .MuiCardContent-root': {\r\n height: '100%',\r\n overflow: 'hidden',\r\n '& .ra-input': {\r\n height: '100%'\r\n }\r\n }\r\n }\r\n});\r\n\r\nconst ReportTitle = ({ record }) => {\r\n return (\r\n \r\n );\r\n};\r\n\r\nclass ReportEdit extends React.Component {\r\n render() {\r\n const {\r\n classes,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile,\r\n ...rest\r\n } = this.props;\r\n\r\n return (\r\n }\r\n classes={{ noActions: classes.noActions, root: classes.edit }}\r\n >\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withStyles(styles)(ReportEdit);\r\n","import ReportList from './ReportList';\r\nimport ReportEdit from './ReportEdit';\r\nimport { ReportIcon } from '../../core/themes/icons/ReportIcon';\r\n\r\nexport default {\r\n list: ReportList,\r\n edit: ReportEdit,\r\n icon: ReportIcon\r\n};\r\n","import React, { useEffect, useMemo } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { Route, Switch } from 'react-router-dom';\r\nimport {\r\n WithPermissions,\r\n registerResource,\r\n unregisterResource,\r\n ResourceProps,\r\n ResourceMatch,\r\n ReduxState,\r\n ResourceDefinition,\r\n ResourceContextProvider\r\n} from 'react-admin';\r\nimport { useProfile } from '../../../hooks/UseProfile';\r\n\r\nconst defaultOptions = {};\r\n\r\nexport interface NewAdminResourceProps {\r\n permissions: string[];\r\n readPermission: string;\r\n createPermission: string;\r\n editPermission: string;\r\n deletePermission: string;\r\n}\r\n\r\nconst ResourceRegister = (props: ResourceProps & NewAdminResourceProps) => {\r\n const {\r\n name,\r\n permissions,\r\n readPermission,\r\n createPermission,\r\n editPermission,\r\n deletePermission,\r\n list,\r\n create,\r\n edit,\r\n show,\r\n icon,\r\n options = defaultOptions\r\n } = props;\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n const hasReadPermission = permissions\r\n ? permissions.includes(readPermission)\r\n : true;\r\n const hasCreatePermission = permissions\r\n ? permissions.includes(createPermission)\r\n : true;\r\n const hasEditPermission = permissions\r\n ? permissions.includes(editPermission)\r\n : true;\r\n const hasDeletePermission = permissions\r\n ? permissions.includes(deletePermission)\r\n : true;\r\n\r\n // Conditions added to prevent adding the resource to the left menu if user has not read permission\r\n dispatch(\r\n registerResource({\r\n name,\r\n options,\r\n hasList: hasReadPermission ? !!list : undefined,\r\n hasEdit: hasReadPermission ? !!edit : undefined,\r\n hasShow: hasReadPermission ? !!show : undefined,\r\n hasCreate: hasCreatePermission ? !!create : undefined,\r\n icon,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission\r\n } as ResourceDefinition)\r\n );\r\n return () => {\r\n dispatch(unregisterResource(name));\r\n };\r\n }, [\r\n dispatch,\r\n name,\r\n permissions,\r\n readPermission,\r\n createPermission,\r\n editPermission,\r\n deletePermission,\r\n create,\r\n edit,\r\n icon,\r\n list,\r\n show,\r\n options\r\n ]);\r\n return null;\r\n};\r\n\r\nconst ResourceRoutes = (props: ResourceProps & NewAdminResourceProps) => {\r\n const {\r\n name,\r\n permissions,\r\n readPermission,\r\n createPermission,\r\n editPermission,\r\n deletePermission,\r\n match,\r\n list,\r\n create,\r\n edit,\r\n show,\r\n options = defaultOptions\r\n } = props;\r\n const isRegistered = useSelector(\r\n (state: ReduxState) => !!state.admin.resources[name]\r\n );\r\n const { profile } = useProfile();\r\n\r\n const basePath = match ? match.path : '';\r\n\r\n const resourceData = useMemo(() => {\r\n const hasReadPermission = permissions\r\n ? permissions.includes(readPermission)\r\n : true;\r\n const hasCreatePermission = permissions\r\n ? permissions.includes(createPermission)\r\n : true;\r\n const hasEditPermission = permissions\r\n ? permissions.includes(editPermission)\r\n : true;\r\n const hasDeletePermission = permissions\r\n ? permissions.includes(deletePermission)\r\n : true;\r\n\r\n return {\r\n resource: name,\r\n options,\r\n hasList: !!list,\r\n hasEdit: !!edit,\r\n hasShow: !!show,\r\n hasCreate: !!create,\r\n hasReadPermission,\r\n hasCreatePermission,\r\n hasEditPermission,\r\n hasDeletePermission,\r\n userProfile: profile\r\n };\r\n }, [\r\n name,\r\n options,\r\n create,\r\n edit,\r\n list,\r\n show,\r\n permissions,\r\n readPermission,\r\n createPermission,\r\n editPermission,\r\n deletePermission,\r\n profile\r\n ]);\r\n\r\n // match tends to change even on the same route ; using memo to avoid an extra render\r\n return useMemo(() => {\r\n // if the registration hasn't finished, no need to render\r\n if (!isRegistered) {\r\n return null;\r\n }\r\n\r\n // Conditions added to prevent creating routes for the resource if user has not the permission\r\n return (\r\n \r\n \r\n {create && resourceData.hasCreatePermission && (\r\n (\r\n \r\n )}\r\n />\r\n )}\r\n {show && resourceData.hasReadPermission && (\r\n (\r\n \r\n )}\r\n />\r\n )}\r\n {edit && resourceData.hasReadPermission && (\r\n (\r\n \r\n )}\r\n />\r\n )}\r\n {list && resourceData.hasReadPermission && (\r\n (\r\n \r\n )}\r\n />\r\n )}\r\n \r\n \r\n );\r\n }, [basePath, name, resourceData, create, edit, list, show, isRegistered]);\r\n};\r\n\r\nconst Resource = (props: ResourceProps & NewAdminResourceProps) => {\r\n const { intent = 'route', ...rest } = props;\r\n return intent === 'registration' ? (\r\n \r\n ) : (\r\n \r\n );\r\n};\r\n\r\nexport default Resource;\r\n","import React from 'react';\r\nimport { Card, CardContent, Grid } from '@material-ui/core';\r\n\r\n/**\r\n * Error message when New Admin is not activated\r\n */\r\nconst NotActivatedMessage = () => (\r\n \r\n \r\n \r\n \r\n

    Welcome to Investment Café ICX Admin.

    \r\n

    \r\n We are configuring your access to the new Administration portal.\r\n Once this is completed you will be notified.\r\n

    \r\n

    \r\n In the meantime, please do not hesitate to contact your Account\r\n Manager if you would like any further information on the new\r\n Administration portal.\r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n);\r\n\r\nexport default NotActivatedMessage;\r\n","import { types } from './profileActions';\r\n\r\nconst initialState = {\r\n loading: false,\r\n error: false,\r\n item: undefined\r\n};\r\n\r\nexport default (state = initialState, action) => {\r\n switch (action.type) {\r\n case types.GET_PROFILE:\r\n case types.REFRESH_PROFILE:\r\n return {\r\n ...state,\r\n loading: true\r\n };\r\n\r\n case types.GET_PROFILE_SUCCESS:\r\n return {\r\n ...state,\r\n item: action.profile,\r\n loading: false\r\n };\r\n\r\n case types.GET_PROFILE_FAILURE:\r\n return {\r\n ...state,\r\n error: action.error || true,\r\n loading: false\r\n };\r\n\r\n case types.RESET_PROFILE:\r\n return initialState;\r\n\r\n default:\r\n return state;\r\n }\r\n};\r\n","// in src/App.js\r\nimport React from 'react';\r\nimport { Admin, TextField } from 'react-admin';\r\nimport polyglotI18nProvider from 'ra-i18n-polyglot';\r\n\r\nimport dataProvider from './core/providers/IccUserDataProvider';\r\nimport authProvider from './core/providers/authProvider';\r\n\r\nimport SolsticeLayout from './core/components/SolsticeLayout';\r\nimport { SolsticeTheme } from './core/themes/SolsticeTheme';\r\nimport InvStructureIcon from './core/themes/icons/InvStructureIcon';\r\nimport { TagIcon } from './core/themes/icons/TagIcon';\r\nimport AlternateEmailIcon from '@material-ui/icons/AlternateEmail';\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport TermsIcon from '@material-ui/icons/Create';\r\nimport AlternateEmail from '@material-ui/icons/AlternateEmail';\r\nimport Login from './core/components/LoginPage';\r\n\r\nimport users from './features/users';\r\nimport funds from './features/funds';\r\nimport investors from './features/investors';\r\nimport resourceuploads from './features/resourceuploads';\r\nimport categories from './features/categories';\r\nimport presets from './features/presets';\r\nimport groups from './features/groups';\r\nimport documenttypes from './features/documenttypes';\r\nimport mailtemplates from './features/mailtemplates';\r\nimport splitmethods from './features/splitmethods';\r\nimport tenantconfigurations from './features/tenantconfigurations';\r\nimport organizations from './features/organizations';\r\nimport fundfamilies from './features/fundfamilies';\r\nimport documentwatermarks from './features/documentwatermarks';\r\nimport roles from './features/roles';\r\nimport fundtags from './features/fundtags';\r\nimport investortags from './features/investortags';\r\nimport fundinvestortags from './features/fundinvestortags';\r\nimport emailarchive from './features/emailarchives';\r\nimport categoryterms from './features/categoryterms';\r\nimport fundterms from './features/fundterms';\r\nimport distributionlists from './features/distributionlists';\r\nimport reports from './features/reports';\r\n\r\nimport './core/themes/solstice.css';\r\n\r\nimport englishMessages from './core/i18n/englishLanguageMessages';\r\nimport SolsticeLogoutButton from './core/components/SolsticeLogoutButton';\r\nimport { runningInPortal } from './core/utils/IcxPortal';\r\nimport { isDevMode } from './core/utils';\r\nimport Resource from './core/components/forked/core/Resource';\r\nimport NotActivatedMessage from './NotActivatedMessage';\r\n\r\nimport profileReducer from './core/providers/customResources/profile/profileReducer';\r\nimport profileSaga from './core/providers/customResources/profile/profileSaga';\r\n\r\nconst Empty = () =>
    ;\r\n//disable the right click menu\r\nif (!isDevMode()) {\r\n document.addEventListener('contextmenu', event => event.preventDefault());\r\n}\r\n\r\n// I18N customization\r\nconst messages = {\r\n en: englishMessages\r\n};\r\nconst i18nProvider = polyglotI18nProvider(locale => messages[locale], 'en');\r\n\r\n// Ugly hack to force displaying an empty string on nulls, not displaying \"null\"\r\n// NOTE : we should fix the API instead of doing this, the API shouldn't return null fields !!!\r\nTextField.defaultProps.emptyText = ' ';\r\n\r\n// Note : if the JWT token is provided (running in ICX portal), then we won't allow login or logout\r\n// loginPage and logoutButton are undefined in this case\r\nconst App = () => {\r\n return (\r\n \r\n {permissions => {\r\n if (!permissions.includes('AUTH_ACTIVATE_NEW_ADMIN')) {\r\n return [];\r\n }\r\n\r\n return [\r\n ,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n ,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n \r\n }}\r\n />,\r\n ,\r\n \r\n }}\r\n />,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n ,\r\n \r\n ];\r\n }}\r\n \r\n );\r\n};\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.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 function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\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 const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister();\r\n });\r\n }\r\n}\r\n","// IE 11 Polyfills\r\nimport 'react-app-polyfill/ie11';\r\nimport 'react-app-polyfill/stable';\r\nimport 'proxy-polyfill';\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport CKEditor from 'ckeditor4-react';\r\n\r\nimport './index.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport { initIcxPortal } from './core/utils/IcxPortal';\r\n\r\n// To load all features for the Rich Text Editor\r\n// We avoid using CKEditor CDN by serving it's code from our server (from public folder)\r\nCKEditor.editorUrl = 'ckeditor_4.24.0-lts/ckeditor.js';\r\n\r\n// Initialize ICX Portal integration\r\ninitIcxPortal(() => ReactDOM.render(, document.getElementById('root')));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n","/*\r\n * action types\r\n */\r\n\r\nexport const types = {\r\n GET_PROFILE: 'GET_PROFILE',\r\n REFRESH_PROFILE: 'REFRESH_PROFILE',\r\n GET_PROFILE_SUCCESS: 'GET_PROFILE_SUCCESS',\r\n GET_PROFILE_FAILURE: 'GET_PROFILE_FAILURE',\r\n RESET_PROFILE: 'RESET_PROFILE'\r\n};\r\n\r\n/*\r\n * action creators\r\n */\r\n\r\nexport function getProfile() {\r\n return { type: types.GET_PROFILE };\r\n}\r\n\r\nexport function refreshProfile() {\r\n return { type: types.REFRESH_PROFILE };\r\n}\r\n\r\nexport function getProfileSuccess(profile) {\r\n return { type: types.GET_PROFILE_SUCCESS, profile };\r\n}\r\n\r\nexport function getProfileFailure(error) {\r\n return { type: types.GET_PROFILE_FAILURE, error };\r\n}\r\n\r\nexport function resetProfile() {\r\n return { type: types.RESET_PROFILE };\r\n}\r\n","const mailTemplateTypes = [\r\n { id: 'FREE_FORM', name: 'Free Form' },\r\n { id: 'INVITATION', name: 'Invitation' },\r\n { id: 'CAPITAL_CALLS', name: 'Capital Calls' },\r\n { id: 'SEND_NEW_PASSWORD', name: 'Send New Password' },\r\n { id: 'REQUEST_PASSWORD', name: 'Request Password' },\r\n { id: 'FUND_RAISING', name: 'Fund Raising' },\r\n { id: 'NEWLY_UPLOADED_DOCUMENT', name: 'Newly Uploaded Document' },\r\n { id: 'SURVEY', name: 'Survey' }\r\n];\r\n\r\nconst documentDateVariable = {\r\n label: 'Document Date',\r\n value: '!docdate',\r\n values: [\r\n { label: 'docdate(M.d.yyyy)', value: '!docdate(M.d.yyyy)' },\r\n { label: 'docdate(MM/dd/yyyy)', value: '!docdate(MM/dd/yyyy)' },\r\n { label: 'docdate(MM/dd/yy)', value: '!docdate(MM/dd/yy)' },\r\n { label: 'docdate(dd/MM/yyyy)', value: '!docdate(dd/MM/yyyy)' },\r\n { label: 'docdate(yyyy-MM-dd)', value: '!docdate(yyyy-MM-dd)' },\r\n { label: 'docdate(MM-dd-yy)', value: '!docdate(MM-dd-yy)' },\r\n { label: 'docdate(dd-MM-yy)', value: '!docdate(dd-MM-yy)' },\r\n { label: 'docdate(MM-dd-yyyy)', value: '!docdate(MM-dd-yyyy)' },\r\n { label: 'docdate(yyyy/MM/dd)', value: '!docdate(yyyy/MM/dd)' },\r\n { label: 'docdate(yyyy/dd/MM)', value: '!docdate(yyyy/dd/MM)' },\r\n { label: 'docdate(yyyy-dd-MM)', value: '!docdate(yyyy-dd-MM)' },\r\n { label: 'docdate(MMMM-d-yyyy)', value: '!docdate(MMMM-d-yyyy)' },\r\n { label: 'docdate(MMMM d,yyyy)', value: '!docdate(MMMM d,yyyy)' },\r\n { label: 'docdate(MMMM d, yyyy)', value: '!docdate(MMMM d, yyyy)' },\r\n { label: 'docdate(MMMM/d/yyyy)', value: '!docdate(MMMM/d/yyyy)' },\r\n { label: 'docdate(MM d,yyyy)', value: '!docdate(MM d,yyyy)' },\r\n { label: 'docdate(MM d, yyyy)', value: '!docdate(MM d, yyyy)' },\r\n { label: 'docdate(MM.dd.yy)', value: '!docdate(MM.dd.yy)' },\r\n { label: 'docdate(MM dd,yyyy)', value: '!docdate(MM dd,yyyy)' },\r\n { label: 'docdate(MM dd, yyyy)', value: '!docdate(MM dd, yyyy)' },\r\n { label: 'docdate(MM/dd/yyyy)', value: '!docdate(MM/dd/yyyy)' },\r\n { label: 'docdate(dd MMMM YYYY)', value: '!docdate(dd MMMM YYYY)' }\r\n ]\r\n};\r\n\r\nconst dueDateVariable = {\r\n label: 'Due Date',\r\n value: '!duedate',\r\n values: [\r\n { label: 'duedate(M.d.yyyy)', value: '!duedate(M.d.yyyy)' },\r\n { label: 'duedate(MM/dd/yyyy)', value: '!duedate(MM/dd/yyyy)' },\r\n { label: 'duedate(MM/dd/yy)', value: '!duedate(MM/dd/yy)' },\r\n { label: 'duedate(dd/MM/yyyy)', value: '!duedate(dd/MM/yyyy)' },\r\n { label: 'duedate(yyyy-MM-dd)', value: '!duedate(yyyy-MM-dd)' },\r\n { label: 'duedate(MM-dd-yy)', value: '!duedate(MM-dd-yy)' },\r\n { label: 'duedate(dd-MM-yy)', value: '!duedate(dd-MM-yy)' },\r\n { label: 'duedate(MM-dd-yyyy)', value: '!duedate(MM-dd-yyyy)' },\r\n { label: 'duedate(yyyy/MM/dd)', value: '!duedate(yyyy/MM/dd)' },\r\n { label: 'duedate(yyyy/dd/MM)', value: '!duedate(yyyy/dd/MM)' },\r\n { label: 'duedate(yyyy-dd-MM)', value: '!duedate(yyyy-dd-MM)' },\r\n { label: 'duedate(MMMM-d-yyyy)', value: '!duedate(MMMM-d-yyyy)' },\r\n { label: 'duedate(MMMM d,yyyy)', value: '!duedate(MMMM d,yyyy)' },\r\n { label: 'duedate(MMMM d, yyyy)', value: '!duedate(MMMM d, yyyy)' },\r\n { label: 'duedate(MMMM/d/yyyy)', value: '!duedate(MMMM/d/yyyy)' },\r\n { label: 'duedate(MM d,yyyy)', value: '!duedate(MM d,yyyy)' },\r\n { label: 'duedate(MM d, yyyy)', value: '!duedate(MM d, yyyy)' },\r\n { label: 'duedate(MM.dd.yy)', value: '!duedate(MM.dd.yy)' },\r\n { label: 'duedate(MM dd,yyyy)', value: '!duedate(MM dd,yyyy)' },\r\n { label: 'duedate(MM dd, yyyy)', value: '!duedate(MM dd, yyyy)' },\r\n { label: 'duedate(MM/dd/yyyy)', value: '!duedate(MM/dd/yyyy)' },\r\n { label: 'duedate(dd MMMM YYYY)', value: '!duedate(dd MMMM YYYY)' }\r\n ]\r\n};\r\n\r\nconst deliveryTabBodyVariables = [\r\n { label: 'Category Name', value: '!categoryName' },\r\n { label: 'Subcategory Name', value: '!subCategoryName' },\r\n documentDateVariable,\r\n dueDateVariable,\r\n { label: 'Document Title', value: '!documentTitle' },\r\n { label: 'Document Url', value: '!documentUrl' },\r\n { label: 'Encoded Document Url', value: '!encodedDocumentUrl' },\r\n { label: 'Email', value: '!email' },\r\n { label: 'Fund Name', value: '!fundName' },\r\n { label: 'Fund Family Name', value: '!fundFamilyName' },\r\n { label: 'Investor Name', value: '!investorname' },\r\n { label: 'User ID', value: '!UserID' },\r\n { label: 'First Name', value: '!firstName' },\r\n { label: 'Last Name', value: '!lastName' },\r\n { label: 'Client Name', value: '!clientName' },\r\n { label: 'Client DB Name', value: '!clientDBName' }\r\n];\r\n\r\nconst deliveryTabSubjectVariables = [\r\n { label: 'Category Name', value: '!categoryName' },\r\n { label: 'Subcategory Name', value: '!subCategoryName' },\r\n documentDateVariable,\r\n dueDateVariable,\r\n { label: 'Document Title', value: '!documentTitle' },\r\n { label: 'Fund Name', value: '!fundName' },\r\n { label: 'Fund Family Name', value: '!fundFamilyName' },\r\n { label: 'Investor Name', value: '!investorname' },\r\n { label: 'Client Name', value: '!clientName' },\r\n { label: 'Client DB Name', value: '!clientDBName' }\r\n];\r\n\r\nconst contactVariables = [\r\n { label: 'User Id', value: '!userId' },\r\n { label: 'Password', value: '!Password' },\r\n { label: 'User Email', value: '!userEmail' },\r\n { label: 'First Name', value: '!firstName' },\r\n { label: 'Last Name', value: '!lastName' },\r\n { label: 'Salutation', value: '!salutation' },\r\n { label: 'Client Name', value: '!clientName' },\r\n { label: 'Client DB Name', value: '!clientDBName' }\r\n];\r\n\r\nconst documentUrlVariable = [\r\n { label: 'Document Url', value: '!documentUrl' },\r\n { label: 'Encoded Document Url', value: '!encodedDocumentUrl' }\r\n];\r\n\r\nconst variablesForDistributionList = [\r\n documentDateVariable,\r\n dueDateVariable,\r\n { label: 'Document Title', value: '!documentTitle' },\r\n { label: 'Fund Name', value: '!fundname' },\r\n { label: 'Fund Id', value: '!fundid' },\r\n { label: 'Fund Family Name', value: '!fundFamilyName' },\r\n { label: 'Investor Name', value: '!investorname' },\r\n { label: 'Category Name', value: '!categoryName' },\r\n { label: 'Subcategory Name', value: '!subCategoryName' },\r\n { label: 'User Id', value: '!userId' },\r\n { label: 'Password', value: '!Password' },\r\n { label: 'First Name', value: '!firstName' },\r\n { label: 'Last Name', value: '!lastName' },\r\n { label: 'Salutation', value: '!salutation' },\r\n { label: 'Client Name', value: '!clientName' },\r\n { label: 'Client DB Name', value: '!clientDBName' },\r\n { label: 'User Email', value: '!userEmail' }\r\n];\r\n\r\nconst distributionListSubjectVariables = variablesForDistributionList;\r\n\r\nconst distributionListBodyVariables = documentUrlVariable.concat(\r\n variablesForDistributionList\r\n);\r\n\r\nconst mupVariables = [\r\n { label: 'MUP User Id', value: '!MUPUserID' },\r\n { label: 'MUP Password', value: '!MUPPassword' },\r\n { label: 'MUP First Name', value: '!MUPFirstname' },\r\n { label: 'MUP Lastname', value: '!MUPLastname' },\r\n { label: 'MUP Email', value: '!MUPEmail' }\r\n];\r\n\r\nexport {\r\n mailTemplateTypes,\r\n deliveryTabBodyVariables,\r\n deliveryTabSubjectVariables,\r\n distributionListSubjectVariables,\r\n distributionListBodyVariables,\r\n contactVariables,\r\n mupVariables\r\n};\r\n","/*\r\n * ICX Portal integration code\r\n */\r\n\r\nimport jwtDecode from 'jwt-decode';\r\nimport { throttle } from 'lodash';\r\nimport { isDevMode } from './index';\r\nimport { parse, stringify } from '../components/forked/stringify';\r\n\r\nlet portalMode = false;\r\n\r\n/**\r\n * ICX message handler (posted from ICX portal to iFrame)\r\n * @param {*} eventData\r\n * @param callBack\r\n */\r\nconst receiveMessageFromIcx = (eventData, callBack) => {\r\n //NOSONAR\r\n if (eventData.action === 'updateIccApiToken') {\r\n let icapitoken = eventData.data;\r\n\r\n const jwt = jwtDecode(icapitoken);\r\n\r\n if (jwt.client) {\r\n // Store tokebn and tenant in local storage\r\n sessionStorage.setItem('token', icapitoken);\r\n }\r\n } else if (eventData.action === 'setIccApiToken') {\r\n const { client, ...rest } = parse(window.location.search);\r\n // Retrieve JWT token from data of received message from ICX portal\r\n let icapitoken = eventData.data.icapitoken;\r\n\r\n if (icapitoken) {\r\n const jwt = jwtDecode(icapitoken);\r\n if (jwt.client) {\r\n // Store token and tenant in local storage\r\n sessionStorage.setItem('token', icapitoken);\r\n let jwtClient = jwt.client;\r\n let isMupTenant = false;\r\n if (client) {\r\n sessionStorage.setItem('isMupChild', jwt.client !== client);\r\n isMupTenant = true;\r\n jwtClient = client;\r\n }\r\n sessionStorage.setItem('isMupTenant', isMupTenant);\r\n sessionStorage.setItem('tenant', jwtClient);\r\n }\r\n\r\n // Remove token from URL, leave the rest\r\n let search = stringify(rest);\r\n if (search !== '') {\r\n search = '?' + search;\r\n }\r\n window.history.replaceState(\r\n {},\r\n 'IC New Admin',\r\n window.location.pathname + search\r\n );\r\n\r\n portalMode = true;\r\n // Render the application\r\n callBack();\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Initialize ICX Portal communication\r\n */\r\nexport const initIcxPortal = callBack => {\r\n // Handle frame messages posted from ICX Portal\r\n window.addEventListener(\r\n // NOSONAR\r\n 'message',\r\n messageEvent => {\r\n if (typeof messageEvent.data === 'string') {\r\n try {\r\n const eventContent = JSON.parse(messageEvent.data);\r\n if (eventContent.origin !== 'ICX') return;\r\n\r\n if (eventContent.origin === 'ICX') {\r\n receiveMessageFromIcx(eventContent, callBack);\r\n }\r\n } catch (error) {\r\n // Do nothing, not a JSON message\r\n }\r\n }\r\n },\r\n false\r\n );\r\n\r\n if (isDevMode()) {\r\n // Dev mode is on -> just render the application\r\n callBack();\r\n } else {\r\n // Dev mode is off, accessing through Portal -> send message to ICX Portal to receive the token\r\n sendgetIccApiTokenToIcx();\r\n }\r\n\r\n const sendPingOnMoveThrottled = throttle(sendPingOnMove, 60000);\r\n window.addEventListener('mousemove', sendPingOnMoveThrottled);\r\n};\r\n\r\nconst sendPingOnMove = () => {\r\n sendPingToIcx();\r\n};\r\n\r\n/**\r\n * Check if running in ICX Portal\r\n */\r\nexport const runningInPortal = () => {\r\n return portalMode;\r\n};\r\n\r\n/**\r\n * Send Ping to ICX Portal\r\n */\r\nlet pingTimeout = undefined;\r\nconst PING_TIMEOUT = 60000;\r\n\r\nexport const sendPingToIcx = () => {\r\n // 1st test if a sending ping has been forecasted\r\n if (portalMode && pingTimeout === undefined) {\r\n // No ping forecasted, let's send it in 1 minute\r\n pingTimeout = setTimeout(() => {\r\n pingTimeout = undefined;\r\n\r\n var parentDomain = document.location.ancestorOrigins\r\n ? document.location.ancestorOrigins[0]\r\n : document.referrer;\r\n if (parentDomain === undefined || parentDomain === '') parentDomain = '*';\r\n\r\n // SonarQube: we must send this ping message to our container. No sensitive info sent !\r\n const msg = '{ \"origin\": \"IcxAdmin\", \"action\": \"ping\"}';\r\n window.parent.postMessage(msg, parentDomain); // NOSONAR\r\n }, PING_TIMEOUT);\r\n }\r\n};\r\n\r\nexport const sendgetIccApiTokenToIcx = () => {\r\n let parentDomain = document.location.ancestorOrigins\r\n ? document.location.ancestorOrigins[0]\r\n : document.referrer;\r\n if (parentDomain === undefined || parentDomain === '') parentDomain = '*';\r\n\r\n // SonarQube: we must send getIccApiToken message to our container so we can get the token from ICX Portal. No sensitive info sent !\r\n const msg = '{ \"origin\": \"IcxAdmin\", \"action\": \"getIccApiToken\"}';\r\n window.parent.postMessage(msg, parentDomain); // NOSONAR\r\n};\r\n","module.exports = {\r\n ra: {\r\n action: {\r\n add_filter: 'Add Search Condition',\r\n add: 'Add',\r\n back: 'Go Back',\r\n bulk_actions: '1 item selected |||| %{smart_count} items selected',\r\n cancel: 'Cancel',\r\n clear_input_value: 'Clear value',\r\n clone: 'Clone',\r\n confirm: 'Confirm',\r\n confirm_leave: 'Leave Page',\r\n confirm_quit: 'Quit',\r\n create: 'Create',\r\n delete: 'Delete',\r\n edit: 'Edit',\r\n export: 'Export',\r\n list: 'List',\r\n refresh: 'Refresh',\r\n remove_filter: 'Remove this filter',\r\n remove: 'Remove',\r\n save: 'Save',\r\n search: 'Search',\r\n show: 'Show',\r\n sort: 'Sort',\r\n undo: 'Undo',\r\n unselect: 'Unselect',\r\n expand: 'Expand',\r\n close: 'Close',\r\n loading_list: 'The list of %{listName} is loading, just a moment please'\r\n },\r\n boolean: {\r\n true: 'Yes',\r\n false: 'No',\r\n null: 'Empty'\r\n },\r\n page: {\r\n create: 'Create %{name}',\r\n dashboard: 'Dashboard',\r\n edit: '%{name} #%{id}',\r\n error: 'Something went wrong',\r\n list: '%{name}',\r\n loading: 'Loading',\r\n not_found: 'Not Found',\r\n show: '%{name} #%{id}'\r\n },\r\n input: {\r\n file: {\r\n upload_several: 'Drop some files to upload, or click to select one.',\r\n upload_single: 'Drop a file to upload, or click to select it.'\r\n },\r\n image: {\r\n upload_several: 'Drop some pictures to upload, or click to select one.',\r\n upload_single: 'Drop a picture to upload, or click to select it.'\r\n },\r\n references: {\r\n all_missing: 'Unable to find references data.',\r\n many_missing:\r\n 'At least one of the associated references no longer appears to be available.',\r\n single_missing:\r\n 'Associated reference no longer appears to be available.'\r\n },\r\n password: {\r\n toggle_hidden: 'Hidden'\r\n }\r\n },\r\n message: {\r\n about: 'About',\r\n are_you_sure: 'Are you sure?',\r\n no_edit_permission:\r\n 'No changes were saved - you do not have appropriate privileges.',\r\n bulk_delete_content:\r\n 'Are you sure you want to delete this %{name}? |||| Are you sure you want to delete these %{smart_count} items?',\r\n bulk_delete_title:\r\n 'Delete %{name} |||| Delete %{smart_count} %{name} items',\r\n delete_content:\r\n 'The %{name} will be permanently deleted. You can not undo this action.',\r\n delete_title: 'Delete this %{name}',\r\n details: 'Details',\r\n error: \"A client error occurred and your request couldn't be completed.\",\r\n invalid_form: 'Please check for errors before proceeding.',\r\n loading: 'The page is loading, just a moment please',\r\n loading_table: 'The table is loading, just a moment please',\r\n no: 'No',\r\n not_found: 'Either you typed a wrong URL, or you followed a bad link.',\r\n yes: 'Yes',\r\n confirm_copy:\r\n 'Are you sure you want to copy the instructions on this page to all funds for this investor. Doing so will erase whatever instructions are assigned for the other funds and replace it with this one. Do you want to proceed ?',\r\n confirm_delete_tags:\r\n 'Are you sure you want to delete this %{name}? All related links will be removed. |||| Are you sure you want to delete these %{smart_count} items? All related links will be removed.',\r\n confirm_delete_tag:\r\n 'The %{name} will be permanently deleted. You can not undo this action. All related links will be removed.',\r\n fund_level_document:\r\n '(Document is visible from all investors of the selected funds, selecting a pool of investors via tags is disabled)'\r\n },\r\n navigation: {\r\n no_results: 'No results found',\r\n no_more_results:\r\n 'The page number %{page} is out of boundaries. Try the previous page.',\r\n page_out_of_boundaries: 'Page number %{page} out of boundaries',\r\n page_out_from_end: 'Cannot go after last page',\r\n page_out_from_begin: 'Cannot go before page 1',\r\n page_range_info: '%{offsetBegin}-%{offsetEnd} of %{total}',\r\n page_rows_per_page: 'Rows per page:',\r\n next: 'Next',\r\n prev: 'Prev'\r\n },\r\n auth: {\r\n auth_check_error: 'Please login to continue',\r\n user_menu: 'Profile',\r\n username: 'Username',\r\n password: 'Password',\r\n sign_in: 'Sign in',\r\n sign_in_error: 'Authentication failed, please retry',\r\n logout: 'Logout'\r\n },\r\n notification: {\r\n updated:\r\n 'Changes were saved successfully |||| %{smart_count} changes were saved successfully',\r\n custom_updated_message: 'Changes were saved successfully',\r\n importation_permission_groups:\r\n 'Permission Groups have been successfully Imported.',\r\n copy_contacts_successfull: 'Contacts copied successfully',\r\n created_contact_successful: 'Contact was successfully created.',\r\n created_investor_successful: 'Investor was successfully created',\r\n created: 'Item was created successfully',\r\n deleted:\r\n 'Item was deleted successfully |||| %{smart_count} items were deleted successfully',\r\n added:\r\n 'Item was added successfully |||| %{smart_count} items were added successfully',\r\n bad_item: 'Incorrect element',\r\n item_doesnt_exist: 'Element does not exist',\r\n http_error: 'Server communication error',\r\n data_provider_error: 'dataProvider error. Check the console for details.',\r\n canceled: 'Action cancelled',\r\n logged_out: 'Your session has ended, please reconnect.',\r\n password_reset:\r\n 'Password was reset. Email with new temporary password has been sent.',\r\n set_password_updated: 'Temporary password created successfully.',\r\n send_envelopes:\r\n 'Envelope was sent successfully |||| %{smart_count} Envelopes were sent successfully',\r\n udfs_successfully_updated: 'Properties successfully updated',\r\n group_created:\r\n 'To complete the process of adding a new permission group the next step must be completed by selecting the document categories that should be mapped to this new group. Click on the Related Categories and Subcategories option once the group is created to make your selections.',\r\n distribution_email_sent:\r\n 'Email send Initiated - check the email archive for the status',\r\n server: '%{message}',\r\n distribution_list_updated: 'Distribution list updated successfully',\r\n watermark_text_direction:\r\n 'Watermark Text Direction cannot be empty if Direction is chosen.',\r\n watermark_text_position:\r\n 'Watermark Text Position cannot be empty if Position is chosen.',\r\n delete_error: 'Error: Items was not deleted',\r\n resource_upload_pending: 'Your document has been set as Pending',\r\n resource_upload_approved: 'Your document has been approved',\r\n resource_upload_approved_email:\r\n 'Your document has been approved and email was sent successfully',\r\n copy_wire_instructions: 'Wire Instructions successfully copied',\r\n update_primary_contacts_successfull:\r\n 'Primary Contacts were successfully updated',\r\n report_has_more_data:\r\n \"The report has reached it's maximum output. Please change your filter selection to get different results.\",\r\n report_has_bad_criteria:\r\n 'The report contains filter criteria that is not supported. One of the filters used must contain only one value checked/selected.',\r\n date_after_today: 'Cannot be set after current date'\r\n },\r\n validation: {\r\n required: 'Required',\r\n minLength: 'Must be %{min} characters at least',\r\n maxLength: 'Must be %{max} characters or less',\r\n minValue: 'Must be at least %{min}',\r\n maxValue: 'Must be %{max} or less',\r\n number: 'Must be a number',\r\n email: 'Must be a valid email',\r\n oneOf: 'Must be one of: %{options}',\r\n regex: 'Must match a specific format (regexp): %{pattern}'\r\n },\r\n log: {\r\n error: 'An error occurred.. (error-ID: %{logId} %{message})'\r\n },\r\n network: {\r\n http_error:\r\n 'Server communication error (%{status}). Create in ra.network._%{status}',\r\n _504: 'Gateway Timeout (504)'\r\n }\r\n },\r\n resources: {\r\n organizations: {\r\n empty: 'No results fund',\r\n name: 'Investor Family'\r\n },\r\n splitmethods: {\r\n name: 'Split Method'\r\n },\r\n users: {\r\n name: 'Contact'\r\n },\r\n fundfamilies: {\r\n name: 'Fund Family'\r\n },\r\n funds: {\r\n name: 'Fund'\r\n },\r\n investors: {\r\n name: 'Investor'\r\n },\r\n resourceuploads: {\r\n name: 'Document Management'\r\n },\r\n documenttypes: {\r\n name: 'Document Type'\r\n },\r\n categories: {\r\n name: 'Document Category'\r\n },\r\n documentpresets: {\r\n name: 'Document Profile'\r\n },\r\n documentwatermarks: {\r\n name: 'Watermark Profile'\r\n },\r\n groups: {\r\n name: 'Permission Group'\r\n },\r\n roles: {\r\n name: 'Access Role'\r\n },\r\n fundterms: {\r\n name: 'Fund Terms'\r\n },\r\n categoryterms: {\r\n name: 'Category Terms'\r\n },\r\n mailtemplates: {\r\n name: 'Email Template'\r\n },\r\n distributionlists: {\r\n name: 'Distribution List'\r\n },\r\n categorytermsrelations: {\r\n name: 'Category Terms Relationship'\r\n },\r\n fundtermsrelations: {\r\n name: 'Fund Terms Relationship'\r\n },\r\n authorities: {\r\n name: 'Authority'\r\n },\r\n userphones: {\r\n name: 'Phone Number'\r\n },\r\n useraddresses: {\r\n name: 'Address'\r\n },\r\n userphonetypes: {\r\n name: 'Phone type'\r\n },\r\n useraddresstypes: {\r\n name: 'Address type'\r\n },\r\n userauthorizations: {\r\n name: 'Authorization'\r\n },\r\n userroles: {\r\n name: 'Role'\r\n },\r\n subcategories: {\r\n name: 'Subcategory'\r\n },\r\n fundinvestors: {\r\n name: 'Fund Investor Relationship'\r\n },\r\n groupcategories: {\r\n name: 'Group Category Relationship'\r\n },\r\n wireinstructions: {\r\n name: 'Wire Instruction'\r\n },\r\n fundtags: {\r\n name: 'Fund Tag'\r\n },\r\n investortags: {\r\n name: 'Investor Tag'\r\n },\r\n fundinvestortags: {\r\n name: 'Fund-Investor Tag'\r\n }\r\n }\r\n};\r\n","/**\r\n * Try to get IC error from JSON.\r\n * Warning: multiple form of error reporting, think about standardizing in IC Rest API !\r\n * @param {*} response\r\n */\r\nexport function getIcError(response) {\r\n if (typeof response === 'string') {\r\n // Some exception mappers return simple strings\r\n return response;\r\n }\r\n if (typeof response === 'object') {\r\n // Some exception mappers return objects with message or errorMessage fields\r\n const {\r\n data,\r\n request,\r\n message,\r\n errorMessage = 'Un-known Error'\r\n } = response;\r\n\r\n if (data && data.errorMessage) {\r\n return data.errorMessage;\r\n }\r\n if (request) {\r\n // try to get and return messageError from responseText otherwise return responseText\r\n try {\r\n const obj = JSON.parse(request.responseText);\r\n return obj.errorMessage || obj.message || request.responseText;\r\n } catch (e) {\r\n if (\r\n (request.responseType === 'text' || request.responseType === '') &&\r\n request.responseText\r\n ) {\r\n return request.responseText;\r\n }\r\n if (request.statusText) {\r\n // blob json\r\n return request.statusText;\r\n }\r\n }\r\n }\r\n if (message) {\r\n return message;\r\n }\r\n return errorMessage;\r\n }\r\n}\r\n","/**\r\n * Base class fro APIs\r\n */\r\nclass ApiBase {\r\n API_URL = 'v1';\r\n\r\n /**\r\n * Get standard headers for API calls\r\n */\r\n getHeaders() {\r\n const token = sessionStorage.getItem('token');\r\n const tenant = sessionStorage.getItem('tenant');\r\n\r\n return {\r\n 'Content-Type': 'application/json',\r\n 'IC-USER-CLIENT': Buffer.from(tenant).toString('base64'),\r\n 'X-IC-ACCESS-TOKEN': token\r\n };\r\n }\r\n}\r\n\r\nexport default ApiBase;\r\n","import {\r\n GET_LIST,\r\n GET_ONE,\r\n UPDATE,\r\n GET_MANY_REFERENCE,\r\n GET_MANY,\r\n CREATE,\r\n DELETE,\r\n DELETE_MANY,\r\n UPDATE_MANY\r\n} from 'react-admin';\r\nimport iccApis from './IccApis';\r\nimport { getIcError } from './utils';\r\nimport axios from 'axios';\r\nimport { sendPingToIcx } from '../utils/IcxPortal';\r\nimport { stringify } from '../components/forked/stringify';\r\n\r\nconst API_URL = 'v1';\r\n\r\nconst convertDataProviderRequestToHTTP = (api, type, resource, params) => {\r\n // Replace Date() objects with JSON ISO Dates on filters\r\n const filters = params.filter && JSON.parse(JSON.stringify(params.filter));\r\n\r\n switch (type) {\r\n case GET_LIST:\r\n if (api.paginated && params.pagination) {\r\n // With pagination, sort and filters\r\n const { page, perPage } = params.pagination;\r\n\r\n let query = {};\r\n\r\n // Pagination\r\n if (perPage > 0) {\r\n query = Object.assign(\r\n {\r\n pageNumber: page - 1,\r\n pageSize: perPage\r\n },\r\n query\r\n );\r\n }\r\n\r\n // Sorting\r\n if (params.sort !== undefined) {\r\n const { field, order } = params.sort;\r\n if (field !== undefined) {\r\n query = Object.assign(\r\n {\r\n orderBy: field,\r\n orderDirection: order\r\n },\r\n query\r\n );\r\n }\r\n }\r\n\r\n return {\r\n url: `${API_URL}/${api.plural}?${stringify(\r\n query\r\n )}&${stringify(filters, { arrayFormat: 'open-ic' })}`,\r\n options: { method: 'GET' }\r\n };\r\n } else {\r\n var filter =\r\n filters && Object.keys(filters).length > 0\r\n ? `?${stringify(filters)}`\r\n : '';\r\n // Simple list of refernces (e.g. fundclasses)\r\n return {\r\n url: `${API_URL}/${api.plural}${filter}`,\r\n options: { method: 'GET' }\r\n };\r\n }\r\n case GET_ONE: {\r\n // Get a single resource\r\n const idQuery = getQueryIdsFromId(api, params);\r\n\r\n let additionalFilters;\r\n if (api.additionalGetOneFilterParam) {\r\n additionalFilters = { ...api.additionalGetOneFilterParam };\r\n }\r\n\r\n const urlFilters = additionalFilters\r\n ? `&${stringify(additionalFilters)}`\r\n : '';\r\n\r\n return {\r\n url: `${API_URL}/${api.singular}?${stringify(idQuery)}${urlFilters}`\r\n };\r\n }\r\n case GET_MANY:\r\n // Get many resources (use plural verb)\r\n const ids = encodeURI(`[${params.ids}]`);\r\n return { url: `${API_URL}/${api.plural}?id=${ids}` };\r\n case GET_MANY_REFERENCE: {\r\n // Get many as reference\r\n let query = {\r\n [params.target]: params.id\r\n };\r\n\r\n if (params.sort !== undefined) {\r\n const { field, order } = params.sort;\r\n if (field !== undefined) {\r\n query = Object.assign(\r\n {\r\n orderBy: field,\r\n orderDirection: order\r\n },\r\n query\r\n );\r\n }\r\n }\r\n return {\r\n url: `${API_URL}/${api.plural}?${stringify(query)}&${stringify(\r\n filters\r\n )}`,\r\n options: {}\r\n };\r\n }\r\n case UPDATE: {\r\n const idQuery = getQueryIdsFromData(api, params);\r\n // Update resource (can be POST or PUT, depends on the API)\r\n return {\r\n url: `${API_URL}/${api.singular}?${stringify(idQuery)}`,\r\n options: { method: api.updateMethod, data: JSON.stringify(params.data) }\r\n };\r\n }\r\n case UPDATE_MANY: {\r\n const idQuery = getQueryIdsFromId(api, params);\r\n return {\r\n url: `${API_URL}/${api.plural}?${stringify(idQuery)}`,\r\n options: { method: api.updateMethod, data: JSON.stringify(params.data) }\r\n };\r\n }\r\n case CREATE: {\r\n // Create new resource (can use POST or PUT, depends on the API)\r\n return {\r\n url: api.generatedId\r\n ? `${API_URL}/${api.singular}`\r\n : `${API_URL}/${api.singular}?${stringify(\r\n getQueryIdsFromData(api, params)\r\n )}`,\r\n options: { method: api.createMethod, data: JSON.stringify(params.data) }\r\n };\r\n }\r\n case DELETE: {\r\n const idQuery = getQueryIdsFromId(api, params);\r\n // Delete resource by ID\r\n return {\r\n url: `${API_URL}/${api.singular}?${stringify(idQuery)}`,\r\n options: { method: 'DELETE' }\r\n };\r\n }\r\n case DELETE_MANY:\r\n // Delete a list of resources\r\n const { idsQueryDataList, idsQuery } = getQueryIdsListFromIds(\r\n api,\r\n params\r\n );\r\n return {\r\n url: `${API_URL}/${api.plural}?${stringify(idsQuery)}`,\r\n options: { method: 'DELETE', data: JSON.stringify(idsQueryDataList) }\r\n };\r\n default:\r\n // Not supported yet\r\n throw new Error(`Unsupported action type ${type}`);\r\n }\r\n};\r\n\r\nconst convertHTTPResponseToDataProvider = (\r\n api,\r\n response,\r\n type,\r\n resource,\r\n params\r\n) => {\r\n switch (type) {\r\n case GET_LIST:\r\n case GET_MANY:\r\n if (api.paginated) {\r\n const { pageData, totalCount } = response;\r\n return {\r\n data: pageData.map(item => ({ ...item, id: buildId(api, item) })),\r\n total: totalCount\r\n };\r\n } else {\r\n return {\r\n data: response.map(item => ({ ...item, id: buildId(api, item) })),\r\n total: response.length\r\n };\r\n }\r\n case GET_MANY_REFERENCE:\r\n if (api.paginated) {\r\n const { pageData, totalCount } = response;\r\n return {\r\n data: pageData.map(item => ({\r\n ...item,\r\n id: buildId(api, item)\r\n })),\r\n total: totalCount\r\n };\r\n } else {\r\n return {\r\n data: response.map(item => ({ ...item, id: buildId(api, item) })),\r\n total: response.length\r\n };\r\n }\r\n case DELETE_MANY:\r\n return {\r\n data: params.ids\r\n };\r\n case DELETE:\r\n return {\r\n data: params.previousData\r\n };\r\n case UPDATE_MANY:\r\n return { data: [...response] };\r\n default:\r\n return { data: { ...response, id: buildId(api, response) } };\r\n }\r\n};\r\n\r\nconst executeRequest = (\r\n api,\r\n url,\r\n options,\r\n type,\r\n resource,\r\n params,\r\n authentToken,\r\n tenant\r\n) => {\r\n var request = {\r\n url: url,\r\n ...options,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'IC-USER-CLIENT': Buffer.from(tenant).toString('base64'),\r\n 'X-IC-ACCESS-TOKEN': authentToken\r\n }\r\n };\r\n\r\n let error = undefined;\r\n return axios\r\n .request(request)\r\n .then(r => {\r\n if (r.status !== 200 && r.status !== 201) {\r\n error = r.statusText;\r\n }\r\n let response = undefined;\r\n if (options && options.method === 'DELETE') {\r\n response = {};\r\n } else {\r\n if (r.headers['content-type'].indexOf('application/json') !== -1) {\r\n response = r.data;\r\n }\r\n }\r\n\r\n // when we catch a code status > 201 and < 300\r\n if (error !== undefined) {\r\n error = getIcError(response) || error;\r\n throw new Error(error);\r\n }\r\n\r\n return convertHTTPResponseToDataProvider(\r\n api,\r\n response,\r\n type,\r\n resource,\r\n params\r\n );\r\n })\r\n .catch(err => {\r\n error = getIcError(err.response);\r\n throw new Error(error);\r\n });\r\n};\r\n\r\n/**\r\n * Get IDs query params for POST and PUT (make query from params.data)\r\n */\r\nfunction getQueryIdsFromData(api, params) {\r\n if (Array.isArray(api.id)) {\r\n const queryParams = {};\r\n api.id.forEach(id => {\r\n queryParams[id] = params.data[id];\r\n });\r\n return queryParams;\r\n } else {\r\n return { id: params.data.id };\r\n }\r\n}\r\n\r\n/**\r\n * Get IDs query params for GET_ONE (split params.id)\r\n */\r\nfunction getQueryIdsFromId(api, params) {\r\n const queryParams = {};\r\n\r\n if (Array.isArray(api.id)) {\r\n const ids = params.id.split(':');\r\n if (ids.length !== api.id.length) {\r\n throw Error('Invalid composite key');\r\n }\r\n api.id.forEach((id, idx) => {\r\n queryParams[id] = ids[idx];\r\n });\r\n } else {\r\n const idKey = api.queryId || 'id';\r\n queryParams[idKey] = params.id;\r\n }\r\n return queryParams;\r\n}\r\n\r\n/**\r\n * Get IDs query params List for DELETE_MANY (split params.ids)\r\n */\r\nfunction getQueryIdsListFromIds(api, params) {\r\n const idsQuery = {};\r\n const idsQueryDataList = [];\r\n\r\n if (Array.isArray(api.id)) {\r\n params.ids.forEach(id => {\r\n const queryParams = {};\r\n const ids = id.split(':');\r\n if (ids.length !== api.id.length) {\r\n throw Error('Invalid composite key');\r\n }\r\n api.id.forEach((id, idx) => {\r\n queryParams[id] = ids[idx];\r\n });\r\n idsQueryDataList.push(queryParams);\r\n });\r\n return { idsQueryDataList };\r\n } else {\r\n idsQuery['id'] = `[${params.ids}]`;\r\n return { idsQuery };\r\n }\r\n}\r\n\r\n/**\r\n * Build key for an item (can be composite)\r\n * @param {*} api\r\n * @param {*} item\r\n */\r\nfunction buildId(api, item) {\r\n if (Array.isArray(api.id)) {\r\n const ids = [];\r\n api.id.forEach(id => {\r\n ids.push(item[id]);\r\n });\r\n return ids.join(':');\r\n } else {\r\n return item[api.id];\r\n }\r\n}\r\n\r\n/**\r\n * GET_MANY special handler, doing several calls as chunks\r\n */\r\nfunction getMany(api, resource, params, token, tenant) {\r\n if (api.getMany === false) {\r\n // Special case : GET_MANY not supported by API, log to console and return an empty list\r\n console.warn(\r\n 'Warning: getMany for this resource: %s is disabled, please take a look in IccApis.js ',\r\n resource\r\n );\r\n return Promise.resolve({ data: [] });\r\n }\r\n return getManyByChunks(\r\n params.ids,\r\n api.pluralId || 'id',\r\n api,\r\n undefined,\r\n token,\r\n tenant\r\n );\r\n}\r\n\r\n/**\r\n * GET_MANY_REFERENCE special handler, doing several calls as chunks\r\n * IMPORTANT: note that this function not hanling the sorting, it's called\r\n * only for some cases (chunk === true in IccApi and when chunk is needed)\r\n */\r\nfunction getManyReference(api, params, token, tenant) {\r\n const filters = params.filter && JSON.parse(JSON.stringify(params.filter));\r\n return getManyByChunks(\r\n params.id,\r\n encodeURI(params.target),\r\n api,\r\n filters,\r\n token,\r\n tenant\r\n );\r\n}\r\n\r\n// We try to read this value from localStorage so that we can test the real max Request Size on different environments\r\nconst GET_MAX_PARAMS_SIZE = 3000; // 3000 characters max in a GET request to limit the URI size\r\n\r\n/**\r\n * GET_MANY and GET_MANY_REFERENCE by chunks\r\n */\r\nfunction getManyByChunks(allIds, targetId, api, filters, token, tenant) {\r\n const baseUrl = `${API_URL}/${api.plural}?${targetId}=`;\r\n\r\n if (api.additionalGetManyFilterParam) {\r\n filters = { ...filters, ...api.additionalGetManyFilterParam };\r\n }\r\n\r\n const urlFilters = filters ? `&${stringify(filters)}` : '';\r\n\r\n const idsMaxLength =\r\n GET_MAX_PARAMS_SIZE -\r\n (50 + baseUrl.length + urlFilters.length + encodeURI('[]').length); // 50 protocol and host buffer\r\n\r\n let reqIds = encodeURI(`${allIds}`);\r\n const chunks = [];\r\n while (reqIds.length > idsMaxLength) {\r\n const lastIndex = reqIds.substring(0, idsMaxLength).lastIndexOf(',');\r\n chunks.push(reqIds.substring(0, lastIndex));\r\n reqIds = reqIds.substring(lastIndex + 1);\r\n }\r\n chunks.push(reqIds);\r\n\r\n // Create chunked API calls --> list of promises\r\n const promises = chunks.map(ids => {\r\n const request = {\r\n url: baseUrl + encodeURI('[') + ids + encodeURI(']') + urlFilters,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'IC-USER-CLIENT': Buffer.from(tenant).toString('base64'),\r\n 'X-IC-ACCESS-TOKEN': token\r\n }\r\n };\r\n\r\n let error = undefined;\r\n return axios\r\n .request(request)\r\n .then(r => {\r\n // Process individual API response and return chunked data\r\n if (r.status !== 200 && r.status !== 201) {\r\n error = r.statusText;\r\n }\r\n let response = undefined;\r\n if (r.headers['content-type'].indexOf('application/json') !== -1) {\r\n response = r.data;\r\n }\r\n\r\n // when we catch a code status > 201 and < 300\r\n if (error !== undefined) {\r\n error = getIcError(response) || error;\r\n throw new Error(error);\r\n }\r\n return response;\r\n })\r\n .catch(err => {\r\n error = getIcError(err.response) || err.message;\r\n throw new Error(error);\r\n });\r\n });\r\n\r\n // Wait for all API calls to be completed and merge the responses into one list\r\n // Then return this as a promise for calling function\r\n return Promise.all(promises).then(responses => {\r\n var data;\r\n if (api.paginated) {\r\n data = [].concat.apply(\r\n [],\r\n responses.map(response => response.pageData)\r\n );\r\n } else {\r\n data = [].concat.apply([], responses);\r\n }\r\n\r\n return {\r\n data: data.map(item => ({ ...item, id: buildId(api, item) })),\r\n total: data.length\r\n };\r\n });\r\n}\r\n\r\nfunction getManyByChunksFundsForDistributionList(\r\n api,\r\n resource,\r\n params,\r\n token,\r\n tenant\r\n) {\r\n const baseUrl = `${API_URL}/funds?userIds=`;\r\n\r\n var ids = params.filter.userIds.slice(0, -1);\r\n var allIds = ids.substring(1).split(',');\r\n\r\n const chunks = [];\r\n while (allIds.length > 300) {\r\n var chunk = allIds.slice(0, 300);\r\n chunks.push(chunk);\r\n allIds.splice(0, 300);\r\n }\r\n chunks.push(allIds);\r\n\r\n // Create chunked API calls --> list of promises\r\n const promises = chunks.map(ids => {\r\n const request = {\r\n url: baseUrl + encodeURI('[') + encodeURIComponent(ids) + encodeURI(']'),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'IC-USER-CLIENT': Buffer.from(tenant).toString('base64'),\r\n 'X-IC-ACCESS-TOKEN': token\r\n }\r\n };\r\n\r\n let error = undefined;\r\n return axios\r\n .request(request)\r\n .then(r => {\r\n // Process individual API response and return chunked data\r\n if (r.status !== 200 && r.status !== 201) {\r\n error = r.statusText;\r\n }\r\n let response = undefined;\r\n if (r.headers['content-type'].indexOf('application/json') !== -1) {\r\n response = r.data;\r\n }\r\n\r\n // when we catch a code status > 201 and < 300\r\n if (error !== undefined) {\r\n error = getIcError(response) || error;\r\n throw new Error(error);\r\n }\r\n return response;\r\n })\r\n .catch(err => {\r\n error = getIcError(err.response) || err.message;\r\n throw new Error(error);\r\n });\r\n });\r\n\r\n // Wait for all API calls to be completed and merge the responses into one list\r\n // Then return this as a promise for calling function\r\n return Promise.all(promises).then(responses => {\r\n var data;\r\n if (api.paginated) {\r\n data = [].concat.apply(\r\n [],\r\n responses.map(response => response.pageData)\r\n );\r\n } else {\r\n data = [].concat.apply([], responses);\r\n }\r\n\r\n let uniqueFundIds = [];\r\n let uniqueData = [];\r\n data.forEach(d => {\r\n if (!uniqueFundIds.includes(d.name)) {\r\n uniqueFundIds.push(d.name);\r\n uniqueData.push(d);\r\n }\r\n });\r\n\r\n return {\r\n data: uniqueData.map(item => ({ ...item, id: buildId(api, item) })),\r\n total: uniqueData.length\r\n };\r\n });\r\n}\r\n\r\n/**\r\n * Data provider\r\n */\r\nexport default (type, resource, params) => {\r\n const api = iccApis[resource];\r\n if (api === undefined) {\r\n throw new Error(`Unknown ICC API ${resource}`);\r\n }\r\n\r\n // Send a ping request to ICX portal every minute if launched inside ICXP\r\n sendPingToIcx();\r\n\r\n const token = sessionStorage.getItem('token');\r\n const tenant = sessionStorage.getItem('tenant');\r\n\r\n // Doing GET_MANY with chunks to avoid \"URI too long\" errors\r\n if (type === GET_MANY) {\r\n return getMany(api, resource, params, token, tenant);\r\n }\r\n\r\n // Doing GET_MANY_REFERENCE with chunks to avoid \"URI too long\" errors\r\n // IMPORTANT: note that getManyReference function not hanling the sorting, it's called\r\n // only for some cases (chunk passed as true in the params options and when chunk is needed)\r\n if (\r\n type === GET_MANY_REFERENCE &&\r\n params.options &&\r\n params.options.chunk &&\r\n Array.isArray(params.id)\r\n ) {\r\n return getManyReference(api, params, token, tenant);\r\n }\r\n\r\n if (\r\n type === GET_LIST &&\r\n params.filter &&\r\n params.filter.chunk &&\r\n params.filter.getFundsForDistributionList\r\n ) {\r\n return getManyByChunksFundsForDistributionList(\r\n api,\r\n resource,\r\n params,\r\n token,\r\n tenant\r\n );\r\n }\r\n\r\n const { url, options } = convertDataProviderRequestToHTTP(\r\n api,\r\n type,\r\n resource,\r\n params\r\n );\r\n\r\n return executeRequest(\r\n api,\r\n url,\r\n options,\r\n type,\r\n resource,\r\n params,\r\n token,\r\n tenant\r\n );\r\n};\r\n","const strictUriEncode = require('strict-uri-encode');\r\nconst decodeComponent = require('decode-uri-component');\r\nconst splitOnFirst = require('split-on-first');\r\nconst filterObject = require('filter-obj');\r\nconst { caseOpenIc } = require('./caseOpenIc');\r\n\r\nconst isNullOrUndefined = value => value === null || value === undefined;\r\n/**\r\n * Due to a serialization issue with the backend that can only received array as an encoded string with brackets,\r\n * we forked the stringify method from https://github.com/sindresorhus/query-string/tree/v6.14.1 -> commit: 0090a34\r\n * to accept a new arrayFormat option called 'open-ic'\r\n */\r\nfunction encoderForArrayFormat(options) {\r\n switch (options.arrayFormat) {\r\n case 'index':\r\n return key => (result, value) => {\r\n const index = result.length;\r\n\r\n if (\r\n value === undefined ||\r\n (options.skipNull && value === null) ||\r\n (options.skipEmptyString && value === '')\r\n ) {\r\n return result;\r\n }\r\n\r\n if (value === null) {\r\n return [...result, [encode(key, options), '[', index, ']'].join('')];\r\n }\r\n\r\n return [\r\n ...result,\r\n [\r\n encode(key, options),\r\n '[',\r\n encode(index, options),\r\n ']=',\r\n encode(value, options)\r\n ].join('')\r\n ];\r\n };\r\n\r\n case 'bracket':\r\n return key => (result, value) => {\r\n if (\r\n value === undefined ||\r\n (options.skipNull && value === null) ||\r\n (options.skipEmptyString && value === '')\r\n ) {\r\n return result;\r\n }\r\n\r\n if (value === null) {\r\n return [...result, [encode(key, options), '[]'].join('')];\r\n }\r\n\r\n return [\r\n ...result,\r\n [encode(key, options), '[]=', encode(value, options)].join('')\r\n ];\r\n };\r\n\r\n case 'comma':\r\n case 'separator':\r\n return key => (result, value) => {\r\n if (value === null || value === undefined || value.length === 0) {\r\n return result;\r\n }\r\n\r\n if (result.length === 0) {\r\n return [[encode(key, options), '=', encode(value, options)].join('')];\r\n }\r\n\r\n return [\r\n [result, encode(value, options)].join(options.arrayFormatSeparator)\r\n ];\r\n };\r\n case 'open-ic':\r\n return caseOpenIc(options);\r\n default:\r\n return key => (result, value) => {\r\n if (\r\n value === undefined ||\r\n (options.skipNull && value === null) ||\r\n (options.skipEmptyString && value === '')\r\n ) {\r\n return result;\r\n }\r\n\r\n if (value === null) {\r\n return [...result, encode(key, options)];\r\n }\r\n\r\n return [\r\n ...result,\r\n [encode(key, options), '=', encode(value, options)].join('')\r\n ];\r\n };\r\n }\r\n}\r\n\r\nfunction parserForArrayFormat(options) {\r\n let result;\r\n\r\n switch (options.arrayFormat) {\r\n case 'index':\r\n return (key, value, accumulator) => {\r\n result = /\\[(\\d*)\\]$/.exec(key);\r\n\r\n key = key.replace(/\\[\\d*\\]$/, '');\r\n\r\n if (!result) {\r\n accumulator[key] = value;\r\n return;\r\n }\r\n\r\n if (accumulator[key] === undefined) {\r\n accumulator[key] = {};\r\n }\r\n\r\n accumulator[key][result[1]] = value;\r\n };\r\n\r\n case 'bracket':\r\n return (key, value, accumulator) => {\r\n result = /(\\[\\])$/.exec(key);\r\n key = key.replace(/\\[\\]$/, '');\r\n\r\n if (!result) {\r\n accumulator[key] = value;\r\n return;\r\n }\r\n\r\n if (accumulator[key] === undefined) {\r\n accumulator[key] = [value];\r\n return;\r\n }\r\n\r\n accumulator[key] = [].concat(accumulator[key], value);\r\n };\r\n\r\n case 'comma':\r\n case 'separator':\r\n return (key, value, accumulator) => {\r\n const isArray =\r\n typeof value === 'string' &&\r\n value.includes(options.arrayFormatSeparator);\r\n const isEncodedArray =\r\n typeof value === 'string' &&\r\n !isArray &&\r\n decode(value, options).includes(options.arrayFormatSeparator);\r\n value = isEncodedArray ? decode(value, options) : value;\r\n const newValue =\r\n isArray || isEncodedArray\r\n ? value\r\n .split(options.arrayFormatSeparator)\r\n .map(item => decode(item, options))\r\n : value === null\r\n ? value\r\n : decode(value, options);\r\n accumulator[key] = newValue;\r\n };\r\n default:\r\n return (key, value, accumulator) => {\r\n if (accumulator[key] === undefined) {\r\n accumulator[key] = value;\r\n return;\r\n }\r\n accumulator[key] = [].concat(accumulator[key], value);\r\n };\r\n }\r\n}\r\n\r\nfunction validateArrayFormatSeparator(value) {\r\n if (typeof value !== 'string' || value.length !== 1) {\r\n throw new TypeError('arrayFormatSeparator must be single character string');\r\n }\r\n}\r\n\r\nexport function encode(value, options) {\r\n if (options.encode) {\r\n return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction decode(value, options) {\r\n if (options.decode) {\r\n return decodeComponent(value);\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction keysSorter(input) {\r\n if (Array.isArray(input)) {\r\n return input.sort();\r\n }\r\n\r\n if (typeof input === 'object') {\r\n return keysSorter(Object.keys(input))\r\n .sort((a, b) => Number(a) - Number(b))\r\n .map(key => input[key]);\r\n }\r\n\r\n return input;\r\n}\r\n\r\nfunction removeHash(input) {\r\n const hashStart = input.indexOf('#');\r\n if (hashStart !== -1) {\r\n input = input.slice(0, hashStart);\r\n }\r\n\r\n return input;\r\n}\r\n\r\nfunction getHash(url) {\r\n let hash = '';\r\n const hashStart = url.indexOf('#');\r\n if (hashStart !== -1) {\r\n hash = url.slice(hashStart);\r\n }\r\n\r\n return hash;\r\n}\r\n\r\nfunction extract(input) {\r\n input = removeHash(input);\r\n const queryStart = input.indexOf('?');\r\n if (queryStart === -1) {\r\n return '';\r\n }\r\n\r\n return input.slice(queryStart + 1);\r\n}\r\n\r\nfunction parseValue(value, options) {\r\n if (\r\n options.parseNumbers &&\r\n !Number.isNaN(Number(value)) &&\r\n typeof value === 'string' &&\r\n value.trim() !== ''\r\n ) {\r\n value = Number(value);\r\n } else if (\r\n options.parseBooleans &&\r\n value !== null &&\r\n (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')\r\n ) {\r\n value = value.toLowerCase() === 'true';\r\n }\r\n\r\n return value;\r\n}\r\n\r\nexport function parse(query, options) {\r\n options = Object.assign(\r\n {\r\n decode: true,\r\n sort: true,\r\n arrayFormat: 'none',\r\n arrayFormatSeparator: ',',\r\n parseNumbers: false,\r\n parseBooleans: false\r\n },\r\n options\r\n );\r\n\r\n validateArrayFormatSeparator(options.arrayFormatSeparator);\r\n\r\n const formatter = parserForArrayFormat(options);\r\n\r\n // Create an object with no prototype\r\n const ret = Object.create(null);\r\n\r\n if (typeof query !== 'string') {\r\n return ret;\r\n }\r\n\r\n query = query.trim().replace(/^[?#&]/, '');\r\n\r\n if (!query) {\r\n return ret;\r\n }\r\n\r\n for (const param of query.split('&')) {\r\n if (param === '') {\r\n continue;\r\n }\r\n\r\n let [key, value] = splitOnFirst(\r\n options.decode ? param.replace(/\\+/g, ' ') : param,\r\n '='\r\n );\r\n\r\n // Missing `=` should be `null`:\r\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\r\n value =\r\n value === undefined\r\n ? null\r\n : ['comma', 'separator'].includes(options.arrayFormat)\r\n ? value\r\n : decode(value, options);\r\n formatter(decode(key, options), value, ret);\r\n }\r\n\r\n for (const key of Object.keys(ret)) {\r\n const value = ret[key];\r\n if (typeof value === 'object' && value !== null) {\r\n for (const k of Object.keys(value)) {\r\n value[k] = parseValue(value[k], options);\r\n }\r\n } else {\r\n ret[key] = parseValue(value, options);\r\n }\r\n }\r\n\r\n if (options.sort === false) {\r\n return ret;\r\n }\r\n\r\n return (options.sort === true\r\n ? Object.keys(ret).sort()\r\n : Object.keys(ret).sort(options.sort)\r\n ).reduce((result, key) => {\r\n const value = ret[key];\r\n if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\r\n // Sort object keys, not values\r\n result[key] = keysSorter(value);\r\n } else {\r\n result[key] = value;\r\n }\r\n\r\n return result;\r\n }, Object.create(null));\r\n}\r\n\r\nexport const stringify = (object, options) => {\r\n if (!object) {\r\n return '';\r\n }\r\n\r\n options = Object.assign(\r\n {\r\n encode: true,\r\n strict: true,\r\n arrayFormat: 'none',\r\n arrayFormatSeparator: ','\r\n },\r\n options\r\n );\r\n\r\n validateArrayFormatSeparator(options.arrayFormatSeparator);\r\n\r\n const shouldFilter = key =>\r\n (options.skipNull && isNullOrUndefined(object[key])) ||\r\n (options.skipEmptyString && object[key] === '');\r\n\r\n const formatter = encoderForArrayFormat(options);\r\n\r\n const objectCopy = {};\r\n\r\n for (const key of Object.keys(object)) {\r\n if (!shouldFilter(key)) {\r\n objectCopy[key] = object[key];\r\n }\r\n }\r\n\r\n const keys = Object.keys(objectCopy);\r\n\r\n if (options.sort !== false) {\r\n keys.sort(options.sort);\r\n }\r\n\r\n return keys\r\n .map(key => {\r\n const value = object[key];\r\n\r\n if (value === undefined) {\r\n return '';\r\n }\r\n\r\n if (value === null) {\r\n return encode(key, options);\r\n }\r\n\r\n if (Array.isArray(value)) {\r\n return value.reduce(formatter(key), []).join('&');\r\n }\r\n\r\n return encode(key, options) + '=' + encode(value, options);\r\n })\r\n .filter(x => x.length > 0)\r\n .join('&');\r\n};\r\n\r\nexport const parseUrl = (url, options) => {\r\n options = Object.assign(\r\n {\r\n decode: true\r\n },\r\n options\r\n );\r\n\r\n const [url_, hash] = splitOnFirst(url, '#');\r\n\r\n return Object.assign(\r\n {\r\n url: url_.split('?')[0] || '',\r\n query: parse(extract(url), options)\r\n },\r\n options && options.parseFragmentIdentifier && hash\r\n ? { fragmentIdentifier: decode(hash, options) }\r\n : {}\r\n );\r\n};\r\n\r\nexport const stringifyUrl = (object, options) => {\r\n options = Object.assign(\r\n {\r\n encode: true,\r\n strict: true\r\n },\r\n options\r\n );\r\n\r\n const url = removeHash(object.url).split('?')[0] || '';\r\n const queryFromUrl = extract(object.url);\r\n const parsedQueryFromUrl = parse(queryFromUrl, { sort: false });\r\n\r\n const query = Object.assign(parsedQueryFromUrl, object.query);\r\n let queryString = stringify(query, options);\r\n if (queryString) {\r\n queryString = `?${queryString}`;\r\n }\r\n\r\n let hash = getHash(object.url);\r\n if (object.fragmentIdentifier) {\r\n hash = `#${encode(object.fragmentIdentifier, options)}`;\r\n }\r\n\r\n return `${url}${queryString}${hash}`;\r\n};\r\n\r\nexport const pick = (input, filter, options) => {\r\n options = Object.assign(\r\n {\r\n parseFragmentIdentifier: true\r\n },\r\n options\r\n );\r\n\r\n const { url, query, fragmentIdentifier } = parseUrl(input, options);\r\n return stringifyUrl(\r\n {\r\n url,\r\n query: filterObject(query, filter),\r\n fragmentIdentifier\r\n },\r\n options\r\n );\r\n};\r\n\r\nexport const exclude = (input, filter, options) => {\r\n const exclusionFilter = Array.isArray(filter)\r\n ? key => !filter.includes(key)\r\n : (key, value) => !filter(key, value);\r\n\r\n return pick(input, exclusionFilter, options);\r\n};\r\n","import Polyglot from 'node-polyglot';\r\nimport {\r\n contactVariables,\r\n distributionListSubjectVariables,\r\n distributionListBodyVariables,\r\n deliveryTabBodyVariables,\r\n deliveryTabSubjectVariables\r\n} from '../../features/resourceuploads/uploadsteps/emailDialog/EmailFormLookups';\r\nimport moment from 'moment';\r\nimport axios from 'axios';\r\nimport ApiBase from '../apis/ApiBase';\r\n\r\nconst DEFAULT_CHUNK_PARAMS_MAX_SIZE = 3000; // 3000 characters max in a GET request to limit the URI size\r\n\r\n/**\r\n * Return True if the application is runing in a development evn.\r\n */\r\nexport function isDevMode() {\r\n return (\r\n !process.env.NODE_ENV ||\r\n process.env.NODE_ENV === 'development' ||\r\n process.env.REACT_APP_LOCAL_BUILD\r\n );\r\n}\r\n\r\n/**\r\n * Return the main path name for TabbedForm. ex: investors/inv9456/1 returns => investors/inv9456\r\n * @param {*} path\r\n */\r\nexport function removePathEnd(path) {\r\n const reg = /^(\\/[^/]+\\/[^/]+)\\/[\\d]+$/.exec(path);\r\n if (reg) {\r\n return reg[1];\r\n }\r\n return path;\r\n}\r\n\r\nexport function getInitials(name) {\r\n const initials = name.match(/\\b(\\w)/g);\r\n return initials !== null && initials.length > 1\r\n ? initials\r\n .join('')\r\n .substring(0, 2)\r\n .toUpperCase()\r\n : name.length > 1\r\n ? name.substring(0, 2).toUpperCase()\r\n : name.toUpperCase();\r\n}\r\n\r\n/**\r\n * Return the string message prepared for usage in showNotification() function.\r\n * The purpose of this method is to prepare string message with pluralization.\r\n * Since we cannot use notify (hooks) in Class Component this method will provide\r\n * pluralization for message which can be used in showNotification() function.\r\n * The function parameter message should be formated like this:\r\n * 'Changes were saved successfully |||| %{smart_count} changes were saved successfully'\r\n * If the smart_count is =1 we are returning: 'Changes were saved successfully'\r\n * If the smart_count is >1 we are returning: '%{smart_count} changes were saved successfully'\r\n * @param {string} message\r\n * @param {number} counter\r\n */\r\nexport function createPluralizedMessage(message, counter) {\r\n const phrases = {\r\n messageToBePrepare: message\r\n };\r\n const polyglot = new Polyglot({ locale: 'en', phrases });\r\n return polyglot.t('messageToBePrepare', { smart_count: counter });\r\n}\r\n\r\n/**\r\n * parser function to support predictive search\r\n * @param {*} x\r\n */\r\nexport function predictiveSearchParser(x) {\r\n if (x) {\r\n return `*${x}*`;\r\n }\r\n return '';\r\n}\r\n/**\r\n * formatter function needed after using predictiveSearchParser\r\n * @param {*} x\r\n */\r\nexport function predictiveSearchFormatter(x) {\r\n if (x) {\r\n x = x.slice(0, 1) === '*' ? x.slice(1) : x;\r\n x = x.slice(-1) === '*' ? x.slice(0, -1) : x;\r\n return x;\r\n }\r\n return '';\r\n}\r\n\r\n/**\r\n * This function will return true if value contains only numbers or characters, regardless of capitalization.\r\n * In every other case, the result will be false.\r\n * @param {string} value\r\n */\r\nexport function isStringAlphaNumeric(value) {\r\n const regAlphaNumeric = /[^A-Za-z0-9]/;\r\n\r\n return !regAlphaNumeric.test(value);\r\n}\r\n\r\n/**\r\n * Returns true if email parts satisfy required rules for its parts lengths.\r\n * @param {string} email\r\n */\r\nexport function isValidEmailLocalPartAndDomainName(email) {\r\n if (email === undefined) {\r\n return false;\r\n }\r\n\r\n const splitedEmail = email.split('@');\r\n\r\n return splitedEmail[0].length < 65 && splitedEmail[1].length < 86;\r\n}\r\n\r\n/**\r\n * This function will return true if value contains only numbers,characters, underscores or hyphen without any space regardless of capitalization.\r\n * In every other case, the result will be false.\r\n * @param {string} value\r\n */\r\nexport function isStringAlphaNumericUnderscoreHyphen(value) {\r\n const regAlphaNumericUnderscore = /[^\\w-]/;\r\n\r\n return !regAlphaNumericUnderscore.test(value);\r\n}\r\n\r\nexport function isStringOnlyUnderscoreHyphen(value) {\r\n const regUnderscoreHyphen = /[^_-]/;\r\n\r\n return regUnderscoreHyphen.test(value);\r\n}\r\n\r\nexport function isValidNoneOrMultipleCommaSeparatedEmails(field) {\r\n if (field === undefined) {\r\n return true;\r\n }\r\n\r\n const regex = /^([A-Za-z0-9!#$%&'*+/=?^_\\\\`{|}~-]+(?:\\.[A-Za-z0-9!#$%&'*+/=?^_\\\\`{|}~-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,}))([;]+[A-Za-z0-9!#$%&'*+/=?^_\\\\`{|}~-]+(?:\\.[A-Za-z0-9!#$%&'*+/=?^_\\\\`{|}~-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,}))*$/g;\r\n\r\n return regex.test(field);\r\n}\r\n\r\nexport function isValidEmailRegex(field) {\r\n if (field === undefined) {\r\n return true;\r\n }\r\n\r\n const regex = /^[A-Za-z0-9!#$%&'*+/=?^_\\\\`{|}~-]+(?:\\.[A-Za-z0-9!#$%&'*+/=?^_\\\\`{|}~-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9-]+)*(\\.[A-Za-z]{2,})$/g;\r\n return regex.test(field);\r\n}\r\n\r\n/**\r\n * This function will return true if value contains numbers and characters[.()- ].\r\n * In every other case, the result will be false.\r\n * @param {string} value\r\n */\r\nexport function isPhoneNumberValid(value) {\r\n const regNumeric = /^\\(?\\+?[-.\\s()0-9]+$/;\r\n\r\n return regNumeric.test(value);\r\n}\r\n\r\n/**\r\n * This function will return true if value contains numbers, characters[.()- ], has no exceed limit of 32 characters and trailing space\r\n * In every other case, the result will be false.\r\n * @param {string} value\r\n */\r\nexport const validatePhoneNumber = value => {\r\n let message = '';\r\n let isTrailingSpace;\r\n if (value) {\r\n isTrailingSpace = value.length === value.trim().length;\r\n\r\n if (!isPhoneNumberValid(value)) {\r\n message =\r\n 'Phone Number can only contain numbers, plus, dot, parentheses and hyphen symbols.';\r\n } else if (!isTrailingSpace) {\r\n message = \"Phone Number can't have trailing space.\";\r\n } else if (value.length > 32) {\r\n message = 'Phone number should not be longer than 32 characters.';\r\n }\r\n }\r\n return message;\r\n};\r\n\r\n/**\r\n * This function will return true if value starts with blank(one or multiple).\r\n * In every other case, the result will be false.\r\n * @param {string} value\r\n */\r\nexport function isValueStartingWithBlank(value) {\r\n const regStringNoLeadingSpaces = /(^\\s+)/;\r\n\r\n return regStringNoLeadingSpaces.test(value);\r\n}\r\n\r\n/**\r\n * This function will return error message if the given string value contains '<', '>' or '=' sign\r\n * In every other case, function will not return result\r\n * @param {string} value\r\n */\r\nexport function isStringContainingLessThanOrGreaterThanOrEqualsSign(value) {\r\n const regInvalidCharacters = /[<>=]/;\r\n if (value && regInvalidCharacters.test(value)) {\r\n return \"Characters '<', '>' and '=' are not allowed.\";\r\n }\r\n}\r\n\r\n/**\r\n * This function will return array of splitted string by some value\r\n * and each splited value will be trimed. Or null if string is null or undefined\r\n * @param {string} stringToDo\r\n * @param {string} valueToSplitBy\r\n */\r\nexport function splitAndTrimString(stringToDo, valueToSplitBy) {\r\n if (typeof stringToDo === 'string' && stringToDo !== '') {\r\n let splittedString = stringToDo.split(valueToSplitBy);\r\n splittedString.forEach(\r\n (element, i) => (splittedString[i] = element.trim())\r\n );\r\n return splittedString;\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * This will return validation message if field length is longer than given param.\r\n * @param length\r\n */\r\nexport const fieldLengthValidator = length => value => {\r\n if (value && value.length > length) {\r\n return `Value should not be longer than ${length} characters.`;\r\n }\r\n};\r\n\r\n/**\r\n * This function will return true if value contains comma separate domains.\r\n * ex: \"aol.com,yahoo.com\"\r\n * @param {*} value\r\n */\r\nexport function isValidMultipleDomains(value) {\r\n const regex = /^((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))([,]+((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,})))*$/g;\r\n return regex.test(value);\r\n}\r\n\r\n/**\r\n * This function will return error message if the value are made only by spaces\r\n * In every other case, function will not return result\r\n * @param {string} value\r\n */\r\nexport function isFieldContainsOnlySpaces(value) {\r\n if (value && !value.replace(/\\s/g, '').length) {\r\n return `Value should not be blank`;\r\n }\r\n}\r\n\r\nexport function getBodyVariables(variableType) {\r\n if (variableType === 'contact') {\r\n return contactVariables;\r\n } else if (variableType === 'distributionList') {\r\n return distributionListBodyVariables;\r\n } else if (variableType === 'deliveryTab') {\r\n return deliveryTabBodyVariables;\r\n }\r\n}\r\n\r\nexport function getSubjectVariables(variableType) {\r\n if (variableType === 'contact') {\r\n return contactVariables;\r\n } else if (variableType === 'distributionList') {\r\n return distributionListSubjectVariables;\r\n } else if (variableType === 'deliveryTab') {\r\n return deliveryTabSubjectVariables;\r\n }\r\n}\r\n\r\n/**\r\n * Date format field validator\r\n * @param {*} value date field as string\r\n */\r\nexport const isValidDate = value => {\r\n if (\r\n value &&\r\n (!moment(value).isValid() ||\r\n !moment(value).isBetween('1900-01-01', '2079-06-06', undefined, '[]'))\r\n ) {\r\n return 'Invalid Date';\r\n }\r\n};\r\n\r\n/**\r\n * Date value formatter\r\n * @param {*} value date field as string\r\n */\r\nexport const formatDate = value => {\r\n if (value) {\r\n return moment(value).format('YYYY-MM-DD');\r\n }\r\n};\r\n\r\n/**\r\n * This function will return true if password is valid, false if not\r\n * Current password rules:\r\n * 8-15 characters long, no spaces allowed;\r\n * include capital letters, numbers and symbols\r\n * @param {string} value\r\n */\r\nexport function isValidPassword(value) {\r\n if (value === undefined) {\r\n return true;\r\n }\r\n if (value.includes(' ')) {\r\n return false;\r\n }\r\n const regex = new RegExp(\r\n '^(?=.*[a-z])(?=.*[A-Z])(?=.*\\\\d)(?=.*[_\\\\W]).{8,15}$'\r\n );\r\n return regex.test(value);\r\n}\r\n\r\nexport function equalsIgnoreCase(first, second) {\r\n if (\r\n typeof first != 'undefined' &&\r\n first &&\r\n typeof second != 'undefined' &&\r\n second\r\n ) {\r\n return first.toUpperCase() === second.toUpperCase();\r\n }\r\n return false;\r\n}\r\n\r\n/*!\r\n * Find the differences between two objects and push to a new object\r\n * https://gomakethings.com/getting-the-differences-between-two-objects-with-vanilla-js/\r\n */\r\nexport function diff(obj1, obj2) {\r\n // Make sure an object to compare is provided\r\n if (!obj2 || Object.prototype.toString.call(obj2) !== '[object Object]') {\r\n return obj1;\r\n }\r\n\r\n //\r\n // Variables\r\n //\r\n\r\n var diffs = {};\r\n var key;\r\n\r\n //\r\n // Methods\r\n //\r\n\r\n /**\r\n * Check if two arrays are equal\r\n * @param {Array} arr1 The first array\r\n * @param {Array} arr2 The second array\r\n * @return {Boolean} If true, both arrays are equal\r\n */\r\n var arraysMatch = function(arr1, arr2) {\r\n // Check if the arrays are the same length\r\n if (arr1.length !== arr2.length) return false;\r\n\r\n // Check if all items exist and are in the same order\r\n for (var i = 0; i < arr1.length; i++) {\r\n if (arr1[i] !== arr2[i]) {\r\n const diffObjct = diff(arr1[i], arr2[i]);\r\n if (Object.keys(diffObjct).length !== 0) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Otherwise, return true\r\n return true;\r\n };\r\n\r\n /**\r\n * Compare two items and push non-matches to object\r\n * @param {*} item1 The first item\r\n * @param {*} item2 The second item\r\n * @param {String} key The key in our object\r\n */\r\n var compare = function(item1, item2, key) {\r\n // Get the object type\r\n var type1 = Object.prototype.toString.call(item1);\r\n var type2 = Object.prototype.toString.call(item2);\r\n\r\n // If type2 is undefined it has been removed\r\n if (type2 === '[object Undefined]') {\r\n diffs[key] = null;\r\n return;\r\n }\r\n\r\n // If items are different types\r\n if (type1 !== type2) {\r\n diffs[key] = item2;\r\n return;\r\n }\r\n\r\n // If an object, compare recursively\r\n if (type1 === '[object Object]') {\r\n var objDiff = diff(item1, item2);\r\n if (Object.keys(objDiff).length > 0) {\r\n diffs[key] = objDiff;\r\n }\r\n return;\r\n }\r\n\r\n // If an array, compare\r\n if (type1 === '[object Array]') {\r\n if (!arraysMatch(item1, item2)) {\r\n diffs[key] = item2;\r\n }\r\n return;\r\n }\r\n\r\n // Else if it's a function, convert to a string and compare\r\n // Otherwise, just compare\r\n if (type1 === '[object Function]') {\r\n if (item1.toString() !== item2.toString()) {\r\n diffs[key] = item2;\r\n }\r\n } else {\r\n if (item1 !== item2) {\r\n diffs[key] = item2;\r\n }\r\n }\r\n };\r\n\r\n //\r\n // Compare our objects\r\n //\r\n\r\n // Loop through the first object\r\n for (key in obj1) {\r\n compare(obj1[key], obj2[key], key);\r\n }\r\n\r\n // Loop through the second object and find missing items\r\n for (key in obj2) {\r\n if (!obj1[key] && obj1[key] !== obj2[key]) {\r\n diffs[key] = obj2[key];\r\n }\r\n }\r\n\r\n // Return the object of differences\r\n return diffs;\r\n}\r\n\r\n//queue object of promises\r\nexport class Queue {\r\n static queue = [];\r\n static stop = false;\r\n\r\n static enqueue(promise) {\r\n return new Promise((resolve, reject) => {\r\n this.queue.push({\r\n promise,\r\n resolve,\r\n reject\r\n });\r\n this.dequeue();\r\n });\r\n }\r\n\r\n static dequeue() {\r\n if (this.workingOnPromise) {\r\n return false;\r\n }\r\n if (this.stop) {\r\n this.queue = [];\r\n this.stop = false;\r\n return;\r\n }\r\n const item = this.queue.shift();\r\n if (!item) {\r\n return false;\r\n }\r\n try {\r\n this.workingOnPromise = true;\r\n item\r\n .promise()\r\n .then(value => {\r\n this.workingOnPromise = false;\r\n item.resolve(value);\r\n this.dequeue();\r\n })\r\n .catch(err => {\r\n this.workingOnPromise = false;\r\n item.reject(err);\r\n this.dequeue();\r\n });\r\n } catch (err) {\r\n this.workingOnPromise = false;\r\n item.reject(err);\r\n this.dequeue();\r\n }\r\n return true;\r\n }\r\n}\r\n\r\nexport function getManyByChunk(\r\n baseUrl,\r\n encodedReqIds,\r\n paramsMaxSize = DEFAULT_CHUNK_PARAMS_MAX_SIZE\r\n) {\r\n // 50 protocol and host buffer\r\n const idsMaxLength =\r\n paramsMaxSize - (50 + baseUrl.length + encodeURI('[]').length);\r\n\r\n const chunks = [];\r\n while (encodedReqIds.length > idsMaxLength) {\r\n const lastIndex = encodedReqIds.substring(0, idsMaxLength).lastIndexOf(',');\r\n chunks.push(encodedReqIds.substring(0, lastIndex));\r\n encodedReqIds = encodedReqIds.substring(lastIndex + 1);\r\n }\r\n chunks.push(encodedReqIds);\r\n\r\n // Create chunked API calls --> list of promises\r\n const promises = chunks.map(async ids => {\r\n const request = {\r\n url: baseUrl + encodeURI('[') + ids + encodeURI(']'),\r\n headers: new ApiBase().getHeaders(),\r\n method: 'GET'\r\n };\r\n\r\n const response = await axios.request(request);\r\n return response.data;\r\n });\r\n\r\n // Wait for all API calls to be completed and merge the responses into one list\r\n // Then return this as a promise for calling function\r\n return Promise.all(promises).then(responses => {\r\n return responses.reduce((acc, response) => {\r\n acc = acc.concat(response.pageData);\r\n return acc;\r\n }, []);\r\n });\r\n}\r\n"],"sourceRoot":""}