{"version":3,"sources":["public/images/icon_verygood.png","public/images/csv-export-icon.png","public/images/porzio_global_spend_transparency_logo_small.png","public/images/icon_bad.png","public/images/icon_process.png","public/images/icon_blank.png","public/images/UnknownFile.png","public/images/icon_good.png","public/images/pdf-icon.png","public/images/ms-word-icon.png","public/images/xls-import-icon.png","public/images/icon_delete_black.gif","public/images/porzio_global_spend_transparency_white_logo.png","public/images/icon_active.png","public/images/icon_inactive.png","public/images/icon_docdownload.png","public/images/porzio_global_spend_transparency_logo.png","public/images/icon_inqueue.png","serviceWorker.js","config.js","shared/services/theme/matThemeService.jsx","shared/services/theme/matClassService.jsx","shared/types/enums.jsx","shared/services/toastService.jsx","shared/models/userModel.jsx","shared/store/authProvider.jsx","shared/services/applicationService.jsx","public/authentication/oktaAuthService.js","shared/services/theme/matSpecService.jsx","shared/services/theme/matIconService.jsx","shared/components/logo/logoComponent.jsx","shared/services/momentService.jsx","shared/services/layoutService.jsx","shared/role-permissions/accessDeniedComponent.jsx","shared/role-permissions/rolePermissionInfo.jsx","shared/role-permissions/rolePermissionService.jsx","shared/services/userActivityService.jsx","shared/services/sessionService.jsx","shared/services/apiService.jsx","shared/services/lookupService.jsx","shared/services/dataService.jsx","private/tenant/international/internationalComponent.jsx","shared/components/page/pageLoadingComponent.jsx","shared/components/page/pageErrorComponent.jsx","shared/components/sectionComponent.jsx","private/user-management/users/user-details/personalSettings/personalSettingsStore.jsx","private/user-management/users/user-details/personalSettings/personalSettingsModalComponent.jsx","private/user-management/users/user-details/audit/auditComponent.jsx","private/user-management/users/user-details/authentication/authenticationModalComponent.jsx","private/user-management/users/user-details/userDialogComponent.jsx","shared/components/dialog/actionDialog.jsx","shared/services/ag-grid/agGridUtil.jsx","shared/components/elements/agGridEditButtonCellRendererComponent.jsx","private/profile-center/profile-detail/profileDetailCellRendererComponent.jsx","shared/components/page/dialogErrorFragmentComponent.jsx","shared/services/ag-grid/agGridColumnExt.jsx","shared/components/childMessageRendererComponent.jsx","private/profile-center/profile-detail/profile-transaction/profileTransactionService.jsx","shared/services/dynamicControlService.jsx","shared/services/ag-grid/agGridService.jsx","shared/utilities/templateFieldConfigUtil.jsx","private/transaction-center/transaction-detail/transaction-tab/transactionTabService.jsx","private/transaction-center/transaction-detail/transaction-tab/recipient-information-dialog/recipinetSearchDialogService.jsx","shared/components/elements/agGridRadioButtonCellRendererComponent.jsx","shared/components/elements/circleComponent/circleComponent.jsx","private/transaction-center/childMessageRendererComponent.jsx","private/transaction-center/transaction-detail/transaction-tab/recipient-information-dialog/recipinetSearchDialogComponent.jsx","shared/components/possible-matches/possibleMatchesDialogServise.jsx","shared/components/possible-matches/possibleMatchesDialogComponent.jsx","private/tenant-profile-setup/sales-rep/sales-rep-details/salesRepDetailsService.jsx","private/tenant-profile-setup/sales-rep/sales-rep-details/salesRepDetailsComponent.jsx","shared/components/profiles-transactions/StatusOverrideComponent.jsx","shared/models/addressModel.jsx","private/profile-center/profile-detail/tabs/profileTabService.jsx","private/transaction-center/transaction-detail/transaction-tab/transactionTabComponent.jsx","private/transaction-center/transaction-detail/rule-summary-tab/ruleSummaryService.jsx","private/transaction-center/transaction-detail/rule-summary-tab/ruleSummaryComponent.jsx","shared/components/ag-grid/bluk-edit/agGridBulkEditUtil.jsx","shared/components/agreements/agreementsService.jsx","shared/components/ag-grid/error-cell-renderers/agGridErroredCheckboxCellRenderer.jsx","shared/components/elements/agGridCheckboxCellRendererComponent.jsx","shared/components/agreements/agreements-search-dialog/agreementsSearchDialogService.jsx","private/agreements/agreementDetailCellRendererComponent.jsx","shared/components/tab/tabDetailsToolbarComponent.jsx","private/agreements/agreement-detail/consents/consentComponent.jsx","private/data-center/download-file/downloadFileAgRenderer.jsx","shared/components/document-details/documentDeleteConfirmComponent.jsx","shared/components/document-details/documentDetailsService.jsx","shared/components/document-details/documentDetailsComponent.jsx","private/agreements/agreement-detail/documents/documentsService.jsx","private/agreements/agreement-detail/documents/documentsComponent.jsx","private/agreements/agreement-detail/rule-summary/ruleSummaryService.jsx","private/agreements/agreement-detail/rule-summary/ruleSummaryComponent.jsx","private/agreements/agreement-detail/agreement-tab/agreementTabService.jsx","private/agreements/agreement-detail/agreement-tab/recipient-information-dialog/recipientSearchDialogService.jsx","private/agreements/agreement-detail/agreement-tab/recipient-information-dialog/recipientSearchDialogComponent.jsx","private/agreements/agreement-detail/agreement-tab/agreementTabComponent.jsx","private/agreements/agreement-detail/transactions/transactionsService.jsx","private/agreements/agreement-detail/transactions/transactions-search-dialog/transactionsSearchDialogService.jsx","private/agreements/agreement-detail/transactions/transactions-search-dialog/transactionsSearchDialogComponent.jsx","private/agreements/agreement-detail/transactions/transactionsComponent.jsx","private/agreements/agreement-detail/report-reference/reportReferenceService.jsx","private/agreements/agreement-detail/report-reference/reportReferenceComponent.jsx","private/agreements/agreement-detail/agreementDetailDeleteConfirmComponent.jsx","shared/components/page/pageDynamicHeaderComponent.jsx","private/agreements/agreement-detail/agreementDetailDialogComponent.jsx","shared/components/agreements/agreements-search-dialog/agreementsSearchDialogComponent.jsx","shared/components/agreements/agreementsComponent.jsx","private/transaction-center/transaction-detail/documents-tab/documentsService.jsx","private/transaction-center/transaction-detail/documents-tab/documentsComponent.jsx","private/transaction-center/transaction-detail/report-references-tab/reportReferencesService.jsx","private/transaction-center/transaction-detail/report-references-tab/reportReferencesComponent.jsx","private/transaction-center/transaction-detail/related-transactions-tab/relatedTransactionsService.jsx","private/transaction-center/transaction-detail/related-transactions-tab/realted-transactions-search-dialog/realtedTransactionsSearchDialogService.jsx","private/transaction-center/transaction-detail/related-transactions-tab/realted-transactions-search-dialog/relatedTransactionsSearchDialogComponent.jsx","private/transaction-center/transaction-detail/related-transactions-tab/relatedTransactionsComponent.jsx","private/transaction-center/transaction-detail/transactiondetailDeleteConfirmComponent.jsx","private/transaction-center/transaction-detail/transactionDetailEditConfirmComponent.jsx","shared/components/download/downloadFileComponent.jsx","private/home/task/task-details/taskDetailsService.jsx","shared/components/elements/agGridDatePickerCellRendererComponent.jsx","private/home/task/task-details/taskDetailsComponent.jsx","private/transaction-center/transaction-detail/transaction-tab/relatedTransactionEditConfirmationDialog.jsx","private/transaction-center/transaction-detail/transactionDetailDialogComponent.jsx","private/profile-center/profile-detail/profile-transaction/profileTransactionComponent.jsx","private/profile-center/profile-detail/tabs/profileStatusOverrideComponenet.jsx","shared/components/ag-grid/agGridDropdownWithStatusCellRenderer.jsx","private/profile-center/profile-detail/tabs/profileTabComponent.jsx","private/profile-center/expanded-view/profileCountCellRendererComponent.jsx","private/profile-center/profile-detail/rule-summary/ruleSummaryService.jsx","private/profile-center/profile-detail/rule-summary/ruleSummaryComponent.jsx","private/profile-center/profile-detail/consent/profileConsentService.jsx","private/profile-center/profile-detail/consent/profileConsentComponent.jsx","private/profile-center/profile-detail/linked-profiles/linkedProfilesService.jsx","private/profile-center/profile-detail/linked-profiles/linked-profiles-search-dialog/linkedProfilesSearchDialogService.jsx","private/profile-center/profile-detail/linked-profiles/linked-profiles-search-dialog/linkedProfilesConfirmationService.jsx","private/profile-center/profile-detail/linked-profiles/linked-profiles-search-dialog/linkedProfilesConfirmComponent.jsx","private/profile-center/profile-detail/linked-profiles/linked-profiles-search-dialog/linkedProfilesSearchDialogComponent.jsx","private/profile-center/profile-detail/linked-profiles/linkedProfilesComponent.jsx","private/profile-center/profile-detail/identifiers/identifierService.jsx","private/profile-center/profile-detail/identifiers/identifierComponent.jsx","private/profile-center/profile-detail/documents/documentsService.jsx","private/profile-center/profile-detail/documents/documentsComponent.jsx","private/profile-center/profile-detail/reference-data/referenceDataService.jsx","private/profile-center/profile-detail/reference-data/reference-data-search-dialog/referenceDataSearchDialogService.jsx","private/profile-center/profile-detail/reference-data/reference-data-search-dialog/referenceDataSearchDialogComponent.jsx","shared/components/ag-grid/isActiveIconRendererComponent.jsx","private/profile-center/profile-detail/reference-data/referenceDataComponent.jsx","private/profile-center/profile-detail/profileDetailDialogComponent.jsx","private/global-search/profile-search-result/profileSearchService.jsx","private/global-search/profile-search-result/profileSearchResultComponent.jsx","private/global-search/transaction-search-result/transactionSearchService.jsx","private/global-search/transaction-search-result/transactionSearchResultComponent.jsx","shared/components/field-configuration/fieldConfigurationService.js","shared/components/field-configuration/fieldConfigurationComponent.jsx","private/global-search/agreement-search-result/agreementSearchService.jsx","private/global-search/agreement-search-result/agreementSearchResultComponent.jsx","private/global-search/globalSearchContainerComponent.jsx","private/global-search/advanced-search/profile-advanced-search/profileAdvancedSearchService.jsx","private/global-search/advanced-search/advancedSearchContainerService.jsx","private/global-search/advanced-search/profile-advanced-search/profileAdvancedSearchComponent.jsx","private/global-search/advanced-search/transaction-advanced-search/transactionAdvancedSearchService.jsx","private/global-search/advanced-search/transaction-advanced-search/transactionAdvancedSearchComponent.jsx","private/global-search/advanced-search/agreement-advanced-search/agreementAdvancedSearchService.jsx","private/global-search/advanced-search/agreement-advanced-search/agreementAdvancedSearchComponent.jsx","shared/types/constants.jsx","private/global-search/advanced-search/advancedSearchComponent.jsx","private/shell/topBarComponent.jsx","private/shell/sideNavComponent.jsx","private/shell/footerComponent.jsx","shared/components/page/pageHeaderComponent.jsx","shared/store/cache.jsx","private/home/task/taskListService.jsx","private/home/task/tasksListComponent.jsx","private/home/news-feed/newsFeedService.jsx","private/home/news-feed/news-feed-details/newsFeedDetailsService.jsx","private/home/news-feed/news-feed-details/newsFeedDetailsComponent.jsx","private/home/news-feed/news-feed-details/newsFeedSummaryComponent.jsx","private/home/news-feed/newsFeedComponent.jsx","private/home/event-calendar/event-details/eventDetailsService.jsx","private/home/event-calendar/event-details/eventDetailsComponent.jsx","private/home/event-calendar/eventCalendarStore.jsx","private/home/event-calendar/eventCalendarComponent.jsx","private/home/homeComponent.jsx","shared/components/ag-grid/agGridActionCellRendererComponent.jsx","private/data-center/dataCenterFileStatusImageRenderer.jsx","shared/components/elements/healthIndicator/healthIndicatorCellRendererComponent.jsx","private/data-center/data-detail/dataDetailCellRendererComponent.jsx","private/data-center/expanded-view/dataExpandedViewCellRendererComponent.jsx","private/data-center/data-detail/data-transaction/dataTransactionService.jsx","private/data-center/data-detail/data-transaction/dataTransactionComponent.jsx","private/data-center/data-detail/dataDetailDialogComponent.jsx","private/data-center/expanded-view/dataExpandedViewService.jsx","private/data-center/expanded-view/dataExpandedViewComponent.jsx","private/data-center/expanded-view/dataCountCellRendererComponent.jsx","private/data-center/expanded-view/dataErrorCellRendererComponent.jsx","private/data-center/expanded-view/dataWarningCellRendererComponent.jsx","private/data-center/expanded-view/dataUnmatchedCellRendererComponent.jsx","private/data-center/dataCenterImportSummaryRenderer.jsx","shared/components/add-edit-comments/addEditCommentComponent.jsx","private/data-center/dataCenterService.jsx","private/data-center/import-template/importTemplateService.jsx","private/data-center/import-template/importTemplateImageRenderer.jsx","private/data-center/import-template/importTemplateCellRendererComponent.jsx","private/data-center/import-template/import-create/importTemplateCreateService.jsx","private/data-center/import-template/import-create/importTemplateCreateComponent.jsx","private/data-center/import-template/importTemplateComponent.jsx","private/data-center/upload-file/uploadFileService.js","private/data-center/upload-file/uploadFileComponent.jsx","private/data-center/file-status/fileStatusService.jsx","private/data-center/file-status/record-validation-summary/recordValidationSummaryService.jsx","private/data-center/file-status/record-validation-summary/recordValidationSummaryComponent.jsx","private/data-center/file-status/fileStatusComponent.jsx","private/data-center/file-summary/fileSummaryService.jsx","private/data-center/file-summary/fileSummaryComponent.jsx","private/data-center/dataCenterComponent.jsx","private/profile-center/profileCenterService.jsx","private/profile-center/expanded-view/profileExpandedViewService.jsx","shared/components/ag-grid/error-cell-renderers/agGridErroredDropdownCellRenderer.jsx","shared/components/ag-grid/error-cell-renderers/agGridErroredDatePickerCellRenderer.jsx","shared/components/ag-grid/error-cell-renderers/agGridErroredTextCellRenderer.jsx","shared/components/elements/healthIndicator/healthIndicatorCellRenderer.jsx","shared/components/agGridSelectMenuComponent.jsx","private/profile-center/expanded-view/profileExpandedViewComponent.jsx","private/profile-center/expanded-view/profileErrorCellRendererComponent.jsx","private/profile-center/expanded-view/profileWarningCellRendererComponent.jsx","private/profile-center/expanded-view/profileUnmatchedCellRendererComponent.jsx","private/profile-center/action-menu/rerunValidationProfileComponent.jsx","private/profile-center/header-menu/unmatched-profiles-list/unmatchedProfileService.jsx","private/profile-center/header-menu/unmatched-profiles-list/unmatchedProfileComponent.jsx","shared/components/ag-grid/agGridAppendCommentIconCellRendererComponent.jsx","private/profile-center/header-menu/profile-search/profilesSearchDialogService.jsx","private/profile-center/header-menu/profile-search/profilesSearchDialogComponent.jsx","private/profile-center/profileCenterComponent.jsx","private/tenant/tenantConfigurationService.jsx","private/tenant-profile-setup/tenant-profile/tenantProfileSetupService.jsx","private/tenant-profile-setup/tenant-profile/tenantProfileSetupDialogComponent.jsx","private/security/email/emailService.jsx","private/security/email/emailComponent.jsx","private/tenant/tenantConfigurationComponent.jsx","private/source/childMessageRendererComponent.jsx","private/source/source-details/sourceDetailsComponent.jsx","private/source/business-rules/businessRulesListService.jsx","shared/components/ag-grid/agGridChipCellRendererComponent.jsx","private/source/business-rules/checkBoxCellRenderer.jsx","private/source/business-rules/businessRulesListComponent.jsx","private/source/field-configuration/fieldConfigurationComponent.jsx","private/source/source-dialog/sourceDialogComponent.jsx","private/source/sourceService.jsx","private/source/sourceComponent.jsx","public/under-construction/UnderContructionComponent.jsx","private/user-management/childMessageRendererComponent.jsx","private/user-management/users/userListStore.jsx","private/user-management/users/userListComponent.jsx","private/user-management/roles/create-role/createRoleModalComponent.jsx","private/user-management/roles/role-details/editRoleModalComponent.jsx","private/user-management/roles/roleManagementService.jsx","private/user-management/roles/roleManagementComponent.jsx","private/transaction-center/expanded-view/transactionExpandedViewService.jsx","private/transaction-center/expanded-view/transactionsExpandedViewComponent.jsx","private/transaction-center/transactionCenterService.jsx","shared/components/dialog/deleteFileComponent.jsx","private/transaction-center/action-menu/rerunValidationComponent.jsx","private/transaction-center/action-menu/rerunUnmatchQueueComponent.jsx","shared/components/add-edit-comments/commentAvailableImageRenderer.jsx","shared/components/ag-grid/agGridIconTextRendererComponent.jsx","private/transaction-center/action-menu/transaction-search/transactionSearchDialogService.jsx","private/transaction-center/action-menu/transaction-search/transactionSearchDialogComponent.jsx","private/transaction-center/transactionCenterComponent.jsx","private/product-master/childMessageRendererComponent.jsx","private/product-master/product-details/productDetailsService.jsx","private/product-master/product-details/productDetailsComponent.jsx","private/product-master/productMasterService.jsx","private/product-master/productMasterComponent.jsx","private/field-management/childMessageRendererComponent.jsx","shared/utilities/xmlToJSON.js","private/field-management/porzio-fields/view-field/viewFieldService.jsx","private/field-management/porzio-fields/view-field/viewFieldComponent.jsx","private/field-management/porzio-fields/view-field/viewFieldDialogComponent.jsx","private/field-management/porzio-fields/porzioFieldListService.jsx","private/field-management/porzio-fields/porzioFieldsListComponent.jsx","private/field-management/custom-fields/customFieldListService.jsx","private/field-management/custom-fields/customFieldsListComponent.jsx","private/tenant-profile-setup/childMessageRendererComponent.jsx","private/tenant-profile-setup/affiliate-companies/affiliate-companies-details/editAffiliateService.jsx","private/tenant-profile-setup/affiliate-companies/affiliate-companies-details/editAffiliateModalComponent.jsx","private/tenant-profile-setup/affiliate-companies/affiliate-companies-details/affiliateCompaniesDialogComponent.jsx","private/tenant-profile-setup/affiliate-companies/affiliateCompaniesListService.jsx","private/tenant-profile-setup/affiliate-companies/affiliateCompaniesListComponent.jsx","private/tenant-profile-setup/vendor-setup/vendorLinkRendererComponent.jsx","private/tenant-profile-setup/vendor-setup/vendor-details/vendorDetailsComponent.jsx","private/tenant-profile-setup/vendor-setup/vendorSetupService.jsx","private/tenant-profile-setup/vendor-setup/vendorSetupComponent.jsx","private/tenant-profile-setup/compliance-mapping/compliance-default-details/childMessageRendererComponent.jsx","private/tenant-profile-setup/compliance-mapping/complianceDefaultMappingService.jsx","private/tenant-profile-setup/compliance-mapping/compliance-default-details/complianceDefaultEditService.jsx","private/tenant-profile-setup/compliance-mapping/compliance-default-details/complianceDefaultEditComponent.jsx","private/tenant-profile-setup/compliance-mapping/compliance-default-details/complianceDefaultDialogComponent.jsx","private/tenant-profile-setup/compliance-mapping/complianceDefaultMappingComponent.jsx","private/tenant-profile-setup/compliance-mapping/complianceReportMappingService.jsx","private/tenant-profile-setup/compliance-mapping/compliance-report-details-dialog/ComplianceReportDetailsDialogService.jsx","private/tenant-profile-setup/compliance-mapping/compliance-report-details-dialog/complianceReportDetailsDialogComponent.jsx","private/tenant-profile-setup/compliance-mapping/complianceReportMappingComponent.jsx","private/tenant-profile-setup/compliance-consent-mapping/compliance-consent-details/reportYearAgGridRendererComponent.jsx","private/tenant-profile-setup/compliance-consent-mapping/complianceConsentMappingService.jsx","private/tenant-profile-setup/compliance-consent-mapping/consent-processing-edit/editConsentProcessingService.jsx","private/tenant-profile-setup/compliance-consent-mapping/consent-processing-edit/editConsentProcessingComponent.jsx","private/tenant-profile-setup/compliance-consent-mapping/compliance-consent-details/complianceConsentPageHeaderComponent.jsx","private/tenant-profile-setup/compliance-consent-mapping/consent-mapping-edit/editConsentMappingService.jsx","private/tenant-profile-setup/compliance-consent-mapping/consent-mapping-edit/editConsentMappingComponent.jsx","private/tenant-profile-setup/compliance-consent-mapping/compliance-consent-details/complianceConsentDialogComponent.jsx","private/tenant-profile-setup/compliance-consent-mapping/complianceConsentMappingComponent.jsx","private/reports-center/report-detail/compliance-templates/complianceTemplatesService.jsx","private/reports-center/reportLaunchAgGridRendererComponent.jsx","private/reports-center/report-settings/reportSettingsService.jsx","private/reports-center/report-settings/reportSettingsComponent.jsx","private/reports-center/report-detail/compliance-templates/complianceTemplatesComponent.jsx","private/reports-center/report-detail/standard-templates/standardTemplatesService.jsx","private/reports-center/report-detail/standard-templates/standard-report-settings/standardReportSettingsService.jsx","private/reports-center/report-detail/standard-templates/standard-report-settings/standardReportSettingsComponent.jsx","private/reports-center/report-detail/standard-templates/standardTemplatesComponenet.jsx","private/reports-center/report-detail/report-library-view/reportLibraryViewService.jsx","private/reports-center/report-save/reportSaveService.jsx","private/reports-center/report-detail/report-library-view/downloadReportViaImageCellRenderer.jsx","private/reports-center/report-detail/report-library-view/childMessageRendererComponent.jsx","private/reports-center/report-detail/edit-report-detail/editReportDetailDialogService.jsx","private/reports-center/report-detail/edit-report-detail/editReportDetailDialogComponent.jsx","private/reports-center/report-detail/report-library-view/reportLibraryViewComponent.jsx","private/reports-center/reportsCenterComponent.jsx","private/agreements/agreementListService.jsx","private/agreements/agreementListComponent.jsx","private/porzio-rules/selectedRulesService.jsx","private/porzio-rules/edit-rules/editRulesService.jsx","private/porzio-rules/edit-rules/editRulesComponent.jsx","private/porzio-rules/edit-rules/editRulesDialogComponent.jsx","private/porzio-rules/selectedRulesComponent.jsx","private/tenant-profile-setup/sales-rep/salesRepLinkRendererComponent.jsx","private/tenant-profile-setup/sales-rep/salesRepService.jsx","private/tenant-profile-setup/sales-rep/salesRepComponent.jsx","private/materials/materialsListService.jsx","private/materials/material-details/materialDetailsComponent.jsx","private/materials/materialsListComponent.jsx","private/study-master/studiesListService.jsx","private/study-master/study-details/studyDetailsService.jsx","private/study-master/study-details/studyDetailsComponent.jsx","private/study-master/studiesListComponent.jsx","private/documents/document-list/documentListService.jsx","shared/components/ag-grid/agGridDownloadFileViaImageCellRenderer.jsx","private/documents/document-details/documentDetailsService.jsx","private/documents/document-details/documentDetailsComponent.jsx","private/documents/document-list/documentListComponent.jsx","private/documents/documentComponent.jsx","public/contact-us/contactUsComponent.jsx","shared/components/elements/agGridDynamicCheckboxCellRendererComponent.jsx","private/user-management/roles/permissions/rolePermissionsService.jsx","shared/components/elements/agGridHierarchicalTextboxRendererComponent.jsx","private/tenant-profile-setup/report-template-subscriptions/reportTemplateSubscriptionsService.jsx","private/tenant-profile-setup/report-template-subscriptions/reportTemplateSubscriptionsComponent.jsx","private/user-management/roles/permissions/rolePermissionsComponent.jsx","private/workflow-template/childMessageRendererComponent.jsx","private/workflow-template/workflow-details/workflowDetailsService.jsx","private/workflow-template/workflow-details/workflowDetailsComponent.jsx","private/workflow-template/workflowTemplateListService.jsx","private/workflow-template/workflowTemplateListComponent.jsx","private/power-bi/powerBIDemoService.jsx","private/power-bi/powerBIDemoComponent.jsx","private/power-bi/powerBIDemoContainerComponent.jsx","private/tenant-profile-setup/tenant-report-template-subscriptions/tenantReportTemplateSubscriptionService.jsx","private/tenant-profile-setup/tenant-report-template-subscriptions/tenantReportTemplateSubscriptionComponent.jsx","private/tenant-creation/tenantStatusService.jsx","private/tenant-creation/new-tenant/newTenantDialog.jsx","private/tenant-creation/tenantStatusComponent.jsx","private/user-mappings/userMappingsService.jsx","shared/components/ag-grid/agGridChildMessageRendererComponent.jsx","private/user-mappings/user-mapping-details/userMappingDetailService.jsx","private/user-mappings/user-mapping-details/userMappingDetailComponent.jsx","private/user-mappings/userMappingsComponent.jsx","private/hcp-master/hcp-search-dialog/hcpSearchDialogService.jsx","private/hcp-master/hcp-search-dialog/hcpSearchDialogComponent.jsx","private/nonentity-master/nonEntityService.jsx","private/nonentity-master/nonentity-details/nonEntityDetailsService.jsx","private/nonentity-master/nonentity-details/nonEntityDetailsComponent.jsx","private/nonentity-master/nonEntityComponent.jsx","private/security/email/ftpFolderService.jsx","private/security/email/ftpFolderComponent.jsx","private/admin-task-details/fileStatusImageRenderer.jsx","private/admin-task-details/fileStatusDetailsService.jsx","private/admin-task-details/fileStatusDetailsComponent.jsx","private/admin-report-task-details/reportStatusDetailsService.jsx","private/admin-report-task-details/reportStatusDetailsComponent.jsx","private/shell/containerComponent.jsx","public/authentication/userInfoService.js","public/authentication/multiTenantSelectionComponent.jsx","public/authentication/oktaLoginWidgetComponent.jsx","public/authentication/oktaSingleSignOnComponent.jsx","App.js","index.js","public/images/xls-export-icon.png"],"names":["module","exports","Boolean","window","location","hostname","match","OKTA_TESTING_DISABLEHTTPSCHECK","process","oidc","clientId","issuer","redirectUri","concat","origin","scopes","pkce","disableHttpsCheck","DARK","MatThemeService","_mode","arguments","length","undefined","this","currentMode","setMode","currentThemeIndex","themeColors","appTheme","isDarkMode","_MatThemeService","inputVariant","userSystemPrefersDarkMode","borderStyle","getCellHeaderBG","getControllerBG","getAlternatingBG","_rowIndex","getReverseAlternatingBG","getBaseBG","getTabBG","createMuiTheme","palette","type","primary","light","main","dark","contrastText","secondary","teal","background","paper","default","text","disabled","status","danger","overrides","MuiFormLabel","root","color","MuiFormControl","margin","MuiDialogTitle","padding","MuiDialogContent","MuiListItem","backgroundColor","props","MuiButtonBase","TouchRippleProps","style","MatClassService","_theme","flexGrow","menuPaper","maxHeight","themeColor","headerTitle","pageHeaderDividerWithIcons","spacing","pageHeaderDividerWithoutIcons","pageLoadingHeader","pageErrorHeader","error","sectionHeader","iconError","buttonError","groupTitle","listGroup","gridSpacing","table","minWidth","tableCellOverflow","whiteSpace","textOverflow","display","overflow","visuallyHidden","border","clip","height","position","top","width","warningStyles","borderBottomColor","search","borderRadius","shape","fade","common","white","marginLeft","marginRight","breakpoints","up","searchIcon","pointerEvents","alignItems","justifyContent","inputRoot","inputInput","paddingLeft","transition","transitions","create","searchOnBody","searchIconOnBody","black","inputRootOnBody","inputInputOnBody","ResultStatus","SaveStatus","ALIGNMENT","POSITION","ENTITY_FIELD_TYPE","API_ENDPOINT","SELECT_MODE","INVERT","NONE","ALL","ROLE_CELL_TYPE","CELL_ACTION","GST_API","CrudAction","CREATE","READ","UPDATE","DELETE","VIEW_DISABLED","ReportCategory","ReportLibrary","ReportType","US_GENERAL","US_STATE","US_OWNERSHIP","OUS","STANDARD","TenantSelectList","AffiliatesSelectList","ENTITY_TYPE","FieldTypes","PROFILE_CATEGORY","TaskLauncher","ReportableMap","250","251","FILTER_TYPE","FILTER_FIELD_TYPE","HEALTH_INDICATOR","1","2","3","4","ToastService","_ToastService","showSuccess","_message","_autoHideDuration","_postition","_show","showError","showWarning","showInfo","setComponentREF","_containerREF","containerREF","setShowToastHookREF","_HookREF","setShowToastRef","autoHideDuration","toastType","message","variant","elevation","anchorOrigin","vertical","horizontal","closeToast","state","showToast","setState","_toastType","toLowerCase","includes","userModel","constructor","_id","_firstName","_lastName","_userName","_currencyId","_defaultLanguageId","_isPorzioUser","_userTypeId","_userType","_tenantid","_tenantname","_uid","_workspaceID","_oktaGroupID","_isActive","_roleId","_roleName","_sessionToken","_sessionStart","_warnSessionTimeout","_logoutTimeout","_refreshTokenTime","_tenantList","userId","firstName","lastName","userName","currencyId","defaultLanguageId","isPorzioUser","userTypeId","userType","tenantId","tenantName","uid","workspaceID","oktaGroupID","isActive","roleId","roleName","sessionToken","sessionStart","warnSessionTimeout","logoutTimeout","refreshTokenTime","tenantList","_userModel","getByOBJs","userByIdObj","selTenantObj","tenantUserInfoByIdObj","sessionObj","_tenantUserInfoByIdOb","id","tenantid","AuthContext","React","createContext","AuthProvider","_ref","children","initialUserState","user","firstTime","authToken","userState","setUserState","useState","createElement","Provider","value","setViaLogin","ApplicationService","applicationName","appVersion","APP_VERSION","appVersionString","appGstVersionString","OktaRequestContext","copyrightString","copyrightStringRLDatix","copyrightRightsReservedString","OktaAuthService","tokenExpiresAt","stopTokenRenewInterval","expiresAtInMs","timeUntilExpiryInMs","Date","now","renewTimeInMs","renewBufferTimeInMs","console","log","getHoursAndMinutes","renewTokenTimerRef","setTimeout","renewToken","timeInMs","currentTime","diffTime","getTime","hours","getHours","toString","padStart","minutes","getMinutes","seconds","_OktaAuthService","authWidget","tokensCache","authClient","getAccessToken","_OktaAuthService$toke","_OktaAuthService$toke2","accessToken","INIT","config","oktaTitle","OktaSignIn","baseUrl","split","logo","porzio_gst_icon","authParams","features","idpDiscovery","requestContext","i18n","en","authStateManager","subscribe","resultObj","checkSingleSignOn","onSuccessCallback","onErrorCallback","token","getWithoutPrompt","responseType","then","successObj","handleSuccess","catch","errorObj","handleError","showSignInWidget","_renderEl","renderEl","el","cancelSession","tokens","tokenManager","setTokens","expiresAt","scheduleTokenRenewInterval","clearTimeout","renew","accessTokenObj","updatedTokens","err","MatSpecService","useDenseLayout","drawerWidth","gridTooltipEnterDelay","tooltipEnterDelay","tooltipExitDelay","showPageTitleDivider","showGridDivider","showGroupNameDivider","showListItemDivider","MatIconService","DONE_ALL","DoneAll","SELECT_NONE","ClearAll","SELECT_ALL","SELECT_PARTIAL","Exposure","SELECT_PAGE","Note","FIND_IN_PAGE","FindInPageTwoTone","fontSize","ACCOUNT","AccountCircle","SETTINGS","Settings","COLUMNS_TT_32","ViewColumnTwoTone","COLUMNS_TT_24","COLUMNS_32","FormatListBulletedSharp","COLUMNS_24","DENIED","Lock","red","SWAP","SwapCalls","transform","LINK","Link","UNLINK","LinkOff","IDEA_BULB_32","WbIncandescentTwoTone","SEARCH_32","Search","marginTop","OVERRIDE_NORMAL","LowPriority","OVERRIDE","OVERRIDE_28","DASH","Remove","PERSONAL","Person","REFRESH_CACHE","Refresh","IN_PROGRESS","HourglassFull","CONTACT_US","Help","LOGOUT","PowerSettingsNew","DELETE_RED","Delete","DELETE_FOREVER","DeleteForever","DELETE_OUTLINE","DeleteOutline","LANGUAGE","Translate","COPY","FileCopy","CURRENCY","AttachMoney","MONEY","DOLLAR","SAVE","Save","RUN","PlayArrow","BACK","ArrowBack","EDIT","Edit","EDIT_OUTLINED","EditOutlined","ADD","Add","IMPORT_TEMPLATE","Description","CLOUD_UPLOAD","CloudUpload","CLOSE","Close","CLEAR_RED","OK","Done","ACCEPT","CheckCircleOutlineOutlined","CANCEL","DATE","Event","EVENT","EVENT_NOTE","EventNote","EVENT_ALARM","Alarm","TASK_32","Assignment","TASK_24","TASK_ADD","PostAdd","PROFILE_BATCH_ADD","GroupAdd","NEWS_FEED","Chat","RELOAD","ADD_CIRCLE_OUTLINE","AddCircleOutline","VIEW_LIST","ViewList","MENU","Menu","SEARCH","CONTRAST","Brightness6Outlined","SUN","WbSunnyTwoTone","MOON","Brightness2TwoTone","CLOCK","AccessTimeTwoTone","CLOCK_SELECTED","THEME","ColorLens","NAV_HOME","Home","NAV_DASHBOARD","Dashboard","NAV_POWER_BI","Assessment","NAV_REPORT","Receipt","NAV_DATABASE","Storage","NAV_FILES","ViewCarousel","TRANSACTION_OUTLINED","ViewCarouselOutlined","NAV_USER","PROFILE","PROFILE_OUTLINED","AccountCircleTwoTone","NAV_HAND","ThumbUp","NAV_THUMB_DOWN","ThumbDown","NAV_DEMO","TrendingUp","NAV_DETAIL","WARNING","Build","COMPANY","Business","AFFILIATE","RecentActors","STORE","Store","PASSWORD","Security","DRAFTS","ContactMail","EMAIL","Email","FTP","EMAIL_FAQ","AlternateEmail","USERS","PeopleAlt","ROLE","AssignmentInd","PERMISSION","VpnKey","DEFAULT_MAPPING","Map","REPORT_MAPPING","AccountTree","CONSENT_MAPPING","People","LAUNCH","Launch","PERM_DATA_SETTING","PermDataSetting","POWER_BI","PORZIO_RULES","NoteAdd","CUSTOM_RULES","PORZIO_FILEDS","Ballot","CUSTOM_FIELDS","BallotOutlined","RERUN_VALIDATION","AssignmentTurnedIn","REVALIDATE_QUEUE","Beenhere","RERUN_MATCHING","LibraryAddCheck","FILE_COMMENT","FILE_COMMENT_ON","FILE_COMMENT_OFF","grey","RUN_REPORTS","DirectionsRun","SOURCE","Polymer","FOLDER","Folder","CIRCLE","Lens","LOGIN_FEEDBACK","Feedback","WIDGETS","Widgets","NDC_PRODUCT","LocalPharmacy","MOVE_UP","ExpandLess","MOVE_DOWN","ExpandMore","MORE_VERT_16","MoreVert","MORE_HORZ","MoreHoriz","NOT_LISTED","NotListedLocation","DOWNLOAD","GetApp","PARENT","ArrowUpward","REVIEWED","RateReview","REPORT","Report","LogoComponent","currentTheme","getTheme","logoBackgroundColor","topBarColor","src","porzio_gst_white_icon","alt","MomentService","_MomentService","lightModeStart","lightModeEnd","morningStart","morningEnd","afterNoonStart","afterNoonEnd","eveningStart","eveningEnd","nightStart","nightEnd","checkIsDawn","_currentHour","parseFloat","moment","format","checkIsDusk","getGreetingTime","currentHour","getTimeStamp","valueOf","getUtcTime","utc","getRandomTimeStamp","min","max","random","Math","LayoutService","_isReadOnly","_classes","_formikProps","_key","_label","_options","_optionKey","_optionLabel","_onChangeCallback","_minwidth","_noOptionsText","labelKey","fcKey","FormControl","key","className","dialogControl","errors","Autocomplete","labelid","multiple","values","options","noOptionsText","getOptionLabel","option","getOptionSelected","onChange","async","e","newValues","reason","setFieldValue","setFieldTouched","renderInput","params","TextField","Object","assign","label","FormHelperText","_model","keys","forEach","modelKey","filter","k","endsWith","_errorKey","component","withStyles","withRouter","_excludeHeight","_width","_isRequired","_size","name","handleChange","onBlur","handleBlur","helperText","required","size","_helperText","_variant","clearable","input","formikProps","formikHandleChange","_showEmpty","formControlKey","InputLabel","Select","labelId","MenuProps","classes","target","MenuItem","map","FormControlLabel","control","Switch","checked","defaultValue","find","v","_defaultValue","stateHandler","newVal","_LayoutService","mapYupErrorsToFormikErrors","inner","i","path","reduce","curr","next","submitIfValid","_thisRef","_validationSchema","_validationSuccessCallback","isSubmitting","isValid","validate","abortEarly","x","erroObj","setFieldError","isRequired","_fieldName","_validationSchema$fie","DataService","hasElements","fields","tests","test","OPTIONS","getFormikProps","_initialValues","_showMultiFieldErros","_validateOnchange","_validateOnBlur","initialValues","validationSchema","validationSchemaOptions","showMultipleFieldErrors","validateOnChange","validateOnBlur","getDropDown","_formClassName","_menuClassName","_minWidth","_otherSelectOptions","_otherFormControlOptions","_otherInputLabelOptions","selectKey","_value","validateField","getSimpleDropDown","_styles","getTextBox","_className","_type","_onChangeDebouncedTextFieldFormikValidator","_onClickCallback","_inputProps","_otherOptions","linkStyle","cursor","textDecoration","hasValue","readOnly","onClick","inputProps","InputProps","observable","getInputTextBox","_multiline","_noOfRows","multiline","rows","getCheckBox","_otherCheckboxOptions","_otherFormControlLabelOptions","formControlLabelKey","checkboxKey","parseBoolean","getDatePicker","_format","_disableFutureDates","DatePicker","autoOk","endAdornment","InputAdornment","disableFuture","getIconButton","_icon","_tooltip","_onClick","_color","_tooltipPlacement","Tooltip","enterDelay","title","placement","arrow","IconButton","getSearchText","InputBase","placeholder","getReadOnlyActions","_parentThisRef","_isNew","_onCancelClick","_onSaveClick","_onEditClick","isReadOnly","getControlledReadOnlyActions","_isPermitted","getReadOnlyHeaderActions","icon","iconColor","getReadOnlyActionsSolo","getNullableValidation","_yupValidationObj","nullable","n","o","NaN","getContainedDialogProps","_scroll","_container","document","getElementById","disableEnforceFocus","fullScreen","scroll","container","BackdropProps","PaperProps","AccessDeniedComponent","Component","render","Fragment","Toolbar","Typography","showCancel","onClose","Grid","direction","justify","getHocComponenet","RolePermissionInfo","_permissionId","_componenetName","fullPermission","permissionId","componenetName","canCreate","cannotCreate","canView","cannotView","canEdit","cannotEdit","canDelete","cannotDelete","canConfigure","cannotConfigure","canViewDeleted","cannotViewDeleted","canCreateOrEdit","cannotCreateOrEdit","canViewOrEdit","cannotViewOrEdit","RolePermissionService","IS_TENANT_ADMIN","isValidPermissionId","_RolePermissionInfo","GET","_fullPermission","_RolePermissionService","PORZIO_TENANT_ID","TEANANT_ADMIN_ROLE_ID","USER","USER_ID","USER_TENANT_ID","USER_ROLE_ID","IS_PORZIO_USER","IS_NOT_TENANT_ADMIN","IZENDA_REPORT_USER_TYPE_IDs","powerBIPermissionID","powerBIPermissionIDs","hasOnlyPowerBIAccess","configurationMAP","fetchPermissionsOBS","_USER","IS_CONFIGURED","of","ApiService","getOBS","CONFIGURE","_permissionsArray","CACHE","sort","y","_permission","actionMAP","actionsList","action","set","actionId","isApplicable","hasAccess","createActionId","_canPerformAction","viewActionId","_canView","editActionId","deleteActionId","configureActionId","viewDeletedActionId","_actionId","warn","permissionActionsMap","get","mapHasNoElements","has","isValidNumber","getAccessDeniedComponent","_onClose","_showCancel","_title","showAccessDeniedToast","isTenantReportSubscriptionsAllowed","isTenantReportSubscriptionsNotAllowed","isIzendaReportsNotAllowed","isIzendaReportsAllowed","oRET","PROFILE_CENTER","PROFILE_DETAILS","PROFILE_DETAILS_STATUS","PROFILE_DETAILS_ADDRESS","PROFILE_DETAILS_CONTACT_METHOD","PROFILE_TASK","PROFILE_AGREEMENTS","PROFILE_CONSENTS","PROFILE_TRANSACTIONS","PROFILE_DOCUMENTS","PROFILE_LINKED_PROFILES","PROFILE_IDENTITIFERS","PROFILE_REFERENCE_DATA","PROFILE_EXPANDED_VIEW","PROFILE_EXPANDED_BULK_EDIT","PROFILE_EXPANDED_BULK_STATUS_FIELD","PROFILE_EXPANDED_VIEW_EXPORT","PROFILE_EXPANDED_VIEW_TASK","TRANSACTION_CENTER","TRANSACTION_DETAILS","TRANSACTION_STATUS","TRANSACTION_RECIPINET_INFORMATION","TRANSACTION_AGREEMENTS","TRANSACTION_RELATED_DOCUMENTS","TRANSACTION_REPORT_REFERENCES","TRANSACTION_TASK","TRANSACTION_CLONE_OR_COPY","TRANSACTION_PRINT","TRANSACTION_AUDIT","TRANSACTION_EXPANDED_VIEW","TRANSACTION_EXPANDED_BULK_EDIT","TRANSACTION_EXPANDED_STATUS_FIELD","TRANSACTION_EXPANDED_RECIPIENT_INFORMATION_FIELDS","TRANSACTION_EXPANDED_EXPORT","TRANSACTION_EXPANDED_TASK","AGREEMENTS","AGREEMENT_DETAIL","AGREEMENT_CONSENT","AGREEMENT_DOCUMENTS","AGREEMENT_TRANSACTIONS","SOURCE_FILE_LIST","SOURCE_FILE_LIST_EXPORT","SOURCE_FILE_DETAIL","BUSINESS_RULE_LIST","BUSINESS_RULE_LIST_EXPORT","BUSINESS_RULE_DETAIL","POWER_BI_REPORT","ROLE_LIST","ROLE_LIST_EXPORT","ROLE_DETAIL","ROLE_DETAIL_TYPE_PORZIO_LS","ROLE_DETAIL_TYPE_CUSTOMER","ROLE_DETAIL_PORZIO_REQUIRED","ROLE_PERMISSIONS","USER_LIST","USER_LIST_EXPORT","USER_DETAIL_PERSONAL_INFORMATION","USER_DETAIL_PERSONAL_INFORMATION_PRIMARY_EMAIL","USER_DETAIL_PERSONAL_INFORMATION_ROLES","USER_DETAIL_PERSONAL_INFORMATION_ACTIVE_INACTIVE","USER_DETAIL_PERSONAL_INFORMATION_ORG_MEMBERSHIP","USER_DETAIL_COMMUNICATIONS","PORZIO_FIELD_LIST","PORZIO_FIELD_LIST_EXPORT","PORZIO_FIELD_DETAIL","CUSTOMER_FIELD_LIST","CUSTOMER_FIELD_LIST_EXPORT","FIELD_DETAIL","DEFAULT_MAPPING_LIST","DEFAULT_MAPPING_EXPORT","DEFAULT_MAPPING_DETAIL","COMPLIANCE_REPORT_MAPPING_LIST","COMPLIANCE_REPORT_MAPPING_EXPORT","COMPLIANCE_REPORT_MAPPING_DETAIL","CONSENT_MAPPING_LIST","CONSENT_MAPPING_EXPORT","CONSENT_MAPPING_DETAIL","TENANT_DETAIL","PRODUCT","PRODUCT_DETAIL","SALESREP","SALESREP_DETAIL","MATERIAL","MATERIAL_DETAIL","STUDY","STUDY_DETAIL","HCP","NEWSFEED","NEWSFEED_DETAIL","TASK","TASK_DETAIL","TASK_COMMENTS","EVENT_DETAIL","DATA_CENTER","FILE_STATUS","IMPORT_SUMMARY_REPORT","TRANSACTION_EXPANDED_VIEW_DATACENTER","PROFILE_EXPANDED_VIEW_DATACENTER","DOWNLOAD_FILE_DATACENTER","UPLOAD_FILE_DATACENTER","IMPORT_TEMPLATE_DETAIL","DOWNLOAD_TEMPLATE","SYSTEM_DOCUMENTS","SYSTEM_DOCUMENTS_DETAILS","DOWNLOAD_SYSTEM_DOCUMENTS","COMPLIANCE_DOCUMENTS","COMPLIANCE_DOCUMENTS_DETAILS","DOWNLOAD_COMPLIANCE_DOCUMENTS","CUSTOMER_DOCUMENTS","CUSTOMER_DOCUMENTS_DETAILS","DOWNLOAD_CUSTOMER_DOCUMENTS","UserActivityService","_UserActivityService","lastActiveOn","checkIntervalTime","expiryTimeoutInMs","sessionExpiryWarningTime","sessionExpiryWarningTimeInSecs","oktaAuthClient","context","compRef","setLastActiveTime","trackUserActivity","startTracking","setSessionWarningTimer","addEventListener","event","untrackUserActivity","_context","stopTracking","removeEventListener","clearInterval","sessionWarningTimerRef","sessionLogoutTimerRef","setInterval","showSessionTimeoutDialog","setSessionLogoutTimer","logout","revokeAccessToken","signOut","clear","localStorage","removeItem","SessionService","storageKey","username","_SessionService","isOktaAuthenticationInProgress","setLoginInfo","_userByIdObj","_selTenantObj","_tenantUserInfoByIdObj","_sessionObj","authUserObj","setItem","JSON","stringify","configureOBS","oSubject","ReplaySubject","LookupService","clearAll","rolePermissionsResult","combineLatest","fetchCommonLookupsOBS","lookupsResult","lookupsError","rolePermissionsError","asObservable","getUserModelFromStorage","_userinfo","parse","getItem","getTenantUserInfoAsync","_userId","_tenantId","tenantUserInfoByIdResult","fetch","json","getTenantUserInfoOBS","getTokenByIdOBS","_url","_params","startsWith","apiBaseURL","headers","from","pipe","switchMap","response","apiCoreURL","apiHomeURL","requestOptions","apiTenantURL","apiIdentityURL","_enumAPI","api_address","method","_apiEndPointEnum","_urlString","apiEndPointURL","_getEndPointURL","urlString","unParsedResponse","catchError","_jsonStringifiedBody","setOBS","_actionVerb","_headers","_responseType","body","apiReportURL","fetchIntercept","register","request","url","fetchOptions","ISSUER","Authorization","clearAFFILIATIONS","clearCOUNTRIES","clearCOUNTRIES_FORMATTED","clearLANGUAGES","clearCURRENCIES","clearCURRENCIES_FORMATTED","clearTIME_ZONES","clearPERMISSION_ACTIONS","clearCONTACT_TYPES","clearTRANSACTION_STATUSES","clearPROFILE_STATUSES","clearAGREEMENT_STATUSES","clearVENDOR_NAMES","clearPRODUCTS","clearMATERIAL_ITEM_NAMES","clearFULL_USER_PREFERENCES_OBJ","clearPERMISSION_SECTIONS","clearROLES","clearREPORT_FILTER_VALUES","clearPROFILE_CATEGORIES","_AFFILIATIONS","_entityId","_sourceSystemId","_languageId","_profileId","_source","_agreementId","_transactionId","_porzioGSTId","_ENTITY_LIST","_PERMISSION_ACTIONS","_PERMISSION_SECTIONS","_COUNTRIES","_COUNTRIES_FORMATTED","_CONTACT_TYPES","_TRANSACTION_STATUSES","_PROFILE_STATUSES","_AGREEMENT_STATUSES","_REPORT_IDENTIFIERS","_LANGUAGES","_CURRENCIES","_CURRENCIES_FORMATTED","_TIMEZONES","_SOURCE_TYPES","_PRODUCTS","_VENDOR_NAMES","_MATERIAL_ITEM_NAMES","_FULL_USER_PREFERENCES_OBJ","_array","obj","push","_ROLES","_PROFILE_CATEGORIES","_REPORT_FILTER_VALUES","_LookupService","getAffiliationsAsOBS","getCountriesAsOBS","getFormattedCountriesAsOBS","getLanguagesAsOBS","getCurrenciesAsOBS","getFormattedCurrenciesAsOBS","getTimezonesAsOBS","getPermissionActionsAsOBS","getContactTypesAsOBS","getTransactionStatusesAsOBS","getProfileStatusesAsOBS","getAgreementStatusesAsOBS","getVendorNamesAsOBS","getProductsAsOBS","getMaterialItemNamesAsOBS","getFullUserPreferencesAsOBS","getPermissionSectionsAsOBS","getProfileCategoriesAsOBS","fetchCommonLookups","_data","reportTemplateSubscriptionId","allElement","getAffiliationsBySystemAsOBS","getVendorsBySystemAsOBS","getUsersBySystemAsOBS","getAllVendorsAsOBS","getVendorsByAffiliationsAsOBS","_affiliations","hasNoElements","affiliationIdString","join","getUsersByVendorsAsOBS","_vendors","vendorIdString","getEntityListAsOBS","getProfileConsentLovAsOBS","getConsentAsOBS","_prId","getIdentifierTypes","targetUrl","formatCountryList","_allId","getReportIdentifiersAsOBS","_companyAffiliateId","formatCurrencyList","getSourceTypesAsOBS","getRolesAsOBS","_TRANSACTIONTYPES","getTransactionTypesAsOBS","_NEWSFEEDTYPES","getNewsfeedTypesAsOBS","_COMPANIES","getUserTenantsAsOBS","_ACTIVE_TENANTS","getActiveTenantsAsObs","_includePorzio","getFieldLOVByIdsAsOBS","_fieldId","getUserCurrencyAsOBS","fetchCurrenciesAsOBS","getConvertedTotalAmountAsOBS","_sourceCurrency","_targetCurrency","_totalAmount","_exchangeDate","toISOString","substring","STATUSES","seq","EVENTTYPES","COMPLIANCE_CONSENT_REPORTABLE","reportableId","reportableName","REPORTS_TO_BE_REMOVED_CONSENT","getReportFiltersValuesAsOBS","SubscriptionArray","_items","add","_subscription","cancelAll","unsubscribe","getEmptyObject","_sampleObject","Array","isArray","_subscriptions","_obj","isNullOrUndefined","_map","mapHasElements","_keys","_oRET","valueA","valueB","localeCompare","_string","trim","isStringNullOrEmpty","_minLength","_default","_uniqueProp","item","_prop","a","b","_index","splice","_prop1","_prop2","_object","_sortProp","entries","_objectArray","_keyProp","_valueProp","_includeAll","allExcluded","_selectedArray","_scopeArray","d","isNaN","date","_DataService","hasAnyTrue","_booleanArray","some","_bool","hasAnyFalse","isAllTrue","stringEquals","_target","stringNotEquals","arrayToObject","stringToArray","_delim","insertAt","_targetArray","_targetIndex","_itemToInsert","hasValidValue","insertItems","_elementsToInsert","slice","Number","isNotNumber","getNumberOrDefault","extractKeysAsNumbers","_mappings","parseInt","extractValues","getLookupValue","sortObjectByKeys","result","getEmptyStringIfNull","addToObject","_targetObj","_newKey","_newValue","_newIndex","temp","index","objProp","hasOwnProperty","arrayToSingleQuotedJsonString","toSingleQuotedJsonString","_stringified","replace","addEscapeCharactersToJsonString","_jsonObj","arrayToString","_countryList","outList","usaIndex","c","indexOf","oUsa","formatLanguageList","euroIndex","oEuro","getDateFromDateTimeStamp","_date","isValidDate","formatDate","dateval","getFullYear","getMonth","getDate","formatDateString","dateString","parsedDate","getDateStringForDisplay","isISODateRegexMatch","dateVal","isDateRegexMatch","getModelKeyMap","_sampleModel","modelKeyMap","getStringOrDefault","convertToLowerCasedKeyObject","_objArray","applyFilter","_filterType","_targetString","_filterString","valueLowerCase","filterTextLowerCase","lastIndexOf","convertActualObjectToLowerCasedKeyObject","lowerCaseObj","dateComparator","date1","date2","bdt","adt","useStyles","makeStyles","LanguageComponent","userContext","useContext","isLoading","setIsLoading","sourceData","setSourceData","useEffect","internationalList","fetchData","pageTitle","Dialog","open","openDialog","maxWidth","DialogTitle","disableTypography","AppBar","handleClose","handleDialogClose","DialogContent","Box","paddingRight","paddingTop","paddingBottom","minHeight","iDex","nSlots","ceil","nCol2","natDex","iOrder","xs","sm","md","order","Button","code","lcode","changeLanguage","changeCurrency","PageLoadingComponent","small","CircularProgress","thickness","PageErrorComponent","modalShow","handleHide","onRetry","SectionComponent","menu","edit","remove","save","contentJsx","enableEditJsx","marginBottom","_marginTop","_marginBottom","edge","onMenuClick","align","onRemoveClick","onEditClick","onSaveClick","onAddClick","PersonalSettingsService","getFullUserAsOBS","PersonalSettingsModalComponent","oSubscriptions","lastValidatedLoginResult","inputAction","lastValidatedEmailResult","fetchResult","isNew","isEditing","validatedLoginName","validatedPrimaryEmail","isAffiliatesLoading","scopeAffiliationsList","selAffiliationsList","isVendorsLoading","scopeVendorsList","selVendorsList","getSelectedAffiliations","selAffiliations","allAffiliations","sr","getSelectedCountries","selCountries","allCountries","getSelectedVendors","selVendors","allVendors","getSelectedTransactionType","selTran","allTran","Yup","handleSubmit","_formikProps$values$m","selRole","getFirstOrDefault","roles","mappedObj","loginName","primaryEmail","password","fullUserData","tempPassword","lastLoginDate","language","middleInitial","department","activeID","timeZoneId","timeZone","currency","selectedRolesList","selectedRolesListNames","rolesIntList","selectedAffiliatedCompanyList","getScopeKeys","selectedAffiliatedCompanyListNames","selectedCountryList","selCountryList","countryList","selectedCountryListNames","selectedVendorList","selectedVendorListNames","selectedTransactionTypeList","selTransactionTypeList","transactionTypeList","selectedTransactionTypes","addressList","contactList","createdBy","updatedBy","searchUserText","lastLogin","isCopy","addresses","contacts","tenantConnectionString","isLocked","parentTenant","email","rolewithinTenant","loggedInUser","userPermissions","isUserListView","isUserListExportView","isPersonalInformationCreate","isPersonalInformationView","isPersonalInformationEdit","isPersonalInformationDelete","isPersonalInformationViewDelete","isPrimaryEmailView","isRolesView","isRolesEdit","isActiveInactiveView","isActiveInactiveEdit","isOrganizationalMembershipView","isOrganizationalMembershipEdit","isAuthenticationView","isAuthenticationEdit","isCommunicationsView","isCommunicationsEdit","isUserAuditView","actionVerb","userID","successResult","refreshParentGrid","errorResult","onAffiliatesChange","_newValues","_clearLookupStuff","_clearOthersIfAllIsSelected","addElementAll","onVendorsChange","_propName","itemAll","_loadingKey","_selectionKey","_scopeKey","componentWillUnmount","componentDidMount","_fullUserDataOrNull","_scopeAffiliationsList","_languageList","_timeZoneList","_currencyList","_roles","_transactionTypeList","getKeyValueCollection","_selAffiliationsList","removeElementAll","_selCountryList","_selTransactionTypeList","_scopeVendorsList","_selVendorsList","selRoleId","isUsersLoading","languageList","timeZoneList","currencyList","getInitialValues","getValidationSchema","_formikValue","isExists","typeError","getLanguageList","list","english","newList","unshift","Formik","fProps","getInputProps","getSelectControl","getSwitch","getChipSelect","contextType","AuthenticationModalComponent","super","data","oldPassword","newPassword","confirmPassword","alert","setSubmitting","UserDialogComponent","onTabChange","newValue","selectedTabIndex","onValueChange","bind","model","buildWithErrorModel","taskName","taskPriority","taskAssignedTo","startDate","dueDate","_event","setModelError","_hasError","_errorMsg","buildProps","Tabs","indicatorColor","textColor","scrollButtons","Tab","role","hidden","Divider","ActionDialogComponent","showDialog","description","content","actions","fullWidth","DialogContentText","DialogActions","_action","callback","button","startIcon","AgGridUtil","resetIndexes","editingRowIndex","lastEditedRowIndex","getStyles","_defaultColumnName","_frameworkComponents","_this","gridParams","gridApi","gridColumnApi","gridColumnNameMap","defaultColumnName","frameworkComponents","setGridParams","_gridParams","_sizeColumnsToFit","api","columnApi","getAllColumns","column","colId","sizeColumnsToFit","getSelectedRows","_selectColumnName","forEachNode","rowNode","sortAndFilterAwareRowNode","getRowNode","autoSizeColumns","_skipHeader","allColumnIds","bindInlineEditEvents","editType","suppressClickEdit","stopEditingWhenGridLosesFocus","onRowClicked","_handleRowClick","onRowEditingStopped","rowIndex","_handleRowEditingStopped","getInlineEditActionColumn","_showDelete","_onAcceptObsCallback","_headerText","_frameworkCellRenderer","_cellStyle","headerName","cellStyle","headerClass","field","specialProperty","cellRenderer","cellRendererParams","showDelete","_cellRef","isNotEditing","applyTransaction","_cancelRowEdit","setEditingProperty","refreshRows","node","_setEditingRow","_result","isSuccess","clearPinnedColumns","deleteEditingProperty","_acceptRowEdit","focusEditCell","invalidMessage","invalidCellRef","setFocusedCell","ensureColumnVisible","ensureSpecialProperty","_rowData","editingProperty","readOnlyProperty","deleteSpecialProperty","pinColumn","_colName","_side","applyColumnState","pinned","defaultState","deleteReadOnlyProperty","setReadOnlyMode","refreshAllCells","setEditingMode","autoSizeAllColumns","col","getUpdatedRowData","getUpdatedRowNodes","refreshCells","_gridApi","_rowNodes","_fieldNames","rowNodes","columns","force","refreshColumns","_lastEditedRowNode","stopEditing","startEditingCell","colKey","addedRow","cancelNewRow","oldData","update","addNewRow","_newRowData","updateRows","_rowsToUpdate","disableEditability","_AgGridUtil","getInlineRowEditGridProps","_agGridUtils","_columnDefs","_rowHeight","rowData","columnDefs","gridOptions","componentParent","suppressContextMenu","rowHeight","onGridReady","truncateOnMaxCharLengthExceeds","columnValueMaxLengths","onCellEditingStopped","colDef","maxLength","originalValue","setDataValue","substr","isEditingAllowed","_cellProps","specialObj","isEditingDisabled","AgGridEditButtonCellRendererComponent","ProfileDetailCellRendererComponent","invokeParentMethod","methodFromParent","DialogErrorFragmentComponent","AgGridColumnExt","_isEditable","_filter","_sortable","_resizable","columnRef","columnType","SET","tooltip","headerTooltip","validateEditablity","_func","addCellStyle","cellClassRules","cellClass","noCellHighlight","alignText","_textAlignment","textAlignment","underlineText","centerAlignText","rightAlignText","leftAlignText","justifyText","setFieldName","editable","resizable","sortable","filterOptions","_filterOptions","flexWeight","defaultWidth","minMaxWidth","_maxWidth","fixedWidth","minAndDefaultWidth","maxAndDefaultWidth","filterParams","_textComparator","textCustomComparator","enableValue","pivot","groupDefaultExpanded","comparator","_callback","valueSetter","makeDropDown","_cellEditorParams","_cellEditor","_arrSort","makeMaterialDropDown","_emptyValue","_cellRenderer","_AgGridColumnExt","getGridOptions","_headerHeight","_tooltipShowDelay","headerHeight","tooltipShowDelay","ChildMessageRendererComponent","ProfileTransactionService","modalAgNode","clientAuthContext","prid","getColumnDefs","parentThis","DynamicControlService","_controlCache","_debounceMap","subscription","_fromikProps","_initialValuesOrNull","_fieldConfig","_control","field_Type_ID","_getDropDown","_getCheckBox","_getDateTimePicker","_getTextBox","_componentThisRef","_isParentReadOnly","_colFieldConfig","_ruleSummaries","_sortableCols","colProps","mappedFieldNameLower","lovOptions","customLOVList","lovId","colFieldConfig","componentThisRef","isParentReadOnly","isColumnReadOnly","dataSource","valueProp","displayProp","getErrorOrWarningInfoCallback","getCellErrorOrWarning","filterType","cellValue","filterText","lov","localLovKey","inputType","customComparator","_DynamicControlService","onClickCallbackKey","caseSensitiveFieldNames","getIntitialValues","_groupInfoMap","_groupInfo","fieldConfigs","fieldName","getMappedFieldName","caseSensitiveFieldName","formikFieldName","initialValue","isCustomField","customObj","customfields","FIELDID","fieldID","FIELDVALUE","customBoolean","fieldValue","customDateTime","__getValidation","parseCustomFields","parseErrorFields","erroredFields","setErrors","_fPropsDynamic","errorsObj","errorInfo","setFieldValues","_validate","_getErrorClassName","isWarning","_controlReadOnly","controlClass","startAdornment","getInputAdornments","__getDebouncedTextFieldFormikValidatorMap","autoSelect","hideEmpty","secondaryActionIcon","_atStart","_marginRight","_adornmentActions","_position","clickHandled","ruleSummary","recordId","recordid","businessRuleMessage","businessRuleSeverity","affiliationLovFieldIds","vendorNameLovFieldIds","productLovFieldIds","formLovFieldIds","currencyLovFieldIds","countryLovFieldIds","materialItemNameLovFieldIds","booleanTransformFieldIds","transformFieldConfig","fielD_NAME","fieldlength","lovTextColumnName","transformToCustomLovList","entityName","_textProp","iS_PLSREQUIRED","asyncValidationCallback","fieldValueDetails","validationObj","Min","Max","DecimalPlaces","strValue","integer","mappedlovidfield","__parseFieldName","_fielD_NAME","tt","Subject","debounceTime","AgGridService","_agGridColumns","_lowerCase","_columnsToExclude","_agCellRenderers","_mixedCaseData","getLowerCaseElements","fieldAliasName","isExpViewDefault","ruleviolations","cr","crId","crVal","_headerName","cellEditor","refData","cellEditorParams","cellHeight","_dataField","_cellStyles","_headerTextAlign","_flex","getFixedWidth","excelStyles","font","strikeThrough","getBusinessRuleSeverity","_recordId","fieldRuleSummary","TemplateFieldConfigUtil","_groupRendererId","_ordinal","_filedTypeEnum","_entityName","_fieldAliasName","_fieldDesc","objRef","ordinal","customfield","encryption","fieldDesc","fieldId","fieldTypeId","fieldLength","groupRendererId","isPlsRequired","customField","mask","toolTip","isHidden","isVisible","isEditable","mappedlOVIdField","lookUpList","customProfileLOVList","secondaryAction","endAdornmentActions","_TemplateFieldConfigUtil","TransactionTabService","isGroupExpensesFieldsModified","_TransactionTabService","proRataFieldId","otherFieldGroupKey","filterFieldGroupKey","staticFieldGroupKey","customFieldGroupKey","readonlyFieldIds","companyTransactionId","porzioGSTTransactionFieldId","transactionCategoryFieldId","transactionStatusFieldId","transactionConsentFieldId","transactionCompanySalesRepId","recipientInformationFieldGroupKey","recipientColCompanyProfileId","recipientColPorzioGstProfileId","recipientColLastNameFieldId","recipientColFirstNameFieldId","recipientColOrganizationName","recipientProfileTypeFieldId","recipientColCountryFieldId","recipientIdentifierTypeFieldId","recipientColRecipientIdentifierCountryFieldId","recipientColProfileStatusFieldId","recipientInformationFieldIds","recipinetProfileTypeLovOptions","recipinetIdentifierTypeLovOptions","ownershipInformationFieldGroupKey","ownershipInformationFieldIds","engagementInformationFieldGroupKey","fieldEngagementCompanyEventFieldId","fieldEngagementNameFieldId","fieldEngagementTypeFieldId","fieldEngagementDescriptionFieldId","fieldEngagementStartDateFieldId","fieldEngagementEndDateFieldId","engagementInformationFieldIds","venueInformationFieldGroupKey","fieldVenueNameFieldId","fieldVenueAddress1FieldId","fieldVenueAddress2FieldId","fieldVenueAddress3FieldId","fieldVenueAddress4FieldId","fieldVenueCityFieldId","fieldVenueProvinceFieldId","fieldVenuePostalCodeFieldId","fieldVenueCountryFieldId","venueInformationFieldIds","researchInformationFieldGroupKey","researchInformationFieldIds","PIInformationFieldGroupKey","principalInvestigatorID1","principalInvestigatorID2","principalInvestigatorID3","principalInvestigatorID4","principalInvestigatorID5","PIInformationFieldIds","userPersonalCurrencyFieldId","convertedCurrencyTotalAmountFieldId","transactionTypeFieldId","transactionDateFieldId","initiatorLastNameFieldId","initiatorFirstNameFieldId","afiliatedCompanyFieldId","vendorNameFieldId","productFieldId","product2FieldId","product3FieldId","product4FieldId","product5FieldId","salesRepFieldId","formFieldId","purposeFieldId","totalAmountFieldId","totalNumberOfRecipientsFieldId","numberOfProfessionalRecipientsFieldId","numberOfNonProfessionalRecipientsFieldId","numberOfCompanyRepresentativesFieldId","numberOfNoShowsFieldId","baseCurrencyFieldId","engagementTypeFieldId","engagementNameFieldId","engagementStartDateFieldId","engagementEndDateFieldId","groupExpensesFieldIds","_isClone","hardCodeColumns","_columnsArray","hardcodeFields","_compThisRef","_templateData","_templateKeys","duplicateTransactionStatusKey","TransactionStatus","showTransactionStatusDialog","duplicateRecipientPorzioGstProfileIdKey","porzioGstTransactionIdKey","porzioGstTransactionIdConfigValue","proRataKey","UserPersonalCurrency","ConvertedCurrencyTotalAmount","getGroupFieldsMap","_templateConfigData","_sortProp1","_sortProp2","groupInfoMap","sortObjectByEntries","nonGroupedControls","fieldConfig","setLinkPropertiesIfAny","setAdornmentActionsIfAny","groupInfo","grouprenderid","_push","staticGroupFields","indexToInsertAfter","findIndex","indexUserPersonalCurrency","fieldConfigUserPersonalCurrency","indexConvertedCurrencyTotalAmount","fieldConfigConvertedCurrencyTotalAmount","onPidSearchClick","onPidClearClick","showProfileDetailDialog","_porziogstprofileid","targetPidFieldConfig","profileIdForDetailsDialog","gstProfileIdForDetailsDialog","porziogstprofileid","initialValuesOrNull","pridpiid1","pridpiid2","pridpiid3","pridpiid4","pridpiid5","salesRepIdForDetailsDialog","companySalesRepId","companysalesrepid","srid","openSalesRepDialog","getRecipientInformationRows","getRecipientInformationObject","_isactive","active","_transactionDate","getRecipientInformationColumnDefs","_recipientInformationFieldConfigs","getTextColumn","cleanupClone","_transactionToClone","_cleanedClone","porziogsttransactionid","getKeyName","_isEndsWithId","_isProductFields","_mappedFieldName","lastChar","convertForPost","_dataToPost","_currentValue","formattedValue","isEndsWithId","isProductFields","_lovStringFieldName","lovObj","lovKey","countryId","RecipientSearchDialogService","searchOBS","_searchValue","searchValue","porzioGSTId","organizationName","companyId","country","_onSelectCallback","AgGridRadioButtonCellRendererComponent","onStateChangeRequested","isChecked","allowUnCheck","_newState","itemsToUpdate","forEachNodeAfterFilterAndSort","notHasSpecialProperty","Radio","STYLES","CircleComponent","circleStyle","customCircleStyles","tranTypes","unmatch","nonLicensed","eligible","approve","getComponent","getHComp","dynamic","left","val","RecipientSearchDialogComponent","scopedSubscriptions","apiSubscriptions","searchSubject","BehaviorSubject","searchRecipient","stringShouldBe","searchResult","profileList","selectedProfile","lastSearchedValue","_profileList","isSelected","row_col","renderContent","getAgGridTheme","AgGridReact","agGridRecipientUtils","errorMessage","isSelectedCellRenderer","childMessageRendererComponent","distinctUntilChanged","mergeMap","autoFocus","retObj","ProfileDetailDialogComponent","PossibleMatchesDialogService","getPossibleMatches","_recordid","getAsMatchCenterRow","_profileObj","getUnmatchedProfileColumnDefs","PossibleMatchesDialogComponent","_countryList$find","countryName","possibleMatchCount","unmatchedProfileObj","pagination","paginationPageSize","agGridUnmatchedDataUtils","onCellFocused","agGridPossibleMatchUtils","flashCells","matchId","entityId","markAsPermenant","SalesRepDetailsService","getReportValueDropdownAsOBS","_srId","_companySalesRepId","queryString","SalesRepDetailsComponent","fetchSalesRepDetails","srId","_salesRepObj","salesRepObj","salesRepFirstName","salesRepMiddleName","salesRepLastName","province","licenseChicago","licenseConnecticut","licenseDC","licenseNevada","licenseMiamiIndicator","licenseOregon","apiUrl","refreshGrid","_this$state$salesRepO","salesrepfirstname","_this$state$salesRepO2","salesrepmiddlename","salesreplastname","_this$state$salesRepO3","_this$state$salesRepO4","_this$state$salesRepO5","_this$state$salesRepO6","_this$state$salesRepO7","_this$state$salesRepO8","history","goBack","MuiPickersUtilsProvider","utils","DateFnsUtils","FormGroup","StatusOverrideComponenet","saveProfileStatus","apiResult","saveTransactionStatus","selTransIds","selectedTransactions","newStausId","postOBS","refreshTab","statusId","currentStatusId","validationSchemaObj","LinearProgress","dropDownLabel","statuses","_fProps","_newStatusId","currentValue","_statuses","AddressModel","_isprimary","_addressid","_addresS1","_addresS2","_addresS3","_addresS4","_city","_province","_postalcode","_porziogstaddressid","_companyaddressid","_countrylist","addressid","addresS1","addresS2","addresS3","addresS4","city","postalcode","countrylist","porziogstaddressid","isprimary","isactive","companyaddressid","ProfileAddressModel","AddressId","Address1","Address2","Address3","Address4","City","Province","PostalCode","CountryId","CountryName","CountryList","ISPRIMARY","IsActive","PorzioGSTAddressId","CompanyAddressId","AddressList","ProfileTabService","_ProfileTabService","gridColumnGroupKey","companyProfileID","porzioGSTProfileID","profileCategoryFieldId","profileStatusFieldId","addressesFieldGroupKey","addressFieldIds","addressIsActiveFieldId","addressIsPrimaryFieldId","address1FieldId","address2FieldId","address3FieldId","address4FieldId","addressCityFieldId","addressProvinceFieldId","addressPostalCodeFieldId","addressCountryFieldId","companyAddressIDFieldId","porzioGSTAddressIDFieldId","contactMethodsFieldGroupKey","contactMethodFieldIds","contactIsActiveFieldId","contactIsPreferredFieldId","contactTypeFieldId","contactInformationFieldId","contactCountryFieldId","companyContactIdFieldId","porzioGSTContactIDFieldId","identifierFieldGroupKey","identifierFieldIds","identifierTypeFieldId","identifierCountryFieldId","identifierValueFieldId","identifierDescriptionFieldId","identifierCompanyFieldId","porzioGSTIdentifierFieldId","consentFieldGroupKey","consentFieldIds","consentFieldId","consentStartDateFieldId","consentEndDateFieldId","consentExecutedDateFieldId","_forGrid","validateCompanyProfileId","duplicateProfileStatusKey","ProfileStatus","showProfileStatusDialog","porzioGstProfileIdKey","porzioGstProfileIdConfigValue","getAddressRows","addressRows","addresslist","row","getAddressObject","getAddressObjectForPost","isNewAddressRow","validateAddressRowEditOBS","addressFieldNamesInLowerCase","getAddressAgGridColumnDefs","getContactRows","contactRows","contactlist","getContactsObject","_ispreferred","_companycontactid","_contactid","_contactinformation","_porziogstcontactid","_contacttypelist","companycontactid","conatacttypelist","contactid","contactinformation","contacttype","contacttypeid","ispreferred","porziogstcontactid","isNewContactRow","validateContactRowEditOBS","contactsFieldNamesInLowerCase","getContactsAgGridColumnDefs","_contactFieldConfigs","contactTypeList","getIdentifierRows","identifierlist","getIdentifierObject","_porzioGSTIdentifierTypeId","_companyIdentifierID","_countryId","_countryInfo","_identifierDescription","_identifierValue","_porzioGSTIdentifierType","_porzioGSTIdentifierID","_profileIdentifierId","countryCode","isdefault","isNewIdentifierRow","companyIdentifierID","validateIdentifierRowEditOBS","getIdentifierAgGridColumnDefs","arrSort","porzioGstIdentifierTypeList","porzioGstIdentifierTypeCellSource","countryCellSource","getConsentRows","_consentList","getConsentObject","_profileConsentId","_profileConsent","_profileConsentName","_profileConsentStartDate","_profileConsentEndDate","_profileConsentExecuteDate","isNewConsentRow","profileConsentId","validateConsentRowEditOBS","getConsentAgGridColumnDefs","consentLovList","TransactionTabComponent","fetchSourceSystems","fetchSourceSystemsResult","getSourceSystemsByEntityAsOBS","_sourceSystemList","sourceSystemList","onSourceSystemChange","selSourceSystemId","getUnmatchedProfileObj","countryObj","fPropsDynamic","profileType","recipientIdentifierType","generateRecipientInfo","_selProfileId","isRecipientInfoInProgress","isRecipientMatched","getProfileTabDetailsWithErrorInfoAsOBS","_profile","_identifier","sortedIdentifiers","profileIdentifierId","addressInfo","updateddate","recipientProfileInfo","recipientIdentifierInfo","recipientAddressInfo","companyprofileid","profiletypeid","profilecategoryid","profileId","showSearchRecipientDialog","showPossibleMatchesDialog","showConfirmCreateNewProfile","showCreateNewProfileDialog","sourceSystemValidationSchema","_resetClickHandle","showPIDProfileSearchDialog","setPiIDandPridpiID","_fieldconfig","_piId","_pridpiid","piIdMap","prIdpiIdMap","extractRecipientInfo","addressCountryObj","recipientIdentifierTypeObj","fPropsSourceSystem","setSourceSystemFormikProps","_fPropsSourceSystem","TAB_PERMISSIONS","_newSourceSystemId","_force","isClone","CLEAR","_setTemplateFetchState","_LookupService$_FULL_","_LookupService$_FULL_2","getTemplateBySourceIdAsOBS","cleanedTransactionToClone","getTransactionTabDetailsAsOBS","transactionid","porzioGstId","_ref2","_relatedTransactions","_userCurrencyObject","relatedTransactions","currencyNameFormatted","recipientidentifiercountryid","prorataamt","toFixed","currencyid","currencyAcronym","totalamount","transactiondate","_convertedTotalAmount","groupFieldsMap","onTransactionTabLoaded","transactionToClone","preloadedRecipientProfileId","renderDynamicControls","templateFetchResult","allGroupFieldsMap","dynamicControlInitialValues","dynamicControlsValidationSchema","renderData","_reload","lastGroupIndex","_mapKey","_this$state$dynamicCo","dynamicControlFieldsMap","_groupIndex","standAloneProps","fromGlobalSearch","InputLabelProps","shrink","_fconfig","_fieldIndex","getControl","secondaryActionTooltip","onSecondaryActionClick","_getGroup","_header","_group","_gridUtils","_columnDefsCallback","_templateFetchResult","_groupFieldsMap","_initialValuesOrNull3","_initialValuesOrNull4","_initialValuesOrNull5","_initialValuesOrNull6","_initialValuesOrNull7","_initialValuesOrNull8","_initialValuesOrNull9","_initialValuesOrNull10","_initialValuesOrNull11","_initialValuesOrNull12","_initialValuesOrNull13","_initialValuesOrNull14","_dynamicControlFieldsMap","getMapByKeys","_initialValuesOrNull2","transactionfilename","_piIdMap","_prIdpiIdMap","piid1","piid2","piid3","piid4","piid5","_dynamicControlInitialValues","validationCallback","isDirtyCallback","dirty","resetCallback","_updateFormWithNewValues","resetForm","postCallbackOBS","oReturnSubject","oValidationSubject","currentTransactionData","_successResult","_errorResult","_oSubject","getDataToPost","dataToPost","controlFieldConfigs","updatedFieldsForRelatedTransactions","hasRelatedTransactionUpdates","_oldValue","isLOV","lovTextKey","lovTextValue","_fieldValue","fielD_ALIASNAME","selTransactionId","sourceid","fileid","ismanuallyentered","TransactionId","dynamicInitialValies","dynamicValidationSchema","agGridRecipientInformationUtils","inlineEditButtonCellRendererComponent","getSourceSystemInitialValues","sourceSystemId","getSourceSystemValidationSchema","tabConfig","ref","_isModified","RuleSummaryService","setRuleViolations","getRuleSummaryAsOBS","_modalAgNode","RuleSummaryComponent","agGridUtils","porzioSearch","getAgGridStyles","AgGridBulkEditUtil","clearUpdateTrackers","updatedRowIds","updatedCells","updatedRowIdsCoumnNamesMap","hasUpdates","markUpdatedRowIds","_rowId","_columnName","cellInfo","_getCellInfo","rowColumnNames","bulkApply","_parentCellRef","_lovTextColumnName","_lovText","parentCellProps","currentCell","getFocusedCell","selectColumnName","setSelected","rowNodesToUpdate","forEachNodeAfterFilter","_AgGridBulkEditUtil","getSelectColumn","_callbackOnChange","applyChange","cellProps","parentRef","agGridBulkEditUtil","hasErrorOrWarning","errorOrWarningConfig","getRenderer","_formattedValueCallback","_editorElementCallback","_parentContainerOptions","_formattedValueOptions","showErrorOrWarningElement","showEditorElement","showFormattedElement","onDoubleClick","_validateEdit","onBlurHandled","_cancelEditing","_getErrorOrWarningElement","_getFormattedElement","_errorOrWarningConfig","_style","fontWeight","lineHeight","interactive","noWrap","_formattedOptions","_agGridBulkEditUtilRef","_props","_cellInfo","AgreementsService","colDefs","entityType","toggleSubmitButton","getAgreementsAsOBS","trid","getDeleteOBS","idsToDelete","deleteOBS","saveProfileAgreements","porzioGSTAgreementIds","saveTransactionAgreements","transactionId","companyAgreementId","porzioGSTAgreementId","AgGridErroredCheckboxCellRenderer","Checkbox","indeterminate","textAlign","AgGridCheckboxCellRendererComponent","forceReadOnly","isCellEnabledCallback","AgreementsSearchDialogService","porzioGSTProfileId","AgreementDetailCellRendererComponent","ConsentComponent","_this$props$modalAgNo","_this$props$modalAgNo2","consentLOVValues","getDateProps","_getDataToPost","agreementId","consentValues","disclosureConsent","consentStartDate","consentEndDate","consentExecutedDate","consentRevoked","consentRevocationStartDate","consentRevocationEndDate","consentRevocationExecutedDate","consentRevocationReason","agreementConsent","_agreementConsent","_consentLOVValues","DownloadFileAgRenderer","link","createRef","current","href","blob","handleDownloadAg","linkRefAg","URL","createObjectURL","download","click","showCannotDownloadDialog","canNotDownloadFile","_this$props$node$data","hasComments","DocumentDeleteConfirmComponent","aria-labelledby","aria-describedby","handleDeleteConfirm","handleDeleteDismiss","documentName","ComplianceReportMappingService","DocumentDetailsComponent","lastValidatedCompanyStudyId","lastValidatedCompanyStudyResult","DocumentDetailsService","_documentCategoryList","documentCategoryList","formData","FormData","append","documentCategory","selectedFileName","pop","documentDescription","selectedFile","String","documentID","handleDelete","pathParams","porzioGSTDocumentID","documentCategoryId","openDeleteConfirm","Input","files","fileName","h","DocumentsService","_setRuleViolations","getDocumentsAsOBS","DocumentsComponent","cell","agNodeData","filename","windowUrl","canNotDownload","filePath","accessDenied","_documents","_documentCategoryLov","handleDeleteClick","_this$state$selectedD","selectedDocuments","r","hasSelected","isCheckedCellRenderer","downloadFileAgRenderer","AgreementTabService","_AgreementTabService","eventFieldGroupKey","porzioGSTAgreementID","agreementCategory","agreementStatusFieldId","recipientColProfileTypeId","duplicateAgreementStatusKey","AgreementStatus","AgreementTabComponent","_props$modalAgNode$ag","_props$modalAgNode","_props$modalAgNode$po","_props$modalAgNode2","fetchAgreementData","fetchAgreementDataResult","getAgreementTabDetailsWithErrorInfoAsOBS","selAgreementId","_rulesSummaryOrNull","basecurrencyid","onAgreementTabLoaded","getMapKeys","agreementid","porziogstagreementid","selPorzioGSTAgreementId","recipientProfileId","porzioGstAgreementId","organizationname","suffix","lastname","middlename","firstname","prefix","credentialsid","specialtyid","usnpinumber","uslicensestate","usstatelicensenumber","ustaxidnumber","porzioGSTIdentifierTypeId","TransactionsService","saveTransactionData","postObj","_parentThis","TransactionSearchDialogService","searchTransaction","TransactionSearchDialogComponent","transactionList","_sourceList","_formList","_purposeList","_sourceList$find","_formList$find","_purposeList$find","sourceName","s","sourceId","form","f","formId","purpose","p","purposeId","_selectedTransaction","resetFields","onSubmitClick","selectedTransaction","TransactionsComponent","transactionsToDelete","getTransactionsByAgreementId","originalTransactionIds","showTransactionDetailDialog","updateGrid","newObj","is_selected","companytransactionid","porzioGstTransactionId","transactionDate","convertedtotalamount","totalAmount","transactionconsent","transactionConsentId","transactionDocumnet","handleSubmitClick","showSearchTransactionsDialog","tridsToDelete","transtn","tridsToSave","porzioGSTTransactionIds","selectedAgreement","erroredCheckboxCellRenderer","suppressRowClickSelection","rowSelection","cellFlashDelay","cellFadeDelay","_reloadRequired","t","TransactionDetailDialogComponent","ReportReferenceService","getReportReferenceAsOBS","ReportReferenceComponent","AgreementDetailDeleteConfirmComponent","PageDynamicHeaderComponent","rightPadding","bottomPadding","bgColor","leftActions","rightActions","flexNoShrink","jsxElement","divider","AgreementDetailDialogComponent","_changeTab","_newTabIndex","currentTabRef","tabIndexMap","showConfirmDialog","newTabIndex","onSave","isSaving","saveErrorInfo","_error","onDelete","flashError","handleAgreementTabLoaded","_selectedAgreement","agreementTabLoaded","isDialog","derivedProps","TAB_REF","ActionDialog","AgreementsSearchDialogComponent","onSearch","selectedSearchValue","setQuickFilter","searchAgreement","agreementList","selectedPorzioGSTProfileId","_agreementList","_documentTypeList","ag","_documentTypeList$fin","agreementdocuments","agreementDocumentTypeId","showAgreementDetailDialog","agreementDetailCellRendererComponent","AgreementsComponent","agreementsToDelete","originalAgreementIds","agreementName","startdate","enddate","endDate","executeddate","executedDate","selectedAgreements","showSearchAgreementsDialog","agIdsToDelete","agmnt","porzioGSTAgreementIDsToSave","companyAgreementIdsToSave","_this$state$selectedA","componentType","ReportReferencesService","ReportReferencesComponent","RelatedTransactionsService","getRelatedTransactionsAsOBS","RelatedTransactionsSearchDialogService","getColumn","RelatedTransactionsSearchDialogComponent","formatDateToYYYYMMDD","_transactionListMain","_transactionList","loadedTransaction","buildSelectedTransactionObj","currentLinkedTransactions","PorzioTransactionId","CompanyTransactionId","LastName","FirstName","OrganizationName","showLinkWarningDialog","RelatedTransactionsComponent","Country","SOURCEID","getNewlyLinkedTransactions","gstIds","linkTransactionsToRelatedTransactions","_link","_trids","userid","companyEventId","companyeventid","transactionIds","setIsSaving","changeToReadOnlyMode","_prevState","showUnlinkConfirmDialog","showSearchLinkedTransactionsDialog","transactionssToBeUnlinked","ids","showUnlinkWarningDialog","warningDesc","TransactiondetailDeleteConfirmComponent","TransactionDetailEditConfirmComponent","handleEditConfirm","handleEditDismiss","DownloadFileComponent","linkRef","onDownloadClick","fetchDownload","apiServer","porzioApiPath","blobName","TaskDetailsService","getAssignedToFullUserAsOBS","getAllUsersAsOBS","_ASSIGNEDTOFULLUSER","_ALLUSERS","_TASKBYID","_TASKCOMMENTSBYID","_TaskDetailsService","assignedToUserId","_TASKPRORITY","getTaskPrioritiesAsOBS","getTaskByIdAsOBS","taskId","getTaskGetCommentsByIdAsOBS","validateEntityFieldRowEditOBS","AgGridDatePickerCellRendererComponent","selDate","newProps","oldValue","isDisabled","disableUnderline","TaskDetailsComponent","updatedRows","agGridFieldUtils","_stringifiedPorzioGstIds","_taskAssignedTo","allUsersList","_updatedRows$i$commen","_updatedRows$i$userId","_updatedRows$i$taskId","_updatedRows$i$tenant","_updatedRows$i$eventT","_taskAssignedTo$middl","commentId","eventType","updateData","eventTypeId","middleName","percentComplete","taskDescription","sourceEntityType","attachmentId","attachmentFileName","refreshTaskList","showProfileDialog","selectedProfileId","selectedTransactionObj","showTransactionDialog","_trId","taskById","taskCommentsById","isActiveCellRenderer","isPrimaryCellRenderer","dateCellRenderer","_taskById","_taskCommentsById","_assignedToFullUser","_allUsersList","_taskPriorities","_allUsersListSorted","nameA","toUpperCase","nameB","_sourceEntityType","sourceEntityID","taskLauncher","_allUsersListSorted$f","_allUsersListSorted$f2","u","assignedToFullUser","fullName","taskPriorities","porzioGstIds","taskPriorityId","taskStartDate","taskDueDate","taskStatusId","percentageComplete","_this$state$taskById$","sourceGSTID","when","yup","setHours","_","showTaskDialog","_this$state$taskById","Chip","_this$state$allUsersL","_this$state$allUsersL2","hasAgGrid","RelatedTransactionEditConfirmationDialog","onConfirm","paddingInline","paddingBlock","_param","onEdit","hasreportreferences","openEditConfirm","handleTransactionTabLoaded","transactionTabLoaded","beforeSave","showTransactionEditConfirmationDialog","_isSaving","showCreateTaskDialog","onClone","SearchResultObservable","searchBoxParams","fileId","healthindicator","searchvalue","pageNumber","rowsperPage","screenId","searchString","taskid","source","fetchProfilesBySearchBoxText","ProfileTransactionComponent","getProfileTransactionsOBS","handleFilterChange","pageNum","pageSize","searchBoxText","recycle","permissions","healthIndicatorId","SearchString","UserId","ScreenId","TaskId","handleSearchChange","showCreateNewTransactionDialog","profileDetailCellRendererComponent","searchResultJson","ProfileStatusOverrideComponenet","selectedProfiles","idx","newProfileStausId","profileStatusId","currentProfileStatusId","profileStatuses","_newProfileStatusId","_profileStatuses","AgGridDropdownWithStatusCellRenderer","_disabled","showStatusCallBack","onChangeCallback","showEmpty","emptyValue","optionKey","optionLabel","statusIcon","ProfileTabComponent","fetchProfileData","fetchProfileDataResult","selProfileId","_this$props$recipient","_this$props$recipient2","_contactTypeList","_identifierTypeList","_consentLovList","contactTypeCellSource","addressRowData","contactRowData","identifierRowData","consentRowData","onProfileTabLoaded","prePopulateIfAny","gridGroups","agGridAddressUtils","agGridContactUtils","agGridIdentifierUtils","agGridConsentUtils","permissionObj","gridUtils","group","header","emptyObjectCallback","inlineEditEventCallback","setGridParamsCallback","_permissionObj","_emptyObjectCallback","FIELDNAME","FIELDLOVKEY","lovCountry","objCountry","CountryCode","profileAddressModel","lovContactType","objContactType","contactObj","lovPorzioGSTIdentifierType","objPorzioGSTIdentifierType","lovCountryInfo","objCountryInfo","objIdentifier","consentlist","profileid","isrecipientmatch","dropDownRenderer","isPreferedCellRenderer","_this$state$initialVa","ProfileCountCellRendererComponent","profileCountMethodFromParent","profileCountCellRendererComponent","ProfileConsentService","getAgreementConsentAsOBS","getTransactionConsentAsOBS","getAgreementColumnDefs","getTransactionColumnDefs","ProfileConsentComponent","_agmtData","_transData","agmtData","transData","porzioGSTTransactionID","agGridComplianceUtils","LinkedProfilesService","getLinkedProfilesAsOBS","_parentProfile","_selectedProfile","searchValues","parentId","page","LinkedProfilesSearchDialogService","LinkedProfilesConfirmationService","profileConfirmAsOBS","_linkedProfileConfirmParams","LinkedProfilesConfirmComponent","linkedProfileConfirmParams","childId","loadedProfile","selectedPrID","hasParent","isFormUnmatched","loadedProfileParent","loadedProfileLinks","searchedProfileParent","searchedProfileLinks","finalParent","finalChild","finalSwapParent","finalSwapChild","finalParentId","finalSwapParentId","swap","showConfirmLinkedProfilesDialog","gutterBottom","LinkedProfilesSearchDialogComponent","currentLinkedProfiles","parentProfile","LinkedProfilesComponent","PORZIOGSTPROFILEID","acc","searchClick","showSearchLinkedProfilesDialog","unlinkClicked","_ids","_prid","linkSelectedProfile","stringifiedJson","profilesToBeUnlinked","PRID","RELATIONSHIP","parentRowNode","selRowNode","selCount","IdentifierService","_IdentifierService","getProfileIdentifierAsOBS","fetchEntityLovDataAsOBS","getIdentifiersRows","_identifierData","getIdentifiersObject","validateIdentifiersRowEditOBS","0","IdentifierComponent","_setFetchState","_porzioGstIdentifierTypeList","_fetchState","fetchState","identifiersRowData","updatedIdentifiersList","rowIds","porzioGSTIdentifierID","deletedIdentifierIds","documentCategoryLov","ReferenceDataService","_ReferenceDataService","saveReferenceDataManually","_isIndividualProfileCategory","_selectedReferenceData","profileXrefType","profileXrefSaveParams","propName","encodeURIComponent","saveNppesReferenceDataManually","deleteMatchedProfile","deleteMatchedProfileNppes","changeProfileFromReviewedToUnmatch","getNppesColumns","_isNppes","nppesArr","_parentThis$state$pro","checkBoxCellRef","toggleSubmitButtonForNppes","profileCategoryList","_parentThis$props$sel","cols","ReferenceDataSearchDialogService","searchReferenceData","individual","organization","searchOption","formFieldParams","fromEntries","property","vPlAndNPPL","teachingHospital","isIndividualProfileCategory","ReferenceDataSearchDialogComponent","getCurrentOrLastYear","today","currentYear","handleGoBack","showSearchResults","vplAndNppl","npi","licenseState","licenseNumber","year","tin","referenceDataList","selectedReferenceData","_isIndividual","isNppes","_referenceDataList","selectedData","selectedProfileCategory","address","shift","isIndividual","_this$props$profileCa","_this$props$selectedP","IsActiveIconRendererComponent","icon_active","icon_inactive","ReferenceDataComponent","refDataToDelete","nppesDataToDelete","getMatchedReferenceDataForProfile","_profileCategoryList$","_profileCategoryList","convertedData","convertedNppesData","nppesData","updatedRefData","source_file","SOURCE_FILE","th_year","TH_YEAR","TIN","organization_name","HOSPITAL_NAME","street_address","Street_Address","State","match_date","npinumber","NPI_ID","FIRST_NAME","MIDDLE_NAME","LAST_NAME","SUFFIX","prmry_txnmy_code","PRMRY_TXNMY_CODE","prmry_txnmy_prvdr_type","PRMRY_TXNMY_PRVDR_TYPE","statelicense","STATE_1","statelicensenum","LICENSE_1","updateNppesGrid","updatedNppesRefData","npiid","PO_BOX","Zip_Code","Provider_Business_Practice_Location_Address_Country_Code_If_outside_US","state_2","Provider_License_Number_State_Code_2","state_3","Provider_License_Number_State_Code_3","state_4","Provider_License_Number_State_Code_4","state_5","Provider_License_Number_State_Code_5","license_2","Provider_License_Number_2","license_3","Provider_License_Number_3","license_4","Provider_License_Number_4","license_5","Provider_License_Number_5","credentials","Provider_Credential_Text","Provider_First_Line_Business_Practice_Location_Address","Provider_Business_Practice_Location_Address_City_Name","po_box","Provider_Business_Practice_Location_Address_Postal_Code","agGridUtilsNppes","showSearchReferenceDataDialog","handleSearchClick","isDeleted","isDeletedNppes","isSaved","profileStatus","isNppesSaved","nppesAction","selectedProfilesNppes","agGridBulkEditUtilNppes","isEnabled","isActiveIconRendererComponent","cannotDeleteNppes","_changeToReadOnlyMode","returnToProfileCenter","closeParentCallback","selectedPossibleMatchProfile","_linkedProfilesSet","saveForPossibleMatches","profileJson","entry","RECORDID","handleProfileTabLoaded","profileTabLoaded","showPossibleMatchesIcon","_identifierInfo$porzi","primaryAddr","identifierInfo","profiletype","profilestatus","porzioGSTIdentifierType","identifierValue","ProfileSearchService","isAdvance","ProfileSearchResultComponent","getParams","exportDataAsExcel","columnKeys","getFileName","toDateString","unmatchedChecked","TransactionSearchService","TransactionSearchResultComponent","FieldConfigurationService","getDataCenterAvailableFieldsAsOBS","_fileId","_sourceId","_screenId","getDataCenterDisplayedFieldsAsOBS","FieldConfigurationComponent","not","intersection","handleToggle","currentIndex","newChecked","handleCheckedRight","right","handleCheckedLeft","customList","items","Paper","List","dense","ListItem","ListItemIcon","tabIndex","disableRipple","chel","ListItemText","selected","refreshList","submitCreateWasClicked","_availableColumns","_displayedColumns","aria-label","AgreementSearchService","AgreementSearchResultComponent","GlobalSearchContainerComponent","close","ProfileAdvancedSearchService","AdvancedSearchContainerService","advancedSearchSubject","fetchFilterData","ProfileAdvancedSearchComponent","success","TransactionAdvancedSearchService","TransactionAdvancedSearchComponent","AgreementAdvancedSearchService","AgreementAdvancedSearchComponent","textFilterCriteria","lovFilterCriteria","valueFilterCriteria","dateFilterCriteria","usMiamiHcpValues","AdvancedSearchComponent","filterFields","operators","lovFilters","advancedSearchExpanded","savedFilterData","panel","isExpanded","handleDeleteChip","chipToDelete","clearAllChips","addFilter","criteria","selectedFilter","fieldText","fieldTypeID","constructSearchString","operator","selectedValues","nullStr","errorStr","hasNullValue","hasErrorValue","clause","addClause","searchedValue","filterWithErrorValue","filterCriteria","_this$state$filterFie","handleLOVValueChange","getFilterValueContent","selectedCriteriaValue","_this$state$filterFie2","selectedFilterFieldID","lovid","modValues","filterFieldId","filterValue","filterRangeValue1","filterRangeValue2","filterSchema","filterDynamicSchema","filterLOVValue","Accordion","expanded","AccordionDetails","handleFieldSelectChange","handleCriteriaSelectChange","square","flexWrap","listStyle","boxShadow","TopBarComponent","anchorEl","personalSettingsModalShow","openAccountMenu","openLanguageDialog","openCurrencyDialog","openSearchDialog","openAdvancedSearchDialog","utcTime","startUtcCountDown","handleAccountMenuClick","currentTarget","handleThemeChange","_closeMenu","cycleTheme","onThemeChange","handleAccountMenuClose","handlePersonalSettingsModalClose","handleLanguageDialogClose","handleCurrencyDialogClose","oktaAuth","CssBaseline","appBar","menuButton","toggleSideNav","onKeyPress","aria-controls","aria-haspopup","keepMounted","transformOrigin","to","InternationalComponent","theme","hide","zIndex","drawer","easing","sharp","duration","leavingScreen","appBarShift","enteringScreen","withOktaAuth","SideNavComponent","routeConfigs","selectedItem","handleDrawerOpen","handleDrawerClose","setSelectedItem","_text","updateNavigation","componentDidUpdate","prevProps","pathname","dd","currentPath","expandSideNav","Drawer","clsx","sideNavExpand","sideNavCollapse","drawerContainer","getKey","flexShrink","overflowX","footerStyleLight","bottom","footerStyleDark","Footer","utcTimeIntervalRef","utcPopperAnchorEl","Popper","flexDirection","isPopperShowing","toggleMode","PageHeaderComponent","back","entitySelect","countrySelect","importTemplate","uploadFile","addCircle","view","reload","ok","cancel","noDivider","noDividerSpacing","unmatched","isDownloadReadOnly","showButtons","selectedEntityId","onEntitySelectClick","entitySelectData","entityid","entityname","onUnMatchedClick","onSearchClick","selectedCountryId","onCountrySelectClick","countrySelectData","onImportTemplateClick","onUploadFileClick","onViewClick","onReloadClick","onCancelClick","onOkClick","Cache","apiFetchObsCallback","expiryTimeout","_cachedResult","_oSubscription","_apiFetchObsCallback","_lastSetUtc","_expiryTimeout","_aboutToExpire","_aboutToExpireTimeout","FETCH","_unSubscribe","NOT_EXISTS","EXISTS","TaskListService","_ignoreCache","fetchFromApiObs","fetchHTTP_API","orderClause","whereClause","rolePermissionId","isPorzio","_TaskListService","TaskListComponent","getObs","handleCreate","handleUpdate","_updateData","getFullName","oFoundUser","oOutName","array","porzioGSTTaskId","inline","NewsFeedService","_NewsFeedService","NewsFeedDetailsService","getNewsFeedByIdAsOBS","_NewsFeedDetailsService","_NEWSFEEDBYID","newsfeedId","NewsfeedDetailsComponent","lastValidatedMaterialName","lastValidatedMaterialResult","newsfeedType","newsfeedTypeList","newsfeedTypeId","newsfeedTypeText","selCompanyList","companyList","newsfeedTitle","draftToHtml","convertToRaw","editorState","getCurrentContent","newsFeedById","newsfeedStartDate","newsfeedEndDate","onRefresh","onEditorStateChange","onCompanyChanged","handleDownload","EditorState","createEmpty","_newsfeedTypeList","_companies","_companyList","_selCompanyList","_newsFeedById","blocksFromHtml","htmlToDraft","newsfeedText","contentBlocks","entityMap","contentState","ContentState","createFromBlockArray","newEditorState","createWithContent","borderWidth","borderColor","Editor","wrapperClassName","editorClassName","toolbarClassName","attachment","NewsfeedSummaryComponent","toolbarHidden","NewsFeedComponent","handleCreateModal","handleSummaryShow","summaryModalShow","handleSummaryHide","_this$state$newsfeedT","EventDetailsService","getEventByIdAsOBS","_EventDetailsService","_EVENTBYID","eventId","EventDetailsComponent","fetchTenants","getUserTenantsResult","getUserTenantsJson","userTenantList","selEventVisibilityList","fetchEventDetailsById","_eventById","eventStartTime","eventStartDate","eventEndTime","eventEndDate","eventById","selEventVisibilityListIds","eventTitle","toTimeString","alldayevent","eventBody","refreshEventList","onEventVisibilityChange","isEdit","attachmentName","TimePicker","getTimeProps","EventCalendarStore","oDate","_EventCalendarStore","EventCalendarComponent","dataToDisplay","selectedDate","showDetailsDialog","handleDetailsDialogClose","disableToolbar","orientation","HomeComponent","lg","xl","AgGridActionCellRendererComponent","handleMenuClose","anchorElement","handleMenuClick","menuIcon","menuMaxHeight","menuOptions","_maxHeight","_isOpen","_menuOption","onClickCallback","DataCenterFileStatusImageRenderer","fileStatusMethodFromParent","icon_bad","icon_process","icon_verygood","icon_good","icon_blank","icon_delete_black","healthIndicatorCellRendererComponent","DataDetailCellRendererComponent","dataDetailMethodFromParent","DataCountCellRendererComponent","dataCountMethodFromParent","DataTransactionService","arrOut","columnMap","_DataTransactionService","DataTransactionComponent","transactiondocuments","DataDetailDialogComponent","DataExpandedViewService","getDynamicColumns","agGridColumns","postDataCenterExpandedViewAsOBS","_healthIndicator","sourceTypeId","healthIndicator","filterQuery","rowsPerPage","DataExpandedViewComponent","_agGridData","agGridData","_ref3","_exception","searchSubscriptionAdded","clearSearch","showDataDetailDialog","dataCountCellRendererComponent","dataDetailCellRendererComponent","HealthIndicatorCellRendererComponent","canViewExpandedView","showFieldConfigurationDialog","defaultColDef","flex","isCellDisabled","opacity","DataErrorCellRendererComponent","dataErrorMethodFromParent","DataWarningCellRendererComponent","dataWarningMethodFromParent","DataUnmatchedCellRendererComponent","dataUnmatchedMethodFromParent","DataCenterImportSummaryRenderer","dataImportSummaryMethodFromParent","icon_docdownload","AddEditCommentComponent","comment","fetchComments","agCellData","fileID","handleAddEditComment","_this$props$agCellDat","comments","dateCenterService","getActionMenuParams","_dateCenterService","handleAddEditCommentFile","ImportTemplateService","_ImportTemplateService","imageSrc","excel_icon","imageAlt","unknown_file","handleUpdateFromAgCellRenderer","fetchTemplateTypeDataAsOBS","ImportTemplateCreateComponent","ImportTemplateCreateService","_templateTypeData","templateTypeData","templateName","templateDescription","templateTypeId","toJSON","templateId","refreshImportTemplateList","KeyboardDatePicker","ImportTemplateComponent","setDomLayout","checkPermissionsForFileDownload","showCrudDialog","openAccessDenied","importTemplateCellRendererComponent","ImportTemplateCellRendererComponent","importTemplateImageRenderer","ImportTemplateImageRenderer","importTemplateIconMethodFromParent","handleImportTemplateDialogClose","fullwidth","UploadFileService","getSourceSystemsAsOBS","UploadFileComponent","handleUploadDialogClose","_sourceData","openUploadDialog","accept","FileStatusService","_FileStatusService","RecordValidationSummaryService","RecordValidationSummaryComponent","SERVICE","addressData","recordValidationSummary","fileStatus","FileStatusComponent","handleUpdateRecordStatus","_recordIdStatus","_this$state$data$0$re","errImage","fileViolationSummary","recipient","image","totalRecords","recordsWithoutViolation","withoutViolationPercent","recordsWithViolation","violationPercent","violationsSourceThreshold","recordsWithErrors","errorPercent","warningRecords","warningPercent","unMatchedRecipients","percentofUnmatched","unMatchedSourceThreshold","recipientDetails","recipientType","recipientCount","unmatchedRecordsPercentage","FileSummaryService","_FileSummaryService","FileSummaryComponent","renderFileSummary","summary","_this$state$data$rule","_this$state$data$rule2","_this$state$data$reci","_this$state$data$reci2","_this$state$data$reco","rulesSummaryErrors","rulesSummaryWarnings","recipientUnmatchDetailsProfile","recipientUnmatchDetailsTransaction","recordTypeSummary","dataCenterComponent","DataCenterService","actionCellRendererComponent","dataCenterFileStatusImageRenderer","dataErrorCellRendererComponent","dataWarningCellRendererComponent","dataUnmatchedCellRendererComponent","dataCenterImportSummaryRenderer","createUsermodalShow","openImportTemplateDialog","openDeleteFile","openCommentFile","o2","_r$errorCount","_r$warningCount","_r$unmatchedCount","errorCount","warningCount","unmatchedCount","handleDeleteFile","_download","handleDataExpandedViewHide","showDataExpandedViewDialog","handleFileStatusHide","showStatusDialog","handleFileSummaryHide","showSummaryDialog","handleCreateUserModal","handleHideCreateUserModal","handleImportTemplateDialogOpen","handleUploadDialogOpen","dataFileStatusMethodFromParent","ProfileCenterService","sortClause","permissionName","fieldLovId","canViewDelete","_ProfileCenterService","_parentRef","profileDetailParams","showProfileDetailDialogIfExists","handleRerunValidationConfirm","ProfileExpandedViewService","dynamicColumns","hasApprovalFlag","profilestatusid","displayedColumnConfigs","getAgGridColumn","profileRuleSummaries","_ProfileExpandedViewService","postProfileCenterExpandedViewAsOBS","_searchvalue","getProfileRuleSummaryAsOBS","postRowDataAsOBS","postSubject","_validateRowEditOBS","_validationResult","_validationException","AgGridErroredDropdownCellRenderer","selectedObj","AgGridErroredDatePickerCellRenderer","TextFieldComponent","iProps","AgGridErroredTextCellRenderer","isValidValue","onKeyDown","which","stopPropagation","HealthIndicatorCellRenderer","AgGridSelectMenuComponent","applySelection","_selectMode","rowNodesToRefresh","selectionColumnName","PAGE","paginationGetPageSize","currentPage","paginationGetCurrentPage","startRow","endRow","paginationGetRowCount","onSelectionChange","openSelectMenu","ProfileExpandedViewComponent","isGridReady","isInit","_profileRuleSummaries","_displayedColumnConfigs","_displayedFieldId","_errorObj","isProcessing","onProcessCellCallback","countryname","colName","handleCreateTaskDialogClick","_selectedGstIds","selectedGstIds","getSelectionIcon","arrayToPost","modelObj","rowDataKey","profileStatusList","erroredDropdownCellRenderer","erroredDatePickerCellRenderer","erroredTextCellRenderer","healthIndicatorCellRenderer","processCellCallback","showProfileStatusOverrideDialog","ProfileErrorCellRendererComponent","profileErrorMethodFromParent","ProfileWarningCellRendererComponent","profileWarningMethodFromParent","ProfileUnmatchedCellRendererComponent","profileUnmatchedMethodFromParent","RerunValidationProfileComponent","handleRerunValidation","UnmatchedProfileService","saveReviewedProfiles","idsToSave","saveUnmatchedProfiles","UnmatchedProfileComponent","profileData","getProfileByStatus","_unmatchedReferenceData","convertedUnmatchedData","handleReviewedClick","selectedProfileIds","handleUnmatchedClick","handleSwitchChange","sideBar","closeToolPanel","agGridAppendCommentIconCellRendererComponent","ProfilesSearchDialogComponent","ProfilesSearchDialogService","overflowY","ProfileCenterComponent","showUnMatchedProfileDialog","showProfileSearchDialog","AgGridAppendCommentIconCellRendererComponent","profileErrorCellRendererComponent","profileWarningCellRendererComponent","profileUnmatchedCellRendererComponent","profileCount","openRerunConfirm","loadProfileExpandedViewComponent","closeAllDialogs","showProfileExpandedDialog","_afterCallback","showProfileCountDialog","showProfileErrorDialog","showProfileWarningDialog","showProfileUnmatchedDialog","handleProfileCountHide","handleProfileErrorHide","handleProfileWarningHide","handleProfileUnmatchedHide","handleProfileExpandedHide","TenantConfigurationService","getJsonData","_tenanatConfigs","Set","gridName","_gridName","gridGroupName","_groupName","_TenantConfigurationService","isTenantUser","iconJsx","TenantProfileSetupService","_TenantProfileSetupService","TenantProfileSetupDialogComponent","languageId","companyName","address1","address2","address3","address4","postalCode","createdDate","updatedDate","countryData","isLoadingCountryData","languageData","isLoadingLanguageData","timeZoneData","isLoadingTimeZoneData","currencyData","isLoadingCurrencyData","_countryData","_languageData","_currencyData","_timeZoneData","EmailService","getEmailSetupAsOBS","_emailId","getEmailSetupTypes","EmailComponent","setConfigs","_selType","typeOfEmail","selType","emailData","cc","bcc","subject","fetchEmailSetupTypes","_typeOfEmail","_emailData","_this$state$emailData","_this$state$emailData2","_this$state$emailData3","contentType","emailType","emailId","_this$state$emailData4","_this$state$emailData5","_this$state$emailData6","_this$state$emailData7","_this$state$emailData8","isType","_ref4","_newType","TenantConfigurationComponent","_considerCache","openCompanyProfileDialog","openEmailSetupDialog","getGridNames","oGridName","oGridIndex","getGridGroupNames","oGroupName","oGroupIndex","getGridGroupControls","SourceDetailsComponent","sourceLabel","sourceFileDescription","emailTO","isBusinessThreshold","businessRuleThresholdPercentage","isBussinessRuleThresholdNotImport","isUnmatchedRecipientThreshold","unmatchedRecipientThresholdPercentage","isUnmatchedRecipientThresholdNotImport","isOverwriteRecordStatus","isAutoProcessTransaction","isAutoProcessProfile","isAutoProcessTransactionToNewProfiles","isAutoProcess","autoMatchingScore","systemId","_updateSourcePermissions","scopeUsersList","onUsersChange","selUsersList","sourceTypeList","_sourceTypeList","_selUsersList","_scopeUsersList","isPorzioEntity","updateAffialitionsResult","updateVendorsResult","updateUsersResult","refreshSourceGrid","isInteger","businessThreshold","unmatchedRecipientThreshold","is","otherwise","canAndForCreate","canAndForEdit","BusinessRulesListService","_sourceid","_typeOfRules","_authContext","checkDisabled","_BusinessRulesListService","AgGridChipCellRendererComponent","CheckBoxCellRendererComponent","BusinessRulesListComponent","_assigned","_unassigned","isAssigned","leftOver","businessRuleId","errorOrWarn","categoryName","unassignedData","prev","selAssigned","selUnassigned","moveToAssigned","currAssigned","currUnassigned","moveToUnassigned","_newAssigned","versionId","_newAssigned2","newAssigned","checkBoxCellRendererComponent","agGridChipCellRendererComponent","authConsumer","setChecked","setLeft","setRight","isSaveClicked","setIsSaveClicked","leftChecked","rightChecked","fieldid","strFieldValues","fieldValues","SourceDialogComponent","SourceService","_SourceService","SourceComponent","childMessageRenderer","handleCreateSourceModal","UnderConstructionComponent","homeLink","PATH","UserListStore","fetchObsTenant","_UserListStore","UserListComponent","userActiveRendererComponent","UserActiveRendererComponent","CreateRoleModalComponent","roleType","roleDescription","effectiveDate","roleList","fetchCreateRolePost","roleObj","refreshRolesList","EditRoleModalComponent","roleListWithoutCurrentRole","fetchRoleUpdatePut","handleDeleteSubmit","RoleManagementService","_component","oSUBSCRIPTIONS","toLocaleDateString","_RoleManagementService","RoleManagementComponent","compareFn","editRoleModalShow","removeTenantAdminRole","handleHideEditRoleModal","handleCreateRoleModal","handleHideCreateRoleModal","createRoleModalShow","TransactionExpandedViewService","transactionstatusid","readonlyColumnNamesInLowerCase","sortableCols","transactionRuleSummaries","excelErrorClassName","excelWarningClassName","createBatchProfiles","_profileSourceId","_selectedTrIds","postTransactionCenterExpandedViewAsOBS","sourceID","getTransactionCenterDisplayedFieldsAsOBS","getTransactionRuleSummaryAsOBS","validateRowEditOBS","fetchTransactionsBySearchBoxText","TransactionsExpandedViewComponent","_profileSourceList","_transactionRuleSummaries","_displayedFieldIds","profileSourceList","colLovName","getValueOrError","selectedTransactionIds","getSelectedGstIds","getSelectedTrIds","handleBatchProfileClick","gstIdsWithMatchedRecipients","selectedTrIds","showConfirmCreateBatchProfileDialog","createBatchProfile","selProfileSourceId","isCreatingBatchProfile","number1","number2","nodeA","nodeB","isInverted","showTransactionStatusOverrideDialog","useValueFormatterForExport","marginInline","StatusOverrideComponent","transactionCenterService","getIcon","_transactionCenterService","handleAddToRerunFileValidationQueueConfirm","handleAddToRerunForUnmatchedQueueConfirm","DeleteFileComponent","RerunValidationComponent","handleRevalidateQueue","reRunFileValidation","RerunUnmatchedQueueComponent","handleUnmatchQueue","reRunUnmatch","CommentAvailableImageRenderer","AgGridIconTextRendererComponent","TransactionsSearchDialogComponent","transactionCenterComponent","TransactionCenterService","dataFromFirstAPI","dataFromSecondAPI","tran","transactionFromDate","transactionRange","transactionToDate","showTransactionExpandedDialog","openAddToRerunValidationQueueConfirm","messageWithoutQuotes","showTransactionSearchDialog","modules","AllEnterpriseModules","commentIconTextRenderer","commentAvailableImageRenderer","openAddToRerunForUnmatchQueueConfirm","TransactionExpandedViewComponent","isRefresh","openAddToRerunForUnmatchedQueueConfirm","RerunUnmatchQueueComponent","openRerunUnmatchConfirm","getProductDetailsAsOBS","_productId","getBrandDataAsOBS","getCategoryDataAsOBS","getDuplicateNdcCode","_ndcToCheck","getNdcCodeExistsInRegistry","prom","Promise","resolve","ProductDetailsService","_regNdcResult","_dupNdcResult","warningMessage","isRegWarning","isDupWarning","ndcCode","previousNdc","strWarning","ProductDetailsComponent","_productDetailsData","_brandData","_categoryData","productDetailsData","brandData","categoryData","handleChangeNdc","ndc","_this$state$categoryD","productName","productCategory","categoryId","brandId","udi","therapeuticArea","isUSFederal","refreshProductList","ndcWarning","getInputProps2","productMasterService","caseInsensitiveComparator","_productMasterService","productMasterComponent","ProductMasterService","handleCreateProductModal","AllCommunityModules","productIsActiveRendererComponent","ProductIsActiveRendererComponent","Util","_Util","xmlToJson","xml","nodeType","attributes","j","attribute","nodeName","nodeValue","hasChildNodes","childNodes","old","ViewFieldService","systemAlias","switchPLSRequired","switchActive","switchTextSearchable","switchBooleanDefault","dateTimeDefault","dateDefault","tVal0","tVal1","tVal2","tVal3","fieldTypes","xmlDoc","DOMParser","parseFromString","util","Field","Attribute","field_Type_Id","numericDecimalPlaces","numericMin","numericMax","numericDefault","textDefault","LovDefault","decimalDecimalPlaces","decimalMin","decimalMax","decimalDefault","field_Name","field_Description","fieldType","fielD_TYPE","_field_Type_Id","_ViewFieldService","fetchEntityAsOBS","trimText","_params$newValue","_params$data$lovKey","ViewFieldComponent","fetchFieldValueAsObs","_entityData","entityData","removeDuplicateAndEmptyKeys","_updatedRows","oRow","self","isEditableLov","lovKeys","duplicateRowNodes","emptyRowNodes","showDupMessage","preRemoveLen","isLicensed","isDefault","lovKeyId","lookupLst","getLookUpListValue","lovDictionary","entityFieldLOVs","enableClearDefault","optionsCustom","searchText","isCustom","optionsPorzio","resultPorzio","isExistsPorzio","handleAliasValueChange","start","selectionStart","end","selectionEnd","setSelectionRange","pattern","ViewFieldDialogComponent","PorzioFieldListService","getPorzioFieldListAsOBS","PorzioFieldsListComponent","_entityList","entityList","setFilterModel","fieldEntity","validateDownload","activeRendererComponent","ActiveRendererComponent","getFilterModel","CustomFieldListService","getCustomFieldListAsOBS","CustomFieldsListComponent","validateAdd","handleCreateFieldModal","handleHideViewFieldModal","createFieldModalShow","viewFieldModalShow","EditAffiliateService","_EditAffiliateService","getAffiliateAsOBS","_comapnyAffiliateId","getAffiliateByLovIdAsOBS","validateAffiliateRowEditOBS","reportIdentifierList","EditAffiliateModalComponent","fetchGetListData","tenantSelectList","isLoadingKey","dataKey","reportIdentifiersArray","customerAffiliateId","porzioAffiliationId","affiliateName","caAnnualThreshold","isAllSelected","usCmsSubmittingEntity","usCms10PctLimitation","usCmsBusinessType","manufacturerType","usFederalSmplBusinessType","registrationName","reportIdentifiers","complianceOfficerName","complianceOfficerEmail","complianceOfficerPhoneNumber","companyAffiliateId","affiliate","refreshAfiliatesList","fetchAffiliatesData","affiliatesSelectEnum","stateLoadingKey","stateDataKey","stateDataId","handleSwitch","affiliateNameExists","showAffiliateNameExistsAlert","manufacturerData","manufacturerTypeName","isLoadingManufacturerData","federalBusinessTypeData","federalBusinessTypeName","isLoadingFederalBusinessData","_affiliate","_reportIdentifiers","formContent","reportIdentifierId","reportIdentifierValue","companyProfileId","AffiliateCompaniesDialogComponent","AffiliateCompaniesListService","getAffiliateCompanyListAsOBS","AffiliateCompaniesListComponent","companyAffiliate","handleHideCreateAffiliateCompanyModal","showAffiliateCreateDialog","VendorLinkRendererComponent","VendorDetailsComponent","lastValidatedVendorName","lastValidatedVendorResult","tenantID","vendorName","vendorDescription","countryID","languageID","currencyID","timeZoneID","affiliateID","vendorId","refreshVendorList","_affiliationList","affiliationList","VendorSetupService","_VendorSetupService","VendorSetupComponent","vendorLinkRendererComponent","ComplianceDefaultMappingService","getComplianceEntityFieldsAsOBS","porzioGstFieldValueComparator","porzioGSTFieldList","getDefaultMappingsByEntityFieldIdListAsOBS","reportId","getPorzioGSTFieldListAsOBS","ComplianceDefaultEditComponent","selectedFieldId","ComplianceDefaultEditService","_porzioGSTFieldList","_profileFieldList","_transactionFieldList","_profileAndTransactionFieldList","emptyElement","emptyElementIndex","spliced","profileFieldList","transactionFieldList","profileAndTransactionFieldList","fieldList","onFieldSelectClick","arrNodes","gstLovId","gstLovID","gstLov","lovID","gstLovKey","CompliancePageHeaderComponent","fieldComplianceSelect","fieldSelectData","entityComplianceSelect","ComplianceDefaultDialogComponent","tabConfigMap","validationOBSs","_validationResults","postOBSs","postCallback","_tabResults","reportsList","ComplianceDefaultMappingComponent","getYearsByReportId","_reportId","$url","ComplianceReportDetailsDialogService","reportValueComparator","reportValueDropdownList","isMappingChanged","handleReportValueChanged","getReportMappings","_yearId","getReportNameDropdownAsOBS","_reportPathId","setReportsList","_reportsList","tempData","visited","selectedReportId","reportName","ComplianceReportDetailsDialogComponent","fetchFields","cancelSubscriptions","gridData","_reportList","reportList","derivedFieldList","fetchYears","yearList","_yearList","derivedReportPathYearId","_yearList$find","isUpdate","parentReportPathYearText","reportYear","reportPathId","selectedReportPathYearId","fetchGridData","handleReportChange","handleYearChange","handleFieldChange","_gridData","_reportValueDropdownList","reportMappingId","newReportableValue","reportable","reportMappingName","isReloadRequired","saveStatus","marginBlock","handleSave","customerFieldId","customerFieldValue","porzioGSTFieldId","porzioGSTFieldValue","complianceReportMapping","templateYear","ComplianceReportMappingComponent","tempFieldList","pushedReportNames","isCustomMappingText","isPZMapping","flag","pos","arr","mapObj","fieldListWithAll","reportsListForCreate","reportsListWithAll","setFilters","_agGridApi","fetchYear","selectedYearId","onReportSelectClick","tempYearList","onYearSelectClick","handleReload","_selectedReportId","_this$state$modalAgNo","reportComplianceSelect","reportSelectData","yearComplianceSelect","selectedReportName","ReportYearAgGridRendererComponent","showConsentMappingDialog","ComplianceConsentMappingService","fetchConsentMappingsAsOBS","fetchReportMappings","EditConsentProcessingService","_EditConsentProcessingService","getComplianceReportMappingProcessingAsOBS","_reportName","_verifiedYear","getDropdownColumn","EditConsentProcessingComponent","processingObj","selectedVerifiedYearId","_processingObj","_arrReportsObjs","dupeReport","dedupedReport","setVerifiedYear","_callbackOnSuccess","fetchProcessingObj","_templateYear","_reportObj$text","reportObj","handleReportableRadioChange","persist","handleConsentGrouping","_checked","handleConfirmDialog","touched","reportDisplayName","profileConsent","isProfileConsent","isAgreementConsent","transactionConsent","isTransactionConsent","consentGrouping","isConsentGrouping","linkedProfiles","isLinkedProfles","reportableText","templateYearLov","_this$state$processin","_this$state$processin2","_this$state$processin3","_this$state$processin4","_this$state$processin5","RadioGroup","EditConsentMappingService","_componentRef","reportableLovList","isModified","_year","EditConsentMappingComponent","_reportableLovList","recievedReportableId","initialCustomMappingValue","isCustomMapping","_arrReportsObjsDupes","profileConsentValue","agreementConsentValue","transactionConsentValue","rowsCount","agreementConsentId","ComplianceConsentDialogComponent","ComplianceConsentMappingComponent","reportYearAgGridRendererComponent","ComplianceTemplatesService","ReportLaunchAgGridRenderer","invokeParentSaveReport","handleSaveReport","ReportSettingsService","getReportFilters","getLanguagesByParentIzendaAsOBS","_parentIzendaDisplayName","getLanguagesByReportId","_languages","getReportCompanionDetails","getReportSaveFileTypes","ReportSettingsComponent","US_JURISDICTION","objAll","configure","loadingMessage","_this$state$languages","_reportFilters","_reportFileExtensionList","_reportLibraryList","_finalDispositionList","languageslist","languages","reportFilters","reportLibraryList","reportFileExtensionList","finalDispositionList","getDynamicControl","_config","filterName","filterDisplayName","isMultiSelect","defaultFilterValue","customLovList","getMultiSelect","handleMultiSelect","_selectedValues","renderReportExtensionDropdown","_isLobbyReport","fileTypeExtension","_this$state$reportLib","_this$state$finalDisp","_formikProps$values$f","_formikProps$values$f2","getFilterValue","getTimezoneOffset","displayValue","_f$customLovList$filt","actualValue","isGemboxReport","IzendaCurrentTenantId","izendaCurrentTenantId","reportDetailID","izendaReportID","fileType","getFileType","isLobbyReport","getFileTypeExtension","reportNameForJsonMapping","reportDetailName","reportDetailDescription","reportDescription","reportLibraryId","reportLibrary","izendaDisplayName","jurisdiction","finalDispositionName","finalDispositionId","reportCreatedDate","launchDocument","porzioGSTReportID","workflowID","porzioGSTWorkflowID","isComplianceSave","isEnglishReport","isCompanionSave","category","isCompanionReport","languagesList","translatedReportLanguage","translatedReportName","izendaReportName","izendaReportId","translatedReportLanguageList","genStatus","statusReason","izendaReportFilters","filters","finalDisposition","finalDispositionDate","dispositionComments","finalDispositionComments","isComplianceTemplateReport","isUSJursdiction","initialObject","zKey","reportFileExtensionId","IZENDADISPLAYNAME","GENERICCURRENCY","dynamicSchemas","isMandatory","charAt","ComplianceTemplatesComponent","fetchReportsData","getTemplates","openSaveReport","refreshToReportLocation","reportLaunchAgGridRenderer","StandardTemplatesService","_categoryId","StandardReportSettingsService","StandardReportSettingsComponent","entityID","opt","relatedID","rf","originalFileNames","isStandardSave","isScheduleNeeded","scheduledDate","ccMe","ScheduledDate","DateTimePicker","minDate","isAfter","EventIcon","StandardTemplatesComponenet","ReportSaveComponent","ReportLibraryViewService","showIcon","reportType","isCompanionCol","getReportsByLibraryId","_reportLibId","deleteReportLibrary","reportDetailIds","ReportSaveService","reportSavedSubject","fetchReportSaveFileTypes","DownloadReportViaImageCellRenderer","_fileType","_fileExtension","fileExtension","Blob","setAttribute","appendChild","renderIcons","csv_icon","pdf_icon","ms_word_icon","isIconVisible","EditReportDetailDialogService","getReportDetailsById","_reportDetailId","updateReportDetails","putOBS","izendaTrue","EditReportDetailDialogComponent","_reportDetail","_reportLibraryLov","_finalDispositionLov","reportDetail","reportLibraryLov","finalDispositionLov","setSelectedFilters","setSelectedFiltersOUS","deserializedata","filterData","deserializedfilters","Filters","selectedFilters","IzendaReportFilters","izendaFilters","ReportFilter","FilterFields","extraFilters","QuerySourceFieldName","refreshReportLibrary","FilterDisplayName","FilterName","Value","DisplayValue","ReportLibraryViewComponent","getReportLibraryId","handleReloadClick","_this$state$selectedR","selectedReportLibraries","editReportDetailDialogShow","_this$state$reportLib2","reportLibraryType","l","downloadReportViaImageCellRenderer","_reportSaved","ReportsCenterComponent","StandardTemplatesComponent","AgreementListService","fetchObs2","_AgreementListService","AgreementListComponent","sortIndex","handleSearch","SelectedRulesService","pivotMode","enableRowGroup","getBusinessRuleListAsOBS","EditRulesService","getBusinessRuleAsOBS","getJurisdictionAsOBS","getRuleCategoryAsOBS","getRuleFieldAsOBS","_BUSINESSRULE","_JURISDICTION","_RULECATEGORY","_RULEFIELDPORZIO","_RULEFIELDCUSTOM","_EditRulesService","ruleId","_AVAILABLESOURCES","getAvailableSourcesAsOBS","getRuleFieldPorzioAsOBS","getRuleFieldCustomAsOBS","EditRulesComponent","changeSelectedJurisdictionsToAll","selJur","allJur","getSelectedSources","selSource","allSource","selectedSourceNames","combineRuleFieldLists","porzioList","ruleName","selectedJurisdictionList","plsRequired","rulesLastModified","entities","guid","publicRevisionID","businessRuleList","countryIds","ruleOrder","wasbPath","jurisdictionList","ruleCategory","selectedRuleCategoryList","ruleFieldId","activeText","version","selectedSourceIds","selectedSourcesList","businessruleid","tempRuleCategoryList","_businessRuleList","_jurisdictionList","_ruleCategoryList","_ruleFieldPorzioList","_ruleFieldCustomList","_availableSourcesList","ruleCategoryList","ruleFieldList","availableSourcesList","getChipSelect2","EditRulesDialogComponent","SelectedRulesComponent","fetchRulesData","selectedCountryListString","SalesRepLinkRendererComponent","SalesRepService","getSalesRepsAsOBS","_SALESREPS","_SalesRepService","SalesRepComponent","formatSalesRepList","_salesRepList","salesRepList","c2","salesRepLinkRendererComponent","MaterialsListService","_MaterialsListService","MaterialDetailsComponent","materialName","unitCost","materialId","MaterialsListComponent","currencyName","StudiesListService","valueFormatter","approvalDate","researchDate","getAllStudiesAsOBS","getNonEntityLOVsByIDAsOBS","_lovEntityId","StudyDetailsComponent","StudyDetailsService","_researchTypeData","_delayIndicatorData","researchTypeData","delayIndicatorData","companyStudyId","studyName","delayIndicator","researchType","clinicalTrailId","infoLink","dtNow","studyId","_strDate","dt","StudiesListComponent","formatStudyList","_studyList","sl","delayIndicatorName","d2","studyList","DocumentListService","_documentType","_DocumentListService","AgGridDownloadFileViaImageCellRenderer","checkPermissionsToViewDocDetails","documentType","canNotView","canNotEdit","DocumentListComponent","checkPermissionForCreateDocument","canNotCreate","agGridDownloadFileViaImageCellRenderer","DocumentComponent","ContactUsComponent","AgGridDynamicCheckboxCellRendererComponent","onStateChangeRequest","_isChild","_cellActionData","agGridReact","rowsToRefersh","parentNodeInfo","getParentNodeInfo","childrenNodesInfo","getChildrenInfo","nodeAction","isAllChecked","nodes","nodeActions","actionName","_prevNode","_parentNodeInfo","_nextNode","_nodeAction","reRender","isIndeterminate","getIsReadonly","cellActionData","isDriveChilds","RolePermissionsService","_selectedTabIndex","_currrentTenantId","jsonObj","_selIdsAsString","jsonBody","_RolePermissionsService","getPermissionsViewAsOBS","_sectionId","getPermissionActionsColumns","permissionActionsList","_permissionActions","_isParent","refferenceId","AgGridHierarchicalTextboxRendererComponent","_leftPadding","hierarcyLevel","ReportTemplateSubscriptionService","ReportTemplateSubscriptionsComponent","complianceTemplateRows","fetchTemplates","_complianceTemplateRows","postData","selectedIds","allIds","saveComplianceTemplatesAsOBS","isSubscriptionCellRenderer","compInfo","RolePermissionsComponent","reportSubscriptionComponentInfo","selSectionId","selectedRptSubscriptionTabIdx","fetchLookups","lookupFetchResult","dataErrorMessage","dataFetchResult","_permissionRoles","_permissionSections","_permissionActionsList","sectionList","reportFetchResult","reportTemplateRows","_reportTemplateRows","_permissionsData","sectionId","_orderedPermissionData","getUniqueValues","parentItem","childItems","parentsNewIndex","childItem","indexToInsert","agReportGridUtils","saveReportTemplatesAsOBS","rolesList","agPermissionGridUtils","hierarchicalTextboxRendererComponent","dynamicCheckBoxRendererComponent","_newRoleId","_newSectionId","renderGrid","getReportSubscriptionColumnDefs","WorkflowDetailsService","getWorkflowDetailsAsOBS","workflowTemplateId","GetFieldLOVByIds","_fieldIds","WorkflowDetailsComponent","getApproversList","allApprovers","selApprovers","allFullName","workflowTemplateName","workflowName","approvalOrder","approversCommaSeparatedList","selApproversList","daysPerTask","endOnFirstApproval","endOnFirstRejection","jurisdictionName","sourcePorzioGSTId","sourceEntityId","porzioWorkflowGSTId","tenantUID","workflowId","_workflowTemplateData","_userList","_approvalOrderList","workflowTemplateData","userList","approverList","approvers","approvalOrderList","pageName","WorkflowTemplateListService","getWorkflowTemplateListAsOBS","WorkflowTemplateListComponent","PowerBIDemoService","workspaceId","_PowerBIDemoService","PowerBIDemoComponent","reportOrDashboardId","fetchFromApiTokenObs","reports","fetchToken","_reportOrDashboardId","embedUrl","embedURL","reportID","PowerBIEmbed","embedConfig","tokenType","models","TokenType","Embed","settings","panes","visible","eventHandlers","detail","cssClassName","getEmbeddedComponent","embeddedReport","report","PowerBIDemoContainerComponent","_this$props$hide","showPowerBI","TenantReportTemplateSubscriptionService","_selTenantId","_allIdsAsString","_selectedIdsAsString","getActiveTenants","TenantReportTemplateSubscriptionComponent","selTenantId","getStateIcon","currentCategoryId","isViewableCellRenderer","TenantStatusService","fetchObsidentity","_TenantStatusService","NewTenantComponent","lastValidatedTenantName","lastValidatedTenantResult","lastValidatedUIDName","lastValidatedUIDResult","tenantDescription","tenantType","tenantAddress1","tenantCity","tenantProvince","tenantPostalcode","tenantCountryid","tenantLanguageid","tenantCurrencyid","tenantTimezoneid","validatedTenantName","validatedUid","getListofTenantTypes","matches","TenantStatusComponent","fetchFromNewTenantStatusApiObs","_newTenantStatusData","_deleteTenantStatusData","_tenantData","newTenantStatusData","deleteTenantStatusData","tenantData","getTenantIdAndStatus","tenantIdAndStatus","tenantStatus","getTenantStatus","select","SelectProps","native","showNewTenantDialog","onOpenNewStatusClick","showPlusForNewStatus","showNewTenantStatusGrid","onCloseNewStatusClick","onOpenDeleteStatusClick","showPlusForDeleteStatus","showDeleteTenantStatusGrid","onCloseDeleteStatusClick","environmentId","UserMappingsService","_UserMappingsService","AgGridChildMessageRendererComponent","UserMappingDetailService","getUserMappingDetailsAsOBS","UserMappingDetailsComponent","_userMappingDetailsData","_tenantsList","tenantIds","availableTenantList","fetchRolesByTenant","_rolesList","showTenantSelectionDialog","handleUnlinkTenant","linktoTenant","loginUserId","tenantIdsToUnlink","isTenantMapping","UserMappingsComponent","UserMappingDetailComponent","HCPSearchDialogService","saveProfiles","HCPSearchDialogComponent","hcpSearchResults","handleHcpChange","_hcpValue","isUsMiamiHcp","is_USMiamiHCP","is_MiamiHcp","_this$state$selectedP","NonEntityService","_NonEntityService","getNonEntityByTenantIdAsOBS","NonEntityDetailsComponent","NonEntityDetailsService","_nonEntityLovMaster","_nonEntity","nonEntityLovMaster","nonEntity","lovEntityId","lovEntityDesc","nonentityid","refreshNonEntityList","checkDuplicateNonEntityName","PopulateType","objNonEntity","NonEntityComponent","handleCreateNonEntityModal","nonEntityIsActiveRendererComponent","NonEntityIsActiveRendererComponent","FTPFolderService","formatBytes","getFTPFilesByTenantId","getSourceSystems","fileSize","bytes","FTPFolderComponent","sourceSystemData","ftpFiles","modifiedFtpFileData","selectedSourceId","showArchiveFiles","isFtpSource","handleSourceChange","fetchFTPFiles","getFtpFileData","ftpFileData","ftpFile","modifiedDate","modFtpFileData","modifiedFileName","toUTCString","filteredFtpData","handleToggleChange","filteredFileData","system","FileStatusImageRenderer","imageUrl","icon_inqueue","FileStatusDetailsService","getFileColumnDefs","FileStatusDetailsComponent","fileDetails","fetchFileDetails","selectedTenantId","_fileDetails","onTenantSelectClick","prevState","FileStatusDetailsPageHeaderComponent","tenantSelect","tenantSelectData","sourceSystemSelect","ReportStatusDetailsService","getReportColumnDefs","ReportStatusDetailsComponent","reportDetails","fetchReportDetails","_reportDetails","ReportDetailsPageHeaderComponent","ContainerComponent","retry","setFetchStatus","getHomeComponenet","sideNavIsOpen","handleContinueClick","session","refresh","handleLogoutClick","BrowserRouter","Snackbar","MuiAlert","severity","contentShift","drawerHeader","Route","exact","TenantconfigurationComponent","DataCenterComponent","TransactionCenterComponent","CompanyAffiliateListComponent","ProductMasterComponent","HcpSearchDialogComponent","FolderComponent","UnderContructionComponent","FooterComponent","mixins","toolbar","easeOut","UserInfoService","getByEmail","userEmail","getUserTenants","getUserTenantInfo","getSessionInfo","MultiTenantSelectionComponent","loadTenants","statusMessage","_userInfoObj","userInfoObj","updateLastLogin","_userTenantList","setTenancy","handleTenantChange","tenantUserInfoByIdJson","sessionObjJson","getSelectControlOutlined","wordWrap","fontStyle","OktaLoginWidgetComponent","loginContainerRef","idToken","claims","div","OktaSingleSignOnComponent","changeTheme","getTopBarColor","renderComponents","renderAppEssentials","setLightMode","ThemeProvider","OktaAuth","App","useHistory","onAuthRequired","customAuthHandler","restoreOriginalUri","_oktaAuth","originalUri","toRelativeUrl","LoginCallback","LicenseManager","setLicenseKey","ReactDOM","StrictMode","Suspense","fallback","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.0c2789d8.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAEfUlEQVRoge2Z32tbZRjHP89JTFtmtzmpCm1SdMoULxw60YkXzq3dkm6DweafUGEX7emKtDBwrRey4rakVi+GIOzGi8lglDVZh/sBKkOnsgleDHQzScsKk9a1Yn8l5/EiP3bWJPakTWyK+0IgefOc93w/eZ/3fZ+cFx7qof7fkmKCm4+Pet2uRBBoBqktiQPV3nBHY89SL3cMkDKfvA5sWOrNCmoZEIbTwPQvX3rzACJHAsFoeQGA5qXcwLGWCOE4hQKhmNo/h01fUfNnsf4yUqQvYnq7nfZTzAj8JxK0yx+KH3UaX3EAUBxERQKAc4iKBQBnEBUNAItDVDwApCAKfbcqAP5N7pW68WL7SKF9YqFW/Qjk/RXKUnUuU4VGLCeF7ledUp7CrcTKSaGyVp1lUL45UN6qs8TKA5A35+Mg+92zNWvdszVrVdkHenNBTEKE99wu6v9el6wRMd4W+CXbq+rGsOkTgW/uX6KXw6ZP1ODZEgLkmk9asjlses8MdtVNDXbVTUU6fGfFw9YUWNZMcKjdd2wukfSs+VO2D7XVX0lqcjeQBFChCcBCL92/Ri6l4FLflQlAOoYPecd39ccDgVAsHgjF4v5g3D90sHFC0M5MlCXGFQBDXKdUjHP+gXjT+Y6nfxe4mg5pAnCpcTnbs1gpmHICuGerLwAYqieBBqBBRE8CWMbccLYjS59ImdLPgWmxGA6EYqrwZtrutgOn1ZV0zVwFpkGnxqr/uHbgtLqAbWUDGOyqm0q/bbA1ewOhmIpVdS/bInyw+0S8fqi98VRSrY2CfgbYd9MN0yMjr0TanptF+Fbg6x/f3TL/19joq8BjZQMoQl7L0J/9wahpuObHh8zGVlQP2wNUtAlAlctWOv9Ra8npAw4A9vbdzaxKI7bmeNj0ydzM/PqsOfgJJCoiQbE8NwKf3n4qbPqOArcyMZawI3VX45KocRFAeCD/s6td2PSJ/VXI36LF3LxnejtwVlVaM7mPSCuAp8a9M5MkLkv2bplsuPP9+tgdkE1WwngRkTH6Y7dQnkmbfaP5o7E10+NP/vAWWO6+u7UJnX49Yz5pyebhQ97xxTzZlUOWWwXqTfGwdehg44S9dd8nI4/PJqzrpOeGwuGI6ftwz8Dt59Vyv3CureGsf+DXWsOqGlV4NNubSiDS4Y0A+E9E94ghg2kr+8Om90wx5sFROS2bdI4bLaFoZ2bVEfXsmk1Yx7FNbIH3W/pjcwJfJGQm3PJx7GVLq47ZzQNIah5E0hdl0yez2hWrPCMQnVyJCnRhnjt9DpWvlLhYSmPlVg6AhasbmMgTW5HKAThv1t9MJF0vgXwJTK6Ap6KUdxJf6KyPA+/Y20r9bLRUWvX/iR8CrLSKOB9Y9v7w3dzM/M6vujfeszcGgtEeRI4sqUfV3iJGYNn7w2ue6keGdxz9bZ29MdzR2INqb9G9pc/VHAOUaH8oDYTtUNAxQAn3h+VBLDjRrIi13K6WULRLkfyP00V6wu3eByArDgAKQOQxDxUKAAsgCpiveAWC0Z7Fzo7/AZ390tt/u3cJAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/porzio_global_spend_transparency_logo_small.c6365b76.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAYCAYAAAAVibZIAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAkdEVYdENvbW1lbnQATEVBRCBUZWNobm9sb2dpZXMgSW5jLiBWMS4wMX7Qgw0AAAMBSURBVEhLjZVJK7ZhFMcvc7Hje9haKDJsfAFDCXuKxxQiGzKGRNmT8SFZWYkvYGMK+QDslHk6b7//+567m7wP/zqd+76G/5muc13h9fXVrq6u7Pj42C4vL6WPjo7s4uLCTk5O7OzszM7PzzWGZs39/b3F8fb2Zu/v7/bx8WHwhbW1NQshRJKVlSWdnp4unZ2dLZ2ZmSmdlpZmlZWVdnh4KIKnpyeRPTw8iBiErq4uy8nJsdLSUmtoaLDa2lqrq6uzmpoaq66u1j9SWFgo0oyMDAnfRAMhngI05KG/v18L9vf3NQHcIouen5/13dPTI+9PT09tenpae5Dd3d1oDYQg9PX1aXJ1dVUkWAaEhgCMtLa2KvSNjQ2NT0xMyAhe7+zsKA0ALU/J19bWlgZfXl5k2UOiKBhKJBIyvr6+Ho2Pj49Hud/c3IycUE4Z3N7elkc+AQgHQsZbWlpkfHFx8d/s32iWl5e1n7lkMilngueK8D10JjyvaDxva2tT+Ht7e5/ShD44OBBxfn6+jmDo7e2NcgUgiYt72tzcrONVXFxsTU1N1tjYaPX19ZLu7m4rKCiQt3Nzcz+TIoDCeJgI3+zznPKNHhkZ+ZmUUCkeoEhjY2M2NTVls7OzNjMzY/Pz87awsGBVVVUinZyc/Jk0Dj82gLT4CWEdtSGCoaGh70k9jy6QubfATwjrKCKnBFJaPCWpC3CPOJvePW7E59rb2z+Hz4+TxgmRu7s7jePd4+Ojvp3IPcaQe/orUkc8ZM9tfJ13HIUMnZ2duqVoUw8NkAYQ3/g/AZByvEZHRy0MDAzIgrcfoXl45M3/UwkOdHR0qDY6z/Q+Fuhbt8oiCL969J04aGOcE+ng4KB+uFAI38kAXnwl+Srkmj1+hQ4PD1ugb7kTV1ZWRMSieFF+A9YRMXcD3RZVf2lpSQ8djxu3O+IPXyrhQby+vtaFA49633PKQF5enrT/u04l8cslNzfXVPibmxtdYzx8JSUlVlZWptcS/RupqKiw8vJyKyoqUl5vb2/tDw7J5JKC0aMxAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAACs0lEQVRoge2Yv08UQRiGn+/2QoeJYCHqQUGsKaxNbERYjImFiY3+ASYmB9GIsRAszFGYW6K1jRWhM4LExM4YEy2I0cJKOMRGIvFiIbi7Y3Fgjts7doabPRa9p9vst9+878x8Oz+gTZv/G9EJOj+9cjJUqgDqLEinlZaVmpwf7ZtoNk2sgS3xb4CuZhuLYMFEJi6g0vMJiAcQuesWl5M1UJk2CdKkidgp5HolVf08n+/VqhvdfNsoZOp5Pjdumk9jBFqDoG4NeysF0+9SYwD2ZiJVBsDcROoMgJmJVBoAfROpNQAVE3ExqTagQ7bVDcatI43WiUb8myMw+GA1l3X8IjBY+860h5ImYqAiPlgESWYDZ5nIFNrq+QMhHurXQGTapJk6NbDzxFX917jwsHQsCNQVhdwDOgCkQ+0YrWAzk3MIh0PkpkB3vTzVNFtTRr/Rp9d7vwJTI94yCikAzF3rW68JWwfeDxU/z4g4r4GeZgTGoW3A9UpK4NVcvve048gTP6BQ8/47ECj4ICozOj96YtGdLt1B8bg2jyXtgOE6oITdGj8MHBE4IxLOAvibm3PNiNNBewSq57Afqqu7HeYU9AO8uNH/zZ1eaZjH9UrvgFMGeiMY1cDfIlYyqfWBiMIr7UmYLkY14AegeZW0BHDx0ZfuDT+M5DHQF4vtvdAG8DYTymWAX7/VkOX8EaztRmv/8+eKSz0i6r6t/I2wup2+NPGx42dXZ05CNQJyGzhqM389IhPa9ZbL1u4/LRB3fqhTA/IyKTFJEDEQ4oxT2Q4cCCIGFvLHP/mBMwAyC5T3QZMRLb8btd3egT8Ttw3sNzoLWRk4tP3Q0lsJ4UdcSPwIKBasiNkLGm3HGsgoGQPWrAgyYy3rMBYXFGvg2VhuNeswAMzQmnWhDMxkHQa2zuBt2rTZhT9xj+sCsa4wbgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADMUlEQVRoge2Z0UtTURzHP7+zXEIkmBBlTpOIIi2NW1r51EuiltCDrz0mFIj+B74GkUYRCP0FveforaC3LCjcQ6mFbkkhGFRUNHd+Pbi7zW1t13U3NfZ5Oue33z37fnfP7/52NqhSpUqVrUT8XGzw3lJjPK6OCA5iHFBnerS50c/3yGZXqRfmE7uW4KAY9zNRnyQWxpOB7SI2HzkGtrPYfOQYWEvwsZxi+yeXSl00pirXw2OhcGbQ+KCpUjSJ6FR2cCcZAAhlB3aagRxKfoyWyvRo86Z6T7Ga+Y/vgPBOrTxdH+phhEvJ8bRVE0uliV4DaoEZVXmVjF0EjpZTuEuhLfQ5PBYaBrh8J9plRS8BWCMj4ZHQgpvUP7nkAA4qU+Gx0MNk7DlbbkDpQFUQUa21c/wWBL53rYY+hDdmRgDHwPz6dSrcjZ7827L/0AfyUqgG6q7cXzwM8PhGyxdgVZE34+NiM5NUJAKQCMg8QO9E7AhQ56fIQhQsYrWBztREmAd9k7OATUSAn92rh5YBjNjO7JxyUtCAtbbDHQs6p0rKwNAjDQBojZ0VeO/eGYOcKpfYfBTuAyIpA1ZZMMa+BhgajwS/LS+3Am+nb7Yu9U/GXrl5augs9BWq0n0gczssWInPAvysr2sxrDUDIKKg6bpWOqggxQy0DDxYrAcwQiQ8cvQrgMWeU+Ssm5RQeQFw9X6sAWgul9h8FDMgds2cAvhUu5IuYJVzgpx3p0/GmhYAfieo6P4HD9+FZL2Qn70cPhNPBZUeFW1y+8T6NgK19nSxU3Yl+wAAklHIAIO3VvYitAs0JJ/5GcmV3f/gwYDVDYVMIvijGwgABAL2fFZ6RXsAeLkD0OZMzdSkA+ZC+rV0HQyNR4LAcb8FFsPLeWD3gV/7jwGzAIqmRKumx9/37WkTS7DYYn73AU8HGqvc7puILiZnPenfw6S9byI6BSBWWzcjzC88GRDoRTQ9y7heRK/7rmoT/McnsjJR8T6w3dlpBqLZgZ1kIIpIzgMjpwYkqPsScdoMOFjjIOoAJ/xSsdk+UAxPiw08WKwv1ZTfgrMpeXGvpratgXxsxV9MVapUqbK1/AFd4i+krDlx2wAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAADrUlEQVRoge2YTWxUVRTHf+fNdNAKWtAVOFO3iEETTAyJRqOmyNSPEKkJkbBtooY+dCGbwutOFspA/EjcufAjdGWRN9XEhQQRERN0pSExdqaw0SiftS0z77hoX5kWZu59M/Nmxtj/6s3Leff8f+/eO+e8C8ta1v9bYhPU9/b5dDJROgj0gaxqSmbVEX9Pr9foMEaAOfPls8CaRpPdpCZAOKaA+TfffPMAIvuzByfiBQD6GklgVIMQxiWUzRW08rfvZqz2je14oRQ5kHfTe6OOZzMDLZGgb27NFd+K+lzHAEB9EB0FANEhOg4AokF0JADYQ3QsAMxBmGI6GsBGyVYnNNWRanWimv7zM7DobcTSdTYo04wtLKEbXafE07jFpIUlFGvXGaMq90C8XWdMqgBYvOYFXphff4+H9wLRx3w3I6psC+/5bkYM6/R30Odmp6/3lAO5W0QHgWsxACyWoiOoiu9mjgM/g54dH+o94XnqiDBim0BVd/pu7xcrUl0bu5KSPjbU+yGKsUDZqsbfqDzUf6iwHUCRd1HnPYDTqwvbgY2W408/cinz3ZZ3imvU4RsNghMDRzSxosv5zOZhhTFTTM06oIjneeokb098nOhOfDJwRBOoRPl6Sv10z/nVX76e/gv4VGHltQvF0kwp+NPG/MqLVwYaAgDu//6uyR1HB9dOHR1cOzV1YXIHsN7SPIAzU9IPnvA06buZl9VxNgM/mB4KzY96G2aNCUwB4ujV8DrQG9f20oHunsnT/bnClvzue0/dcfHKo8DxqtERzIMZ4Iy/Oz229fC5O58/8MeqvJv+HDhj7V24BPwI2qMwns0VPhr1NswSyGvNMG8GEBlGRAlu21VK/bMLEVWVfdYAyjnfzTwsEuycv7HN89Qplbt+a4Z5E8C3/lB6HFUR9BWEV1GV/J50HuTk0uCwHiypC5v6DxUeODZ030nQPidwnvY8CVKp64uKZr3mawKIOMMA/bnCU8xt3PXPHC48CaBaHrYcX1QZy+Ymnk3OdJ8qJ6d/yeaKLwaq7zfDPFR0o9ncxOVWd6DVzIcHXTbHjpWtxNfNNlhLNc2L7Lc9sVsACEjsBf6OwetNMpoPZQGxADDurvu1VE48CDIKXG626VDW5kMZIFp+NnrLHNXMV6ja2Wnbv4ltzEP1c6K2AtiaD3UriLYBRDUfaimExR5orD5E3TNR95zFDLS2PkSVEaCV9aEeGQFaVR/qldXZ6FdvrCsCL8XspS61vQ40qmWAdutf/Ryqv0585WUAAAAASUVORK5CYII=\"","module.exports = \"data:image/gif;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/porzio_global_spend_transparency_white_logo.4092e30c.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAYAAABE4bxTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NzgxRjBGQjY4M0FFNDExQjc0NUNCMTA5NEQ1NzlGNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo3OUZFN0QyRDNDRUMxMUU0QTRDQ0E5MDk3MkQ3NzExOSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo3OUZFN0QyQzNDRUMxMUU0QTRDQ0E5MDk3MkQ3NzExOSIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0QzgxRjBGQjY4M0FFNDExQjc0NUNCMTA5NEQ1NzlGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NzgxRjBGQjY4M0FFNDExQjc0NUNCMTA5NEQ1NzlGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pn/nI2YAAAR7SURBVHja7FdrTFtlGH7OpT20XekQkdvcIiAUpFwCGseioC7LNszMzDYnv43JfvhDI9MlRKOZxphsMXH+cImJt7jMEFEHQjSwxMTpZhiMy25lbVmhLaWUjl5oz9XvdJ0wBlIoP2bCSZ58J995v/d9vu99v/d9D6UoCu6nh8Z99qwT+t8RYlcibDy6CZIkgZVY0HwaNJIWrMCBj1GgWBkKI4AnAE2gESEwYnyMkTmK5ok1CQpiAIOtGbmmDzlOW+F+0Zu5IkL67+cOkUFefBTLxxky7CEm9pGxhKAqIdJPcI2gleBnDOZI83UpomQiFl82F+S/+UxVWeHfjnEpdZeVTqgEzhH8QNBEUBPnehs1iTn12zna4im5zUSBIkjl0GlONNZVnTi8o6HQNxXGlUHnpym5TCp2vUGGowS6JMSfIOijzb4WDOvHDHmmI6/UV1Q1mYvx5fA1tPUMfyNGo++lQuhjSHQzJArQSsmtEGidMK07VlqZH31tW3natuwcnBy04ouuwR/FkNQMHR1YLaGXCJrTAlnQsByCUS+QHv3PBUpQCypsws7qIhyqLU0r0HH4bMCKk+2Xe4SQ+DqtpyfkVd4yLcExxP1kwNO1W3Chj4MrMAZq4+wifiVhObkBWfosHNxRhj1FBdCT2/X5sBVf/+L4XZ6WD2l0lENKIQ+pNylffZmR/WCDDF7dWY0H+c1AQH+XIBXmQN/MRu2WYrz7QgMOFFUTAwy+HbLhqy4rBIOnk9XQ10Gllhgb77zIxgj+uuSBOb0Qh5/fDmMwD/QtQ/xUGO9GGP2bsf+pSrz17HOoNhYjKERwxmrFqV8diKV7gOygZS0SY82/ccEJcJP46ey1o6V+L0KNIj5p60bExePRvFwc3G1Gfd5jJN9o4Jcm0DNqxXcdTgSNTiimiKpiq0KRBJoAaGlVhHLmfEJaFVMYZ/uuY5fFgSbzdrgbpmHz+bDvcQvKjEUIRQSI2gmcd1nR2unCNOeE/EDwjoZ8jtdDllnIogiF16VWOuKnZJyF1x1A+8CfeLjuIey31CNEYsugGOELhyFxfvS7b+DUTy546FGIOVPzl/MZM+r+qPjesEgwJRNDnrsIMTKkjBn0Dkzi4lQ/qW1Ec0wHb9iPWdaLgSkbWs944eLHIG7yLtQ1LhM3ybQIiVEhrOqEehP1au5mZ96C+3IEvTYHDMUs+FmyY00Edr8bHe0zcM64wZeOLaUr5faj4x63aUhV1wcw1B/CaGgcUcqHkdAofusKY9QziViJHQmfLKtrNYTUyj1yT1XI9cJjk3GDELDzN/FHtwiHI4Cw5Qpx66Jpz57QlTIh0mWgZeGkuCGMCDeNkUsMznezsF2NIFDZD1kjLKXnSObZJ/m16hhPExxfOBl+xA7XVQXOIRFTlRchc0vaO07InE7GELXcb9C8Bk3td94meCdR35Dk6b5P8JF6F9SJyAF5zXpqVeEHBBUEF5KQV2WqE2ukZI2sODEmWtQ6gr2Jwls0r7z0JoJXdU/bSogk7bL1/7J1Qss8/wgwAErKyXhv8qyfAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAYAAABE4bxTAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2RpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo0NzgxRjBGQjY4M0FFNDExQjc0NUNCMTA5NEQ1NzlGNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QUNFMUIwRDNDRUMxMUU0ODAwRkYwRjM2Q0VEODU0MiIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QUNFMUIwQzNDRUMxMUU0ODAwRkYwRjM2Q0VEODU0MiIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IFdpbmRvd3MiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo0QzgxRjBGQjY4M0FFNDExQjc0NUNCMTA5NEQ1NzlGNyIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDo0NzgxRjBGQjY4M0FFNDExQjc0NUNCMTA5NEQ1NzlGNyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pg0vSogAAAMsSURBVHja7FdNSBtREJ5NNkbxp8ReggpiQRShpxI09RfFX0oPHgTtSSp4aSlY6UkKgnjzIJRCvXgQTL1qwaqI1EuJ2Bz00nroQStENCYx1fzuTuftJuFF3I02KbXQDz5I9s1782Xmzc5EQES4TTDALcN/Qf+cIFFv0SMIest5xHainVjMPf9MXCMeam28q1NIgl6VaQhizl8TnxILdAR/Ir4ibv1JQV3E98Q7N8jCNPElUbqOoJvcIRaRDzcUw/CCuEzMyealbiW+JRqvWsyfnobChQUQ7XYQ8vKuMmmP70+L66SM3ZOvxFItu+JAAISCAoguL0N4bg7CDoeW6RPifKYpe5YUQwLNQ0NKJFIQDqvLVisYyssVmrq7Iae3F4xVVbzluFaUk2AR0uIJbSb+ICKjr6EB5UAAZa8XfXY7Jp7Lx8fIEHU68efICJ719CBGIoiShJG1NfTk5ydtie16PtNFqIZPVe7goJIaobAQDGVlmpui6+sQWVyk+BvA1NwMYl0dv/w4k0v9IOUtarOpDldXIbq0pB11SmF4dhYgFgMwmcDU2Mgv389EkDXFuFQNVszlAgyFdDfGdnZA2t9XPhurqzXPzKyXJarDbNZoRCIIotqN8PxcjVA8YhwimQg65r/Ip6fqL66pUSouidxc1bHXC/LRkWpTUQEGqxoM2e3mj3H/dnMlfElJg9MJxspK5aKaOjogurKiPL8YGwNDSQmEZ2ZAOjhQgzg8DEJRkbpvK6Wdfcta2fs7O1EOhdQSd7nQZ7Px5azSaMTz0VG17AmRjQ30WCy8TZeez3SCGMeTh4kiXkxOYgKxvT28mJhAf1sb+puaMDAwgCGHg9RGlXXp8BD9LS28mO/sR2YqqJiPksdsxuDUVNIpgxwMouz3Iw/J7cazvr7LERw4SZOV6whibCXG+MMD/f0Y2dxEqqAUIUxYaH4effX1l8XMJs7T83mTeYiNH+/4XiRYLCDW1oKRehdQl0dqstL2NsR2d6m0ZH4vmyAfJUr+bw9ob+IDWiTbAxrDR+K9uJNgGls2Wz8kPk/3Msx0pk435G/FhWd/yP//v+w2CvolwACoPpwTaPM6WgAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAeCAYAAABE4bxTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj333vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEsDIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIeEeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH/w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAnf+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJV2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHgg/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/AV/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQWHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAARKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGyUT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPEbDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhMWE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPENyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2htlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHKCpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2epO6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIpG6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3nU9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYPjGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLnm+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cRp7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0HDYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dnF2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofcn8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJgUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5pDoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/RNtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWFfevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTPZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJzs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ+7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3vdy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtbYlu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ752PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9DBY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfyl5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADqYAAAOpgAABdvkl/FRgAABUVJREFUeNrMl11MU2cYx389pz20cFqgtFBACqLZlOjmB4omcOEyP7csddniEiYxhni1xCuXLdnNdrVscXGJl7swJuzDi4mJiUzEL7IYBAElMzETYYus1HJaCi20pT1nFxS04bQUdMmey3Pe9zn/9//+z/P8H4OmafyfwriaTR5P8xbgMLAXqATcqVdh4BEwBFwEOoHZbLna29tWD8jjaT4MfGk2mzfbbFZkuQCTyYjJZAJAVVU5Fotvj0Zj26empo9NT0+HgLPA1ymwy4YhlyvzeJqdwHmbzXrAbi9GlgtyOkAymcTvV5iYUMaBlhRjWRkScgCzGegrLXUccLvX5AwGQBRFXK5S3O41LlkuuAqcfCkNeTzNlUBXRYXLabcXr1qoNpuVvLw8FCVwJhAIisB3mdYKWcBYgMtlZc6XArMQeXkSDocdWZZPAwdWw9Bph8O+xel0LD5obW3B5SrFYNA7h0Y8Hqe3d4Dr12/rJpQkiZKSIsLh8A/ABj2hGzOwUwecKCsrS3teVbWGnp4+Rkf/WrLHbDazf/9bbN36BtPTYXp7+3VBWa1WHI6SyokJ5TPgi1wZOlVe7hINhqUvhodHePToT90rqa/fSlfXLQ4d2osgCPT09OkmdzpLmJhQTuqVAyGDdj4oLi7UvRZJMmX4o4wUFxfR1LQbSZJoaKhHEISMf19RkU0G3stF1I2yXCBnSpYpZmZmOHfuRzo7b9LdfQdVTSKKYsb1smwFeCeXK9tpsViyflySJEQxHbCmQTAYRFXVVNXW0DQ1Y478fDPAzlwArZckSTeJpoHBYGDPniY2bnyNRCKZXvYN4PP5GRp6iNFoRJIkEgn9VmYySQBrcwEki6Ih48k0TWNg4D6PHz/hxbajqiqCILBjxzb27duDzWbl6NGPGBwc0hW3wQCCIIgeT7Pc3t4WzgYorqpZmp/BwKZNddTUuNNA5udbKCy0MTw8yuXLv6EoAdatW0tj4y4cDjtXrlxbvM4X9wHx5RgKJJPJDGDmk/T3zzO0eIL4HE1NuwmFprhw4VcWiLt3b5Dh4RGOH/8Yv1/h7t17aYxqmhZub29bFtBQLBbNqqFt296kurpq8ZTzTbSM8+d/wmKx4HQ6SCbn2Xj6dIwHD/6gsXFXGqBYLE7KOy2roY7p6UhWhm7f/j0lSg1N07BarRw58j6RyAySJHHw4NtUVJTT338fr9dLIBDEarWm5QqHwwAdy9ah9va2v+fm5oai0VhGHSUSSWZnZ5mdjRKNxggEgsRiMaqrq5icDHHp0hW6u+/Q0dFFMqlSU+PG6x1PyxEKTQH8kmu3PxcMTupxRDwe1zVivb39NDTUY7cX4/WO09l5g2g0Sl3dBmpra7h27ebi+khkhmg09jBldXPqZWcVJfCJzWZdW1CQn9Y61q9fh16dSiQSWCxmWltb6OsbYHIyRE2Nm9raGq5evc6TJ6PP/5pAEOCrFVlYj6f5SGGh7efKyvLFntTa2kJFhQtRNALaEsHPzs6gqhoWixlRNDI29g+dnTcYGXnuDny+Z/j9SgdwUM/CZvXUHk/zNyUlxafKy12vZMRRlABer+8xUA+EVuOpP1eU4EWvd3xJUVtp+P0KXq9vHHh3AcyKLGwKfRL4UFGC346NeYlEZlYMRNNgfNyHz/dsCGjQqz0rHoMWNAWccTjsrqKiIszmvKzrE4kkodDUQkk4C3yqNzSuSEM6oGTgBHDMZDJtluUC8vIkBOG574lGo8RiMSKRGX9qev0eeJjr5GpY7Wzv8TS7U6P068CL9nIwBeBWLnleGaD/Kv4dAJ9TLZtlbv3EAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/porzio_global_spend_transparency_logo.461253c6.png\";","module.exports = \"data:image/png;base64,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\"","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\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 headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","const CLIENT_ID = process.env.REACT_APP_CLIENT_ID; //|| '0oae5o3syVmmJcM821d6';\r\nconst ISSUER = process.env.REACT_APP_ISSUER;//}} 'https://login.porziogst.com/oauth2/default';\r\nconst OKTA_TESTING_DISABLEHTTPSCHECK = process.env.OKTA_TESTING_DISABLEHTTPSCHECK || false;\r\nconst REDIRECT_URI = `${window.location.origin}/implicit/callback`;\r\n\r\nexport default {\r\n oidc: {\r\n clientId: CLIENT_ID,\r\n issuer: ISSUER,\r\n redirectUri: REDIRECT_URI,\r\n scopes: ['openid', 'profile', 'email'],\r\n pkce: true,\r\n disableHttpsCheck: OKTA_TESTING_DISABLEHTTPSCHECK,\r\n },\r\n};\r\n","// import React from \"react\";\r\n// import useMediaQuery from \"@material-ui/core/useMediaQuery\";\r\n//import { blue, lightBlue, pink, indigo, grey, yellow, green, lightGreen } from \"@material-ui/core/colors\";\r\nimport { createMuiTheme } from \"@material-ui/core/styles\";\r\nimport { pink, teal } from \"@material-ui/core/colors\";\r\n\r\nconst DARK = \"dark\";\r\nconst LIGHT = \"light\";\r\nexport default class MatThemeService {\r\n // TODO: get UserPreference from the OS (refer below), now i am facing a hook issue\r\n // static prefersDarkMode = useMediaQuery(\"(prefers-color-scheme: dark)\");\r\n // https://material-ui.com/customization/palette/\r\n static inputVariant = \"standard\"; // standard | outlined\r\n static userSystemPrefersDarkMode = false;\r\n static currentMode = DARK;\r\n static setMode(_mode = DARK | LIGHT) {\r\n this.currentMode = _mode;\r\n }\r\n static toggleMode() {\r\n this.currentMode = this.currentMode === DARK ? LIGHT : DARK;\r\n }\r\n static setDarkMode() {\r\n this.setMode(DARK);\r\n }\r\n static setLightMode() {\r\n this.setMode(LIGHT);\r\n }\r\n\r\n static currentThemeIndex = 0;\r\n // static themeColors = [\"#3F3F49\", \"#3A3D4D\", \"#6200EE\", \"#724067\", \"#03823F\", \"#2A6343\", \"#2A4163\"];\r\n static themeColors = [\"#005589\", \"#6f7c7c\", \"#00acbb\", \"#6dbe4b\"]; // Porzio Color Pallette per Brand Guideline PDF\r\n static cycleTheme() {\r\n if (this.currentThemeIndex >= this.themeColors.length - 1) {\r\n this.currentThemeIndex = 0;\r\n } else {\r\n this.currentThemeIndex++;\r\n }\r\n return this.appTheme();\r\n }\r\n\r\n static isDarkMode() {\r\n return this.currentMode === DARK;\r\n }\r\n static isLightMode() {\r\n return this.currentMode === LIGHT;\r\n }\r\n\r\n static borderStyle = 'solid 1px rgba(0,0,0,.2)';\r\n\r\n static getTopBarColor() {\r\n if (this.isDarkMode()) {\r\n return \"default\";\r\n } else {\r\n return \"primary\";\r\n }\r\n }\r\n\r\n static getTheme() {\r\n return this.appTheme();\r\n }\r\n\r\n static getCellHeaderBG = () => {\r\n return MatThemeService.isDarkMode() ? \"#000\" : \"#DBDBDB\";\r\n }\r\n\r\n static getControllerBG = () => {\r\n return MatThemeService.isDarkMode() ? \"#2C2C2E\" : \"#F5F5F5\";\r\n }\r\n static getAlternatingBG = (_rowIndex) => {\r\n if (this.isDarkMode()) { return _rowIndex % 2 === 0 ? \"#1C1C1E\" : \"#2C2C2E\"; }\r\n else { return _rowIndex % 2 === 0 ? \"#FFFFFF\" : \"#F5F5F5\"; }\r\n }\r\n static getReverseAlternatingBG = (_rowIndex) => {\r\n if (this.isDarkMode()) { return _rowIndex % 2 === 0 ? \"#2C2C2E\" : \"#1C1C1E\"; }\r\n else { return _rowIndex % 2 === 0 ? \"#F5F5F5\" : \"#FFFFFF\"; }\r\n }\r\n\r\n static getBaseBG = () => {\r\n return MatThemeService.isDarkMode() ? \"#303030\" : \"#e7e8ea\";\r\n }\r\n\r\n static getTabBG = () => {\r\n return MatThemeService.isDarkMode() ? \"#2C2C2E\" : \"#FFF\";\r\n }\r\n\r\n static appTheme = () => {\r\n return createMuiTheme({\r\n // Theme\r\n palette: {\r\n type: this.currentMode === DARK || this.currentMode === LIGHT ? this.currentMode : this.userSystemPrefersDarkMode ? DARK : LIGHT,\r\n // primary: indigo,\r\n primary: {\r\n light: \"#7986cb\",\r\n main: this.themeColors[this.currentThemeIndex],\r\n dark: \"#303f9f\",\r\n contrastText: \"#fff\",\r\n },\r\n secondary: {\r\n light: teal[100],\r\n main: teal[500],\r\n dark: teal[900],\r\n },\r\n background: {\r\n paper: this.isDarkMode() ? \"#424242\" : \"#fff\",\r\n default: this.isDarkMode() ? \"#303030\" : \"#e7e8ea\", //#f5f5f6\"\r\n },\r\n text: {\r\n disabled: this.isDarkMode() ? 'rgba(255, 255, 255, 0.87)' : 'rgba(0, 0, 0, .87)', // for better visibility rgba(0, 0, 0, 0.38)\r\n primary: this.isDarkMode() ? '#fff' : 'rgba(0, 0, 0, .97)', // for better visibility rgba(0, 0, 0, 0.87)\r\n // secondary: this.isDarkMode() ? 'rgba(255, 255, 255, 0.7)' : 'rgba(0, 0, 0, 0.77)', // for better visibility rgba(0, 0, 0, 0.54)\r\n // hint: this.isDarkMode() ? 'rgba(255, 255, 255, 0.5)' : 'rgba(255, 255, 255, 0.57)', // for better visibility rgba(0, 0, 0, 0.38)\r\n }\r\n },\r\n status: {\r\n danger: \"orange\",\r\n },\r\n\r\n //Overrides\r\n overrides: {\r\n MuiFormLabel: {\r\n root: {\r\n color: this.isDarkMode() ? 'rgba(255, 255, 255, .54)' : 'rgba(0, 0, 0, .54)',\r\n \"&$disabled\": { // increase the specificity for the pseudo class\r\n color: this.isDarkMode() ? 'rgba(255, 255, 255, .54)' : \"rgba(0, 0, 0, .54)\"\r\n }\r\n },\r\n },\r\n MuiFormControl: {\r\n root: {\r\n margin: 8,\r\n },\r\n },\r\n MuiDialogTitle: {\r\n root: {\r\n padding: 0,\r\n },\r\n },\r\n MuiDialogContent: {\r\n root: {\r\n padding: 0,\r\n },\r\n },\r\n MuiListItem: {\r\n // For ListItem, change this to MuiListItem\r\n root: {\r\n \"&$selected\": {\r\n color: \"#FFF\",\r\n // this is to refer to the prop provided by M-UI\r\n backgroundColor: this.themeColors[this.currentThemeIndex], // updated backgroundColor\r\n },\r\n },\r\n },\r\n },\r\n\r\n //\r\n props: {\r\n MuiButtonBase: {\r\n TouchRippleProps: {\r\n style: { color: this.isDarkMode() ? \"#FFF\" : this.themeColors[this.currentThemeIndex] },\r\n },\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\n// const theme = {\r\n// \"palette\": {\r\n// \"common\": { \"black\": \"#000\", \"white\": \"#fff\" },\r\n// \"background\": { \"paper\": \"#fff\", \"default\": \"#fafafa\" },\r\n// \"primary\": { LIGHT: \"#7986cb\", \"main\": \"#3f51b5\", DARK: \"#303f9f\", \"contrastText\": \"#fff\" },\r\n// \"secondary\": { LIGHT: \"#ff4081\", \"main\": \"#f50057\", DARK: \"#c51162\", \"contrastText\": \"#fff\" },\r\n// \"error\": { LIGHT: \"#e57373\", \"main\": \"#f44336\", DARK: \"#d32f2f\", \"contrastText\": \"#fff\" },\r\n// \"text\": { \"primary\": \"rgba(0, 0, 0, 0.87)\", \"secondary\": \"rgba(0, 0, 0, 0.54)\", \"disabled\": \"rgba(0, 0, 0, 0.38)\", \"hint\": \"rgba(0, 0, 0, 0.38)\" }\r\n// }\r\n// }\r\n\r\n/* !!!REFERENCE!!!\r\nhttps://material-ui.com/customization/default-theme/\r\nbreakpoints: Object\r\nkeys: Array(5)\r\n0: \"xs\"\r\n1: \"sm\"\r\n2: \"md\"\r\n3: \"lg\"\r\n4: \"xl\"\r\nvalues: Object\r\nxs: 0\r\nsm: 600\r\nmd: 960\r\nlg: 1280\r\nxl: 1920\r\nup: f d()\r\ndown: f down()\r\nbetween: f p()\r\nonly: f only()\r\nwidth: f width()\r\ndirection: \"ltr\"\r\nmixins: Object\r\ngutters: f gutters()\r\ntoolbar: Object\r\nminHeight: 56\r\n@media (min-width:0px) and (orientation: landscape): Object\r\nminHeight: 48\r\n@media (min-width:600px): Object\r\nminHeight: 64\r\noverrides: Object\r\npalette: Object\r\ncommon: Object\r\nblack:\r\n#000\r\nwhite:\r\n#fff\r\ntype: DARK\r\nprimary: Object\r\nlight:\r\n#7986cb\r\nmain:\r\n#3f51b5\r\ndark:\r\n#303f9f\r\ncontrastText:\r\n#fff\r\nsecondary: Object\r\nlight:\r\n#ff4081\r\nmain:\r\n#f50057\r\ndark:\r\n#c51162\r\ncontrastText:\r\n#fff\r\nerror: Object\r\nlight:\r\n#e57373\r\nmain:\r\n#f44336\r\ndark:\r\n#d32f2f\r\ncontrastText:\r\n#fff\r\nwarning: Object\r\nlight:\r\n#ffb74d\r\nmain:\r\n#ff9800\r\ndark:\r\n#f57c00\r\ncontrastText:\r\nrgba(0, 0, 0, 0.87)\r\ninfo: Object\r\nlight:\r\n#64b5f6\r\nmain:\r\n#2196f3\r\ndark:\r\n#1976d2\r\ncontrastText:\r\n#fff\r\nsuccess: Object\r\nlight:\r\n#81c784\r\nmain:\r\n#4caf50\r\ndark:\r\n#388e3c\r\ncontrastText:\r\nrgba(0, 0, 0, 0.87)\r\ngrey: Object\r\n50:\r\n#fafafa\r\n100:\r\n#f5f5f5\r\n200:\r\n#eeeeee\r\n300:\r\n#e0e0e0\r\n400:\r\n#bdbdbd\r\n500:\r\n#9e9e9e\r\n600:\r\n#757575\r\n700:\r\n#616161\r\n800:\r\n#424242\r\n900:\r\n#212121\r\nA100:\r\n#d5d5d5\r\nA200:\r\n#aaaaaa\r\nA400:\r\n#303030\r\nA700:\r\n#616161\r\ncontrastThreshold: 3\r\ngetContrastText: f V()\r\naugmentColor: f E()\r\ntonalOffset: 0.2\r\ntext: Object\r\nprimary:\r\n#fff\r\nsecondary:\r\nrgba(255, 255, 255, 0.7)\r\ndisabled:\r\nrgba(255, 255, 255, 0.5)\r\nhint:\r\nrgba(255, 255, 255, 0.5)\r\nicon:\r\nrgba(255, 255, 255, 0.5)\r\ndivider:\r\nrgba(255, 255, 255, 0.12)\r\nbackground: Object\r\npaper:\r\n#424242\r\ndefault:\r\n#303030\r\naction: Object\r\nactive:\r\n#fff\r\nhover:\r\nrgba(255, 255, 255, 0.08)\r\nhoverOpacity: 0.08\r\nselected:\r\nrgba(255, 255, 255, 0.16)\r\nselectedOpacity: 0.16\r\ndisabled:\r\nrgba(255, 255, 255, 0.3)\r\ndisabledBackground:\r\nrgba(255, 255, 255, 0.12)\r\ndisabledOpacity: 0.38\r\nfocus:\r\nrgba(255, 255, 255, 0.12)\r\nfocusOpacity: 0.12\r\nactivatedOpacity: 0.24\r\nprops: Object\r\nshadows: Array(25)\r\n0: \"none\"\r\n1: \"0px 2px 1px -1px rgba(0,0,0,0.2),0px 1px 1px 0px rgba(0,0,0,0.14),0px 1px 3px 0px rgba(0,0,0,0.12)\"\r\n2: \"0px 3px 1px -2px rgba(0,0,0,0.2),0px 2px 2px 0px rgba(0,0,0,0.14),0px 1px 5px 0px rgba(0,0,0,0.12)\"\r\n3: \"0px 3px 3px -2px rgba(0,0,0,0.2),0px 3px 4px 0px rgba(0,0,0,0.14),0px 1px 8px 0px rgba(0,0,0,0.12)\"\r\n4: \"0px 2px 4px -1px rgba(0,0,0,0.2),0px 4px 5px 0px rgba(0,0,0,0.14),0px 1px 10px 0px rgba(0,0,0,0.12)\"\r\n5: \"0px 3px 5px -1px rgba(0,0,0,0.2),0px 5px 8px 0px rgba(0,0,0,0.14),0px 1px 14px 0px rgba(0,0,0,0.12)\"\r\n6: \"0px 3px 5px -1px rgba(0,0,0,0.2),0px 6px 10px 0px rgba(0,0,0,0.14),0px 1px 18px 0px rgba(0,0,0,0.12)\"\r\n7: \"0px 4px 5px -2px rgba(0,0,0,0.2),0px 7px 10px 1px rgba(0,0,0,0.14),0px 2px 16px 1px rgba(0,0,0,0.12)\"\r\n8: \"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\n9: \"0px 5px 6px -3px rgba(0,0,0,0.2),0px 9px 12px 1px rgba(0,0,0,0.14),0px 3px 16px 2px rgba(0,0,0,0.12)\"\r\n10: \"0px 6px 6px -3px rgba(0,0,0,0.2),0px 10px 14px 1px rgba(0,0,0,0.14),0px 4px 18px 3px rgba(0,0,0,0.12)\"\r\n11: \"0px 6px 7px -4px rgba(0,0,0,0.2),0px 11px 15px 1px rgba(0,0,0,0.14),0px 4px 20px 3px rgba(0,0,0,0.12)\"\r\n12: \"0px 7px 8px -4px rgba(0,0,0,0.2),0px 12px 17px 2px rgba(0,0,0,0.14),0px 5px 22px 4px rgba(0,0,0,0.12)\"\r\n13: \"0px 7px 8px -4px rgba(0,0,0,0.2),0px 13px 19px 2px rgba(0,0,0,0.14),0px 5px 24px 4px rgba(0,0,0,0.12)\"\r\n14: \"0px 7px 9px -4px rgba(0,0,0,0.2),0px 14px 21px 2px rgba(0,0,0,0.14),0px 5px 26px 4px rgba(0,0,0,0.12)\"\r\n15: \"0px 8px 9px -5px rgba(0,0,0,0.2),0px 15px 22px 2px rgba(0,0,0,0.14),0px 6px 28px 5px rgba(0,0,0,0.12)\"\r\n16: \"0px 8px 10px -5px rgba(0,0,0,0.2),0px 16px 24px 2px rgba(0,0,0,0.14),0px 6px 30px 5px rgba(0,0,0,0.12)\"\r\n17: \"0px 8px 11px -5px rgba(0,0,0,0.2),0px 17px 26px 2px rgba(0,0,0,0.14),0px 6px 32px 5px rgba(0,0,0,0.12)\"\r\n18: \"0px 9px 11px -5px rgba(0,0,0,0.2),0px 18px 28px 2px rgba(0,0,0,0.14),0px 7px 34px 6px rgba(0,0,0,0.12)\"\r\n19: \"0px 9px 12px -6px rgba(0,0,0,0.2),0px 19px 29px 2px rgba(0,0,0,0.14),0px 7px 36px 6px rgba(0,0,0,0.12)\"\r\n20: \"0px 10px 13px -6px rgba(0,0,0,0.2),0px 20px 31px 3px rgba(0,0,0,0.14),0px 8px 38px 7px rgba(0,0,0,0.12)\"\r\n21: \"0px 10px 13px -6px rgba(0,0,0,0.2),0px 21px 33px 3px rgba(0,0,0,0.14),0px 8px 40px 7px rgba(0,0,0,0.12)\"\r\n22: \"0px 10px 14px -6px rgba(0,0,0,0.2),0px 22px 35px 3px rgba(0,0,0,0.14),0px 8px 42px 7px rgba(0,0,0,0.12)\"\r\n23: \"0px 11px 14px -7px rgba(0,0,0,0.2),0px 23px 36px 3px rgba(0,0,0,0.14),0px 9px 44px 8px rgba(0,0,0,0.12)\"\r\n24: \"0px 11px 15px -7px rgba(0,0,0,0.2),0px 24px 38px 3px rgba(0,0,0,0.14),0px 9px 46px 8px rgba(0,0,0,0.12)\"\r\ntypography: Object\r\nhtmlFontSize: 16\r\npxToRem: f ()\r\nround: f w()\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontSize: 14\r\nfontWeightLight: 300\r\nfontWeightRegular: 400\r\nfontWeightMedium: 500\r\nfontWeightBold: 700\r\nh1: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 300\r\nfontSize: \"6rem\"\r\nlineHeight: 1.167\r\nletterSpacing: \"-0.01562em\"\r\nh2: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 300\r\nfontSize: \"3.75rem\"\r\nlineHeight: 1.2\r\nletterSpacing: \"-0.00833em\"\r\nh3: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 400\r\nfontSize: \"3rem\"\r\nlineHeight: 1.167\r\nletterSpacing: \"0em\"\r\nh4: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 400\r\nfontSize: \"2.125rem\"\r\nlineHeight: 1.235\r\nletterSpacing: \"0.00735em\"\r\nh5: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 400\r\nfontSize: \"1.5rem\"\r\nlineHeight: 1.334\r\nletterSpacing: \"0em\"\r\nh6: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 500\r\nfontSize: \"1.25rem\"\r\nlineHeight: 1.6\r\nletterSpacing: \"0.0075em\"\r\nsubtitle1: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 400\r\nfontSize: \"1rem\"\r\nlineHeight: 1.75\r\nletterSpacing: \"0.00938em\"\r\nsubtitle2: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 500\r\nfontSize: \"0.875rem\"\r\nlineHeight: 1.57\r\nletterSpacing: \"0.00714em\"\r\nbody1: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 400\r\nfontSize: \"1rem\"\r\nlineHeight: 1.5\r\nletterSpacing: \"0.00938em\"\r\nbody2: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 400\r\nfontSize: \"0.875rem\"\r\nlineHeight: 1.43\r\nletterSpacing: \"0.01071em\"\r\nbutton: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 500\r\nfontSize: \"0.875rem\"\r\nlineHeight: 1.75\r\nletterSpacing: \"0.02857em\"\r\ntextTransform: \"uppercase\"\r\ncaption: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 400\r\nfontSize: \"0.75rem\"\r\nlineHeight: 1.66\r\nletterSpacing: \"0.03333em\"\r\noverline: Object\r\nfontFamily: \"\"Roboto\", \"Helvetica\", \"Arial\", sans-serif\"\r\nfontWeight: 400\r\nfontSize: \"0.75rem\"\r\nlineHeight: 2.66\r\nletterSpacing: \"0.08333em\"\r\ntextTransform: \"uppercase\"\r\nspacing: f e()\r\nmui: true\r\nshape: Object\r\nborderRadius: 4\r\ntransitions: Object\r\neasing: Object\r\neaseInOut: \"cubic-bezier(0.4, 0, 0.2, 1)\"\r\neaseOut: \"cubic-bezier(0.0, 0, 0.2, 1)\"\r\neaseIn: \"cubic-bezier(0.4, 0, 1, 1)\"\r\nsharp: \"cubic-bezier(0.4, 0, 0.6, 1)\"\r\nduration: Object\r\nshortest: 150\r\nshorter: 200\r\nshort: 250\r\nstandard: 300\r\ncomplex: 375\r\nenteringScreen: 225\r\nleavingScreen: 195\r\ncreate: f create()\r\ngetAutoHeightDuration: f getAutoHeightDuration()\r\nzIndex: Object\r\nmobileStepper: 1000\r\nspeedDial: 1050\r\nappBar: 1100\r\ndrawer: 1200\r\nmodal: 1300\r\nsnackbar: 1400\r\ntooltip: 1500\r\n\r\n*/\r\n","//import { fade, makeStyles } from \"@material-ui/core/styles\";\r\n// import { createStyles } from \"@material-ui/core\";\r\nimport { fade } from \"@material-ui/core/styles\";\r\nimport MatThemeService from \"./matThemeService\";\r\n\r\n/**\r\n *\r\n * @param {will be auto Injected by the calling component's withStyles} _theme\r\n */\r\nexport const MatClassService = (_theme) => ({\r\n root: { flexGrow: 1 },\r\n menuPaper: {\r\n maxHeight: 200,\r\n },\r\n themeColor: {\r\n color: MatThemeService.isDarkMode() ? null : _theme.palette.primary.main,\r\n },\r\n headerTitle: {\r\n color: MatThemeService.isDarkMode() ? null : _theme.palette.primary.main,\r\n flexGrow: 1,\r\n },\r\n\r\n pageHeaderDividerWithIcons: {\r\n // TOP:0, RIGHT:16, BOTTOM:16, LEFT:0\r\n margin: _theme.spacing(0, 2, 2, 0),\r\n },\r\n pageHeaderDividerWithoutIcons: {\r\n // TOP:16, RIGHT:16, BOTTOM:16, LEFT:0\r\n margin: _theme.spacing(2, 2, 2, 0),\r\n },\r\n pageLoadingHeader: {\r\n margin: _theme.spacing(2, 1, 4),\r\n },\r\n pageErrorHeader: {\r\n color: MatThemeService.isDarkMode() ? null : _theme.palette.error.dark,\r\n margin: _theme.spacing(2, 1, 4),\r\n },\r\n sectionHeader: {\r\n color: MatThemeService.isDarkMode() ? null : _theme.palette.primary.light,\r\n margin: _theme.spacing(2, 1, 4),\r\n },\r\n iconError: {\r\n color: MatThemeService.isDarkMode() ? _theme.palette.error.main : _theme.palette.error.dark,\r\n },\r\n buttonError: {\r\n background: MatThemeService.isDarkMode() ? _theme.palette.error.main : _theme.palette.error.dark,\r\n color: \"white\",\r\n },\r\n groupTitle: {\r\n margin: _theme.spacing(1, 1, 1),\r\n },\r\n listGroup: {\r\n backgroundColor: _theme.palette.background.default,\r\n },\r\n gridSpacing: {\r\n margin: _theme.spacing(2, 1, 4),\r\n },\r\n table: {\r\n minWidth: 750,\r\n },\r\n tableCellOverflow: {\r\n whiteSpace: \"nowrap\",\r\n textOverflow: \"ellipsis\",\r\n display: \"block\",\r\n overflow: \"hidden\",\r\n },\r\n visuallyHidden: {\r\n border: 0,\r\n clip: \"rect(0 0 0 0)\",\r\n height: 1,\r\n margin: -1,\r\n overflow: \"hidden\",\r\n padding: 0,\r\n position: \"absolute\",\r\n top: 20,\r\n width: 1,\r\n },\r\n\r\n // WARNING-STYLES\r\n // eg: \r\n// createStyles({\r\n// root: { flexGrow: 1 },\r\n// themeColor: {\r\n// color: MatThemeService.isDarkMode() ? null : _theme.palette.primary.main,\r\n// },\r\n// pageTitleSpacing: {\r\n// margin: _theme.spacing(2, 1, 4),\r\n// },\r\n// groupTitle: {\r\n// margin: _theme.spacing(1, 1, 1),\r\n// },\r\n// listGroup: {\r\n// backgroundColor: _theme.palette.background.default,\r\n// },\r\n// gridSpacing: {\r\n// margin: _theme.spacing(2, 1, 4),\r\n// },\r\n// })\r\n// );\r\n","export const ResultStatus = {\r\n NOT_LOADED: 0,\r\n LOADING: 1,\r\n LOADED: 2,\r\n SAVING: 3,\r\n SUCCESS: 4,\r\n ERROR: 5,\r\n};\r\n\r\nexport const SaveStatus = {\r\n NONE: 0,\r\n START: 1,\r\n SUCCESS: 2,\r\n ERROR: -1,\r\n};\r\n\r\nexport const ALIGNMENT = {\r\n LEFT: 1,\r\n CENTER: 2,\r\n RIGHT: 3,\r\n JUSTIFY: 4,\r\n}\r\n\r\nexport const POSITION = {\r\n TOP_LEFT: 1,\r\n TOP_CENTER: 2,\r\n TOP_RIGHT: 3,\r\n BOTTOM_LEFT: 4,\r\n BOTTOM_CENTER: 5,\r\n BOTTOM_RIGHT: 6,\r\n}\r\n\r\nexport const ENTITY_FIELD_TYPE = {\r\n NUMERIC: 1,\r\n TEXT: 2,\r\n DATE_TIME: 3,\r\n BOOLEAN: 4,\r\n LOV: 5,\r\n DATE: 6,\r\n DECIMAL: 7,\r\n HLOV: 8\r\n}\r\n\r\nexport const API_ENDPOINT = {\r\n BASE: 0,\r\n CORE: 1,\r\n IDENTITY: 2,\r\n HOME: 3,\r\n TENANT: 4,\r\n REPORTS: 5,\r\n ADDRESS: 6,\r\n CONFIG: 7,\r\n // IZENDA_CORE: 8,\r\n // IZENDA_IDENTITY: 9,\r\n};\r\n\r\n\r\nexport const SELECT_MODE = {\r\n INVERT: -1,\r\n NONE: 0,\r\n ALL: 1,\r\n}\r\n\r\nexport const ROLE_CELL_TYPE = {\r\n NONE: 0,\r\n PARENT: 1,\r\n CHILD: 2\r\n}\r\n\r\nexport const CELL_ACTION = {\r\n NONE: 0,\r\n EDIT: 1,\r\n DELETE: 2,\r\n ACCEPT: 3,\r\n CANCEL: 4\r\n}\r\n\r\n// remove this and replace it with API_ENDPOINT\r\nexport const GST_API = {\r\n Identity: 0,\r\n Core: 1,\r\n TenantConfig: 2,\r\n Reports: 3,\r\n Address: 4,\r\n};\r\n\r\nexport const CrudAction = {\r\n NONE: 0,\r\n CREATE: 1,\r\n READ: 2,\r\n UPDATE: 3,\r\n DELETE: 4,\r\n VIEW_DISABLED: 5,\r\n};\r\n\r\nexport const ReportCategory = {\r\n COMPLIANCE_TEMPLATES: 1,\r\n STANDARD_TEMPLATES: 2,\r\n CHART_TEMPLATES: 3,\r\n REPORT_LIBRARIES: 4\r\n};\r\n\r\nexport const ReportLibrary = {\r\n IN_REVIEW: 1,\r\n APPROVED: 2\r\n};\r\n\r\nexport const ReportType = {\r\n US_GENERAL: \"USGeneral\",\r\n US_STATE: \"USState\",\r\n US_OWNERSHIP: \"USOwnership\",\r\n OUS: \"oUS\",\r\n STANDARD: \"Standard\"\r\n};\r\n\r\nexport const TenantSelectList = {\r\n NONE: 0,\r\n LANGUAGE: 1,\r\n COUNTRY: 2,\r\n CURRENCY: 3,\r\n TIME_ZONE: 4,\r\n CONTACT_TYPE: 131,\r\n TRANSACTION_STATUS: 6,\r\n PROFILE_STATUS: 7,\r\n AGREEMENT_STATUS: 8\r\n};\r\n\r\nexport const AffiliatesSelectList = {\r\n ManufacturerType: 1,\r\n FederalBusinessType: 2,\r\n CMSBusinessType: 3,\r\n};\r\n\r\nexport const ENTITY_TYPE = {\r\n PROFILE: 1,\r\n TRANSACTION: 2,\r\n AGREEMENT: 3,\r\n DATA: 7,\r\n REPORTS: 9,\r\n SALES_REP: 14\r\n}\r\n\r\nexport const FileDeleteAllow = {\r\n ALLOW_PROFLE: 1,\r\n DISALLOW_PROFILE: 2,\r\n ALLOW_TRANSACTION: 3,\r\n DISALLOW_TRANSACTION: 4,\r\n REDIRECT_FROM_DATA_TO_TRANSACTION: 5,\r\n UNKNOWN: 999,\r\n}\r\n\r\nexport const FieldTypes = {\r\n \"Numeric\": 1,\r\n \"Text\": 2,\r\n //\"Date Time\": 3,\r\n \"Boolean\": 4,\r\n \"LOV\": 5,\r\n \"Date\": 6,\r\n \"Decimal\": 7,\r\n};\r\n\r\nexport const PROFILE_CATEGORY = {\r\n INDIVIDUAL: \"Individual\",\r\n ORGANIZATION: \"Organization\"\r\n}\r\n\r\nexport const TaskLauncher = {\r\n NONE: 0,\r\n TASK_LIST: 1,\r\n PROFILE_EXPANDED_VIEW: 2,\r\n PROFILE_DETAILS: 3,\r\n TRANSACTION_EXPANDED_VIEW: 4,\r\n TRANSACTION_DETAILS: 5,\r\n}\r\n\r\nexport const ReportableMap = {\r\n 250: \"Reportable - Direct\",\r\n 251: \"Reportable - Aggregate\",\r\n}\r\n\r\nexport const FILTER_TYPE = {\r\n NUMERIC: 1,\r\n TEXT: 2,\r\n DATE: 3,\r\n LOV: 5\r\n}\r\n\r\nexport const FILTER_FIELD_TYPE = {\r\n TEXT: 2,\r\n LOV: 5,\r\n DATE: 6,\r\n}\r\n\r\nexport const HEALTH_INDICATOR = {\r\n 1: \"error\",\r\n 2: \"warning\",\r\n 3: \"unmatched\",\r\n 4: \"eligible\"\r\n}","import React from \"react\";\r\nimport { POSITION } from \"../types/enums\";\r\n\r\nexport default class ToastService {\r\n\r\n /**\r\n * Usage: ToastService.showSuccess(\"Successfully Saved\");\r\n * @param {*} _message \r\n * @param {*} _autoHideDuration \r\n * @param {*} _postition \r\n */\r\n static showSuccess = (_message = \"Success\", _autoHideDuration = 3000, _postition = POSITION.TOP_CENTER) => {\r\n ToastService._show(\"success\", _message, _autoHideDuration, _postition);\r\n }\r\n\r\n /**\r\n * Usage: ToastService.showError(\"Error Occured while saving\");\r\n * @param {*} _message \r\n * @param {*} _autoHideDuration \r\n * @param {*} _postition \r\n */\r\n static showError = (_message = \"Error\", _autoHideDuration = 3000, _postition = POSITION.TOP_CENTER) => {\r\n ToastService._show(\"error\", _message, _autoHideDuration, _postition);\r\n }\r\n\r\n /**\r\n * Usage: ToastService.showWarning(\"No Changes to Save\");\r\n * @param {*} _message \r\n * @param {*} _autoHideDuration \r\n * @param {*} _postition \r\n */\r\n static showWarning = (_message = \"Warning\", _autoHideDuration = 3000, _postition = POSITION.TOP_CENTER) => {\r\n ToastService._show(\"warning\", _message, _autoHideDuration, _postition);\r\n }\r\n\r\n /**\r\n * Usage: ToastService.showInfo(\"300 Vendors are available\");\r\n * @param {*} _message \r\n * @param {*} _autoHideDuration \r\n * @param {*} _postition \r\n */\r\n static showInfo = (_message = \"Information\", _autoHideDuration = 3000, _postition = POSITION.TOP_CENTER) => {\r\n ToastService._show(\"info\", _message, _autoHideDuration, _postition);\r\n }\r\n\r\n\r\n //#region INTERNALs\r\n\r\n /**\r\n * Should be called only once in the container component\r\n * container component should be always loaded and available eg: shell\r\n * eg: ToastService.INIT(this);\r\n * @param {*} _containerREF \r\n */\r\n static setComponentREF = (_containerREF) => { ToastService.containerREF = _containerREF; }\r\n\r\n /**\r\n * for non class based componenets\r\n * @param {*} _HookREF \r\n */\r\n static setShowToastHookREF = (_HookREF) => { ToastService.setShowToastRef = _HookREF; }\r\n\r\n static setShowToastRef = null;\r\n static containerREF = null;\r\n static autoHideDuration = 3000;\r\n static toastType = \"info\";\r\n static message = \"Information\";\r\n static variant = \"filled\"; // filled | outlined\r\n static elevation = 6;\r\n static anchorOrigin = { vertical: \"top\", horizontal: \"center\" }\r\n\r\n static closeToast = () => {\r\n if (ToastService.containerREF && ToastService.containerREF.state.showToast === true) {\r\n ToastService.containerREF.setState({ showToast: false });\r\n } else if (ToastService.setShowToastRef) {\r\n ToastService.setShowToastRef(false);\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {*} _toastType \"info\" | \"success\" | \"warning\" | \"error\" \r\n * @param {*} _message \r\n * @param {*} _autoHideDuration \r\n * @param {*} _postition eg: POSITION.BOTTOM_RIGHT \r\n */\r\n static _show = (_toastType, _message, _autoHideDuration, _postition) => {\r\n // close previous toasts if any\r\n ToastService.closeToast();\r\n\r\n _toastType = (_toastType + \"\").toLowerCase();\r\n ToastService.toastType = !([\"info\", \"success\", \"warning\", \"error\"].includes(_toastType)) ? \"info\" : _toastType;\r\n\r\n ToastService.message = _message;\r\n ToastService.autoHideDuration = _autoHideDuration;\r\n\r\n switch (_postition) {\r\n case POSITION.TOP_LEFT: ToastService.anchorOrigin = { vertical: \"top\", horizontal: \"left\" }; break;\r\n case POSITION.TOP_CENTER: ToastService.anchorOrigin = { vertical: \"top\", horizontal: \"center\" }; break;\r\n case POSITION.TOP_RIGHT: ToastService.anchorOrigin = { vertical: \"top\", horizontal: \"right\" }; break;\r\n case POSITION.BOTTOM_LEFT: ToastService.anchorOrigin = { vertical: \"bottom\", horizontal: \"left\" }; break;\r\n case POSITION.BOTTOM_CENTER: ToastService.anchorOrigin = { vertical: \"bottom\", horizontal: \"center\" }; break;\r\n case POSITION.BOTTOM_RIGHT: ToastService.anchorOrigin = { vertical: \"bottom\", horizontal: \"right\" }; break;\r\n default: ToastService.anchorOrigin = { vertical: \"top\", horizontal: \"center\" }; break;\r\n }\r\n\r\n // show the toast\r\n if (ToastService.containerREF) {\r\n ToastService.containerREF.setState({ showToast: true });\r\n } else if (ToastService.setShowToastRef) {\r\n ToastService.setShowToastRef(true);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n\r\n\r\n //---\r\n}","export class userModel {\r\n\r\n /*\r\n * ---------------------------------\r\n * userById : kulkarni@porziols.com\r\n * ---------------------------------\r\n {\r\n \"id\": 2129,\r\n \"firstName\": \"Medha\",\r\n \"lastName\": \"Kulkarni\",\r\n \"userName\": \"kulkarni@porziols.com\",\r\n \"currencyId\": 83,\r\n \"defaultLanguageId\": 1,\r\n \"isPorzioUser\": true,\r\n \"userTypeId\": 4,\r\n \"userType\": \"Support User\",\r\n \"tenantId\": 1376,\r\n \"roleName\": \"Tenant Admin\"\r\n }\r\n * ---------------------------------\r\n * tenantUserInfoById : ?userId=2129&tenantId=1376\r\n * ---------------------------------\r\n {\r\n \"id\": 2129,\r\n \"loginName\": \"kulkarni@porziols.com\",\r\n \"firstName\": \"Medha\",\r\n \"lastName\": \"Kulkarni\",\r\n \"isActive\": true,\r\n \"currencyId\": 83,\r\n \"tenantId\": 1376,\r\n \"roleName\": \"Tenant Admin\",\r\n \"roleId\": 1\r\n }\r\n *---------------------------------\r\n * tokenById\r\n * ---------------------------------\r\n eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Imt1bGthcm5pQHBvcnppb2xzLmNvbSIsInJvbGUiOiJUZW5hbnQgQWRtaW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3VzZXJkYXRhIjoiMTM3NiIsIlRlbmFudElkIjoiMTM3NiIsIkZpcnN0TmFtZSI6Ik1lZGhhIiwiTGFzdE5hbWUiOiJLdWxrYXJuaSIsIlVzZXJJZCI6IjIxMjkiLCJJc1Bvcnppb1VzZXIiOiJUcnVlIiwiVXNlclR5cGVJZCI6IjQiLCJDdXJyZW5jeUlkIjoiODMiLCJEZWZhdWx0TGFuZ3VhZ2VJZCI6IjEiLCJuYmYiOjE2MTk4ODExMTgsImV4cCI6MTYyMDQ4NTkxOCwiaWF0IjoxNjE5ODgxMTE4LCJhdWQiOiJ0ZW5hbnQifQ.JLU9pCgXdvDhDrdHLeh_3-Ha8fmR5Uyg6b_Gn4dRnz4\r\n *---------------------------------\r\n */\r\n\r\n constructor(\r\n _id, _firstName, _lastName, _userName, _currencyId, _defaultLanguageId, _isPorzioUser, _userTypeId, _userType,\r\n _tenantid, _tenantname, _uid, _workspaceID, _oktaGroupID,\r\n _isActive, _roleId, _roleName,\r\n _sessionToken, _sessionStart, _warnSessionTimeout, _logoutTimeout, _refreshTokenTime,\r\n _tenantList\r\n ) {\r\n\r\n this.userId = _id;\r\n this.firstName = _firstName;\r\n this.lastName = _lastName;\r\n this.userName = _userName;\r\n this.currencyId = _currencyId;\r\n this.defaultLanguageId = _defaultLanguageId;\r\n this.isPorzioUser = _isPorzioUser;\r\n this.userTypeId = _userTypeId;\r\n this.userType = _userType;\r\n\r\n this.tenantId = _tenantid;\r\n this.tenantName = _tenantname;\r\n this.uid = _uid;\r\n this.workspaceID = _workspaceID;\r\n this.oktaGroupID = _oktaGroupID;\r\n\r\n this.isActive = _isActive;\r\n this.roleId = _roleId;\r\n this.roleName = _roleName;\r\n\r\n this.sessionToken = _sessionToken;\r\n this.sessionStart = _sessionStart;\r\n this.warnSessionTimeout = _warnSessionTimeout;\r\n this.logoutTimeout = _logoutTimeout;\r\n this.refreshTokenTime = _refreshTokenTime;\r\n\r\n this.tenantList = _tenantList;\r\n }\r\n\r\n static getByOBJs = (userByIdObj, selTenantObj, tenantUserInfoByIdObj, sessionObj, tenantList) => {\r\n return new userModel(\r\n userByIdObj.id,\r\n userByIdObj.firstName,\r\n userByIdObj.lastName,\r\n userByIdObj.userName,\r\n userByIdObj.currencyId,\r\n userByIdObj.defaultLanguageId,\r\n userByIdObj.isPorzioUser,\r\n userByIdObj.userTypeId,\r\n userByIdObj.userType,\r\n\r\n selTenantObj.tenantid,\r\n selTenantObj.tenantName,\r\n selTenantObj.uid,\r\n tenantUserInfoByIdObj.workspaceID ?? userByIdObj.workspaceID,\r\n userByIdObj.oktaGroupID,\r\n\r\n tenantUserInfoByIdObj.isActive,\r\n tenantUserInfoByIdObj.roleId,\r\n tenantUserInfoByIdObj.roleName,\r\n\r\n sessionObj.sessionToken,\r\n sessionObj.sessionStart,\r\n sessionObj.warnSessionTimeout,\r\n sessionObj.logoutTimeout,\r\n sessionObj.refreshTokenTime,\r\n\r\n tenantList\r\n );\r\n }\r\n\r\n //---\r\n}\r\n","import React from \"react\";\r\nimport { userModel } from \"../models/userModel\";\r\n\r\nexport const AuthContext = React.createContext();\r\n\r\nexport function useAuthState() {\r\n const authStateFromContext = React.useContext(AuthContext);\r\n // console.log(\"useAuthState() authStateFromContext: \", authStateFromContext);\r\n const isPending = authStateFromContext.status === \"pending\";\r\n const isError = authStateFromContext.status === \"error\";\r\n const isSuccess = authStateFromContext.status === \"success\";\r\n const isAuthenticated = authStateFromContext.user && isSuccess;\r\n if (authStateFromContext.user.username === \"elmo\") {\r\n return null;\r\n } else {\r\n return {\r\n ...authStateFromContext,\r\n isPending,\r\n isError,\r\n isSuccess,\r\n isAuthenticated,\r\n };\r\n }\r\n}\r\n\r\nfunction AuthProvider({ children }) {\r\n\r\n let initialUserState = {\r\n status: \"pending\",\r\n error: null,\r\n user: new userModel(0, \"elmo\", 0, []),\r\n firstTime: true,\r\n authToken: \"\",\r\n };\r\n\r\n const [userState, setUserState] = React.useState(initialUserState);\r\n\r\n const setViaLogin = (user, authToken) => setUserState({ status: \"success\", error: null, user, authToken });\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n}\r\n\r\nexport default AuthProvider;\r\n","export default class ApplicationService {\r\n static applicationName = \"Porzio Life Sciences\";\r\n static appVersion = `${process.env.APP_VERSION}`;\r\n static appVersionString = `Porzio GST v${process.env.REACT_APP_VERSION}`;\r\n static appGstVersionString = `GST v${process.env.REACT_APP_VERSION}`;\r\n static OktaRequestContext = `${process.env.REACT_APP_OKTA_REQ_CONTEXT}`;\r\n static copyrightString = `© Copyright 2024 Porzio Life Sciences, LLC.`;\r\n static copyrightStringRLDatix = `Porzio Life Sciences, LLC is an RLDatix Company.`;\r\n static copyrightRightsReservedString = `© 2024 Porzio Life Sciences, LLC. All rights reserved. Porzio Life Sciences, LLC is an RLDatix Company.`;\r\n}\r\n","import config from '../../config';\r\nimport OktaSignIn from '@okta/okta-signin-widget';\r\nimport ApplicationService from '../../shared/services/applicationService';\r\nimport porzio_gst_icon from \"../../public/images/porzio_global_spend_transparency_logo_small.png\";\r\n\r\nexport default class OktaAuthService {\r\n\r\n static authWidget = {};\r\n static tokensCache = null;\r\n static authClient = null;\r\n static renewTokenTimerRef = null;\r\n static renewBufferTimeInMs = 5 * 60 * 1000; // 5 minutes before expiry\r\n\r\n static getAccessToken = () => {\r\n // check expiry if expired, renew()-> replace old with new -> and pass the new Token\r\n return OktaAuthService.tokensCache?.accessToken?.accessToken;\r\n }\r\n\r\n static INIT = () => {\r\n const { issuer, clientId, redirectUri, scopes } = config.oidc;\r\n const oktaTitle = `${ApplicationService.applicationName} - ${ApplicationService.appGstVersionString}`;\r\n\r\n OktaAuthService.authWidget = new OktaSignIn({\r\n baseUrl: issuer.split('/oauth2')[0],\r\n clientId: clientId,\r\n redirectUri: redirectUri,\r\n logo: porzio_gst_icon,\r\n authParams: { issuer, scopes },\r\n features: { idpDiscovery: true },\r\n idpDiscovery: { requestContext: ApplicationService.OktaRequestContext },\r\n i18n: { en: { 'primaryauth.title': oktaTitle, }, }\r\n });\r\n // cache\r\n OktaAuthService.authClient = OktaAuthService.authWidget.authClient;\r\n\r\n /** subscription required by okta for not throwing warnings in the console */\r\n OktaAuthService.authClient.authStateManager.subscribe((resultObj) => {\r\n // console.log(\"auth state changed\", resultObj);\r\n });\r\n }\r\n\r\n\r\n static checkSingleSignOn = (onSuccessCallback, onErrorCallback) => {\r\n OktaAuthService.authClient.token.getWithoutPrompt({\r\n responseType: ['id_token', 'token'], // or array of types\r\n })\r\n .then((successObj) => OktaAuthService.handleSuccess(successObj, onSuccessCallback))\r\n .catch((errorObj) => OktaAuthService.handleError(errorObj, onErrorCallback))\r\n }\r\n\r\n static showSignInWidget = (_renderEl, onSuccessCallback, onErrorCallback) => {\r\n OktaAuthService.authWidget.renderEl({ el: _renderEl },\r\n (successObj) => OktaAuthService.handleSuccess(successObj, onSuccessCallback),\r\n (errorObj) => OktaAuthService.handleError(errorObj, onErrorCallback)\r\n );\r\n }\r\n\r\n //---\r\n static handleError = (errorObj, onErrorCallback) => {\r\n\r\n console.log(errorObj);\r\n\r\n // clear the cache and stop the monitor\r\n OktaAuthService.cancelSession();\r\n\r\n // call the errorCallback\r\n if (onErrorCallback) {\r\n onErrorCallback(errorObj);\r\n }\r\n }\r\n\r\n static handleSuccess = (successObj, onSuccessCallback) => {\r\n\r\n // cache the access-token for api calls\r\n OktaAuthService.tokensCache = successObj?.tokens;\r\n\r\n // set the token in the okta-token manager (application-storage)\r\n OktaAuthService.authClient.tokenManager.setTokens(successObj.tokens);\r\n\r\n // auto-renew-session before expiry\r\n const expiresAt = successObj?.tokens.accessToken.expiresAt;\r\n OktaAuthService.scheduleTokenRenewInterval(expiresAt);\r\n\r\n // call the callback\r\n if (onSuccessCallback) {\r\n onSuccessCallback(successObj);\r\n }\r\n }\r\n\r\n // +++++++-refresh-session-logic-++++++++++++++++++++++++\r\n static cancelSession = () => {\r\n OktaAuthService.tokensCache = null;\r\n OktaAuthService.stopTokenRenewInterval();\r\n }\r\n\r\n static stopTokenRenewInterval = () => {\r\n if (OktaAuthService.renewTokenTimerRef) {\r\n clearTimeout(OktaAuthService.renewTokenTimerRef);\r\n }\r\n }\r\n\r\n static scheduleTokenRenewInterval(tokenExpiresAt) {\r\n // clear,... just in case not stopped already\r\n OktaAuthService.stopTokenRenewInterval();\r\n\r\n // Convert to MilliSeconds\r\n let expiresAtInMs = tokenExpiresAt * 1000;\r\n // incase of nullValue use 15 mins as default\r\n expiresAtInMs = expiresAtInMs > 0 ? expiresAtInMs : 15 * 60 * 1000; \r\n \r\n // Calculate how many seconds remain until expiration from current time\r\n const timeUntilExpiryInMs = expiresAtInMs - Date.now();\r\n\r\n // calculate the renewval interval with Buffer time ( 5 mins before expiry)\r\n let renewTimeInMs = (timeUntilExpiryInMs - OktaAuthService.renewBufferTimeInMs);\r\n renewTimeInMs = renewTimeInMs > 0 ? renewTimeInMs : 0;\r\n\r\n // print for help\r\n // console.clear();\r\n console.log(`OKTA-Token is set to expire at: ${OktaAuthService.getHoursAndMinutes(timeUntilExpiryInMs)}`);\r\n console.log(`OKTA-Token will get renewed at: ${OktaAuthService.getHoursAndMinutes(renewTimeInMs)}`);\r\n\r\n // start the timer\r\n OktaAuthService.renewTokenTimerRef = setTimeout(() => {\r\n OktaAuthService.renewToken();\r\n }, renewTimeInMs);\r\n\r\n }\r\n\r\n static getHoursAndMinutes(timeInMs) {\r\n // Get the current time\r\n const currentTime = new Date();\r\n \r\n // Add the milliseconds to the current time\r\n const diffTime = new Date(currentTime.getTime() + timeInMs);\r\n \r\n // Get hours and minutes from the renewal time\r\n const hours = diffTime.getHours().toString().padStart(2, '0');\r\n const minutes = diffTime.getMinutes().toString().padStart(2, '0');\r\n const seconds = diffTime.getMinutes().toString().padStart(2, '0');\r\n \r\n // Print the token renewal time in HH:MM format\r\n return `${hours}:${minutes}:${seconds}`;\r\n }\r\n\r\n static renewToken = () => {\r\n console.log('Token renewal requested...');\r\n OktaAuthService.authClient.tokenManager.renew('accessToken')\r\n .then((accessTokenObj) => {\r\n // ---\r\n var updatedTokens = {\r\n ...OktaAuthService.tokensCache,\r\n accessToken: accessTokenObj\r\n };\r\n\r\n // cache\r\n OktaAuthService.tokensCache = updatedTokens;\r\n OktaAuthService.authClient.tokenManager.setTokens(updatedTokens);\r\n OktaAuthService.scheduleTokenRenewInterval(accessTokenObj.expiresAt);\r\n console.log('Token renewed before expiry:', updatedTokens);\r\n })\r\n .catch(err => {\r\n console.error('Error renewing token before expiry:', err);\r\n })\r\n }\r\n \r\n //---\r\n}","export default class MatSpecService {\r\n // view\r\n static useDenseLayout = false;\r\n // units\r\n static drawerWidth = 256;\r\n // durations\r\n static gridTooltipEnterDelay = 1000;\r\n static tooltipEnterDelay = 500;\r\n static tooltipExitDelay = 0;\r\n // toggles\r\n static showPageTitleDivider = true;\r\n static showGridDivider = false;\r\n static showGroupNameDivider = false;\r\n static showListItemDivider = false;\r\n}\r\n","import React from \"react\";\r\nimport { grey, red } from '@material-ui/core/colors';\r\nimport {\r\n Add,\r\n Assessment,\r\n AssignmentTurnedIn,\r\n CloudUpload,\r\n DirectionsRun,\r\n Home,\r\n LibraryAddCheck,\r\n LocalPharmacy,\r\n PermDataSetting,\r\n Launch,\r\n SpeakerNotes,\r\n Dashboard,\r\n Help,\r\n Folder,\r\n AccountCircle,\r\n Business,\r\n RecentActors,\r\n Store,\r\n Email,\r\n AlternateEmail,\r\n Security,\r\n Map,\r\n PeopleAlt,\r\n VpnKey,\r\n AssignmentInd,\r\n AccountTree,\r\n GroupWork,\r\n Polymer,\r\n PostAdd,\r\n NoteAdd,\r\n Ballot,\r\n BallotOutlined,\r\n ContactMail,\r\n ColorLens,\r\n Brightness6Outlined,\r\n Description,\r\n Person,\r\n Storage,\r\n ThumbUp,\r\n ThumbDown,\r\n Receipt,\r\n ViewCarousel,\r\n TrendingUp,\r\n Menu,\r\n Search,\r\n Lens,\r\n AddCircleOutline,\r\n ViewList,\r\n Refresh,\r\n EventNote,\r\n Event,\r\n Alarm,\r\n Chat,\r\n Assignment,\r\n Build,\r\n Close,\r\n Done,\r\n ArrowBack,\r\n Feedback,\r\n Widgets,\r\n Delete,\r\n Edit,\r\n CheckCircleOutlineOutlined,\r\n EditOutlined,\r\n Remove,\r\n Save,\r\n ExpandLess,\r\n ExpandMore,\r\n DeleteOutline,\r\n DeleteForever,\r\n Translate,\r\n AttachMoney,\r\n Settings,\r\n PowerSettingsNew,\r\n WbIncandescent,\r\n WbIncandescentOutlined,\r\n WbIncandescentTwoTone,\r\n EmojiObjects,\r\n Flare,\r\n Highlight,\r\n ZoomIn,\r\n SwapCalls,\r\n Link,\r\n LinkOff,\r\n MoreVert,\r\n MoreHoriz,\r\n SpeakerNotesOff,\r\n NotListedLocation,\r\n GetApp,\r\n People,\r\n ViewColumnTwoTone,\r\n ViewWeek,\r\n CalendarViewDaySharp,\r\n FormatListBulletedSharp,\r\n ArrowUpward,\r\n RateReview,\r\n Report,\r\n LowPriority,\r\n LockOpen,\r\n PriorityHigh,\r\n Gavel,\r\n Lock,\r\n Autorenew,\r\n HourglassFull,\r\n FileCopy,\r\n AccountCircleTwoTone,\r\n ViewCarouselOutlined,\r\n GroupAdd,\r\n CheckBoxOutlineBlankTwoTone,\r\n CheckBoxTwoTone,\r\n IndeterminateCheckBoxTwoTone,\r\n DoneAll,\r\n ClearAll,\r\n Exposure,\r\n FindInPageTwoTone,\r\n PlayArrow,\r\n WbSunny,\r\n WbSunnyTwoTone,\r\n Brightness2TwoTone,\r\n AccessTimeTwoTone,\r\n Beenhere,\r\n Note,\r\n} from \"@material-ui/icons\";\r\n\r\nexport const MatIconService = {\r\n\r\n DONE_ALL: ,\r\n\r\n SELECT_NONE: ,\r\n SELECT_ALL: ,\r\n SELECT_PARTIAL: ,\r\n SELECT_PAGE: ,\r\n FIND_IN_PAGE: ,\r\n\r\n ACCOUNT: ,\r\n SETTINGS: ,\r\n\r\n COLUMNS_TT_32: ,\r\n COLUMNS_TT_24: ,\r\n COLUMNS_32: ,\r\n COLUMNS_24: ,\r\n\r\n DENIED: ,\r\n\r\n SWAP: ,\r\n LINK: ,\r\n UNLINK: ,\r\n IDEA_BULB_32: ,\r\n SEARCH_32: ,\r\n\r\n // OVERRIDE: ,\r\n // OVERRIDE: ,\r\n OVERRIDE_NORMAL: ,\r\n OVERRIDE: ,\r\n OVERRIDE_28: ,\r\n\r\n DASH: ,\r\n PERSONAL: ,\r\n REFRESH_CACHE: ,\r\n IN_PROGRESS: ,\r\n\r\n CONTACT_US: ,\r\n LOGOUT: ,\r\n DELETE_RED: ,\r\n DELETE: ,\r\n DELETE_FOREVER: ,\r\n DELETE_OUTLINE: ,\r\n\r\n LANGUAGE: ,\r\n COPY: ,\r\n CURRENCY: ,\r\n MONEY: ,\r\n DOLLAR: ,\r\n SAVE: ,\r\n RUN: ,\r\n BACK: ,\r\n EDIT: ,\r\n EDIT_OUTLINED: ,\r\n ADD: ,\r\n IMPORT_TEMPLATE: ,\r\n CLOUD_UPLOAD: ,\r\n CLOSE: ,\r\n CLEAR_RED: ,\r\n OK: ,\r\n ACCEPT: ,\r\n CANCEL: ,\r\n DATE: ,\r\n EVENT: ,\r\n EVENT_NOTE: ,\r\n EVENT_ALARM: ,\r\n TASK_32: ,\r\n TASK_24: ,\r\n TASK_ADD: ,\r\n PROFILE_BATCH_ADD: ,\r\n NEWS_FEED: , // ,\r\n RELOAD: ,\r\n ADD_CIRCLE_OUTLINE: ,\r\n VIEW_LIST: ,\r\n MENU: ,\r\n SEARCH: ,\r\n CONTRAST: ,\r\n SUN: ,\r\n MOON: ,\r\n CLOCK: ,\r\n CLOCK_SELECTED: ,\r\n\r\n THEME: ,\r\n NAV_HOME: ,\r\n NAV_DASHBOARD: ,\r\n NAV_POWER_BI: ,\r\n NAV_REPORT: ,\r\n NAV_DATABASE: ,\r\n NAV_FILES: ,\r\n TRANSACTION_OUTLINED: ,\r\n NAV_USER: ,\r\n PROFILE: ,\r\n PROFILE_OUTLINED: ,\r\n NAV_HAND: ,\r\n NAV_THUMB_DOWN: ,\r\n NAV_DEMO: ,\r\n NAV_DETAIL: ,\r\n\r\n WARNING: ,\r\n\r\n COMPANY: ,\r\n AFFILIATE: ,\r\n STORE: ,\r\n\r\n PASSWORD: ,\r\n DRAFTS: ,\r\n EMAIL: ,\r\n FTP: ,\r\n EMAIL_FAQ: ,\r\n\r\n USERS: ,\r\n ROLE: ,\r\n PERMISSION: ,\r\n\r\n DEFAULT_MAPPING: ,\r\n REPORT_MAPPING: ,\r\n CONSENT_MAPPING: ,\r\n\r\n LAUNCH: ,\r\n PERM_DATA_SETTING: ,\r\n POWER_BI: ,\r\n\r\n PORZIO_RULES: ,\r\n CUSTOM_RULES: ,\r\n\r\n PORZIO_FILEDS: ,\r\n CUSTOM_FIELDS: ,\r\n\r\n RERUN_VALIDATION: ,\r\n REVALIDATE_QUEUE: ,\r\n RERUN_MATCHING: ,\r\n FILE_COMMENT: ,\r\n FILE_COMMENT_ON: ,\r\n FILE_COMMENT_OFF: ,\r\n RUN_REPORTS: ,\r\n\r\n SOURCE: ,\r\n\r\n FOLDER: ,\r\n CIRCLE: ,\r\n LOGIN_FEEDBACK: ,\r\n WIDGETS: ,\r\n NDC_PRODUCT: ,\r\n\r\n MOVE_UP: ,\r\n MOVE_DOWN: ,\r\n MORE_VERT_16: ,\r\n MORE_HORZ: ,\r\n\r\n NOT_LISTED: ,\r\n DOWNLOAD: ,\r\n\r\n PARENT: ,\r\n REVIEWED: ,\r\n\r\n REPORT: \r\n};\r\n","import React from \"react\";\r\nimport porzio_gst_white_icon from \"../../../public/images/porzio_global_spend_transparency_white_logo.png\";\r\nimport MatThemeService from \"../../../shared/services/theme/matThemeService\";\r\n\r\nexport default function LogoComponent() {\r\n const currentTheme = MatThemeService.getTheme();\r\n const logoBackgroundColor = MatThemeService.isDarkMode() ? \"#212121\" : \"#005589\"; // this gray works too: #afbcbc\r\n let topBarColor = MatThemeService.isDarkMode() ? \"#212121\" : currentTheme.palette.primary.main;\r\n\r\n return (\r\n\r\n
\r\n
\r\n  \r\n
\r\n
\r\n \"Porzio\r\n
\r\n
\r\n  \r\n
\r\n
\r\n\r\n );\r\n}","import moment from \"moment\";\r\n// import Moment from \"react-moment\";\r\n\r\n/**\r\n * https://material-ui-pickers.dev/getting-started/installation\r\n * This is seperately availble inside the following Package with flixible customizations\r\n * npm i @material-ui/pickers\r\n * npm i @date-io/moment\r\n * import { DatePicker } from \"@material-ui/pickers\";\r\n *\r\n */\r\n\r\nexport default class MomentService {\r\n static lightModeStart = 6; // 6AM\r\n static lightModeEnd = 22; // 10PM\r\n\r\n /** (1AM -to- 11:59AM) 24hr time to split the morning */\r\n static morningStart = 1;\r\n static morningEnd = 11;\r\n /** (12PM -to- 4:59PM) 24hr time to split the afternoon */\r\n static afterNoonStart = 12;\r\n static afterNoonEnd = 16;\r\n /** (5PM -to- 6:59PM) 24hr time to split the evening */\r\n static eveningStart = 17;\r\n static eveningEnd = 18;\r\n /** (7PM -to- 11:59PM) 24hr time to split the night */\r\n static nightStart = 19;\r\n static nightEnd = 23;\r\n\r\n static checkIsDawn = () => {\r\n const _currentHour = parseFloat(moment().format(\"HH\"));\r\n if (_currentHour >= this.lightModeStart && _currentHour < this.lightModeEnd) {\r\n // 6AM to 9PM\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n static checkIsDusk = () => {\r\n const _currentHour = parseFloat(moment().format(\"HH\"));\r\n if (_currentHour >= this.lightModeEnd && _currentHour < this.lightModeStart) {\r\n // 9PM to 6AM\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n };\r\n\r\n static getGreetingTime = () => {\r\n const currentHour = parseFloat(moment().format(\"HH\"));\r\n\r\n if (currentHour >= this.afterNoonStart && currentHour <= this.afterNoonEnd) {\r\n // Between 12 PM and 5PM\r\n return \"Good afternoon\";\r\n } else if (currentHour >= this.eveningStart && currentHour <= this.eveningEnd) {\r\n // Between 5 PM and 7PM\r\n return \"Good evening\";\r\n } else if (currentHour >= this.nightStart && currentHour <= this.nightEnd) {\r\n // Between 7PM to 1AM\r\n return \"Good night\";\r\n } else {\r\n // Between night and dawn\r\n return \"Good morning\";\r\n }\r\n };\r\n\r\n static getTimeStamp = () => {\r\n return moment().valueOf();\r\n };\r\n\r\n static getUtcTime = () => {\r\n return moment().utc().format('YYYY-MM-DD hh:mm a');\r\n }\r\n\r\n static getRandomTimeStamp = (min = 1, max = 999) => {\r\n const random = min + Math.random() * (max - min);\r\n return this.getTimeStamp() + \"\" + random;\r\n };\r\n}\r\n","import React from \"react\";\r\nimport MomentService from \"./momentService\";\r\nimport {\r\n withStyles, InputLabel, Tooltip, IconButton, TextField, Switch, FormControlLabel, InputAdornment, FormControl,\r\n Select, FormHelperText, InputBase, Typography, ListItemIcon, MenuItem, Divider, Menu\r\n} from \"@material-ui/core\";\r\nimport { Autocomplete } from \"@material-ui/lab\";\r\nimport { DatePicker } from \"@material-ui/pickers\";\r\n\r\nimport { withRouter } from \"react-router-dom\";\r\n\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport MatThemeService from \"./theme/matThemeService\";\r\nimport { MatIconService } from \"./theme/matIconService\";\r\nimport MatSpecService from \"./theme/matSpecService\";\r\nimport { DataService } from \"../services/dataService\";\r\n\r\n\r\nexport default class LayoutService {\r\n /**\r\n * yup error to formik\r\n * refer\r\n * https://stackoverflow.com/questions/54473643/dont-validate-untouched-fields-in-formik-and-yup-on-submitting-if-field-is-not\r\n * @param {*} err\r\n */\r\n static mapYupErrorsToFormikErrors = (err) => {\r\n return err.inner\r\n .filter((i) => !!i.path)\r\n .reduce(\r\n (curr, next) =>\r\n Object.assign(Object.assign({}, curr), {\r\n [next.path]: next.errors[0],\r\n }),\r\n {}\r\n );\r\n };\r\n\r\n static submitIfValid = async (\r\n _thisRef,\r\n _formikProps,\r\n _validationSchema,\r\n _validationSuccessCallback\r\n ) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await _validationSchema\r\n .validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // if validation is successfull\r\n _validationSuccessCallback();\r\n })\r\n .catch((erroObj) => {\r\n // set the error to the form fields\r\n erroObj.inner.forEach((err) => {\r\n _formikProps.setFieldError(err.path, err.message);\r\n });\r\n });\r\n }\r\n };\r\n\r\n static isRequired = (_validationSchema, _fieldName) => {\r\n // return _validationSchema.fields[_fieldName]._exclusive.required;\r\n return DataService.hasElements(\r\n _validationSchema.fields[_fieldName]?.tests.filter((test) => {\r\n return test.OPTIONS.name === \"required\";\r\n })\r\n );\r\n };\r\n\r\n static getFormikProps = (_initialValues, _validationSchema, _showMultiFieldErros = false, _validateOnchange = false, _validateOnBlur = false) => {\r\n return {\r\n initialValues: _initialValues,\r\n validationSchema: _validationSchema,\r\n validationSchemaOptions: { showMultipleFieldErrors: _showMultiFieldErros },\r\n validateOnChange: _validateOnchange,\r\n validateOnBlur: _validateOnBlur\r\n };\r\n }\r\n\r\n //#region New-Impl\r\n static getDropDown = (\r\n _isReadOnly,\r\n _formClassName, // _classes.dialogControl\r\n _menuClassName, // _classes.menuPaper\r\n _formikProps,\r\n _validationSchema,\r\n _key,\r\n _label,\r\n _options,\r\n _optionKey,\r\n _optionLabel,\r\n _defaultValue = null,\r\n _showEmpty = false,\r\n _minWidth = \"47%\",\r\n _onChangeCallback = () => { },\r\n _size = \"small\",\r\n _otherSelectOptions = {},\r\n _otherFormControlOptions = {},\r\n _otherInputLabelOptions = {}\r\n ) => {\r\n const formControlKey = \"fromControl\" + _key;\r\n const labelKey = \"inputLabel\" + _key;\r\n const selectKey = \"select\" + _key;\r\n\r\n // Assign default value to underlying formik\r\n if (_defaultValue && _formikProps.values[_key] !== _defaultValue) {\r\n _formikProps.setFieldValue(_key, _defaultValue, false);\r\n }\r\n\r\n return (\r\n \r\n \r\n {_label}\r\n \r\n {\r\n // Override formik's onChangeEvent Handler\r\n const _value = e.target.value;\r\n await _formikProps.setFieldValue(_key, _value, false); // shouldValidate: false -> don't trigger validations for all fields\r\n await _formikProps.setFieldTouched(_key, true, false); // shouldValidate: false -> don't trigger validations for all fields\r\n // validate only this field\r\n _formikProps.validateField(_key);\r\n\r\n /** At this point <_onChangeCallback()> don't rely on _formikProps for new Values, instead use the _value\r\n * because formik's setFieldValue is a promise and is not updated yet even with await,\r\n * a console.log(_formikProps) at this point will still show the oldValues,\r\n * so use the _value directly instead of relying on the formik props,\r\n */\r\n _onChangeCallback(_formikProps, _value);\r\n }}\r\n >\r\n {_showEmpty ? (\r\n \r\n None\r\n \r\n ) : null}\r\n {_options.map((option) => (\r\n \r\n {option[_optionLabel]}\r\n \r\n ))}\r\n \r\n {_formikProps.errors[_key]}\r\n \r\n );\r\n }\r\n\r\n static getSimpleDropDown = (\r\n _key,\r\n _value,\r\n _label,\r\n _options,\r\n _optionKey,\r\n _optionLabel,\r\n _onChangeCallback = () => { },\r\n _styles = {},\r\n ) => {\r\n const formControlKey = \"fromControl\" + _key;\r\n const labelKey = \"inputLabel\" + _key;\r\n const selectKey = \"select\" + _key;\r\n\r\n return (\r\n \r\n \r\n {_label}\r\n \r\n \r\n {/* {_showEmpty ? ( None) : null} */}\r\n {(_options || []).map((option) => (\r\n \r\n {option[_optionLabel]}\r\n \r\n ))}\r\n \r\n \r\n );\r\n }\r\n\r\n\r\n static getMultiSelect(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _options,\r\n _optionKey,\r\n _optionLabel,\r\n _onChangeCallback = () => { },\r\n _minwidth = \"47%\",\r\n _noOptionsText = \"Not Found\",\r\n ) {\r\n const labelKey = _key + \"label\";\r\n const fcKey = _key + \"fc\";\r\n\r\n return (\r\n \r\n option[_optionLabel]}\r\n getOptionSelected={(option, value) => option[_optionKey] === value[_optionKey]}\r\n // getOptionSelected={(option) =>\r\n // _formikProps.values[_key].find(\r\n // (v) => v[_optionKey] === option[_optionKey]\r\n // )\r\n // }\r\n // handle on change callback\r\n onChange={async (e, newValues, reason) => {\r\n await _formikProps.setFieldValue(_key, newValues, true);\r\n await _formikProps.setFieldTouched(_key, true, false);\r\n /** At this point <_onChangeCallback()> don't rely on _formikProps for new Values, instead use the _newValues\r\n * because formik's setFieldValue is a promise and is not updated yet even with await,\r\n * a console.log(_formikProps) at this point will still show the oldValues,\r\n * so use the newValues directly instead of relying on the formik props,\r\n */\r\n if (_onChangeCallback) { _onChangeCallback(_key, _formikProps, newValues); }\r\n }}\r\n // render in the text in the chip\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {_formikProps.errors[_key]}\r\n \r\n );\r\n }\r\n\r\n static getTextBox = (\r\n _isReadOnly,\r\n _className,\r\n _formikProps,\r\n _validationSchema,\r\n _key,\r\n _label,\r\n _type = \"text\",\r\n _minWidth = \"47%\",\r\n _onChangeDebouncedTextFieldFormikValidator = null,\r\n _onClickCallback = null,\r\n _onChangeCallback = null,\r\n _size = \"small\",\r\n _inputProps = {},\r\n _otherOptions = {},\r\n ) => {\r\n\r\n if (_onClickCallback) {\r\n const hasInputProps = DataService.hasValue(_inputProps) && _inputProps != {};\r\n const linkStyle = { cursor: \"pointer\", textDecoration: \"underline\", color: \"blue\" };\r\n if (hasInputProps) { // append style property to the input props\r\n _inputProps[\"style\"] = linkStyle;\r\n _inputProps[\"readOnly\"] = _isReadOnly;\r\n } else {\r\n _inputProps = { style: linkStyle , readOnly: _isReadOnly};\r\n }\r\n }\r\n\r\n return (\r\n { if (_onClickCallback) { _onClickCallback({ \"value\": _formikProps.values[_key] }); } }}\r\n inputProps={_inputProps}\r\n InputProps={_inputProps}\r\n onChange={async (e) => {\r\n if (_onChangeCallback) {\r\n // Override formik's onChangeEvent Handler\r\n const _value = e.target.value;\r\n await _formikProps.setFieldValue(_key, _value, false); // shouldValidate: false -> don't trigger validations for all fields\r\n await _formikProps.setFieldTouched(_key, true, false); // shouldValidate: false -> don't trigger validations for all fields\r\n // validate only this field\r\n if (\r\n DataService.hasValue(_onChangeDebouncedTextFieldFormikValidator)\r\n ) {\r\n // passing the formik props, because the caller's formik props is not updated yet\r\n _onChangeDebouncedTextFieldFormikValidator.observable.next({ _formikProps, _key, _value });\r\n }\r\n\r\n /** At this point <_onChangeCallback()> don't rely on _formikProps for new Values, instead use the _value\r\n * because formik's setFieldValue is a promise and is not updated yet even with await,\r\n * a console.log(_formikProps) at this point will still show the oldValues,\r\n * so use the _value directly instead of relying on the formik props,\r\n */\r\n _onChangeCallback(_formikProps, _value);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n\r\n static getInputTextBox = (\r\n _isReadOnly,\r\n _multiline,\r\n _noOfRows,\r\n _className,\r\n _formikProps,\r\n _validationSchema,\r\n _key,\r\n _label,\r\n _type = \"text\",\r\n _minWidth = \"47%\",\r\n _onChangeCallback = null,\r\n _size = \"small\",\r\n _inputProps = {},\r\n _otherOptions = {},\r\n ) => {\r\n\r\n return (\r\n {\r\n // Override formik's onChangeEvent Handler\r\n const _value = e.target.value;\r\n await _formikProps.setFieldValue(_key, _value, false); // shouldValidate: false -> don't trigger validations for all fields\r\n await _formikProps.setFieldTouched(_key, true, false); // shouldValidate: false -> don't trigger validations for all fields\r\n\r\n if (_onChangeCallback) {\r\n /** At this point <_onChangeCallback()> don't rely on _formikProps for new Values, instead use the _value\r\n * because formik's setFieldValue is a promise and is not updated yet even with await,\r\n * a console.log(_formikProps) at this point will still show the oldValues,\r\n * so use the _value directly instead of relying on the formik props,\r\n */\r\n _onChangeCallback(_formikProps, _value);\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n static getCheckBox = (\r\n _isReadOnly,\r\n _className,\r\n _formikProps,\r\n _validationSchema,\r\n _key,\r\n _label,\r\n _minWidth = \"47%\",\r\n _onChangeCallback = () => { },\r\n _otherCheckboxOptions = {},\r\n _otherFormControlOptions = {},\r\n _otherFormControlLabelOptions = {},\r\n ) => {\r\n const formControlKey = \"formControl\" + _key;\r\n const formControlLabelKey = \"formControlLabel\" + _key;\r\n const checkboxKey = \"checkBox\" + _key;\r\n\r\n return (\r\n \r\n {\r\n const _value = !DataService.parseBoolean(_formikProps.values[_key]); // inverse the value\r\n\r\n // Override formik's onChangeEvent Handler\r\n _formikProps.setFieldValue(_key, _value, false); // shouldValidate: false -> don't trigger validations for all fields\r\n _formikProps.setFieldTouched(_key, true, false); // shouldValidate: false -> don't trigger validations for all fields\r\n // validate only this field\r\n _formikProps.validateField(_key);\r\n\r\n /** At this point <_onChangeCallback()> don't rely on _formikProps for new Values, instead use the _value\r\n * because formik's setFieldValue is a promise and is not updated yet even with await,\r\n * a console.log(_formikProps) at this point will still show the oldValues,\r\n * so use the _value directly instead of relying on the formik props,\r\n */\r\n _onChangeCallback(_formikProps, _value);\r\n }}\r\n />\r\n }\r\n />\r\n {_formikProps.errors[_key]}\r\n \r\n );\r\n }\r\n\r\n static getDatePicker = (\r\n _isReadOnly,\r\n _className,\r\n _formikProps,\r\n _validationSchema,\r\n _key,\r\n _label,\r\n _minDate = null,\r\n _maxDate = null,\r\n _minWidth = \"47%\",\r\n _onChangeCallback = () => { },\r\n _variant = \"dialog\",\r\n _size = \"small\",\r\n _format = \"yyyy-MM-dd\",\r\n _otherOptions = {},\r\n _disableFutureDates = false\r\n ) => {\r\n return (\r\n {\r\n // Override formik's onChangeEvent Handler\r\n // const _value = e.target.value;\r\n await _formikProps.setFieldValue(_key, _value, false); // shouldValidate: false -> don't trigger validations for all fields\r\n await _formikProps.setFieldTouched(_key, true, false); // shouldValidate: false -> don't trigger validations for all fields\r\n\r\n /** At this point <_onChangeCallback()> don't rely on _formikProps for new Values, instead use the _value\r\n * because formik's setFieldValue is a promise and is not updated yet even with await,\r\n * a console.log(_formikProps) at this point will still show the oldValues,\r\n * so use the _value directly instead of relying on the formik props,\r\n */\r\n _onChangeCallback(_formikProps, _value);\r\n }}\r\n InputProps={{\r\n endAdornment: (\r\n \r\n {MatIconService.DATE}\r\n \r\n ),\r\n }}\r\n disableFuture={_disableFutureDates}\r\n />\r\n );\r\n }\r\n\r\n static getIconButton = (_isReadOnly, _icon, _tooltip, _onClick, _color = \"secondary\", _key = undefined, _tooltipPlacement = \"bottom\", _styles = {}) => {\r\n return (\r\n \r\n \r\n {_icon}\r\n \r\n \r\n );\r\n }\r\n\r\n static getSearchText = (_classes, _key, _value, _onChangeCallback) => {\r\n return (\r\n
\r\n
{MatIconService.SEARCH}
\r\n \r\n
\r\n );\r\n }\r\n\r\n /**\r\n * \r\n * @param _parentThisRef keyword of the Parent-Ccomponent\r\n * @param {*} _onCancelClick Function to call when cancel button is clicked\r\n * @param {*} _onSaveClick *Function to call when cancel button is clicked, inside it Make sure to after save success\r\n * @param {*} _onEditClick incase if there are any* additional actions to perform on onEdit Button Click\r\n */\r\n static getReadOnlyActions = (_parentThisRef, _isNew, _onCancelClick, _onSaveClick, _onEditClick = () => { }) => {\r\n if (_isNew) {\r\n return [\r\n LayoutService.getIconButton(false, MatIconService.OK, \"Create\", _onSaveClick, \"inherit\", \"keyActionSave\"),\r\n LayoutService.getIconButton(false, MatIconService.CANCEL, \"Discard Changes\", _onCancelClick, \"secondary\", \"keyActionCancel\")\r\n ];\r\n } else {\r\n return [\r\n !_parentThisRef.state.isReadOnly ? null : LayoutService.getIconButton(false, MatIconService.EDIT, \"Edit\", () => { _parentThisRef.setState({ isReadOnly: false }); _onEditClick(); }, \"inherit\", \"keyActionEdit\"),\r\n _parentThisRef.state.isReadOnly ? null : LayoutService.getIconButton(false, MatIconService.OK, \"Save\", _onSaveClick, \"inherit\", \"keyActionSave\"),\r\n LayoutService.getIconButton(false, MatIconService.CANCEL, _parentThisRef.state.isReadOnly ? \"Close\" : \"Discard Changes\", _onCancelClick, \"secondary\", \"keyActionCancel\")\r\n ];\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param _parentThisRef keyword of the Parent-Ccomponent\r\n * @param {*} _isPermitted Permission check\r\n * @param {*} _isNew New or update\r\n * @param {*} _onCancelClick Function to call when cancel button is clicked\r\n * @param {*} _onSaveClick *Function to call when cancel button is clicked, inside it Make sure to after save success\r\n * @param {*} _onEditClick incase if there are any* additional actions to perform on onEdit Button Click\r\n */\r\n static getControlledReadOnlyActions = (_parentThisRef, _isPermitted, _isNew, _onCancelClick, _onSaveClick, _onEditClick = () => { }) => {\r\n if (_isNew) {\r\n return [\r\n LayoutService.getIconButton(false, MatIconService.OK, \"Create\", _onSaveClick, \"inherit\", \"keyActionSave\"),\r\n LayoutService.getIconButton(false, MatIconService.CANCEL, \"Discard Changes\", _onCancelClick, \"secondary\", \"keyActionCancel\")\r\n ];\r\n } else {\r\n return !_isPermitted ?\r\n [LayoutService.getIconButton(false, MatIconService.CANCEL, _parentThisRef.state.isReadOnly ? \"Close\" : \"Discard Changes\", _onCancelClick, \"secondary\", \"keyActionCancel\")]\r\n : [\r\n !_parentThisRef.state.isReadOnly ? null : LayoutService.getIconButton(false, MatIconService.EDIT, \"Edit\", () => { _parentThisRef.setState({ isReadOnly: false }); _onEditClick(); }, \"inherit\", \"keyActionEdit\"),\r\n _parentThisRef.state.isReadOnly ? null : LayoutService.getIconButton(false, MatIconService.OK, \"Save\", _onSaveClick, \"inherit\", \"keyActionSave\"),\r\n LayoutService.getIconButton(false, MatIconService.CANCEL, _parentThisRef.state.isReadOnly ? \"Close\" : \"Discard Changes\", _onCancelClick, \"secondary\", \"keyActionCancel\")\r\n ];\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param _parentThisRef keyword of the Parent-Ccomponent\r\n * @param {*} _onCancelClick Function to call when cancel button is clicked\r\n * @param {*} _onSaveClick *Function to call when cancel button is clicked, inside it Make sure to after save success\r\n * @param {*} _onEditClick incase if there are any* additional actions to perform on onEdit Button Click\r\n */\r\n static getReadOnlyHeaderActions = (_parentThisRef, _isNew, _onCancelClick, _onSaveClick, _onEditClick = () => { }) => {\r\n if (_isNew) {\r\n return [\r\n { icon: MatIconService.OK, iconColor: \"primary\", isReadOnly: false, onClick: _onSaveClick, title: \"Create\" },\r\n { icon: MatIconService.CANCEL, iconColor: \"secondary\", isReadOnly: false, onClick: _onCancelClick, title: \"Discard Changes\" },\r\n ];\r\n } else {\r\n return [\r\n !_parentThisRef.state.isReadOnly ? null :\r\n {\r\n icon: MatIconService.EDIT, isReadOnly: false, title: \"Edit\", onClick: () => {\r\n _parentThisRef.setState({ isReadOnly: false });\r\n _onEditClick();\r\n }\r\n },\r\n _parentThisRef.state.isReadOnly ? null : { icon: MatIconService.OK, isReadOnly: false, onClick: _onSaveClick, title: \"Save\" },\r\n { icon: MatIconService.CANCEL, iconColor: \"secondary\", isReadOnly: false, onClick: _onCancelClick, title: _parentThisRef.state.isReadOnly ? \"Close\" : \"Discard Changes\" },\r\n ];\r\n }\r\n }\r\n\r\n\r\n static getReadOnlyActionsSolo = (_parentThisRef, _isNew, _onSaveClick, _onEditClick = () => { }) => {\r\n if (_isNew) {\r\n return [\r\n LayoutService.getIconButton(false, MatIconService.OK, \"Create\", _onSaveClick, \"inherit\", \"keyActionSave\"),\r\n ];\r\n } else {\r\n return [\r\n !_parentThisRef.state.isReadOnly ? null :\r\n LayoutService.getIconButton(false, MatIconService.EDIT, \"Edit\", () => {\r\n _parentThisRef.setState({ isReadOnly: false });\r\n _onEditClick();\r\n }, \"inherit\", \"keyActionEdit\"),\r\n _parentThisRef.state.isReadOnly ? null : LayoutService.getIconButton(false, MatIconService.OK, \"Save\", _onSaveClick, \"inherit\", \"keyActionSave\"),\r\n ];\r\n }\r\n }\r\n\r\n /**\r\n * // Fix for Issue: https://github.com/jquense/yup/issues/500 \r\n * @param {*} _yupValidationObj \r\n */\r\n static getNullableValidation = (_yupValidationObj) => {\r\n // Fix for Issue: https://github.com/jquense/yup/issues/500\r\n return _yupValidationObj.nullable(true).transform((n, o) => { return (o === '' || o === \"\" || n === NaN) ? null : n; })\r\n }\r\n\r\n\r\n /**\r\n * Dialog rto be rendered inside a container componenet\r\n * @param {*} _container Dialog can be render inside the container\r\n */\r\n static getContainedDialogProps = (_scroll = true, _container = document.getElementById(\"divContainerWrapper\")) => {\r\n //const divContainerWrapper = document.getElementById(\"divContainerWrapper\");\r\n return {\r\n disableEnforceFocus: true, // disables the mechanism that prevents focus leaving the dialog\r\n fullScreen: true,\r\n scroll: _scroll ? \"paper\" : \"body\",\r\n style: { position: 'absolute' },\r\n container: _container, // inside which this dialog should render\r\n BackdropProps: {\r\n style: { position: 'absolute', backgroundColor: MatThemeService.getBaseBG() }\r\n },\r\n PaperProps: {\r\n style: { backgroundColor: MatThemeService.getBaseBG() }\r\n }\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n\r\n\r\n static getKey(id) {\r\n return \"Key\" + id + MomentService.getRandomTimeStamp();\r\n }\r\n\r\n static buildWithErrorModel(_model) {\r\n const modelKeys = Object.keys(_model);\r\n modelKeys.forEach((modelKey) => {\r\n _model[modelKey + \"_error\"] = null;\r\n });\r\n return _model;\r\n }\r\n static removeErrorModel(_model) {\r\n const errorKeys = Object.keys(_model).filter((k) => k.endsWith(\"_error\"));\r\n errorKeys.forEach((_errorKey) => {\r\n delete _model[_errorKey];\r\n });\r\n return _model;\r\n }\r\n\r\n static getHocComponenet(component) {\r\n return withStyles(MatClassService)(withRouter(component));\r\n }\r\n\r\n /**\r\n * Make Sure to import -dark theme in the component :\r\n import \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n * \r\n */\r\n static getAgGridStyles(\r\n _excludeHeight = 184,\r\n _totalVh = 100,\r\n _width = \"100%\"\r\n ) {\r\n return {\r\n style: {\r\n height: `calc(${_totalVh}vh - ${_excludeHeight}px)`,\r\n width: `${_width}`,\r\n },\r\n className: MatThemeService.isDarkMode()\r\n ? \"ag-theme-balham-dark\"\r\n : \"ag-theme-balham\",\r\n };\r\n }\r\n\r\n static getAgGridTheme() {\r\n return {\r\n className: MatThemeService.isDarkMode()\r\n ? \"ag-theme-balham-dark\"\r\n : \"ag-theme-balham\",\r\n };\r\n }\r\n\r\n static getInputProps(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _isRequired = true,\r\n _size = \"small\"\r\n ) {\r\n return {\r\n disabled: _isReadOnly,\r\n className: _classes.dialogControl,\r\n id: _key,\r\n name: _key,\r\n label: _label,\r\n value: _formikProps.values[_key],\r\n onChange: _formikProps.handleChange,\r\n onBlur: _formikProps.handleBlur,\r\n error:\r\n _formikProps.errors[_key] !== undefined &&\r\n _formikProps.errors[_key] !== null,\r\n helperText: _formikProps.errors[_key],\r\n variant: MatThemeService.inputVariant,\r\n required: _isRequired,\r\n size: _size,\r\n };\r\n }\r\n\r\n static getInputProps2(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _isRequired = true,\r\n _size = \"small\",\r\n _helperText = \"\",\r\n ) {\r\n return {\r\n disabled: _isReadOnly,\r\n className: _classes.dialogControl,\r\n id: _key,\r\n name: _key,\r\n label: _label,\r\n value: _formikProps.values[_key],\r\n onBlur: _formikProps.handleBlur,\r\n error:\r\n _formikProps.errors[_key] !== undefined &&\r\n _formikProps.errors[_key] !== null,\r\n helperText: _helperText,\r\n variant: MatThemeService.inputVariant,\r\n required: _isRequired,\r\n size: _size,\r\n };\r\n }\r\n\r\n static getDateProps(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _isRequired = true,\r\n _variant = \"dialog\",\r\n _size = \"small\"\r\n ) {\r\n return {\r\n disabled: _isReadOnly,\r\n className: _classes.dialogControl,\r\n id: _key,\r\n name: _key,\r\n label: _label,\r\n value: _formikProps.values[_key],\r\n onChange: (e) => {\r\n _formikProps.setFieldValue(_key, e, true);\r\n _formikProps.setFieldTouched(_key, true, false);\r\n },\r\n onBlur: _formikProps.handleBlur,\r\n error:\r\n _formikProps.errors[_key] !== undefined &&\r\n _formikProps.errors[_key] !== null,\r\n helperText: _formikProps.errors[_key],\r\n variant: _variant,\r\n clearable: true, // works only if the above variant is dialog\r\n required: _isRequired,\r\n size: _size,\r\n inputVariant: MatThemeService.inputVariant\r\n };\r\n }\r\n\r\n static getTimeProps(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _isRequired = true,\r\n _variant = \"dialog\",\r\n _size = \"small\"\r\n ) {\r\n return {\r\n disabled: _isReadOnly,\r\n className: _classes.dialogControl,\r\n id: _key,\r\n name: _key,\r\n label: _label,\r\n value: _formikProps.values[_key],\r\n onChange: (e) => {\r\n //e = e.toTimeString().substring(0, 8);\r\n _formikProps.setFieldValue(_key, e, true);\r\n _formikProps.setFieldTouched(_key, true, false);\r\n },\r\n onBlur: _formikProps.handleBlur,\r\n error:\r\n _formikProps.errors[_key] !== undefined &&\r\n _formikProps.errors[_key] !== null,\r\n helperText: _formikProps.errors[_key],\r\n variant: _variant,\r\n clearable: true, // works only if the above variant is dialog\r\n required: _isRequired,\r\n size: _size,\r\n inputVariant: MatThemeService.inputVariant\r\n };\r\n }\r\n\r\n static handleFormikValueChange(e, input, formikProps) {\r\n formikProps.formikHandleChange(e);\r\n }\r\n\r\n /**\r\n * Depricated, use getDropDown() instead -> the function with callback\r\n */\r\n static getSelectControl(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _options,\r\n _optionKey,\r\n _optionLabel,\r\n _minwidth = \"47%\",\r\n _showEmpty = false,\r\n ) {\r\n // console.log(_label, _formikProps.values[_key]);\r\n const labelKey = _key + \"label\";\r\n const formControlKey = _key + \"form_control\";\r\n return (\r\n \r\n {_label}\r\n {\r\n _formikProps.setFieldValue(_key, e.target.value, true);\r\n _formikProps.setFieldTouched(_key, true, false);\r\n }}\r\n >\r\n {_showEmpty ? (\r\n \r\n None\r\n \r\n ) : null}\r\n {(_options || []).map((option) => (\r\n \r\n {option[_optionLabel]}\r\n \r\n ))}\r\n \r\n {_formikProps.errors[_key]}\r\n \r\n );\r\n }\r\n\r\n /**\r\n * Depricated, use getDropDown() instead -> the function with callback\r\n */\r\n static getSelectControlOutlined(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _options,\r\n _optionKey,\r\n _optionLabel,\r\n _minwidth = \"47%\",\r\n _showEmpty = false,\r\n ) {\r\n // console.log(_label, _formikProps.values[_key]);\r\n const labelKey = _key + \"label\";\r\n return (\r\n \r\n {_label}\r\n {\r\n _formikProps.setFieldValue(_key, e.target.value, true);\r\n _formikProps.setFieldTouched(_key, true, false);\r\n }}\r\n >\r\n {_showEmpty ? (\r\n \r\n None\r\n \r\n ) : null}\r\n {(_options || []).map((option) => (\r\n \r\n {option[_optionLabel]}\r\n \r\n ))}\r\n \r\n {_formikProps.errors[_key]}\r\n \r\n );\r\n }\r\n\r\n static getSwitch(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _isRequired = true,\r\n _minwidth = \"47%\",\r\n _size = \"medium\",\r\n _onChangeCallback = null\r\n ) {\r\n const labelKey = _key + \"_switch\";\r\n const formControlKey = _key + \"_formControl\";\r\n\r\n return (\r\n \r\n {\r\n _formikProps.setFieldValue(_key, e.target.checked, true);\r\n _formikProps.setFieldTouched(_key, true, false);\r\n if (_onChangeCallback) { _onChangeCallback(e.target.checked); }\r\n }}\r\n />\r\n }\r\n />\r\n {_formikProps.errors[_key]}\r\n \r\n );\r\n }\r\n static getChipSelect(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _options,\r\n _optionKey,\r\n _optionLabel,\r\n _onChangeCallback,\r\n _minwidth = \"47%\",\r\n _noOptionsText = \"Not Found\",\r\n ) {\r\n const labelKey = _key + \"label\";\r\n return (\r\n \r\n option[_optionLabel]}\r\n getOptionSelected={(option) =>\r\n _formikProps.values[_key].find(\r\n (v) => v[_optionKey] === option[_optionKey]\r\n )\r\n }\r\n // handle on change callback\r\n onChange={async (e, newValues, reason) => {\r\n await _formikProps.setFieldValue(_key, newValues, true);\r\n await _formikProps.setFieldTouched(_key, true, false);\r\n /** At this point <_onChangeCallback()> don't rely on _formikProps for new Values, instead use the _newValues\r\n * because formik's setFieldValue is a promise and is not updated yet even with await,\r\n * a console.log(_formikProps) at this point will still show the oldValues,\r\n * so use the newValues directly instead of relying on the formik props,\r\n */\r\n _onChangeCallback(_formikProps, newValues);\r\n }}\r\n // render in the text in the chip\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {_formikProps.errors[_key]}\r\n \r\n );\r\n }\r\n\r\n static getChipSelect2(\r\n _isReadOnly,\r\n _classes,\r\n _formikProps,\r\n _key,\r\n _label,\r\n _options,\r\n _optionKey,\r\n _optionLabel,\r\n _defaultValue,\r\n stateHandler,\r\n _minwidth = \"47%\",\r\n ) {\r\n const labelKey = _key + \"label\";\r\n return (\r\n \r\n option[_optionLabel]}\r\n onChange={(e, newVal, reason) => {\r\n stateHandler(newVal);\r\n }}\r\n renderInput={(params) => (\r\n \r\n )}\r\n />\r\n {/* Chip Select Error */}\r\n \r\n );\r\n }\r\n\r\n}","import React from \"react\";\r\nimport { AppBar, Typography, Button, DialogTitle, Grid, Toolbar, IconButton } from \"@material-ui/core\";\r\nimport LayoutService from \"../services/layoutService\";\r\nimport { MatIconService } from \"../services/theme/matIconService\";\r\n\r\nclass AccessDeniedComponent extends React.Component {\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n <>\r\n \r\n {MatIconService.DENIED}\r\n {this.props.title}\r\n {this.props.showCancel ? {MatIconService.CANCEL} : <>}\r\n \r\n \r\n {this.props.message}\r\n \r\n \r\n );\r\n }\r\n //---\r\n}\r\nexport default LayoutService.getHocComponenet(AccessDeniedComponent);","import React from \"react\";\r\nimport RolePermissionService from \"./rolePermissionService\";\r\n\r\n/**\r\n * Author : Pradeep_Rajendran@epam.com\r\n */\r\nexport default class RolePermissionInfo {\r\n\r\n /** componenet Id (i.e) permssion Id */\r\n permissionId = 0;\r\n /** componenet Name (i.e) permssion Name*/\r\n componenetName = \"\";\r\n\r\n canCreate = false;\r\n cannotCreate = true;\r\n\r\n canView = false;\r\n cannotView = true;\r\n\r\n canEdit = false;\r\n cannotEdit = true;\r\n\r\n canDelete = false;\r\n cannotDelete = true;\r\n\r\n canConfigure = false;\r\n cannotConfigure = true;\r\n\r\n canViewDeleted = false;\r\n cannotViewDeleted = true;\r\n\r\n canCreateOrEdit = false;\r\n cannotCreateOrEdit = true;\r\n\r\n canViewOrEdit = false;\r\n cannotViewOrEdit = true;\r\n\r\n /**\r\n * \r\n * @param {*} _permissionId Componenet (Permsssion) Id\r\n * @param {*} _componenetName Component Name\r\n */\r\n constructor(_permissionId, _componenetName, fullPermission = false) {\r\n this.permissionId = _permissionId;\r\n this.componenetName = _componenetName;\r\n\r\n // -1 to ignore\r\n if (RolePermissionService.IS_TENANT_ADMIN || _permissionId === -1 || RolePermissionService.isValidPermissionId(_permissionId)) {\r\n // tenantAdmin has full privileges\r\n\r\n this.canCreate = RolePermissionService.IS_TENANT_ADMIN || fullPermission || RolePermissionService.canCreate(this.permissionId);\r\n this.cannotCreate = !this.canCreate;\r\n\r\n this.canView = RolePermissionService.IS_TENANT_ADMIN || fullPermission || RolePermissionService.canView(this.permissionId);\r\n this.cannotView = !this.canView;\r\n\r\n this.canEdit = RolePermissionService.IS_TENANT_ADMIN || fullPermission || RolePermissionService.canEdit(this.permissionId);\r\n this.cannotEdit = !this.canEdit;\r\n\r\n\r\n this.canDelete = RolePermissionService.IS_TENANT_ADMIN || fullPermission || RolePermissionService.canDelete(this.permissionId);\r\n this.cannotDelete = !this.canDelete;\r\n\r\n this.canConfigure = RolePermissionService.IS_TENANT_ADMIN || fullPermission || RolePermissionService.canConfigure(this.permissionId);\r\n this.cannotConfigure = !this.canConfigure;\r\n\r\n this.canViewDeleted = RolePermissionService.IS_TENANT_ADMIN || fullPermission || RolePermissionService.canViewDeleted(this.permissionId);\r\n this.cannotViewDeleted = !this.canViewDeleted;\r\n\r\n //---derived--------------------\r\n\r\n this.canCreateOrEdit = this.canCreate || this.canEdit;\r\n this.cannotCreateOrEdit = !this.canCreateOrEdit;\r\n\r\n this.canViewOrEdit = this.canView || this.canEdit;\r\n this.cannotViewOrEdit = !this.canViewOrEdit;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * \r\n * @param {*} _permissionId Componenet (Permsssion) Id\r\n * @param {*} _componenetName Component Name\r\n */\r\n static GET = (_permissionId, _componenetName) => {\r\n return new RolePermissionInfo(_permissionId, _componenetName);\r\n }\r\n\r\n /**\r\n * Returns an uninitialized object for providing the developer intelisense during implementation\r\n * @returns \r\n */\r\n static INIT = (_fullPermission = false) => {\r\n return new RolePermissionInfo(-1, \"uninitialized\", _fullPermission);\r\n }\r\n\r\n //---\r\n\r\n}","import React from \"react\";\r\nimport { of } from \"rxjs\"\r\nimport ApiService from \"../services/apiService\";\r\nimport { DataService } from \"../services/dataService\";\r\nimport ToastService from \"../services/toastService\";\r\nimport { API_ENDPOINT } from \"../types/enums\";\r\nimport AccessDeniedComponent from \"./accessDeniedComponent\";\r\nimport RolePermissionInfo from \"./rolePermissionInfo\";\r\n\r\n/**\r\n * Author : Pradeep_Rajendran@epam.com\r\n */\r\nexport default class RolePermissionService {\r\n\r\n static PORZIO_TENANT_ID = 1;\r\n static TEANANT_ADMIN_ROLE_ID = 1;\r\n // user info\r\n static USER = {};\r\n static USER_ID = -1;\r\n static USER_TENANT_ID = -1;\r\n static USER_ROLE_ID = -1;\r\n static IS_PORZIO_USER = false;\r\n\r\n static IS_TENANT_ADMIN = false;\r\n static IS_NOT_TENANT_ADMIN = true;\r\n\r\n static IZENDA_REPORT_USER_TYPE_IDs = [4];\r\n\r\n // powerBi related configs\r\n static powerBIPermissionID = 292;\r\n static powerBIPermissionIDs = [RolePermissionService.powerBIPermissionID];\r\n static hasOnlyPowerBIAccess = true; // will be set if any other permission has view Permission\r\n\r\n // cache\r\n static configurationMAP = new Map();\r\n\r\n static fetchPermissionsOBS = (_USER) => {\r\n RolePermissionService.IS_CONFIGURED = false;\r\n // temp\r\n RolePermissionService.USER = _USER;\r\n RolePermissionService.USER_ID = _USER.userId;\r\n RolePermissionService.USER_TENANT_ID = _USER.tenantId;\r\n RolePermissionService.IS_PORZIO_USER = _USER.isPorzioUser;\r\n\r\n RolePermissionService.USER_ROLE_ID = _USER.roleId;\r\n // RolePermissionService.USER_ROLE_ID = 47; // TODO: Role Override 1/2 (enable/disable)\r\n\r\n // TODO: If the user userTypeID is 3, then consider the user as tenant admin and ignore the assigned role\r\n RolePermissionService.IS_TENANT_ADMIN = (RolePermissionService.USER_ROLE_ID === RolePermissionService.TEANANT_ADMIN_ROLE_ID);\r\n RolePermissionService.IS_NOT_TENANT_ADMIN = !RolePermissionService.IS_TENANT_ADMIN;\r\n if (RolePermissionService.IS_TENANT_ADMIN) {\r\n RolePermissionService.hasOnlyPowerBIAccess = false; // tenant admin can access anything\r\n }\r\n\r\n if ((RolePermissionService.USER_TENANT_ID === RolePermissionService.PORZIO_TENANT_ID)) {\r\n return of([]);\r\n } else {\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, `/Permission/FetchPermissionsView?tenantId=${RolePermissionService.USER_TENANT_ID}&roleId=${RolePermissionService.USER_ROLE_ID}`);\r\n }\r\n }\r\n\r\n static CONFIGURE = (_permissionsArray) => {\r\n if (RolePermissionService.PORZIO_TENANT_ID === RolePermissionService.USER_TENANT_ID) {\r\n RolePermissionService.IS_TENANT_ADMIN = true;\r\n RolePermissionService.IS_NOT_TENANT_ADMIN = false;\r\n\r\n //preload permissions\r\n RolePermissionService.CACHE();\r\n } else {\r\n // sort\r\n _permissionsArray = _permissionsArray.sort((x, y) => x.permissionId - y.permissionId);\r\n // console.log(\"permissions\", _permissionsArray)\r\n\r\n RolePermissionService.configurationMAP = new Map();\r\n _permissionsArray.forEach(_permission => {\r\n // build\r\n let actionMAP = new Map();\r\n _permission.actionsList.forEach(action => {\r\n actionMAP.set(action.actionId, action.isApplicable && action.hasAccess);\r\n });\r\n RolePermissionService.configurationMAP.set(_permission.permissionId, actionMAP);\r\n });\r\n // console.log(\"Parsed\", RolePermissionService.configurationMAP);\r\n\r\n //preload permissions\r\n RolePermissionService.CACHE();\r\n }\r\n }\r\n\r\n\r\n static createActionId = 1;\r\n static canCreate = (_permissionId) => { return RolePermissionService._canPerformAction(_permissionId, RolePermissionService.createActionId); }\r\n\r\n static viewActionId = 2;\r\n static canView = (_permissionId) => {\r\n const _canView = RolePermissionService._canPerformAction(_permissionId, RolePermissionService.viewActionId);\r\n\r\n // role has view permissions other than powerbi \r\n if (!RolePermissionService.powerBIPermissionIDs.includes(_permissionId) && _canView) {\r\n RolePermissionService.hasOnlyPowerBIAccess = false;\r\n }\r\n\r\n return _canView;\r\n }\r\n\r\n static editActionId = 3;\r\n static canEdit = (_permissionId) => { return RolePermissionService._canPerformAction(_permissionId, RolePermissionService.editActionId); }\r\n\r\n static deleteActionId = 4;\r\n static canDelete = (_permissionId) => { return RolePermissionService._canPerformAction(_permissionId, RolePermissionService.deleteActionId); }\r\n\r\n static configureActionId = 5;\r\n static canConfigure = (_permissionId) => { return RolePermissionService._canPerformAction(_permissionId, RolePermissionService.configureActionId); }\r\n\r\n static viewDeletedActionId = 6;\r\n static canViewDeleted = (_permissionId) => { return RolePermissionService._canPerformAction(_permissionId, RolePermissionService.viewDeletedActionId); }\r\n\r\n\r\n //#region \"Internals\"\r\n\r\n static _canPerformAction = (_permissionId, _actionId) => {\r\n if (_actionId < 1 || _actionId > 6) { // should be between 1 to 6\r\n ToastService.showWarning(\"Invalid _actionId, check the console log\");\r\n console.warn(`Invalid _actionId : ${_actionId}`, RolePermissionService.configurationMAP);\r\n return null;\r\n }\r\n else if (_permissionId === -1) { return false }\r\n else {\r\n const permissionActionsMap = RolePermissionService.configurationMAP.get(_permissionId);\r\n if (DataService.mapHasNoElements(permissionActionsMap) || !permissionActionsMap.has(_actionId)) {\r\n ToastService.showWarning(\"No Actions Mapped for this Permission, check the console log\");\r\n console.warn(`No Actions Mapped for this PermissionId (${_permissionId}) & ActionId (${_actionId}).`, RolePermissionService.configurationMAP);\r\n return null;\r\n } else {\r\n // return true/false based on (action.isApplicable && action.hasAccess)\r\n return permissionActionsMap.get(_actionId);\r\n }\r\n }\r\n }\r\n\r\n static isValidPermissionId = (_permissionId) => {\r\n // check permission id\r\n if (!DataService.isValidNumber(_permissionId) || !RolePermissionService.configurationMAP.has(_permissionId)) {\r\n ToastService.showWarning(\"Invalid _permissionId, check the console log\");\r\n console.warn(`Invalid _permissionId : ${_permissionId}`, RolePermissionService.configurationMAP);\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n static getAccessDeniedComponent = (_classes, _onClose, _showCancel = true, _title = \"Access Denied\",\r\n _message = `Your Role has insufficient privilege to perform this action.`\r\n ) => {\r\n return ();\r\n }\r\n\r\n static showAccessDeniedToast = (_message = \"Your Role has insufficient privilege to perform this action.\") => {\r\n ToastService.showWarning(_message);\r\n }\r\n\r\n //#region \"CACHE\"\r\n\r\n static IS_CONFIGURED = false;\r\n\r\n static isTenantReportSubscriptionsAllowed = () => {\r\n return RolePermissionService.USER_TENANT_ID === RolePermissionService.PORZIO_TENANT_ID;\r\n }\r\n static isTenantReportSubscriptionsNotAllowed = () => {\r\n return !RolePermissionService.isTenantReportSubscriptionsAllowed();\r\n }\r\n\r\n static isIzendaReportsNotAllowed = () => {\r\n return !RolePermissionService.isIzendaReportsAllowed();\r\n }\r\n\r\n static isIzendaReportsAllowed = () => {\r\n let oRET = false;\r\n if (\r\n RolePermissionService.USER_TENANT_ID === RolePermissionService.PORZIO_TENANT_ID &&\r\n RolePermissionService.IS_PORZIO_USER &&\r\n RolePermissionService.IZENDA_REPORT_USER_TYPE_IDs.includes(RolePermissionService.USER.userTypeId)\r\n ) {\r\n oRET = true;\r\n }\r\n\r\n return oRET;\r\n }\r\n\r\n // PROFILES\r\n static PROFILE_CENTER = RolePermissionInfo.INIT();\r\n static PROFILE_DETAILS = RolePermissionInfo.INIT();\r\n static PROFILE_DETAILS_STATUS = RolePermissionInfo.INIT();\r\n // static PROFILE_DETAILS_STATUS_ACTIVE = RolePermissionInfo.INIT();\r\n static PROFILE_DETAILS_ADDRESS = RolePermissionInfo.INIT();\r\n static PROFILE_DETAILS_CONTACT_METHOD = RolePermissionInfo.INIT();\r\n static PROFILE_TASK = RolePermissionInfo.INIT();\r\n static PROFILE_AGREEMENTS = RolePermissionInfo.INIT();\r\n static PROFILE_CONSENTS = RolePermissionInfo.INIT();\r\n static PROFILE_TRANSACTIONS = RolePermissionInfo.INIT();\r\n static PROFILE_DOCUMENTS = RolePermissionInfo.INIT();\r\n static PROFILE_LINKED_PROFILES = RolePermissionInfo.INIT();\r\n static PROFILE_IDENTITIFERS = RolePermissionInfo.INIT();\r\n static PROFILE_REFERENCE_DATA = RolePermissionInfo.INIT();\r\n static PROFILE_EXPANDED_VIEW = RolePermissionInfo.INIT();\r\n static PROFILE_EXPANDED_BULK_EDIT = RolePermissionInfo.INIT();\r\n static PROFILE_EXPANDED_BULK_STATUS_FIELD = RolePermissionInfo.INIT();\r\n static PROFILE_EXPANDED_VIEW_EXPORT = RolePermissionInfo.INIT();\r\n static PROFILE_EXPANDED_VIEW_TASK = RolePermissionInfo.INIT();\r\n\r\n // TRANSACTIONS\r\n static TRANSACTION_CENTER = RolePermissionInfo.INIT();\r\n static TRANSACTION_DETAILS = RolePermissionInfo.INIT();\r\n static TRANSACTION_STATUS = RolePermissionInfo.INIT();\r\n static TRANSACTION_RECIPINET_INFORMATION = RolePermissionInfo.INIT();\r\n static TRANSACTION_AGREEMENTS = RolePermissionInfo.INIT();\r\n static TRANSACTION_RELATED_DOCUMENTS = RolePermissionInfo.INIT();\r\n static TRANSACTION_REPORT_REFERENCES = RolePermissionInfo.INIT();\r\n static TRANSACTION_TASK = RolePermissionInfo.INIT();\r\n static TRANSACTION_CLONE_OR_COPY = RolePermissionInfo.INIT();\r\n static TRANSACTION_PRINT = RolePermissionInfo.INIT();\r\n static TRANSACTION_AUDIT = RolePermissionInfo.INIT();\r\n static TRANSACTION_EXPANDED_VIEW = RolePermissionInfo.INIT();\r\n static TRANSACTION_EXPANDED_BULK_EDIT = RolePermissionInfo.INIT();\r\n static TRANSACTION_EXPANDED_STATUS_FIELD = RolePermissionInfo.INIT();\r\n static TRANSACTION_EXPANDED_RECIPIENT_INFORMATION_FIELDS = RolePermissionInfo.INIT();\r\n static TRANSACTION_EXPANDED_EXPORT = RolePermissionInfo.INIT();\r\n static TRANSACTION_EXPANDED_TASK = RolePermissionInfo.INIT();\r\n\r\n // AGREEMENTS\r\n static AGREEMENTS = RolePermissionInfo.INIT();\r\n static AGREEMENT_DETAIL = RolePermissionInfo.INIT();\r\n static AGREEMENT_CONSENT = RolePermissionInfo.INIT();\r\n static AGREEMENT_DOCUMENTS = RolePermissionInfo.INIT();\r\n static AGREEMENT_TRANSACTIONS = RolePermissionInfo.INIT();\r\n\r\n // SOURCE_MAP - SOURCE_FILE\r\n static SOURCE_FILE_LIST = RolePermissionInfo.INIT();\r\n static SOURCE_FILE_LIST_EXPORT = RolePermissionInfo.INIT();\r\n static SOURCE_FILE_DETAIL = RolePermissionInfo.INIT();\r\n // static SOURCE_FILE_DETAIL_AUDIT = RolePermissionInfo.INIT();\r\n\r\n // BUSINESS-RULES\r\n static BUSINESS_RULE_LIST = RolePermissionInfo.INIT();\r\n static BUSINESS_RULE_LIST_EXPORT = RolePermissionInfo.INIT();\r\n static BUSINESS_RULE_DETAIL = RolePermissionInfo.INIT();\r\n // static BUSINESS_RULE_DETAIL_AUDIT = RolePermissionInfo.INIT();\r\n\r\n // POWER-BI\r\n static POWER_BI_REPORT = RolePermissionInfo.INIT();\r\n\r\n\r\n // USER-MANAGEMENT\r\n static ROLE_LIST = RolePermissionInfo.INIT();\r\n static ROLE_LIST_EXPORT = RolePermissionInfo.INIT();\r\n static ROLE_DETAIL = RolePermissionInfo.INIT();\r\n static ROLE_DETAIL_TYPE_PORZIO_LS = RolePermissionInfo.INIT();\r\n static ROLE_DETAIL_TYPE_CUSTOMER = RolePermissionInfo.INIT();\r\n static ROLE_DETAIL_PORZIO_REQUIRED = RolePermissionInfo.INIT();\r\n static ROLE_PERMISSIONS = RolePermissionInfo.INIT();\r\n // static ROLE_MEMBERS = RolePermissionInfo.INIT();\r\n // static ROLE_MEMBERS_EXPORT = RolePermissionInfo.INIT();\r\n static USER_LIST = RolePermissionInfo.INIT();\r\n static USER_LIST_EXPORT = RolePermissionInfo.INIT();\r\n static USER_DETAIL_PERSONAL_INFORMATION = RolePermissionInfo.INIT();\r\n static USER_DETAIL_PERSONAL_INFORMATION_PRIMARY_EMAIL = RolePermissionInfo.INIT();\r\n static USER_DETAIL_PERSONAL_INFORMATION_ROLES = RolePermissionInfo.INIT();\r\n static USER_DETAIL_PERSONAL_INFORMATION_ACTIVE_INACTIVE = RolePermissionInfo.INIT();\r\n static USER_DETAIL_PERSONAL_INFORMATION_ORG_MEMBERSHIP = RolePermissionInfo.INIT();\r\n // static USER_DETAIL_AUTHENTICATION = RolePermissionInfo.INIT();\r\n static USER_DETAIL_COMMUNICATIONS = RolePermissionInfo.INIT();\r\n\r\n\r\n // FIELD-MANAGEMENT\r\n static PORZIO_FIELD_LIST = RolePermissionInfo.INIT();\r\n static PORZIO_FIELD_LIST_EXPORT = RolePermissionInfo.INIT();\r\n static PORZIO_FIELD_DETAIL = RolePermissionInfo.INIT();\r\n //---\r\n static CUSTOMER_FIELD_LIST = RolePermissionInfo.INIT();\r\n static CUSTOMER_FIELD_LIST_EXPORT = RolePermissionInfo.INIT();\r\n static FIELD_DETAIL = RolePermissionInfo.INIT();\r\n\r\n // FIELD-VALUE-MAPPING\r\n static DEFAULT_MAPPING_LIST = RolePermissionInfo.INIT();\r\n static DEFAULT_MAPPING_EXPORT = RolePermissionInfo.INIT();\r\n static DEFAULT_MAPPING_DETAIL = RolePermissionInfo.INIT();\r\n static COMPLIANCE_REPORT_MAPPING_LIST = RolePermissionInfo.INIT();\r\n static COMPLIANCE_REPORT_MAPPING_EXPORT = RolePermissionInfo.INIT();\r\n static COMPLIANCE_REPORT_MAPPING_DETAIL = RolePermissionInfo.INIT();\r\n static CONSENT_MAPPING_LIST = RolePermissionInfo.INIT();\r\n static CONSENT_MAPPING_EXPORT = RolePermissionInfo.INIT();\r\n static CONSENT_MAPPING_DETAIL = RolePermissionInfo.INIT();\r\n\r\n // TENANT SETUP\r\n static TENANT_DETAIL = RolePermissionInfo.INIT();\r\n\r\n // MASTER-DATA\r\n //---PRODUCT\r\n static PRODUCT = RolePermissionInfo.INIT();\r\n static PRODUCT_DETAIL = RolePermissionInfo.INIT();\r\n //---SALESREP\r\n static SALESREP = RolePermissionInfo.INIT();\r\n static SALESREP_DETAIL = RolePermissionInfo.INIT();\r\n //---MATERIALS-INFO\r\n static MATERIAL = RolePermissionInfo.INIT();\r\n static MATERIAL_DETAIL = RolePermissionInfo.INIT();\r\n //---STUDY-MASTER\r\n static STUDY = RolePermissionInfo.INIT();\r\n static STUDY_DETAIL = RolePermissionInfo.INIT();\r\n //---HCP-MASTER\r\n static HCP = RolePermissionInfo.INIT();\r\n //static HCP_DETAIL = RolePermissionInfo.INIT();\r\n\r\n //HOME-SCREEN\r\n //---NEWSFEED\r\n static NEWSFEED = RolePermissionInfo.INIT();\r\n static NEWSFEED_DETAIL = RolePermissionInfo.INIT();\r\n\r\n //---TASK\r\n static TASK = RolePermissionInfo.INIT();\r\n static TASK_DETAIL = RolePermissionInfo.INIT();\r\n static TASK_COMMENTS = RolePermissionInfo.INIT();\r\n\r\n //---EVENT\r\n static EVENT = RolePermissionInfo.INIT();\r\n static EVENT_DETAIL = RolePermissionInfo.INIT();\r\n\r\n //---DATACENTER\r\n static DATA_CENTER = RolePermissionInfo.INIT();\r\n static FILE_STATUS = RolePermissionInfo.INIT();\r\n static IMPORT_SUMMARY_REPORT = RolePermissionInfo.INIT();\r\n static TRANSACTION_EXPANDED_VIEW_DATACENTER = RolePermissionInfo.INIT();\r\n static PROFILE_EXPANDED_VIEW_DATACENTER = RolePermissionInfo.INIT();\r\n static DOWNLOAD_FILE_DATACENTER = RolePermissionInfo.INIT();\r\n static UPLOAD_FILE_DATACENTER = RolePermissionInfo.INIT();\r\n static IMPORT_TEMPLATE = RolePermissionInfo.INIT();\r\n static IMPORT_TEMPLATE_DETAIL = RolePermissionInfo.INIT();\r\n static DOWNLOAD_TEMPLATE = RolePermissionInfo.INIT();\r\n\r\n //---Documents\r\n static SYSTEM_DOCUMENTS = RolePermissionInfo.INIT();\r\n static SYSTEM_DOCUMENTS_DETAILS = RolePermissionInfo.INIT();\r\n static DOWNLOAD_SYSTEM_DOCUMENTS = RolePermissionInfo.INIT();\r\n static COMPLIANCE_DOCUMENTS = RolePermissionInfo.INIT();\r\n static COMPLIANCE_DOCUMENTS_DETAILS = RolePermissionInfo.INIT();\r\n static DOWNLOAD_COMPLIANCE_DOCUMENTS = RolePermissionInfo.INIT();\r\n static CUSTOMER_DOCUMENTS = RolePermissionInfo.INIT();\r\n static CUSTOMER_DOCUMENTS_DETAILS = RolePermissionInfo.INIT();\r\n static DOWNLOAD_CUSTOMER_DOCUMENTS = RolePermissionInfo.INIT();\r\n\r\n static CACHE = () => {\r\n\r\n // PROFILES\r\n RolePermissionService.PROFILE_CENTER = RolePermissionInfo.GET(98, \"PROFILE_CENTER\");\r\n RolePermissionService.PROFILE_DETAILS = RolePermissionInfo.GET(100, \"PROFILE_DETAILS\");\r\n RolePermissionService.PROFILE_DETAILS_STATUS = RolePermissionInfo.GET(243, \"PROFILE_DETAILS_STATUS\");\r\n // RolePermissionService.PROFILE_DETAILS_STATUS_ACTIVE = RolePermissionInfo.GET(244, \"PROFILE_DETAILS_STATUS_ACTIVE\");\r\n RolePermissionService.PROFILE_DETAILS_ADDRESS = RolePermissionInfo.GET(101, \"PROFILE_DETAILS_ADDRESS\");\r\n RolePermissionService.PROFILE_DETAILS_CONTACT_METHOD = RolePermissionInfo.GET(102, \"PROFILE_DETAILS_CONTACT_METHOD\");\r\n RolePermissionService.PROFILE_TASK = RolePermissionInfo.GET(290, \"PROFILE_TASK\");\r\n RolePermissionService.PROFILE_AGREEMENTS = RolePermissionInfo.GET(105, \"PROFILE_AGREEMENTS\");\r\n RolePermissionService.PROFILE_CONSENTS = RolePermissionInfo.GET(106, \"PROFILE_CONSENTS\");\r\n RolePermissionService.PROFILE_TRANSACTIONS = RolePermissionInfo.GET(78, \"PROFILE_TRANSACTIONS\");\r\n RolePermissionService.PROFILE_DOCUMENTS = RolePermissionInfo.GET(108, \"PROFILE_DOCUMENTS\");\r\n RolePermissionService.PROFILE_LINKED_PROFILES = RolePermissionInfo.GET(109, \"PROFILE_LINKED_PROFILES\");\r\n RolePermissionService.PROFILE_IDENTITIFERS = RolePermissionInfo.GET(110, \"PROFILE_IDENTITIFERS\");\r\n RolePermissionService.PROFILE_REFERENCE_DATA = RolePermissionInfo.GET(291, \"PROFILE_REFERENCE_DATA\");\r\n RolePermissionService.PROFILE_EXPANDED_VIEW = RolePermissionInfo.GET(113, \"PROFILE_EXPANDED_VIEW\");\r\n RolePermissionService.PROFILE_EXPANDED_BULK_EDIT = RolePermissionInfo.GET(114, \"PROFILE_EXPANDED_BULK_EDIT\");\r\n RolePermissionService.PROFILE_EXPANDED_BULK_STATUS_FIELD = RolePermissionInfo.GET(115, \"PROFILE_EXPANDED_BULK_STATUS_FIELD\");\r\n RolePermissionService.PROFILE_EXPANDED_VIEW_EXPORT = RolePermissionInfo.GET(116, \"PROFILE_EXPANDED_VIEW_EXPORT\");\r\n RolePermissionService.PROFILE_EXPANDED_VIEW_TASK = RolePermissionInfo.GET(117, \"PROFILE_EXPANDED_VIEW_TASK\");\r\n\r\n // TRANSACTIONS\r\n RolePermissionService.TRANSACTION_CENTER = RolePermissionInfo.GET(76, \"TRANSACTION_CENTRE\");\r\n RolePermissionService.TRANSACTION_DETAILS = RolePermissionInfo.GET(78, \"TRANSACTION_DETAILS\");\r\n RolePermissionService.TRANSACTION_STATUS = RolePermissionInfo.GET(79, \"TRANSACTION_STATUS\");\r\n RolePermissionService.TRANSACTION_RECIPINET_INFORMATION = RolePermissionInfo.GET(80, \"TRANSACTION_RECIPINET_INFORMATION\");\r\n RolePermissionService.TRANSACTION_AGREEMENTS = RolePermissionInfo.GET(81, \"TRANSACTION_AGREEMENTS\");\r\n RolePermissionService.TRANSACTION_RELATED_DOCUMENTS = RolePermissionInfo.GET(82, \"TRANSACTION_RELATED_DOCUMENTS\");\r\n RolePermissionService.TRANSACTION_REPORT_REFERENCES = RolePermissionInfo.GET(83, \"TRANSACTION_REPORT_REFERENCES\");\r\n RolePermissionService.TRANSACTION_TASK = RolePermissionInfo.GET(84, \"TRANSACTION_TASK\");\r\n RolePermissionService.TRANSACTION_CLONE_OR_COPY = RolePermissionInfo.GET(86, \"TRANSACTION_CLONE_OR_COPY\");\r\n RolePermissionService.TRANSACTION_PRINT = RolePermissionInfo.GET(241, \"TRANSACTION_PRINT\");\r\n RolePermissionService.TRANSACTION_AUDIT = RolePermissionInfo.GET(87, \"TRANSACTION_AUDIT\");\r\n RolePermissionService.TRANSACTION_EXPANDED_VIEW = RolePermissionInfo.GET(89, \"TRANSACTION_EXPANDED_VIEW\");\r\n RolePermissionService.TRANSACTION_EXPANDED_BULK_EDIT = RolePermissionInfo.GET(90, \"TRANSACTION_EXPANDED_BULK_EDIT\");\r\n RolePermissionService.TRANSACTION_EXPANDED_STATUS_FIELD = RolePermissionInfo.GET(91, \"TRANSACTION_EXPANDED_STATUS_FIELD\");\r\n RolePermissionService.TRANSACTION_EXPANDED_RECIPIENT_INFORMATION_FIELDS = RolePermissionInfo.GET(92, \"TRANSACTION_EXPANDED_RECIPIENT_INFORMATION_FIELDS\");\r\n RolePermissionService.TRANSACTION_EXPANDED_EXPORT = RolePermissionInfo.GET(93, \"TRANSACTION_EXPANDED_EXPORT\");\r\n RolePermissionService.TRANSACTION_EXPANDED_TASK = RolePermissionInfo.GET(94, \"TRANSACTION_EXPANDED_TASK\");\r\n\r\n // AGREEMENTS\r\n RolePermissionService.AGREEMENTS = RolePermissionInfo.GET(121, \"AGREEMENT_CENTRE\");\r\n RolePermissionService.AGREEMENT_DETAIL = RolePermissionInfo.GET(123, \"AGREEMENT_DETAIL\");\r\n RolePermissionService.AGREEMENT_CONSENT = RolePermissionInfo.GET(124, \"AGREEMENT_CONSENT\");\r\n RolePermissionService.AGREEMENT_DOCUMENTS = RolePermissionInfo.GET(125, \"AGREEMENT_DOCUMENTS\");\r\n RolePermissionService.AGREEMENT_TRANSACTIONS = RolePermissionInfo.GET(126, \"AGREEMENT_TRANSACTIONS\");\r\n\r\n // SOURCE-MAP\r\n RolePermissionService.SOURCE_FILE_LIST = RolePermissionInfo.GET(235, \"SOURCE_FILE_LIST\");\r\n RolePermissionService.SOURCE_FILE_LIST_EXPORT = RolePermissionInfo.GET(236, \"SOURCE_FILE_LIST_EXPORT\");\r\n RolePermissionService.SOURCE_FILE_DETAIL = RolePermissionInfo.GET(237, \"SOURCE_FILE_DETAIL\");\r\n // RolePermissionService.SOURCE_FILE_DETAIL_AUDIT = RolePermissionInfo.GET(238, \"SOURCE_FILE_DETAIL_AUDIT\");\r\n\r\n // BUSINESS-RULES\r\n RolePermissionService.BUSINESS_RULE_LIST = RolePermissionInfo.GET(223, \"BUSINESS_RULE_LIST\");\r\n RolePermissionService.BUSINESS_RULE_LIST_EXPORT = RolePermissionInfo.GET(224, \"BUSINESS_RULE_LIST_EXPORT\");\r\n RolePermissionService.BUSINESS_RULE_DETAIL = RolePermissionInfo.GET(226, \"BUSINESS_RULE_DETAIL\");\r\n // RolePermissionService.BUSINESS_RULE_DETAIL_AUDIT = RolePermissionInfo.GET(228, \"BUSINESS_RULE_DETAIL_AUDIT\");\r\n\r\n // POWER-BI\r\n RolePermissionService.POWER_BI_REPORT = RolePermissionInfo.GET(RolePermissionService.powerBIPermissionID, \"POWER_BI_REPORT\");\r\n\r\n // USER-MANAGEMENT\r\n RolePermissionService.ROLE_LIST = RolePermissionInfo.GET(23, \"ROLE_LIST\");\r\n RolePermissionService.ROLE_LIST_EXPORT = RolePermissionInfo.GET(24, \"ROLE_LIST_EXPORT\");\r\n RolePermissionService.ROLE_DETAIL = RolePermissionInfo.GET(26, \"ROLE_DETAIL\");\r\n RolePermissionService.ROLE_DETAIL_TYPE_PORZIO_LS = RolePermissionInfo.GET(27, \"ROLE_DETAIL_TYPE_PORZIO_LS\");\r\n RolePermissionService.ROLE_DETAIL_TYPE_CUSTOMER = RolePermissionInfo.GET(28, \"ROLE_DETAIL_TYPE_CUSTOMER\");\r\n RolePermissionService.ROLE_DETAIL_PORZIO_REQUIRED = RolePermissionInfo.GET(29, \"ROLE_DETAIL_PORZIO_REQUIRED\");\r\n RolePermissionService.ROLE_PERMISSIONS = RolePermissionInfo.GET(30, \"ROLE_PERMISSIONS\");\r\n // RolePermissionService.ROLE_MEMBERS = RolePermissionInfo.GET(31, \"ROLE_MEMBERS\");\r\n // RolePermissionService.ROLE_MEMBERS_EXPORT = RolePermissionInfo.GET(32, \"ROLE_MEMBERS_EXPORT\");\r\n RolePermissionService.USER_LIST = RolePermissionInfo.GET(34, \"USER_LIST\");\r\n RolePermissionService.USER_LIST_EXPORT = RolePermissionInfo.GET(35, \"USER_LIST_EXPORT\");\r\n RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION = RolePermissionInfo.GET(37, \"USER_DETAIL_PERSONAL_INFORMATION\");\r\n RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_PRIMARY_EMAIL = RolePermissionInfo.GET(38, \"USER_DETAIL_PERSONAL_INFORMATION_PRIMARY_EMAIL\");\r\n RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ROLES = RolePermissionInfo.GET(39, \"USER_DETAIL_PERSONAL_INFORMATION_ROLES\");\r\n RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ACTIVE_INACTIVE = RolePermissionInfo.GET(40, \"USER_DETAIL_PERSONAL_INFORMATION_ACTIVE_INACTIVE\");\r\n RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ORG_MEMBERSHIP = RolePermissionInfo.GET(41, \"USER_DETAIL_PERSONAL_INFORMATION_ORG_MEMBERSHIP\");\r\n // RolePermissionService.USER_DETAIL_AUTHENTICATION = RolePermissionInfo.GET(42, \"USER_DETAIL_AUTHENTICATION\");\r\n RolePermissionService.USER_DETAIL_COMMUNICATIONS = RolePermissionInfo.GET(43, \"USER_DETAIL_COMMUNICATIONS\");\r\n\r\n // FIELD-MANAGEMENT\r\n //------PORZIO-FIELDS\r\n RolePermissionService.PORZIO_FIELD_LIST = RolePermissionInfo.GET(193, \"PORZIO_FIELD_LIST\");\r\n RolePermissionService.PORZIO_FIELD_LIST_EXPORT = RolePermissionInfo.GET(194, \"PORZIO_FIELD_LIST_EXPORT\");\r\n RolePermissionService.PORZIO_FIELD_DETAIL = RolePermissionInfo.GET(196, \"PORZIO_FIELD_DETAIL\");\r\n // RolePermissionService.PORZIO_FIELD_DETAIL_ENTITY = RolePermissionInfo.GET(197, \"PORZIO_FIELD_DETAIL_ENTITY\");\r\n // RolePermissionService.PORZIO_FIELD_DETAIL_LABEL = RolePermissionInfo.GET(198, \"PORZIO_FIELD_DETAIL_LABEL\");\r\n // RolePermissionService.PORZIO_FIELD_DETAIL_PLS_REQUIRED = RolePermissionInfo.GET(199, \"PORZIO_FIELD_DETAIL_PLS_REQUIRED\");\r\n // RolePermissionService.PORZIO_FIELD_DETAIL_ACTIVE_INACTIVE = RolePermissionInfo.GET(200, \"PORZIO_FIELD_DETAIL_ACTIVE_INACTIVE\");\r\n // RolePermissionService.PORZIO_FIELD_DETAIL_FIELD_TYPE = RolePermissionInfo.GET(201, \"PORZIO_FIELD_DETAIL_FIELD_TYPE\");\r\n //------CUSTOM-FIELDS\r\n // RolePermissionService.PORZIO_FIELD_DETAIL_FIELD_SECURITY = RolePermissionInfo.GET(202, \"PORZIO_FIELD_DETAIL_FIELD_SECURITY\");\r\n RolePermissionService.CUSTOMER_FIELD_LIST = RolePermissionInfo.GET(204, \"CUSTOMER_FIELD_LIST\");\r\n RolePermissionService.CUSTOMER_FIELD_LIST_EXPORT = RolePermissionInfo.GET(205, \"CUSTOMER_FIELD_LIST_EXPORT\");\r\n RolePermissionService.FIELD_DETAIL = RolePermissionInfo.GET(207, \"FIELD_DETAIL\");\r\n // RolePermissionService.FIELD_DETAIL_ENTITY = RolePermissionInfo.GET(208, \"FIELD_DETAIL_ENTITY\");\r\n // RolePermissionService.FIELD_DETAIL_LABEL = RolePermissionInfo.GET(209, \"FIELD_DETAIL_LABEL\");\r\n // RolePermissionService.FIELD_DETAIL_PLS_REQUIRED = RolePermissionInfo.GET(210, \"FIELD_DETAIL_PLS_REQUIRED\");\r\n // RolePermissionService.FIELD_DETAIL_ACTIVE_INACTIVE = RolePermissionInfo.GET(211, \"FIELD_DETAIL_ACTIVE_INACTIVE\");\r\n // RolePermissionService.FIELD_DETAIL_FIELD_TYPE = RolePermissionInfo.GET(212, \"FIELD_DETAIL_FIELD_TYPE\");\r\n // RolePermissionService.FIELD_DETAIL_FIELD_SECURITY = RolePermissionInfo.GET(213, \"FIELD_DETAIL_FIELD_SECURITY\");\r\n\r\n // FIELD-VALUE-MAPPING\r\n RolePermissionService.DEFAULT_MAPPING_LIST = RolePermissionInfo.GET(215, \"DEFAULT_MAPPING_LIST\");\r\n RolePermissionService.DEFAULT_MAPPING_EXPORT = RolePermissionInfo.GET(216, \"DEFAULT_MAPPING_EXPORT\");\r\n RolePermissionService.DEFAULT_MAPPING_DETAIL = RolePermissionInfo.GET(217, \"DEFAULT_MAPPING_DETAIL\");\r\n RolePermissionService.COMPLIANCE_REPORT_MAPPING_LIST = RolePermissionInfo.GET(219, \"COMPLIANCE_REPORT_MAPPING_LIST\");\r\n RolePermissionService.COMPLIANCE_REPORT_MAPPING_EXPORT = RolePermissionInfo.GET(220, \"COMPLIANCE_REPORT_MAPPING_EXPORT\");\r\n RolePermissionService.COMPLIANCE_REPORT_MAPPING_DETAIL = RolePermissionInfo.GET(221, \"COMPLIANCE_REPORT_MAPPING_DETAIL\");\r\n RolePermissionService.CONSENT_MAPPING_LIST = RolePermissionInfo.GET(285, \"CONSENT_MAPPING_LIST\");\r\n RolePermissionService.CONSENT_MAPPING_EXPORT = RolePermissionInfo.GET(286, \"CONSENT_MAPPING_EXPORT\");\r\n RolePermissionService.CONSENT_MAPPING_DETAIL = RolePermissionInfo.GET(287, \"CONSENT_MAPPING_DETAIL\");\r\n\r\n // TENANT-SETUP\r\n RolePermissionService.TENANT_DETAIL = RolePermissionInfo.GET(175, \"TENANT_DETAIL\");\r\n\r\n //Product\r\n RolePermissionService.PRODUCT = RolePermissionInfo.GET(297, \"PRODUCT\");\r\n RolePermissionService.PRODUCT_DETAIL = RolePermissionInfo.GET(299, \"PRODUCT_DETAIL\");\r\n\r\n //SALESREP\r\n RolePermissionService.SALESREP = RolePermissionInfo.GET(300, \"SALESREP\");\r\n RolePermissionService.SALESREP_DETAIL = RolePermissionInfo.GET(302, \"SALESREP_DETAIL\");\r\n\r\n //MATERIALS\r\n RolePermissionService.MATERIAL = RolePermissionInfo.GET(303, \"MATERIALS\");\r\n RolePermissionService.MATERIAL_DETAIL = RolePermissionInfo.GET(305, \"MATERIAL_DETAIL\");\r\n\r\n //STUDY-MASTER\r\n RolePermissionService.STUDY = RolePermissionInfo.GET(306, \"STUDY\");\r\n RolePermissionService.STUDY_DETAIL = RolePermissionInfo.GET(308, \"STUDY_DETAIL\");\r\n\r\n //HCP-MASTER\r\n RolePermissionService.HCP = RolePermissionInfo.GET(306, \"HCP\"); //TODO : need permission ID for HCP\r\n //RolePermissionService.HCP_DETAIL = RolePermissionInfo.GET(308, \"HCP_DETAIL\");//TODO : need permission ID for HCP\r\n\r\n //NEWSFEED\r\n RolePermissionService.NEWSFEED = RolePermissionInfo.GET(294, \"STUDY\");\r\n RolePermissionService.NEWSFEED_DETAIL = RolePermissionInfo.GET(48, \"STUDY_DETAIL\");\r\n\r\n //TASK\r\n RolePermissionService.TASK = RolePermissionInfo.GET(295, \"TASK\");\r\n RolePermissionService.TASK_DETAIL = RolePermissionInfo.GET(54, \"TASK_DETAIL\");\r\n RolePermissionService.TASK_COMMENTS = RolePermissionInfo.GET(55, \"TASK_COMMENTS\");\r\n\r\n //EVENT\r\n RolePermissionService.EVENT = RolePermissionInfo.GET(296, \"EVENT\");\r\n RolePermissionService.EVENT_DETAIL = RolePermissionInfo.GET(58, \"EVENT_DETAIL\");\r\n\r\n //DATACENTER\r\n RolePermissionService.DATA_CENTER = RolePermissionInfo.GET(13, \"DATA_CENTER\");\r\n RolePermissionService.FILE_STATUS = RolePermissionInfo.GET(14, \"FILE_STATUS\");\r\n RolePermissionService.IMPORT_SUMMARY_REPORT = RolePermissionInfo.GET(15, \"IMPORT_SUMMARY_REPORT\");\r\n RolePermissionService.TRANSACTION_EXPANDED_VIEW_DATACENTER = RolePermissionInfo.GET(16, \"TRANSACTION_EXPANDED_VIEW_DATACENTER\");\r\n RolePermissionService.PROFILE_EXPANDED_VIEW_DATACENTER = RolePermissionInfo.GET(239, \"PROFILE_EXPANDED_VIEW_DATACENTER\");\r\n RolePermissionService.DOWNLOAD_FILE_DATACENTER = RolePermissionInfo.GET(289, \"DOWNLOAD_FILE_DATACENTER\");\r\n RolePermissionService.UPLOAD_FILE_DATACENTER = RolePermissionInfo.GET(310, \"UPLOAD_FILE_DATACENTER\");\r\n RolePermissionService.IMPORT_TEMPLATE = RolePermissionInfo.GET(4, \"PROFILE_EXPANDED_VIEW_DATACENTER\");\r\n RolePermissionService.IMPORT_TEMPLATE_DETAIL = RolePermissionInfo.GET(5, \"DOWNLOAD_FILE_DATACENTER\");\r\n RolePermissionService.DOWNLOAD_TEMPLATE = RolePermissionInfo.GET(309, \"DOWNLOAD_TEMPLATE\");\r\n\r\n //DOCUMENTS\r\n RolePermissionService.SYSTEM_DOCUMENTS = RolePermissionInfo.GET(162, \"SYSTEM_DOCUMENTS\");\r\n RolePermissionService.SYSTEM_DOCUMENTS_DETAILS = RolePermissionInfo.GET(163, \"SYSTEM_DOCUMENTS_DETAILS\");\r\n RolePermissionService.DOWNLOAD_SYSTEM_DOCUMENTS = RolePermissionInfo.GET(164, \"DOWNLOAD_SYSTEM_DOCUMENTS\");\r\n RolePermissionService.COMPLIANCE_DOCUMENTS = RolePermissionInfo.GET(165, \"COMPLIANCE_DOCUMENTS\");\r\n RolePermissionService.COMPLIANCE_DOCUMENTS_DETAILS = RolePermissionInfo.GET(166, \"COMPLIANCE_DOCUMENTS_DETAILS\");\r\n RolePermissionService.DOWNLOAD_COMPLIANCE_DOCUMENTS = RolePermissionInfo.GET(167, \"DOWNLOAD_COMPLIANCE_DOCUMENTS\");\r\n RolePermissionService.CUSTOMER_DOCUMENTS = RolePermissionInfo.GET(168, \"CUSTOMER_DOCUMENTS\");\r\n RolePermissionService.CUSTOMER_DOCUMENTS_DETAILS = RolePermissionInfo.GET(169, \"CUSTOMER_DOCUMENTS_DETAILS\");\r\n RolePermissionService.DOWNLOAD_CUSTOMER_DOCUMENTS = RolePermissionInfo.GET(170, \"DOWNLOAD_CUSTOMER_DOCUMENTS\");\r\n\r\n // finally set flag\r\n RolePermissionService.IS_CONFIGURED = true;\r\n }\r\n //#endregion\r\n\r\n //---\r\n}","import SessionService from \"./sessionService\";\r\n\r\nexport default class UserActivityService {\r\n static lastActiveOn = \"\";\r\n static checkIntervalTime = 60 * 1000; // Interval in ms after which app checks for user inactivity\r\n static expiryTimeoutInMs = 1 * 60 * 60 * 1000; // (1hr) Time till which user can stay inactive\r\n static sessionExpiryWarningTime = 1000 * 30; // Time till which user can decide if they want to continue or logout\r\n static sessionExpiryWarningTimeInSecs = 30;\r\n static oktaAuthClient = null;\r\n static context = null;\r\n static compRef = null;\r\n\r\n static setLastActiveTime = () => {\r\n UserActivityService.lastActiveOn = new Date();\r\n }\r\n\r\n static trackUserActivity = (compRef, oktaAuthClient) => {\r\n UserActivityService.compRef = compRef;\r\n UserActivityService.oktaAuthClient = oktaAuthClient;\r\n UserActivityService.startTracking();\r\n }\r\n\r\n static startTracking = () => {\r\n UserActivityService.setSessionWarningTimer();\r\n //UserActivityService.oktaAuthClient.session.refresh();// refresh the Okta session\r\n document.addEventListener('keypress', (event) => {\r\n console.log(\"keypress event\", event);\r\n UserActivityService.setLastActiveTime();\r\n });\r\n\r\n document.addEventListener('mousemove', (event) => {\r\n UserActivityService.setLastActiveTime();\r\n });\r\n }\r\n\r\n static untrackUserActivity = (_context) => {\r\n UserActivityService.context = _context;\r\n UserActivityService.stopTracking();\r\n }\r\n\r\n static stopTracking = () => {\r\n document.removeEventListener('keypress');\r\n document.removeEventListener('mousemove');\r\n clearInterval(UserActivityService.sessionWarningTimerRef);\r\n clearInterval(UserActivityService.sessionLogoutTimerRef);\r\n UserActivityService.lastActiveOn = null;\r\n }\r\n\r\n static sessionWarningTimerRef = null;\r\n static sessionLogoutTimerRef = null;\r\n\r\n static setSessionWarningTimer = () => {\r\n UserActivityService.sessionWarningTimerRef = setInterval(() => {\r\n if (UserActivityService.lastActiveOn) {\r\n // console.log(\"Diff time : \", (new Date() - UserActivityService.lastActiveOn));\r\n let timeDiff = (new Date() - UserActivityService.lastActiveOn);\r\n if (timeDiff > (UserActivityService.expiryTimeoutInMs - UserActivityService.sessionExpiryWarningTime)) {\r\n UserActivityService.compRef.setState({\r\n showSessionTimeoutDialog: true\r\n });\r\n UserActivityService.setSessionLogoutTimer();\r\n } else {\r\n // console.log(\"user not logged out\", timeDiff);\r\n }\r\n }\r\n }, UserActivityService.checkIntervalTime);\r\n }\r\n\r\n static setSessionLogoutTimer = () => {\r\n UserActivityService.sessionLogoutTimerRef = setInterval(() => {\r\n UserActivityService.logout();\r\n }, UserActivityService.sessionExpiryWarningTime);\r\n }\r\n\r\n static logout = async () => {\r\n console.log(\"Access Token Revoked.!\");\r\n await UserActivityService.oktaAuthClient.revokeAccessToken()\r\n await UserActivityService.oktaAuthClient.signOut();\r\n await UserActivityService.oktaAuthClient.tokenManager.clear();\r\n localStorage.removeItem(SessionService.storageKey);\r\n UserActivityService.context.setViaLogin({ username: \"elmo\" });\r\n }\r\n}","import React from \"react\";\r\nimport { combineLatest, ReplaySubject } from \"rxjs\";\r\nimport { userModel } from \"../models/userModel\";\r\nimport RolePermissionService from \"../role-permissions/rolePermissionService\";\r\nimport { API_ENDPOINT } from \"../types/enums\";\r\nimport ApiService from \"./apiService\";\r\nimport { DataService } from \"./dataService\";\r\nimport LookupService from \"./lookupService\";\r\nimport ToastService from \"./toastService\";\r\nimport UserActivityService from \"./userActivityService\";\r\n\r\n/**\r\n * Author : Pradeep_Rajendran@epam.com\r\n */\r\nexport default class SessionService {\r\n\r\n static storageKey = \"gstAuth\";\r\n\r\n static isOktaAuthenticationInProgress = false;\r\n\r\n /*\r\n * ---------------------------------\r\n * userById : kulkarni@porziols.com\r\n * ---------------------------------\r\n {\r\n \"id\": 2129,\r\n \"firstName\": \"Medha\",\r\n \"lastName\": \"Kulkarni\",\r\n \"userName\": \"kulkarni@porziols.com\",\r\n \"currencyId\": 83,\r\n \"defaultLanguageId\": 1,\r\n \"isPorzioUser\": true,\r\n \"userTypeId\": 4,\r\n \"userType\": \"Support User\",\r\n \"tenantId\": 1376,\r\n \"roleName\": \"Tenant Admin\"\r\n }\r\n * ---------------------------------\r\n * tenantUserInfoById : ?userId=2129&tenantId=1376\r\n * ---------------------------------\r\n {\r\n \"id\": 2129,\r\n \"loginName\": \"kulkarni@porziols.com\",\r\n \"firstName\": \"Medha\",\r\n \"lastName\": \"Kulkarni\",\r\n \"isActive\": true,\r\n \"currencyId\": 83,\r\n \"tenantId\": 1376,\r\n \"roleName\": \"Tenant Admin\",\r\n \"roleId\": 1\r\n }\r\n *---------------------------------\r\n * tokenById\r\n * ---------------------------------\r\n eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6Imt1bGthcm5pQHBvcnppb2xzLmNvbSIsInJvbGUiOiJUZW5hbnQgQWRtaW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3VzZXJkYXRhIjoiMTM3NiIsIlRlbmFudElkIjoiMTM3NiIsIkZpcnN0TmFtZSI6Ik1lZGhhIiwiTGFzdE5hbWUiOiJLdWxrYXJuaSIsIlVzZXJJZCI6IjIxMjkiLCJJc1Bvcnppb1VzZXIiOiJUcnVlIiwiVXNlclR5cGVJZCI6IjQiLCJDdXJyZW5jeUlkIjoiODMiLCJEZWZhdWx0TGFuZ3VhZ2VJZCI6IjEiLCJuYmYiOjE2MTk4ODExMTgsImV4cCI6MTYyMDQ4NTkxOCwiaWF0IjoxNjE5ODgxMTE4LCJhdWQiOiJ0ZW5hbnQifQ.JLU9pCgXdvDhDrdHLeh_3-Ha8fmR5Uyg6b_Gn4dRnz4\r\n *---------------------------------\r\n */\r\n static setLoginInfo = (_context, _userByIdObj, _selTenantObj, _tenantUserInfoByIdObj, _sessionObj, _tenantList) => {\r\n\r\n // create the object\r\n const authUserObj = userModel.getByOBJs(_userByIdObj, _selTenantObj, _tenantUserInfoByIdObj, _sessionObj, _tenantList);\r\n // store the object in context\r\n _context.setViaLogin(authUserObj, _sessionObj.sessionToken);\r\n _context.user = authUserObj; // till the above async completes\r\n // save object in local storage\r\n localStorage.setItem(SessionService.storageKey, JSON.stringify({ authUserObj }));\r\n\r\n // cache\r\n return SessionService.configureOBS(_context);\r\n }\r\n\r\n /**\r\n * refetches & configures the roles and permissions\r\n * refetches the common lookups into cache\r\n * @param {*} _context \r\n * @returns \r\n */\r\n static configureOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // clear the lookup Cache, so the cache will populate when required\r\n LookupService.clearAll();\r\n // ensures the common lov's are fetched and available in the lookup's private variables\r\n RolePermissionService.fetchPermissionsOBS(_context.user).subscribe(\r\n (rolePermissionsResult) => {\r\n if (DataService.hasElements(rolePermissionsResult) || _context.user.tenantId === RolePermissionService.PORZIO_TENANT_ID) {\r\n // configure roles and permissions\r\n RolePermissionService.CONFIGURE(rolePermissionsResult);\r\n\r\n // THEN fetch the common lookups\r\n combineLatest(LookupService.fetchCommonLookupsOBS(_context)).subscribe(\r\n (lookupsResult) => {\r\n oSubject.next(true);\r\n },\r\n (lookupsError) => {\r\n ToastService.showError(\"Error occured while fetching the Lookups. you may need to relogin\");\r\n oSubject.next(false);\r\n }\r\n );\r\n\r\n } else {\r\n ToastService.showError(\"Error occured while fetching the permissions. you may need to relogin\");\r\n oSubject.next(false);\r\n }\r\n },\r\n (rolePermissionsError) => {\r\n ToastService.showError(\"Error occured while fetching the permissions. you may need to relogin\");\r\n oSubject.next(false);\r\n }\r\n );\r\n\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n\r\n }\r\n\r\n static getUserModelFromStorage = () => {\r\n const _userinfo = JSON.parse(localStorage.getItem(SessionService.storageKey)).authUserObj;\r\n\r\n return new userModel(\r\n\r\n _userinfo.userId, _userinfo.firstName, _userinfo.lastName, _userinfo.userName,\r\n _userinfo.currencyId, _userinfo.defaultLanguageId, _userinfo.isPorzioUser, _userinfo.userTypeId, _userinfo.userType,\r\n\r\n _userinfo.tenantId, _userinfo.tenantName, _userinfo.uid, _userinfo.workspaceID, _userinfo.oktaGroupID,\r\n\r\n _userinfo.isActive, _userinfo.roleId, _userinfo.roleName,\r\n\r\n _userinfo.sessionToken, _userinfo.sessionStart, _userinfo.warnSessionTimeout, _userinfo.logoutTimeout, _userinfo.refreshTokenTime,\r\n\r\n _userinfo.tenantList\r\n\r\n );\r\n }\r\n\r\n static clearAll = (_context) => {\r\n UserActivityService.untrackUserActivity(_context);\r\n localStorage.removeItem(SessionService.storageKey);\r\n _context.setViaLogin({ username: \"elmo\" });\r\n }\r\n\r\n static getTenantUserInfoAsync = async (_userId, _tenantId) => {\r\n const tenantUserInfoByIdResult = await fetch(`${process.env.REACT_APP_TENANT_HTTP}/User/GetTenantUserInfoById?userId=${_userId}&tenantId=${_tenantId}`);\r\n return await tenantUserInfoByIdResult.json();\r\n }\r\n\r\n static getTenantUserInfoOBS = (_userId, _tenantId) => {\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, `/User/GetTenantUserInfoById?userId=${_userId}&tenantId=${_tenantId}`);\r\n }\r\n\r\n static getTokenByIdOBS = (_userId, _tenantId) => {\r\n return ApiService.getOBS(API_ENDPOINT.IDENTITY, `/User/GetTokenById/${_tenantId}/${_userId}`);\r\n }\r\n\r\n //---\r\n}","import { of, from } from \"rxjs\";\r\nimport { switchMap, catchError } from \"rxjs/operators\";\r\nimport { GST_API, API_ENDPOINT } from \"../types/enums\";\r\nimport { userModel } from \"../models/userModel\";\r\nimport fetchIntercept from 'fetch-intercept';\r\nimport SessionService from \"./sessionService\";\r\nimport OktaAuthService from \"../../public/authentication/oktaAuthService\";\r\n\r\nexport default class ApiService {\r\n static apiHomeURL = `https://gst2dev.azurewebsites.net/Home`;\r\n static apiBaseURL = `${process.env.REACT_APP_BASE_HTTP}`;\r\n static apiCoreURL = `${process.env.REACT_APP_CORE_HTTP}`;\r\n static apiIdentityURL = `${process.env.REACT_APP_IDENTITY_HTTP}`;\r\n static apiTenantURL = `${process.env.REACT_APP_TENANT_HTTP}`;\r\n static apiReportURL = `${process.env.REACT_APP_REPORTS_HTTP}`;\r\n //static apiIzendaCoreURL = `${process.env.REACT_APP_IZENDA_CORE_HTTP}`;\r\n //static apiIzendaIdentityURL = `${process.env.REACT_APP_IZENDA_IDENTITY_HTTP}`;\r\n\r\n static fetchObs(_url, _params = {}) {\r\n if (!(_url + \"\").startsWith(this.apiBaseURL)) {\r\n _url = this.apiBaseURL + _url;\r\n \r\n }\r\n _params.headers = _params.headers || {};\r\n\r\n // Add the Authorization token to the headers\r\n _params.headers['Authorization'] = `Bearer ` + OktaAuthService.getAccessToken();\r\n return from(fetch(_url, _params)).pipe(switchMap((response) => response.json()));\r\n }\r\n static fetchObs2(_url, _params = {}) {\r\n if (!(_url + \"\").startsWith(this.apiCoreURL)) {\r\n _url = this.apiCoreURL + _url;\r\n }\r\n _params.headers = _params.headers || {};\r\n\r\n // Add the Authorization token to the headers\r\n _params.headers['Authorization'] = `Bearer ` + OktaAuthService.getAccessToken();\r\n return from(fetch(_url, _params)).pipe(switchMap((response) => response.json()));\r\n }\r\n static fetchObsHome(_url) {\r\n if (!(_url + \"\").startsWith(this.apiHomeURL)) {\r\n _url = this.apiHomeURL + _url;\r\n }\r\n const requestOptions = {\r\n headers: {\r\n 'Authorization': `Bearer ` + OktaAuthService.getAccessToken()\r\n }\r\n };\r\n return from(fetch(_url, requestOptions)).pipe(\r\n switchMap((response) => response.json())\r\n );\r\n }\r\n // static fetchObsTenant(_url) {\r\n // if (!(_url + \"\").startsWith(this.apiTenantURL)) {\r\n // _url = this.apiTenantURL + _url;\r\n // }\r\n // return from(fetch(_url)).pipe(switchMap((response) => response.json()));\r\n // }\r\n\r\n static fetchObsTenant(_url) {\r\n if (!(_url + \"\").startsWith(this.apiTenantURL)) {\r\n _url = this.apiTenantURL + _url;\r\n }\r\n const requestOptions = {\r\n headers: {\r\n 'Authorization': `Bearer ` + OktaAuthService.getAccessToken()\r\n }\r\n };\r\n return from(fetch(_url, requestOptions)).pipe(\r\n switchMap((response) => response.json())\r\n );\r\n }\r\n\r\n static fetchObsidentity(_url) {\r\n if (!(_url + \"\").startsWith(this.apiIdentityURL)) {\r\n _url = this.apiIdentityURL + _url;\r\n }\r\n const requestOptions = {\r\n headers: {\r\n 'Authorization': `Bearer ` + OktaAuthService.getAccessToken()\r\n }\r\n };\r\n return from(fetch(_url, requestOptions)).pipe(\r\n switchMap((response) => response.json())\r\n );\r\n }\r\n static fetchHTTP_API(_enumAPI, _url, _params = {}) {\r\n let api_address = \"\";\r\n \r\n if (_enumAPI === GST_API.Identity) api_address = `${process.env.REACT_APP_IDENTITY_HTTP}`;\r\n else if (_enumAPI === GST_API.TenantConfig) api_address = `${process.env.REACT_APP_TENANT_HTTP}`;\r\n else if (_enumAPI === GST_API.Core) api_address = `${process.env.REACT_APP_CORE_HTTP}`;\r\n else if (_enumAPI === GST_API.Reports) api_address = `${process.env.REACT_APP_REPORTS_HTTP}`;\r\n\r\n if (!(_url + \"\").startsWith(api_address)) {\r\n _url = api_address + _url;\r\n }\r\n\r\n if (Object.keys(_params).length === 0) {\r\n _params = {\r\n method: \"GET\",\r\n headers: {\r\n \"Access-Control-Allow-Origin\": \"*\",\r\n \"Access-Control-Allow-Headers\": \"Origin, X-Requested-With, Content-Type, Accept\",\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": `Bearer ` + OktaAuthService.getAccessToken()\r\n },\r\n };\r\n }\r\n return from(fetch(_url, _params)).pipe(switchMap((response) => response.json()));\r\n }\r\n\r\n\r\n // ---- NEW METHODS\r\n /** GET-VERB\r\n * @returns an observable, so the client needs to subscribe */\r\n static getOBS(\r\n _apiEndPointEnum,\r\n _urlString,\r\n _params = {\r\n method: \"GET\",\r\n headers: {\r\n \"Access-Control-Allow-Origin\": \"*\",\r\n \"Access-Control-Allow-Headers\": \"Origin, X-Requested-With, Content-Type, Accept\",\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n ) {\r\n // 1) get the end point url\r\n let apiEndPointURL = ApiService._getEndPointURL(_apiEndPointEnum);\r\n\r\n // 2) Append the Api Point, if not already appended\r\n let urlString = _urlString + \"\";\r\n if (!urlString.startsWith(apiEndPointURL)) {\r\n urlString = apiEndPointURL + urlString;\r\n }\r\n\r\n // 3) if params is empty then set the params\r\n if (Object.keys(_params).length === 0) {\r\n _params = {\r\n method: \"GET\",\r\n headers: {\r\n \"Access-Control-Allow-Origin\": \"*\",\r\n \"Access-Control-Allow-Headers\": \"Origin, X-Requested-With, Content-Type, Accept\",\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n };\r\n }\r\n\r\n // fetch and return the result as observable\r\n let unParsedResponse = null;\r\n return from(fetch(urlString, _params)).pipe(\r\n switchMap((response) => {\r\n unParsedResponse = response;\r\n return response.json();\r\n }\r\n\r\n\r\n ),\r\n catchError((e) => {\r\n console.error(urlString, { 'error': e, 'response': unParsedResponse });\r\n // handle e and return a safe value or re-throw\r\n // if (isCritical(e)) {\r\n // return throwError(e);\r\n // }\r\n return of(null);\r\n })\r\n );\r\n }\r\n\r\n /** PUT-VERB\r\n * @returns an observable, so the client needs to subscribe */\r\n static putOBS(_apiEndPointEnum, _urlString, _jsonStringifiedBody) {\r\n return ApiService.setOBS(\"PUT\", _apiEndPointEnum, _urlString, _jsonStringifiedBody);\r\n }\r\n\r\n /** POST-VERB\r\n * @returns an observable, so the client needs to subscribe */\r\n static postOBS(_apiEndPointEnum, _urlString, _jsonStringifiedBody) {\r\n return ApiService.setOBS(\"POST\", _apiEndPointEnum, _urlString, _jsonStringifiedBody);\r\n }\r\n\r\n /** DELETE-VERB\r\n * @returns an observable, so the client needs to subscribe */\r\n static deleteOBS(_apiEndPointEnum, _urlString, _jsonStringifiedBody) {\r\n return ApiService.setOBS(\"DELETE\", _apiEndPointEnum, _urlString, _jsonStringifiedBody);\r\n }\r\n\r\n /**\r\n * @_actionVerb : \"PUT\" (or) \"POST\"\r\n * @returns an observable, so the client needs to subscribe */\r\n static setOBS(_actionVerb, _apiEndPointEnum, _urlString, _jsonStringifiedBody, _headers, _responseType = \"json\") {\r\n // 1) get the end point url\r\n let apiEndPointURL = ApiService._getEndPointURL(_apiEndPointEnum);\r\n\r\n // 2) Append the Api Point, if not already appended\r\n if (!(_urlString + \"\").startsWith(apiEndPointURL)) {\r\n _urlString = apiEndPointURL + _urlString;\r\n }\r\n\r\n if (_headers === undefined) {\r\n _headers = {\r\n \"Access-Control-Allow-Origin\": \"*\",\r\n \"Access-Control-Allow-Headers\": \"Origin, X-Requested-With, Content-Type, Accept\",\r\n \"Content-Type\": \"application/json\",\r\n \"Authorization\": `Bearer ` + OktaAuthService.getAccessToken(),\r\n };\r\n }\r\n\r\n // 3) if params is empty then set the params\r\n const _params = {\r\n method: _actionVerb,\r\n headers: _headers,\r\n body: _jsonStringifiedBody\r\n };\r\n\r\n // fetch and return the result as observable\r\n if (_actionVerb === \"PUT\") {\r\n // PUT does not return any response body, it only returns a status code\r\n return from(fetch(_urlString, _params))\r\n } else {\r\n return from(fetch(_urlString, _params)).pipe(\r\n switchMap((response) => _responseType === \"text\" ? response.text() : response.json()\r\n )\r\n );\r\n }\r\n }\r\n\r\n /** Internal use only */\r\n static _getEndPointURL(_apiEndPointEnum) {\r\n switch (_apiEndPointEnum) {\r\n case API_ENDPOINT.CORE:\r\n return ApiService.apiCoreURL;\r\n case API_ENDPOINT.IDENTITY:\r\n return ApiService.apiIdentityURL;\r\n case API_ENDPOINT.HOME:\r\n return ApiService.apiHomeURL;\r\n case API_ENDPOINT.TENANT:\r\n return ApiService.apiTenantURL;\r\n case API_ENDPOINT.REPORTS:\r\n return ApiService.apiReportURL;\r\n // case API_ENDPOINT.IZENDA_CORE:\r\n // return ApiService.apiIzendaCoreURL;\r\n // case API_ENDPOINT.IZENDA_IDENTITY:\r\n // return ApiService.apiIzendaIdentityURL;\r\n case API_ENDPOINT.BASE:\r\n default:\r\n return ApiService.apiBaseURL;\r\n }\r\n }\r\n}\r\nconst unregister = fetchIntercept.register({\r\n request: function (url, config) {\r\n const fetchOptions = {\r\n ...config,\r\n }\r\n try {\r\n if (!fetchOptions.headers) {\r\n fetchOptions.headers = {};\r\n }\r\n var ISSUER = process.env.REACT_APP_ISSUER.split('.com')[0] + '.com';\r\n if (localStorage.getItem(\"okta-token-storage\") !== \"{}\" && localStorage.getItem(\"okta-token-storage\") !== null &&\r\n localStorage.getItem(\"okta-token-storage\") !== undefined && !(url.startsWith(ISSUER))) {\r\n // fetchOptions.headers.Authorization = `Bearer ${JSON.parse(localStorage.getItem(\"okta-token-storage\"))?.accessToken?.accessToken}`;\r\n fetchOptions.headers.Authorization = `Bearer ` + OktaAuthService.getAccessToken();\r\n }\r\n } catch (error) {\r\n console.log(\"error in intercept\", error);\r\n }\r\n return [url, fetchOptions];\r\n }\r\n})","import { of, ReplaySubject, combineLatest } from \"rxjs\";\r\nimport { DataService } from \"../services/dataService\";\r\nimport ApiService from \"../services/apiService\";\r\nimport { API_ENDPOINT, TenantSelectList } from \"../types/enums\";\r\n\r\nexport default class LookupService {\r\n\r\n\r\n /** Step-1/3\r\n * make sure the lookup observable is mentioned here,\r\n * this is used to fetch commonly used observables after the user logs in,\r\n * using the rxJs's combine latest operator\r\n * */\r\n static fetchCommonLookupsOBS = (_context) => {\r\n return [\r\n LookupService.getAffiliationsAsOBS(_context),\r\n LookupService.getCountriesAsOBS(_context),\r\n LookupService.getFormattedCountriesAsOBS(_context, null),\r\n LookupService.getLanguagesAsOBS(_context),\r\n LookupService.getCurrenciesAsOBS(_context),\r\n LookupService.getFormattedCurrenciesAsOBS(_context, null),\r\n LookupService.getTimezonesAsOBS(_context),\r\n LookupService.getPermissionActionsAsOBS(_context.user.tenantId),\r\n LookupService.getContactTypesAsOBS(_context),\r\n LookupService.getTransactionStatusesAsOBS(_context),\r\n LookupService.getProfileStatusesAsOBS(_context),\r\n LookupService.getAgreementStatusesAsOBS(_context),\r\n LookupService.getVendorNamesAsOBS(_context),\r\n LookupService.getProductsAsOBS(_context),\r\n LookupService.getMaterialItemNamesAsOBS(_context),\r\n LookupService.getFullUserPreferencesAsOBS(_context),\r\n LookupService.getPermissionSectionsAsOBS(),\r\n LookupService.getProfileCategoriesAsOBS(_context)\r\n ];\r\n }\r\n\r\n static fetchCommonLookups = (_context) => {\r\n combineLatest(LookupService.fetchCommonLookupsOBS(_context)).subscribe();\r\n }\r\n\r\n /** STEP-2/3\r\n * Clear the cache\r\n * This function should be called after the user Login/Logout,\r\n * The reson for clering the cache on user login is the lookups are populated for context.user.tenantId,\r\n */\r\n static clearAll() {\r\n LookupService.clearAFFILIATIONS();\r\n LookupService.clearCOUNTRIES();\r\n LookupService.clearCOUNTRIES_FORMATTED();\r\n LookupService.clearLANGUAGES();\r\n LookupService.clearCURRENCIES();\r\n LookupService.clearCURRENCIES_FORMATTED();\r\n LookupService.clearTIME_ZONES();\r\n LookupService.clearPERMISSION_ACTIONS();\r\n LookupService.clearCONTACT_TYPES();\r\n LookupService.clearTRANSACTION_STATUSES();\r\n LookupService.clearPROFILE_STATUSES();\r\n LookupService.clearAGREEMENT_STATUSES();\r\n LookupService.clearVENDOR_NAMES();\r\n LookupService.clearPRODUCTS();\r\n LookupService.clearMATERIAL_ITEM_NAMES();\r\n LookupService.clearFULL_USER_PREFERENCES_OBJ();\r\n LookupService.clearPERMISSION_SECTIONS();\r\n LookupService.clearROLES();\r\n LookupService.clearREPORT_FILTER_VALUES();\r\n LookupService.clearPROFILE_CATEGORIES();\r\n }\r\n\r\n /** STEP 3/3\r\n * Define the fetch logic below\r\n */\r\n // AFFILIATION_DATA\r\n static _AFFILIATIONS = [];\r\n static clearAFFILIATIONS() { LookupService._AFFILIATIONS = []; }\r\n static getAffiliationsAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._AFFILIATIONS)) {\r\n oSubject.next(LookupService._AFFILIATIONS);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Affiliate/FetchActiveAffiliates/${_context.user.tenantId}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._AFFILIATIONS = _data;\r\n oSubject.next(LookupService._AFFILIATIONS);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n static reportTemplateSubscriptionId = 1151;\r\n\r\n static allElement = { id: 0, text: \"All\" };\r\n\r\n static getAffiliationsBySystemAsOBS = (_tenantId, _sourceSystemId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems/GetAffiliations/${_tenantId}/${_sourceSystemId}`\r\n );\r\n };\r\n static getVendorsBySystemAsOBS = (_tenantId, _sourceSystemId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems/GetVendors/${_tenantId}/${_sourceSystemId}`\r\n );\r\n };\r\n static getUsersBySystemAsOBS = (_tenantId, _sourceSystemId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems/GetUsers/${_tenantId}/${_sourceSystemId}`\r\n );\r\n };\r\n\r\n // allvendorlist\r\n static getAllVendorsAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Vendor/GetAllVendors/${_tenantId}`\r\n );\r\n };\r\n\r\n // vendorlist\r\n static getVendorsByAffiliationsAsOBS = (_tenantId, _affiliations) => {\r\n if (DataService.hasNoElements(_affiliations)) {\r\n return of([]);\r\n } else {\r\n const affiliationIdString = _affiliations.map((o) => o.id).join(\",\");\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems/GetVendorByCompanyAffiliates/${_tenantId}/${affiliationIdString}`\r\n );\r\n }\r\n };\r\n\r\n // userlist\r\n static getUsersByVendorsAsOBS = (_tenantId, _affiliations, _vendors) => {\r\n if (\r\n DataService.hasNoElements(_affiliations) ||\r\n DataService.hasNoElements(_vendors)\r\n ) {\r\n return of([]);\r\n } else {\r\n const affiliationIdString = _affiliations.map((o) => o.id).join(\",\");\r\n const vendorIdString = _vendors.map((o) => o.id).join(\",\");\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems/GetUserByAffiliateVendor/${affiliationIdString}/${vendorIdString}?tenantId=${_tenantId}`\r\n );\r\n }\r\n };\r\n\r\n // sourceSystes\r\n static getSourceSystemsByEntityAsOBS(_tenantId, _entityId) {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems/GetSourceByEntity/${_tenantId}/${_entityId}`\r\n );\r\n }\r\n\r\n // getTemplateBySourceId\r\n static getTemplateBySourceIdAsOBS(_tenantId, _sourceSystemId, _languageId = 1) {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems/GetTemplateBySourceId?tenantId=${_tenantId}&sourceId=${_sourceSystemId}&languageId=${_languageId}`\r\n );\r\n }\r\n\r\n // getProfileTab Details by ProfileId\r\n static getProfileTabDetailsAsOBS(_tenantId, _profileId) {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/Profiles/GetProfileWithAddrAndContactsSlim?tenantId=${_tenantId}&profileId=${_profileId}`\r\n );\r\n }\r\n // getProfileTab Details by ProfileId\r\n static getProfileTabDetailsWithErrorInfoAsOBS(_tenantId, _profileId, _source = \"\") {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/Profiles/GetProfileWithAddrContactsAndErrSlim?tenantId=${_tenantId}&profileId=${_profileId}&source=${_source}`\r\n );\r\n }\r\n\r\n // ProfileTab Affiliations\r\n static getProfileAffiliationsAsOBS(_tenantId, _profileId) {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/Profiles/GetCompanyAffiliates?tenantId=${_tenantId}&profileId=${_profileId}`\r\n );\r\n }\r\n\r\n // getAgreementTab Details by AgreementId\r\n static getAgreementTabDetailsWithErrorInfoAsOBS(_tenantId, _agreementId) {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/Agreement/GetAgreementById/${_tenantId}/${_agreementId}`\r\n );\r\n }\r\n\r\n // getTransactionTab Details by ProfileId\r\n static getTransactionTabDetailsAsOBS(_tenantId, _transactionId, _porzioGSTId = \"\") {\r\n if (_porzioGSTId !== \"\") {\r\n return ApiService.getOBS(API_ENDPOINT.CORE,\r\n `/Transactions/GetTransactionDetailsSlim?tenantId=${_tenantId}&transactionId=${_transactionId}&porzioGSTID=${_porzioGSTId}`\r\n );\r\n }\r\n return ApiService.getOBS(API_ENDPOINT.CORE,\r\n `/Transactions/GetTransactionDetailsSlim?tenantId=${_tenantId}&transactionId=${_transactionId}`\r\n );\r\n }\r\n\r\n // _ENTITY_LIST\r\n static _ENTITY_LIST = [];\r\n static clearENTITY_LIST() { LookupService._ENTITY_LIST = []; }\r\n static getEntityListAsOBS = (_tenantId) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._ENTITY_LIST)) {\r\n oSubject.next(LookupService._ENTITY_LIST); // 2nd\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.CORE, `/Entity/${_tenantId}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._ENTITY_LIST = _data;\r\n oSubject.next(LookupService._ENTITY_LIST);\r\n });\r\n }\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n\r\n // _permissionACTIONS\r\n static _PERMISSION_ACTIONS = [];\r\n static clearPERMISSION_ACTIONS() { LookupService._PERMISSION_ACTIONS = []; }\r\n static getPermissionActionsAsOBS = (_tenantId) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._PERMISSION_ACTIONS)) {\r\n oSubject.next(LookupService._PERMISSION_ACTIONS); // 2nd\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Permission/FetchPermissionActions?tenantId=${_tenantId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._PERMISSION_ACTIONS = _data;\r\n oSubject.next(LookupService._PERMISSION_ACTIONS);\r\n });\r\n }\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n static getProfileConsentLovAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, `/Util/GetFieldLOVByIds/${_tenantId}/120`);\r\n };\r\n\r\n static getConsentAsOBS = (_tenantId, _prId) => {\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/Profiles/GetProfileConsents/${_tenantId}/${_prId}?pageNum=1&pageSize=100`);\r\n };\r\n\r\n static getIdentifierTypes = (_tenantId,) => {\r\n const targetUrl = `/Entity/FetchEntityLOVData?fieldNames=PorzioGSTIdentifierType&tenantId=${_tenantId}&entityId=1&screenName=PorzioFieldsLOV_1376`;\r\n return ApiService.getOBS(API_ENDPOINT.CORE, targetUrl);\r\n };\r\n\r\n // _permissionSECTIONs\r\n static _PERMISSION_SECTIONS = [];\r\n static clearPERMISSION_SECTIONS() { LookupService._PERMISSION_SECTIONS = []; }\r\n static getPermissionSectionsAsOBS = () => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._PERMISSION_SECTIONS)) {\r\n oSubject.next(LookupService._PERMISSION_SECTIONS); // 2nd\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Permission/FetchSections`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._PERMISSION_SECTIONS = _data;\r\n oSubject.next(LookupService._PERMISSION_SECTIONS);\r\n });\r\n }\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n // _COUNTRIES\r\n static _COUNTRIES = [];\r\n static clearCOUNTRIES() { LookupService._COUNTRIES = []; }\r\n static getCountriesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._COUNTRIES)) {\r\n oSubject.next(LookupService._COUNTRIES); // 2nd\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.COUNTRY}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n \r\n LookupService._COUNTRIES = DataService.formatCountryList(_data);\r\n oSubject.next(LookupService._COUNTRIES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n // _COUNTRIES_FORMATTED\r\n static _COUNTRIES_FORMATTED = [];\r\n static clearCOUNTRIES_FORMATTED() { LookupService._COUNTRIES_FORMATTED = []; }\r\n static getFormattedCountriesAsOBS = (_context, _allId = 0) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._COUNTRIES_FORMATTED)) {\r\n oSubject.next(LookupService._COUNTRIES_FORMATTED); // 2nd\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.COUNTRY}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n // LookupService._COUNTRIES_FORMATTED = _data;\r\n LookupService._COUNTRIES_FORMATTED = DataService.formatCountryList(_data, _allId);\r\n oSubject.next(LookupService._COUNTRIES_FORMATTED);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n // CONTACT_TYPES\r\n static _CONTACT_TYPES = [];\r\n static clearCONTACT_TYPES() { LookupService._CONTACT_TYPES = []; }\r\n static getContactTypesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._CONTACT_TYPES)) {\r\n oSubject.next(LookupService._CONTACT_TYPES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Util/GetFieldLOVByIds/${_context.user.tenantId}/${TenantSelectList.CONTACT_TYPE}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._CONTACT_TYPES = _data;\r\n oSubject.next(LookupService._CONTACT_TYPES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // TRANSACTION_STATUS\r\n static _TRANSACTION_STATUSES = [];\r\n static clearTRANSACTION_STATUSES() { LookupService._TRANSACTION_STATUSES = []; }\r\n static getTransactionStatusesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // TODO: after api is implemented remove the hardcoded value\r\n LookupService._TRANSACTION_STATUSES = [\r\n { \"id\": 1, \"value\": \"Draft\", \"ordinal\": 1 },\r\n { \"id\": 2, \"value\": \"Remediation Required\", \"ordinal\": 2 },\r\n { \"id\": 3, \"value\": \"Approved\", \"ordinal\": 3 },\r\n { \"id\": 4, \"value\": \"Rejected\", \"ordinal\": 4 },\r\n { \"id\": 5, \"value\": \"Eligible\", \"ordinal\": 5 },\r\n { \"id\": 6, \"value\": \"Ineligible\", \"ordinal\": 6 }\r\n ];\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._TRANSACTION_STATUSES)) {\r\n oSubject.next(LookupService._TRANSACTION_STATUSES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.TRANSACTION_STATUS}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._TRANSACTION_STATUSES = _data;\r\n oSubject.next(LookupService._TRANSACTION_STATUSES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // PROFILE_STATUS\r\n static _PROFILE_STATUSES = [];\r\n static clearPROFILE_STATUSES() { LookupService._PROFILE_STATUSES = []; }\r\n static getProfileStatusesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // TODO: after api is implemented remove the hardcoded value\r\n LookupService._PROFILE_STATUSES = [\r\n { \"id\": 1, \"value\": \"Draft\", \"ordinal\": 1 },\r\n { \"id\": 2, \"value\": \"Active\", \"ordinal\": 2 },\r\n { \"id\": 3, \"value\": \"Not Active\", \"ordinal\": 3 },\r\n { \"id\": 4, \"value\": \"Pending Approval\", \"ordinal\": 4 },\r\n { \"id\": 5, \"value\": \"Rejected\", \"ordinal\": 5 },\r\n { \"id\": 6, \"value\": \"Remediation Required\", \"ordinal\": 6 }\r\n ];\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._PROFILE_STATUSES)) {\r\n oSubject.next(LookupService._PROFILE_STATUSES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.PROFILE_STATUS}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._PROFILE_STATUSES = _data;\r\n oSubject.next(LookupService._PROFILE_STATUSES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // AGREEMENT_STATUS\r\n static _AGREEMENT_STATUSES = [];\r\n static clearAGREEMENT_STATUSES() { LookupService._AGREEMENT_STATUSES = []; }\r\n static getAgreementStatusesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // TODO: after api is implemented remove the hardcoded value\r\n LookupService._AGREEMENT_STATUSES = [\r\n { \"id\": 1, \"value\": \"Draft\", \"ordinal\": 1 },\r\n { \"id\": 2, \"value\": \"Active\", \"ordinal\": 2 },\r\n { \"id\": 3, \"value\": \"Not Active\", \"ordinal\": 3 },\r\n ];\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._AGREEMENT_STATUSES)) {\r\n oSubject.next(LookupService._AGREEMENT_STATUSES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.AGREEMENT_STATUS}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._AGREEMENT_STATUSES = _data;\r\n oSubject.next(LookupService._AGREEMENT_STATUSES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n\r\n // _REPORT_IDENTIFIERS\r\n static _REPORT_IDENTIFIERS = [];\r\n static clearREPORT_IDENTIFIERS() { LookupService._REPORT_IDENTIFIERS = []; }\r\n static getReportIdentifiersAsOBS = (_context, _companyAffiliateId) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._REPORT_IDENTIFIERS)) {\r\n oSubject.next(LookupService._REPORT_IDENTIFIERS); // 2nd\r\n } else {\r\n //oSubject.next(LookupService._REPORT_IDENTIFIERS); // TODO:implement Below API\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Affiliate/ReportIdentifiersAffiliateById/${_context.user.tenantId}/${_companyAffiliateId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._REPORT_IDENTIFIERS = _data;\r\n oSubject.next(LookupService._REPORT_IDENTIFIERS);\r\n });\r\n }\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n // _LANGUAGES\r\n static _LANGUAGES = [];\r\n static clearLANGUAGES() { LookupService._LANGUAGES = []; }\r\n static getLanguagesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._LANGUAGES)) {\r\n oSubject.next(LookupService._LANGUAGES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.LANGUAGE}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._LANGUAGES = _data;\r\n oSubject.next(LookupService._LANGUAGES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _CURRENCIES\r\n static _CURRENCIES = [];\r\n static clearCURRENCIES() { LookupService._CURRENCIES = []; }\r\n static getCurrenciesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._CURRENCIES)) {\r\n oSubject.next(LookupService._CURRENCIES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.CURRENCY}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._CURRENCIES = _data;\r\n oSubject.next(LookupService._CURRENCIES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _CURRENCIES_FORMATTED\r\n static _CURRENCIES_FORMATTED = [];\r\n static clearCURRENCIES_FORMATTED() { LookupService._CURRENCIES_FORMATTED = []; }\r\n static getFormattedCurrenciesAsOBS = (_context, _allId = 0) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._CURRENCIES_FORMATTED)) {\r\n oSubject.next(LookupService._CURRENCIES_FORMATTED); // 2nd\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.CURRENCY}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._CURRENCIES_FORMATTED = DataService.formatCurrencyList(_data, _allId);\r\n oSubject.next(LookupService._CURRENCIES_FORMATTED);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n // _TIMEZONES\r\n static _TIMEZONES = [];\r\n static clearTIME_ZONES() { LookupService._TIMEZONES = []; }\r\n static getTimezonesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // if local_cache is Empty\r\n if (DataService.hasElements(LookupService._TIMEZONES)) {\r\n oSubject.next(LookupService._TIMEZONES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.TIME_ZONE}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._TIMEZONES = _data;\r\n oSubject.next(LookupService._TIMEZONES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _SOURCE_TYPES\r\n static _SOURCE_TYPES = [];\r\n static clearSOURCE_TYPES() { LookupService._SOURCE_TYPES = []; }\r\n static getSourceTypesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // if local_cache is Empty\r\n if (DataService.hasElements(LookupService._SOURCE_TYPES)) {\r\n oSubject.next(LookupService._SOURCE_TYPES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.CORE, `/Entity/${_context.user.tenantId}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._SOURCE_TYPES = _data;\r\n oSubject.next(LookupService._SOURCE_TYPES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n\r\n // _PRODUCTS\r\n static _PRODUCTS = [];\r\n static clearPRODUCTS() { LookupService._PRODUCTS = []; }\r\n static getProductsAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // if local_cache is Empty\r\n if (DataService.hasElements(LookupService._PRODUCTS)) {\r\n oSubject.next(LookupService._PRODUCTS);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Products/${_context.user.tenantId}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._PRODUCTS = _data;\r\n oSubject.next(LookupService._PRODUCTS);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _VENDOR_NAMES\r\n static _VENDOR_NAMES = [];\r\n static clearVENDOR_NAMES() { LookupService._VENDOR_NAMES = []; }\r\n static getVendorNamesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // if local_cache is Empty\r\n if (DataService.hasElements(LookupService._VENDOR_NAMES)) {\r\n oSubject.next(LookupService._VENDOR_NAMES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Vendor/GetAllVendors/${_context.user.tenantId}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._VENDOR_NAMES = _data;\r\n oSubject.next(LookupService._VENDOR_NAMES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _MATERIAL_ITEM_NAMES\r\n static _MATERIAL_ITEM_NAMES = [];\r\n static clearMATERIAL_ITEM_NAMES() { LookupService._MATERIAL_ITEM_NAMES = []; }\r\n static getMaterialItemNamesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // if local_cache is Empty\r\n if (DataService.hasElements(LookupService._MATERIAL_ITEM_NAMES)) {\r\n oSubject.next(LookupService._MATERIAL_ITEM_NAMES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Materials/GetAllMaterials/${_context.user.tenantId}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._MATERIAL_ITEM_NAMES = _data;\r\n oSubject.next(LookupService._MATERIAL_ITEM_NAMES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _FULL_USER_PREFERENCES_OBJ\r\n static _FULL_USER_PREFERENCES_OBJ = {};\r\n static clearFULL_USER_PREFERENCES_OBJ() { LookupService._FULL_USER_PREFERENCES_OBJ = {}; }\r\n static getFullUserPreferencesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // if local_cache is Empty\r\n if (DataService.hasElements(LookupService._FULL_USER_PREFERENCES_OBJ)) {\r\n oSubject.next(LookupService._FULL_USER_PREFERENCES_OBJ);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/User/GetFullUser?tenantId=${_context.user.tenantId}&userid=${_context.user.userId}`).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._FULL_USER_PREFERENCES_OBJ = _data;\r\n oSubject.next(LookupService._FULL_USER_PREFERENCES_OBJ);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // UTILS\r\n static getValuesByKey(_array, _key = \"id\") {\r\n let oRET = [];\r\n _array.forEach((obj) => {\r\n oRET.push(obj[_key]);\r\n });\r\n return oRET;\r\n }\r\n\r\n //Roles\r\n static _ROLES = [];\r\n static clearROLES() { LookupService._ROLES = []; }\r\n static getRolesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._ROLES)) {\r\n oSubject.next(LookupService._ROLES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Role/GetAllRoles/${_context.user.tenantId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._ROLES = _data;\r\n oSubject.next(LookupService._ROLES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n //TransactionTypes\r\n static _TRANSACTIONTYPES = [];\r\n static getTransactionTypesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._TRANSACTIONTYPES)) {\r\n oSubject.next(LookupService._TRANSACTIONTYPES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetFieldLOVByIds/${_context.user.tenantId}/25`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._TRANSACTIONTYPES = _data;\r\n oSubject.next(LookupService._TRANSACTIONTYPES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n //NewsfeedTypes\r\n static _NEWSFEEDTYPES = [];\r\n static getNewsfeedTypesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._NEWSFEEDTYPES)) {\r\n oSubject.next(LookupService._NEWSFEEDTYPES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Newsfeed/FetchNewsFeedTypes/${_context.user.tenantId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._NEWSFEEDTYPES = _data;\r\n oSubject.next(LookupService._NEWSFEEDTYPES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n //NewsfeedTypes\r\n static _COMPANIES = [];\r\n static getUserTenantsAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n if (_context.user.tenantId !== 1) {\r\n oSubject.next(LookupService._COMPANIES);\r\n return oSubject.asObservable();\r\n }\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(LookupService._COMPANIES)) {\r\n oSubject.next(LookupService._COMPANIES);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.IDENTITY,\r\n `/User/GetUserTenants?userId=${_context.user.userId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._COMPANIES = _data;\r\n oSubject.next(LookupService._COMPANIES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n\r\n static _ACTIVE_TENANTS = [];\r\n static getActiveTenantsAsObs = (_includePorzio) => {\r\n var oSubject = new ReplaySubject();\r\n const targetUrl = `/GetActiveTenants/${_includePorzio}`;\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n ).subscribe((_data) => {\r\n LookupService._ACTIVE_TENANTS = _data;\r\n oSubject.next(LookupService._ACTIVE_TENANTS);\r\n });\r\n return oSubject.asObservable();\r\n }\r\n\r\n // _PROFILE_CATEGORIES\r\n static _PROFILE_CATEGORIES = [];\r\n static clearPROFILE_CATEGORIES() { LookupService._PROFILE_CATEGORIES = []; }\r\n static getProfileCategoriesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // if local_cache is Empty\r\n if (DataService.hasElements(LookupService._PROFILE_CATEGORIES)) {\r\n oSubject.next(LookupService._PROFILE_CATEGORIES);\r\n } else {\r\n // fetch and subscribe to the result\r\n LookupService.getFieldLOVByIdsAsOBS(_context.user.tenantId, 6).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._PROFILE_CATEGORIES = _data;\r\n oSubject.next(LookupService._PROFILE_CATEGORIES);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n static getFieldLOVByIdsAsOBS = (_tenantId, _fieldId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetFieldLOVByIds/${_tenantId}/${_fieldId}`\r\n );\r\n };\r\n\r\n static getUserCurrencyAsOBS = (_userId) => {\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/Transactions/GetUserCurrency?userId=${_userId}`);\r\n };\r\n\r\n static fetchCurrenciesAsOBS = (_userId) => {\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/Transactions/FetchCurrencies`);\r\n };\r\n\r\n static getConvertedTotalAmountAsOBS = (_tenantId, _sourceCurrency, _targetCurrency, _totalAmount) => {\r\n const _exchangeDate = new Date().toISOString().substring(0, 10)\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/Transactions/GetConvertedTotalAmount?tenantId=${_tenantId}&sourceCurrency=${_sourceCurrency}&targetCurrency=${_targetCurrency}&totalAmount=${_totalAmount}&exchangeDate=${_exchangeDate}`);\r\n };\r\n\r\n static STATUSES = [\r\n { id: 208, seq: 1, name: \"Complete\" },\r\n { id: 209, seq: 2, name: \"Deferred\" },\r\n { id: 207, seq: 3, name: \"Draft\" },\r\n { id: 210, seq: 4, name: \"In Progress\" },\r\n { id: 211, seq: 5, name: \"Not Started\" },\r\n { id: 212, seq: 6, name: \"Reassigned\" },\r\n ];\r\n\r\n static EVENTTYPES = [{ id: 365, seq: 1, name: \"Company Announcement\" }];\r\n\r\n static COMPLIANCE_CONSENT_REPORTABLE = [\r\n { reportableId: 250, reportableName: \"Reportable - Direct\" },\r\n { reportableId: 251, reportableName: \"Reportable - Aggregate\" },\r\n ];\r\n\r\n static REPORTS_TO_BE_REMOVED_CONSENT = [\"Australia Third Party Meetings and Symposia Report\", \"Belgium Report\", \"Denmark Report\", \"Japan Report\",\r\n \"Netherlands Report\", \"Portugal Report\", \"Slovakia Report\", \"USFederal General Payments Report\", \"USFederal Ownership Report\",\r\n \"USFederal Research Report\", \"USState Massachusetts Report\"];\r\n\r\n\r\n // REPORT FILTER VALUES\r\n static _REPORT_FILTER_VALUES = {};\r\n static clearREPORT_FILTER_VALUES() { LookupService._REPORT_FILTER_VALUES = {}; }\r\n static getReportFiltersValuesAsOBS = (_context) => {\r\n let oSubject = new ReplaySubject(); // 1st\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.REPORTS,\r\n `/Reports/FetchIzendaFilters?tenantId=${_context.user.tenantId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n LookupService._REPORT_FILTER_VALUES = _data;\r\n oSubject.next(LookupService._REPORT_FILTER_VALUES);\r\n });\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n\r\n\r\n //---\r\n}","import LookupService from \"./lookupService\";\r\nimport moment from \"moment\";\r\n\r\nexport class SubscriptionArray {\r\n _items = [];\r\n\r\n add(_subscription) {\r\n if (!this._items) {\r\n this._items = [];\r\n }\r\n this._items.push(_subscription);\r\n }\r\n cancelAll() {\r\n if (DataService.hasElements(this._items)) {\r\n this._items.forEach((o) => {\r\n o.unsubscribe();\r\n });\r\n this._items = [];\r\n }\r\n }\r\n}\r\n\r\nexport class DataService {\r\n static cancelSubscriptions(_subscriptions = []) {\r\n if (this.hasElements(_subscriptions)) {\r\n _subscriptions.forEach((o) => {\r\n o.unsubscribe();\r\n });\r\n }\r\n _subscriptions = [];\r\n }\r\n\r\n static isNullOrUndefined(_obj) {\r\n return _obj === undefined || _obj === null;\r\n }\r\n static hasValue(_obj) {\r\n return !this.isNullOrUndefined(_obj);\r\n }\r\n\r\n static parseBoolean = (_value) => {\r\n return (_value === true);\r\n }\r\n\r\n static mapHasElements(_map) {\r\n return this.hasValue(_map) && _map.size > 0;\r\n }\r\n static mapHasNoElements(_map) {\r\n return !this.mapHasElements(_map);\r\n }\r\n static getMapKeys(_map) {\r\n return this.mapHasElements(_map) ? [..._map.keys()] : [];\r\n }\r\n static getMapByKeys(_map, _keys) {\r\n if (DataService.mapHasNoElements(_map)) {\r\n return _map;\r\n } else {\r\n let _oRET = new Map();\r\n _keys.forEach(_key => {\r\n if (_map.has(_key)) { _oRET.set(_key, _map.get(_key)); }\r\n });\r\n return _oRET;\r\n }\r\n }\r\n\r\n static caseInsensitiveComparator(valueA, valueB) {\r\n return valueA?.toLowerCase().localeCompare(valueB?.toLowerCase());\r\n }\r\n\r\n static hasAnyTrue = (_booleanArray) => {\r\n if (DataService.hasNoElements(_booleanArray)) {\r\n return false;\r\n } else {\r\n _booleanArray.some(_bool => {\r\n if (_bool) { return true; }\r\n });\r\n return false;\r\n }\r\n }\r\n static hasAnyFalse = (_booleanArray) => {\r\n if (DataService.hasNoElements(_booleanArray)) {\r\n return true;\r\n } else {\r\n _booleanArray.some(_bool => {\r\n if (!_bool) { return true; }\r\n });\r\n return false;\r\n }\r\n }\r\n static isAllTrue = (_booleanArray) => {\r\n let oRET = false;\r\n if (DataService.hasElements(_booleanArray)) {\r\n oRET = true;\r\n _booleanArray.forEach(_bool => {\r\n if (oRET && !_bool) { oRET = false; }\r\n });\r\n }\r\n return oRET;\r\n }\r\n\r\n static hasElements(_array = []) {\r\n return this.hasValue(_array) && _array.length > 0;\r\n }\r\n\r\n static hasNoElements(_array = []) {\r\n return !this.hasElements(_array);\r\n }\r\n\r\n static isStringNullOrEmpty(_string = \"\") {\r\n return this.isNullOrUndefined(_string) || (_string + \"\").trim() === \"\";\r\n }\r\n static hasValidValue(_string = \"\") {\r\n return !this.isStringNullOrEmpty(_string);\r\n }\r\n static stringShouldBe(_string, _minLength = 3) {\r\n return this.isNullOrUndefined(_string) || (_string + \"\").trim().length >= _minLength;\r\n }\r\n\r\n /** Ignores Case */\r\n static stringEquals = (_source, _target) => {\r\n _source = (_source + \"\").trim().toLowerCase();\r\n _target = (_target + \"\").trim().toLowerCase();\r\n return (_source === _target);\r\n }\r\n\r\n /** Ignores Case */\r\n static stringNotEquals = (_source, _target) => {\r\n return !DataService.stringEquals(_source, _target);\r\n }\r\n\r\n static getFirstOrDefault(_array, _default = null) {\r\n if (DataService.hasElements(_array)) {\r\n return _array[0];\r\n }\r\n return _default;\r\n }\r\n\r\n static getLowerCaseElements(_array) {\r\n let oRET = [];\r\n if (this.hasElements(_array)) {\r\n _array.forEach(x => {\r\n oRET.push((x + \"\").toLowerCase());\r\n });\r\n }\r\n return oRET;\r\n }\r\n\r\n static getLastOrDefault(_array, _default = null) {\r\n if (DataService.hasElements(_array)) {\r\n return _array[_array.length - 1];\r\n }\r\n return _default;\r\n }\r\n\r\n static arrayToObject = (_array, _keyProp, _valueProp) => {\r\n if (DataService.hasNoElements(_array)) { return {}; }\r\n else {\r\n return _array.reduce((obj, item) => {\r\n obj[item[_keyProp]] = item[_valueProp];\r\n return obj;\r\n }, {});\r\n }\r\n }\r\n\r\n static stringToArray = (_string, _delim) => {\r\n if (DataService.isStringNullOrEmpty(_string) || DataService.isStringNullOrEmpty(_delim)) {\r\n return [];\r\n } else if (!_string.includes(_delim)) {\r\n return [_string];\r\n }\r\n else {\r\n let oRET = [];\r\n const splited = _string.split(_delim);\r\n splited.forEach(x => { oRET.push(x); });\r\n return oRET;\r\n }\r\n }\r\n\r\n static insertAt = (_targetArray, _targetIndex, _itemToInsert) => {\r\n if (this.hasValidValue(_targetArray)) {\r\n const maxIndex = _targetArray.length - 1;\r\n if (maxIndex <= _targetIndex) {\r\n _targetArray.push(_itemToInsert); // push at the end\r\n } else {\r\n _targetArray.splice(_targetIndex, 0, _itemToInsert);\r\n }\r\n }\r\n return _targetArray;\r\n }\r\n\r\n static getUniqueValues(_array, _uniqueProp) {\r\n if (DataService.hasNoElements(_array)) { return _array; }\r\n else {\r\n let oRET = [];\r\n\r\n _array.forEach(item => {\r\n const value = item[_uniqueProp];\r\n if (!oRET.includes(value)) {\r\n oRET.push(value);\r\n }\r\n });\r\n\r\n return oRET;\r\n }\r\n }\r\n\r\n static insertItems = (_targetArray, _targetIndex, _elementsToInsert) => {\r\n if (this.hasValidValue(_targetArray)) {\r\n const maxIndex = _targetArray.length - 1;\r\n if (_targetIndex > maxIndex) {\r\n _targetArray.push(..._elementsToInsert); // push at the end\r\n } else {\r\n _targetArray = [\r\n // part of the array before the specified index\r\n ..._targetArray.slice(0, _targetIndex),\r\n // items to insert\r\n ..._elementsToInsert,\r\n // part of the array after the specified index\r\n ..._targetArray.slice(_targetIndex)\r\n\r\n ];\r\n }\r\n }\r\n return _targetArray;\r\n }\r\n\r\n /**\r\n * False if \r\n * True if integer or decimal\r\n * @param {*} _value \r\n */\r\n static isValidNumber = (_value) => {\r\n // null / undefined / \"\"\r\n if (this.isStringNullOrEmpty(_value)) {\r\n return false;\r\n } else if (Number.isNaN(_value)) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n static isNotNumber = (_value) => {\r\n return !this.isValidNumber(_value);\r\n }\r\n\r\n /**\r\n * \r\n * @param {*} _value number/string/null/undefined\r\n * @param {*} _default returns the desired value if invalid number\r\n */\r\n static getNumberOrDefault = (_value, _default = null) => {\r\n return this.isValidNumber(_value) ? Number(_value) : _default;\r\n }\r\n\r\n static extractKeysAsNumbers = (_mappings) => {\r\n return Object.keys(_mappings).map((x) => parseInt(x));\r\n };\r\n static extractValues = (_mappings) => {\r\n return Object.values(_mappings);\r\n };\r\n static getLookupValue = (_mappings, _key) => {\r\n return _mappings[_key];\r\n };\r\n\r\n static sortArray(_array, _prop) {\r\n if (this.hasNoElements(_array)) {\r\n return _array;\r\n } else {\r\n return _array.sort((a, b) => (a[_prop] > b[_prop]) ? 1 : -1);\r\n }\r\n }\r\n\r\n static removeFromArray(_array, _index) {\r\n if (DataService.hasElements(_array) && _index >= 0 && _index < _array.length) {\r\n _array.splice(_index, 1);\r\n return _array;\r\n } else {\r\n return _array;\r\n }\r\n }\r\n\r\n static sortArrayBy2Props(_array, _prop1, _prop2) {\r\n if (this.hasNoElements(_array)) {\r\n return _array;\r\n } else {\r\n return _array.sort((a, b) => {\r\n return a[_prop1] < b[_prop1] ? -1 : a[_prop2] < b[_prop2] ? -1 : 1;\r\n });\r\n }\r\n }\r\n\r\n static sortObjectByEntries(_object, _sortProp) {\r\n if (this.isNullOrUndefined(_object)) {\r\n return _object;\r\n } else {\r\n const entries = Object.entries(_object);\r\n const keys = Object.keys(_object);\r\n if (keys.includes(_sortProp)) {\r\n return entries.sort((a, b) => a[1][_sortProp] - b[1][_sortProp]).map((x) => x[1]);\r\n }\r\n else {\r\n return _object;\r\n }\r\n }\r\n }\r\n\r\n static sortObjectByKeys = (_obj) => {\r\n if (this.isNullOrUndefined(_obj)) { return {}; }\r\n else {\r\n return Object.keys(_obj).sort().reduce(function (result, key) {\r\n result[key] = _obj[key];\r\n return result;\r\n }, {});\r\n }\r\n }\r\n static getEmptyStringIfNull = (_obj, key) => {\r\n if (this.isNullOrUndefined(_obj) || this.isNullOrUndefined(_obj[key])) { return \"\"; }\r\n else {\r\n return _obj[key];\r\n }\r\n }\r\n /**\r\n * returns the object with no values\r\n * @param _sampleObject if an array pass then pass only the first element\r\n */\r\n getEmptyObject = (_sampleObject) => {\r\n let oRET = {};\r\n\r\n if (this.hasValue(_sampleObject)) {\r\n const keys = Object.keys(_sampleObject);\r\n keys.forEach(_key => {\r\n const _value = _sampleObject[_key];\r\n if (Array.isArray(_value) && _value.length > 0) {\r\n oRET[_key] = this.getEmptyObject(_value[0]);\r\n } else {\r\n oRET[_key] = \"\"; // create an entry\r\n }\r\n });\r\n }\r\n return oRET;\r\n }\r\n\r\n /**\r\n * adds a key to an object\r\n * Link : https://gomakethings.com/how-to-add-a-new-item-to-an-object-at-a-specific-position-with-vanilla-js/\r\n * @param _targetObj \r\n * @param _newKey \r\n * @param _newValue \r\n * @param _newIndex inserts to the specific position or to the end if not specified\r\n * @returns \r\n */\r\n static addToObject = (_targetObj, _newKey, _newValue, _newIndex) => {\r\n\r\n // Create a temp object and index variable\r\n var temp = {};\r\n\r\n // Loop through the original object\r\n var index = 0;\r\n for (var objProp in _targetObj) {\r\n if (_targetObj.hasOwnProperty(objProp)) {\r\n\r\n // If the indexes match, add the new item\r\n if (index === _newIndex && _newKey && _newValue) {\r\n temp[_newKey] = _newValue;\r\n }\r\n\r\n // Add the current item in the loop to the temp obj\r\n temp[objProp] = _targetObj[objProp];\r\n\r\n // Increase the count\r\n index++;\r\n\r\n }\r\n }\r\n\r\n // If no index, add to the end\r\n if (!_newIndex && _newKey && _newValue) {\r\n temp[_newKey] = _newValue;\r\n }\r\n\r\n // return\r\n return temp;\r\n };\r\n\r\n /**\r\n * Add {all} in front of an array and transforms the objects into pair \r\n * eg: [ { id: 0, text: \"All\" }, { id: 1, text: \"Affialite 1\" }, ... ]\r\n * @param {*} _affiliationList\r\n */\r\n static getKeyValueCollection(_objectArray, _keyProp, _valueProp, _includeAll) {\r\n if (this.hasElements(_objectArray)) {\r\n // excludes \"all\" if present\r\n _objectArray = _objectArray.filter(x => x[_keyProp] !== 0).map((el) => ({\r\n id: el[_keyProp],\r\n text: el[_valueProp],\r\n }));\r\n\r\n // add all to the top\r\n if (_includeAll) {\r\n _objectArray.splice(0, 0, LookupService.allElement);\r\n }\r\n }\r\n // return\r\n return _objectArray || [];\r\n }\r\n\r\n //\r\n static removeElementAll(_objectArray, _keyProp) {\r\n if (this.hasNoElements(_objectArray)) {\r\n _objectArray = [];\r\n }\r\n return _objectArray.filter(x => x[_keyProp] !== LookupService.allElement.id);\r\n }\r\n\r\n static addElementAll(_objectArray, _keyProp) {\r\n if (this.hasNoElements(_objectArray)) {// is null or empty\r\n return [];\r\n } else {\r\n var allExcluded = _objectArray.filter(x => x[_keyProp] !== LookupService.allElement.id);\r\n if (DataService.hasNoElements(allExcluded)) { // or contains only element\r\n return [];\r\n } else {\r\n return [LookupService.allElement, ...allExcluded];\r\n }\r\n }\r\n }\r\n\r\n static getScopeKeys(_selectedArray, _scopeArray, _keyProp) {\r\n var oRet = [];\r\n\r\n if (this.hasNoElements(_selectedArray)) {\r\n _selectedArray = [];\r\n }\r\n\r\n // if all is selected\r\n if (this.hasElements(_selectedArray.filter(x => x[_keyProp] === LookupService.allElement.id))) {\r\n // then get everything from the SCOPE except all\r\n oRet = _scopeArray.filter(x => x[_keyProp] !== LookupService.allElement.id).map(x => x[_keyProp]);\r\n } else { // if all is not selected\r\n // then return only SELECTED\r\n oRet = _selectedArray.map(x => x[_keyProp]);\r\n }\r\n\r\n return oRet;\r\n }\r\n\r\n static arrayToSingleQuotedJsonString = (_array, _defaultValue = \"\") => {\r\n if (this.hasNoElements(_array)) { return _defaultValue; }\r\n else {\r\n return this.toSingleQuotedJsonString(JSON.stringify(_array));\r\n }\r\n }\r\n static toSingleQuotedJsonString = (_stringified, _defaultValue = \"\") => {\r\n if (this.isStringNullOrEmpty(_stringified)) {\r\n return _defaultValue;\r\n } else {\r\n _stringified = _stringified.replace(/\\\\\"/g, '\"')\r\n .replace(/([\\{|:|,])(?:[\\s]*)(\")/g, \"$1'\")\r\n .replace(/(?:[\\s]*)(?:\")([\\}|,|:])/g, \"'$1\")\r\n .replace(/([^\\{|:|,])(?:')([^\\}|,|:])/g, \"$1\\\\'$2\");\r\n return _stringified;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * this adds escape characters to the json object and stringifies it\r\n * @param {*} _jsonObj \r\n */\r\n static addEscapeCharactersToJsonString = (_jsonObj) => {\r\n return JSON.stringify(JSON.stringify(_jsonObj));\r\n }\r\n\r\n\r\n static arrayToString = (_array, _delim = \",\") => {\r\n if (this.hasNoElements(_array)) {\r\n return \"\";\r\n } else {\r\n return _array.length === 1 ? \"\" + _array[0] : _array.join(_delim);\r\n }\r\n }\r\n\r\n\r\n static formatCountryList = (_countryList, _allId = 0) => {\r\n let outList = [];\r\n outList = _countryList.slice().sort((a, b) => (a.value > b.value) ? 1 : ((b.value > a.value) ? -1 : 0));\r\n let usaIndex = outList.map(c => c.value).indexOf(\"United States\");\r\n let oUsa = {};\r\n if (usaIndex >= 0) {\r\n oUsa = outList[usaIndex];\r\n outList.splice(usaIndex, 1);\r\n }\r\n\r\n if (_allId === null) {\r\n return [oUsa, ...outList];\r\n } else {\r\n return [{ id: _allId, value: \"All\" }, oUsa, ...outList]\r\n }\r\n }\r\n\r\n static formatLanguageList = (_countryList, _allId = 0) => {\r\n let outList = [];\r\n outList = _countryList.slice().sort((a, b) => (a.value > b.value) ? 1 : ((b.value > a.value) ? -1 : 0));\r\n let usaIndex = outList.map(c => c.value).indexOf(\"English\");\r\n let oUsa = {};\r\n if (usaIndex >= 0) {\r\n oUsa = outList[usaIndex];\r\n outList.splice(usaIndex, 1);\r\n }\r\n\r\n if (_allId === null) {\r\n return [oUsa, ...outList];\r\n } else {\r\n return [{ id: _allId, value: \"All\" }, oUsa, ...outList]\r\n }\r\n }\r\n\r\n static formatCurrencyList = (_countryList, _allId = 0) => {\r\n let outList = [];\r\n outList = _countryList.slice().sort((a, b) => (a.value > b.value) ? 1 : ((b.value > a.value) ? -1 : 0));\r\n let usaIndex = outList.map(c => c.value).indexOf(\"United States Dollar\");\r\n let oUsa = {};\r\n if (usaIndex >= 0) {\r\n oUsa = outList[usaIndex];\r\n outList.splice(usaIndex, 1);\r\n }\r\n let euroIndex = outList.map(c => c.value).indexOf(\"Euro\");\r\n let oEuro = {};\r\n if (euroIndex >= 0) {\r\n oEuro = outList[euroIndex];\r\n outList.splice(euroIndex, 1);\r\n }\r\n if (_allId === null) {\r\n return [oUsa, oEuro, ...outList];\r\n } else {\r\n return [{ id: _allId, value: \"All\" }, oUsa, oEuro, ...outList];\r\n }\r\n }\r\n\r\n //strips the timestamp details from Date\r\n static getDateFromDateTimeStamp = (_date, _defaultValue = new Date()) => {\r\n return this.isValidDate(_date) ? _date.toISOString().split('T')[0] :\r\n (_defaultValue != null ? _defaultValue.toISOString().split('T')[0] : null);\r\n }\r\n\r\n static isValidDate(d) {\r\n return d instanceof Date && !isNaN(d);\r\n }\r\n\r\n //Expects input in DateString format\r\n //Returns the date in YYYY-MM-DD\r\n static formatDate = (dateval) => {\r\n let date = this.isValidDate(dateval) ? dateval : new Date();\r\n return date.getFullYear() +\r\n \"-\" +\r\n ((date.getMonth() + 1).toString().length === 1\r\n ? \"0\" + (date.getMonth() + 1)\r\n : date.getMonth() + 1) +\r\n \"-\" +\r\n (date.getDate().toString().length === 1\r\n ? \"0\" + date.getDate()\r\n : date.getDate());\r\n }\r\n\r\n //Expects input in DateString format\r\n //Returns the date in YYYY-MM-DD\r\n static formatDateString = (dateString) => {\r\n if (DataService.isStringNullOrEmpty(dateString)) {\r\n return dateString;\r\n } else {\r\n const parsedDate = new Date(dateString);\r\n if (this.isValidDate(parsedDate)) {\r\n return parsedDate.getFullYear() +\r\n \"-\" +\r\n ((parsedDate.getMonth() + 1).toString().length === 1\r\n ? \"0\" + (parsedDate.getMonth() + 1)\r\n : parsedDate.getMonth() + 1) +\r\n \"-\" +\r\n (parsedDate.getDate().toString().length === 1\r\n ? \"0\" + parsedDate.getDate()\r\n : parsedDate.getDate());\r\n } else {\r\n return dateString;\r\n }\r\n }\r\n }\r\n\r\n //Some dates are coming in YYYY-MM-DDT00:00:00 \r\n static isISODateRegexMatch(date) {\r\n let iSODateRegex = /^\\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[1-2]\\d|3[0-1])T(?:[0-1]\\d|2[0-3]):[0-5]\\d:[0-5]\\d/;\r\n return date.match(iSODateRegex) != null;\r\n }\r\n\r\n //Checks if Date in YYYY-MM-DD format\r\n static isDateRegexMatch(date) {\r\n let regEx = /^\\d{4}-\\d{2}-\\d{2}$/;\r\n return date.match(regEx) != null;\r\n }\r\n\r\n //Used for showing already saved date from server\r\n //This function has been added as Material's DatePicker if passed a \r\n //Date in either Datetimestring or YYYY-MM-DD format interprets it \r\n //incorrcetly showing one day behind value. So, this function converts the Date from\r\n //YYYY-MM-DD format to 'new Date(YYYY, MM, DD)' format.\r\n static getDateStringForDisplay = (date) => {\r\n if (DataService.isNullOrUndefined(date) || DataService.isStringNullOrEmpty(date))\r\n return date;\r\n\r\n if (this.isISODateRegexMatch(date))\r\n date = date.split('T')[0];\r\n\r\n let dateVal = this.isDateRegexMatch(date) ? date : this.formatDate(date);\r\n return new Date(dateVal.split('-'));\r\n }\r\n\r\n /**\r\n * \r\n * @param {*} _sampleModel \r\n * @returns a Map with lowercase prop as the key and actual case key as the value\r\n */\r\n static getModelKeyMap = (_sampleModel) => {\r\n var modelKeyMap = new Map();\r\n const modelKeys = Object.keys(_sampleModel);\r\n modelKeys.forEach(modelKey => {\r\n modelKeyMap.set(modelKey.toLowerCase(), modelKey);\r\n });\r\n return modelKeyMap;\r\n }\r\n\r\n static getStringOrDefault = (_value, _defaultValue = \"\") => {\r\n return this.isStringNullOrEmpty(_value) ? _defaultValue : _value;\r\n }\r\n\r\n static convertToLowerCasedKeyObject = (_objArray) => {\r\n return _objArray.map(obj => Object.entries(obj).reduce((a, [key, value]) => {\r\n a[key.toLowerCase()] = value;\r\n return a;\r\n }, {}));\r\n }\r\n\r\n static applyFilter = (_filterType, _targetString, _filterString) => {\r\n const valueLowerCase = (_targetString + \"\").toLowerCase();\r\n const filterTextLowerCase = (_filterString + \"\").toLowerCase();\r\n switch (_filterType) {\r\n case 'contains':\r\n return valueLowerCase.indexOf(filterTextLowerCase) >= 0;\r\n case 'notContains':\r\n return valueLowerCase.indexOf(filterTextLowerCase) === -1;\r\n case 'equals':\r\n return valueLowerCase === filterTextLowerCase;\r\n case 'notEqual':\r\n return valueLowerCase != filterTextLowerCase;\r\n case 'startsWith':\r\n return valueLowerCase.indexOf(filterTextLowerCase) === 0;\r\n case 'endsWith':\r\n var index = valueLowerCase.lastIndexOf(filterTextLowerCase);\r\n return index >= 0 && index === (valueLowerCase.length - filterTextLowerCase.length);\r\n default:\r\n // should never happen\r\n console.warn('invalid filter type ' + _filterType);\r\n return false;\r\n }\r\n }\r\n\r\n /**\r\n * \r\n * @param {*} _sampleObject \r\n * @returns an object with lowercase prop as the key\r\n */\r\n static convertActualObjectToLowerCasedKeyObject = (_sampleObject) => {\r\n const keys = Object.keys(_sampleObject);\r\n let lowerCaseObj = {};\r\n keys.forEach(key => {\r\n lowerCaseObj[key.toLowerCase()] = _sampleObject[key];\r\n });\r\n return lowerCaseObj;\r\n }\r\n\r\n static dateComparator = (date1, date2) => {\r\n let bdt = moment(date2, \"YYYY-MM-DD h:mm a\");\r\n let adt = moment(date1, \"YYYY-MM-DD h:mm a\");\r\n return bdt > adt ? 1 : (bdt < adt ? -1 : 0);\r\n }\r\n}","import React, { useState, useEffect } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport {\r\n AppBar,\r\n Box,\r\n Button,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n Grid,\r\n IconButton,\r\n Toolbar,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { TenantSelectList } from \"../../../shared/types/enums\";\r\nimport { DataService } from \"../../../shared/services/dataService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\n\r\n\r\nconst useStyles = makeStyles({\r\n root: {\r\n marginLeft: \"auto\",\r\n },\r\n});\r\n\r\nexport default function LanguageComponent(props) {\r\n const classes = useStyles();\r\n const userContext = React.useContext(AuthContext);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [sourceData, setSourceData] = useState([]);\r\n\r\n const changeLanguage = code => {\r\n let lcode = \"en\";\r\n console.log(code);\r\n switch (code.value) {\r\n case \"Deutsch\":\r\n lcode = \"de\";\r\n break;\r\n case \"English\":\r\n lcode = \"en\";\r\n break;\r\n case \"français\":\r\n lcode = \"fr\";\r\n break;\r\n default:\r\n lcode = \"en\";\r\n }\r\n };\r\n\r\n const changeCurrency = async code => {\r\n // alert(\"code: \" + JSON.stringify(code), null, 2);\r\n try {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/User/SaveCurrencyByUser/${userContext.user.userId}/${code.id}/${userContext.user.tenantId}`,\r\n {\r\n method: 'post',\r\n body: JSON.stringify({})\r\n }\r\n );\r\n const json = await result.json();\r\n ToastService.showSuccess(\"Currency Updated\");\r\n props.handleDialogClose();\r\n } catch (error) {\r\n ToastService.showError(\"An Error occured while changing the Currency\");\r\n console.log(\"/User/SaveCurrencyByUser Error:\", error);\r\n }\r\n\r\n };\r\n\r\n const handleClose = () => {\r\n props.handleDialogClose();\r\n };\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n setIsLoading(true);\r\n try {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Util/GetMasterSubSet/${userContext.user.tenantId}/${props.internationalList}`\r\n );\r\n const json = await result.json();\r\n setSourceData(props.internationalList === TenantSelectList.LANGUAGE ? json : DataService.formatCurrencyList(json, null));\r\n } catch (error) {\r\n console.log(\"/Util/GetMasterSubSet Error:\", error);\r\n }\r\n setIsLoading(false);\r\n };\r\n fetchData();\r\n }, [userContext.user.tenantId, props.internationalList]);\r\n\r\n let pageTitle = \"Default\";\r\n switch (props.internationalList) {\r\n case TenantSelectList.LANGUAGE:\r\n pageTitle = \"Language\";\r\n break;\r\n case TenantSelectList.CURRENCY:\r\n pageTitle = \"Currency\";\r\n break;\r\n default:\r\n pageTitle = \"Default\";\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {pageTitle}\r\n \r\n {MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!isLoading\r\n ? sourceData.map((el, iDex) => {\r\n const nSlots = Math.ceil(sourceData.length / 3) * 3;\r\n const nCol2 = sourceData.length % 3 === 1 ? 2 * nSlots / 3 - 1 : 2 * nSlots / 3;\r\n\r\n const natDex = iDex + 1;\r\n let iOrder = 0;\r\n if (natDex <= nSlots / 3) {\r\n iOrder = 3 * natDex - 2;\r\n } else if (natDex <= nCol2) {\r\n iOrder = 3 * natDex - 1 - nSlots;\r\n } else if (natDex <= nSlots) {\r\n iOrder = 3 * natDex - 2 * nSlots + 3;\r\n }\r\n\r\n return (\r\n {props.internationalList === TenantSelectList.LANGUAGE ?\r\n \r\n :\r\n \r\n }\r\n )\r\n })\r\n : \"\"}\r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { Typography, CircularProgress, Grid } from \"@material-ui/core\";\r\nexport default class PageLoadingComponent extends React.Component {\r\n render() {\r\n const { classes, small, minHeight } = this.props;\r\n return (\r\n \r\n \r\n {this.props.label ? this.props.label : \"Loading\"}\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { AppBar,Typography, Button,Dialog,DialogTitle, Grid, Toolbar,IconButton ,withStyles} from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nclass PageErrorComponent extends React.Component {\r\n \r\n state = {\r\n modalShow : true\r\n }\r\n handleHide=()=>{\r\n this.setState({modalShow:false});\r\n this.props.onClose(); \r\n }\r\n render() {\r\n const { classes, small, label} = this.props;\r\n return (\r\n \r\n this.handleHide()}\r\n scroll={true ? \"paper\" : \"body\"}\r\n maxWidth=\"md\"\r\n >\r\n \r\n \r\n \r\n \r\n \r\n { this.handleHide(false); }}> {MatIconService.CANCEL} \r\n \r\n \r\n \r\n \r\n {label}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\nexport default withStyles(MatClassService)(PageErrorComponent);\r\n","import React from \"react\";\r\nimport { Typography, Box, Toolbar, IconButton, AppBar } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../services/theme/matIconService\";\r\n\r\nexport default class SectionComponent extends React.Component {\r\n render() {\r\n const { classes, label, menu, add, edit, remove, save, contentJsx, enableEditJsx, marginTop, marginBottom, color } = this.props;\r\n const _marginTop = marginTop ? marginTop : \"10px\";\r\n const _marginBottom = marginBottom ? marginBottom : \"0px\";\r\n const _color = color ? color : \"primary\";\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {menu ? ({MatIconService.MENU}) : null}\r\n {label}\r\n {remove ? ({MatIconService.DELETE_RED}) : null}\r\n {edit ? ({MatIconService.EDIT}) : null}\r\n {save ? ({MatIconService.OK}) : null}\r\n {add ? ({MatIconService.ADD_CIRCLE_OUTLINE}) : null}\r\n {enableEditJsx}\r\n \r\n \r\n {contentJsx}\r\n \r\n \r\n );\r\n }\r\n}","import ApiService from \"../../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../../shared/types/enums\";\r\n\r\nexport default class PersonalSettingsService {\r\n\r\n static getFullUserAsOBS = (_tenantId, _userId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/User/GetFullUser?userid=${_userId}&tenantId=${_tenantId}`\r\n );\r\n };\r\n\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest, of, from } from \"rxjs\";\r\nimport { switchMap } from \"rxjs/operators\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../../../shared/types/enums\";\r\nimport { TextField, Grid } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../../../shared/store/authProvider\";\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../../shared/services/lookupService\";\r\nimport ApiService from \"../../../../../shared/services/apiService\";\r\nimport SectionComponent from \"../../../../../shared/components/sectionComponent\";\r\nimport { DataService } from \"../../../../../shared/services/dataService\";\r\nimport PersonalSettingsService from \"./personalSettingsStore\";\r\nimport ToastService from \"../../../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../../../shared/role-permissions/rolePermissionService\";\r\nimport OktaAuthService from \"../../../../../public/authentication/oktaAuthService\";\r\n\r\nclass PersonalSettingsModalComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n\r\n lastValidatedLoginResult = this.props.inputAction === CrudAction.UPDATE ? true : false;\r\n lastValidatedEmailResult = this.props.inputAction === CrudAction.UPDATE ? true : false;\r\n\r\n state = {\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isNew: this.props.inputAction !== CrudAction.UPDATE,\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n\r\n validatedLoginName: \"\",\r\n validatedPrimaryEmail: \"\",\r\n // source-permission - lookups\r\n // affiliates\r\n isAffiliatesLoading: true,\r\n scopeAffiliationsList: [], // holds all\r\n selAffiliationsList: [], // holds chip selected\r\n // affiliate-vendors\r\n isVendorsLoading: true,\r\n scopeVendorsList: [], // filtered by affiliates\r\n selVendorsList: [], // holds chip selected\r\n };\r\n\r\n getSelectedAffiliations = (selAffiliations, allAffiliations) => {\r\n let selected = DataService.hasElements(selAffiliations) ? (allAffiliations || []).filter((sr) => selAffiliations.includes(sr.id)) : [];\r\n return selected;\r\n };\r\n\r\n getSelectedCountries = (selCountries, allCountries) => {\r\n let selected = DataService.hasElements(selCountries) ? (allCountries || []).filter((sr) => selCountries.includes(sr.id)) : [];\r\n return selected;\r\n };\r\n\r\n getSelectedVendors = (selVendors, allVendors) => {\r\n let selected = DataService.hasElements(selVendors) ? (allVendors || []).filter((sr) => selVendors.includes(sr.id)) : [];\r\n return selected;\r\n };\r\n // getSelectedRoles = (selRoles, allRoles) => {\r\n // let selected = DataService.hasElements(selRoles) ? (allRoles || []).filter((sr) => selRoles.includes(sr.id)) : [];\r\n // return selected;\r\n // };\r\n getSelectedTransactionType = (selTran, allTran) => {\r\n let selected = DataService.hasElements(selTran) ? (allTran || []).filter((sr) => selTran.includes(sr.id)) : [];\r\n return selected;\r\n };\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n !DataService.isValidNumber(this.props.userId) ? of(null) : PersonalSettingsService.getFullUserAsOBS(this.context.user.tenantId, this.props.userId),\r\n LookupService.getAffiliationsAsOBS(this.context),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n LookupService.getLanguagesAsOBS(this.context),\r\n LookupService.getTimezonesAsOBS(this.context),\r\n LookupService.getFormattedCurrenciesAsOBS(this.context, null),\r\n LookupService.getRolesAsOBS(this.context),\r\n LookupService.getTransactionTypesAsOBS(this.context),\r\n ]).subscribe(\r\n ([\r\n _fullUserDataOrNull,\r\n _scopeAffiliationsList,\r\n _countryList,\r\n _languageList,\r\n _timeZoneList,\r\n _currencyList,\r\n _roles,\r\n _transactionTypeList,\r\n ]) => {\r\n\r\n _roles = (_roles || []).filter((x) => x.isActive === true);\r\n // remove from SCOPE affiliationList & transform its elemts into {id: 1, text: \"affialite 1\"}\r\n _scopeAffiliationsList = DataService.getKeyValueCollection(_scopeAffiliationsList, \"companyAffiliateId\", \"affiliateName\", false); // no All\r\n\r\n var _selAffiliationsList = this.getSelectedAffiliations(_fullUserDataOrNull !== null ? _fullUserDataOrNull.selectedAffiliatedCompanyList : [], _scopeAffiliationsList);\r\n // remove all from selection\r\n _selAffiliationsList = _selAffiliationsList || [];\r\n _selAffiliationsList = DataService.removeElementAll(_selAffiliationsList, \"id\");\r\n\r\n var _selCountryList = this.getSelectedCountries(_fullUserDataOrNull !== null ? _fullUserDataOrNull.selectedCountryList : [], _countryList);\r\n _selCountryList = DataService.getKeyValueCollection(_selCountryList, \"id\", \"value\", false);\r\n\r\n _transactionTypeList = DataService.getKeyValueCollection(_transactionTypeList, \"lovId\", \"lovKey\", false);\r\n var _selTransactionTypeList = this.getSelectedTransactionType(_fullUserDataOrNull !== null ? _fullUserDataOrNull.selectedTransactionTypeList : [], _transactionTypeList);\r\n _selTransactionTypeList = DataService.getKeyValueCollection(_selTransactionTypeList, \"id\", \"text\", false);\r\n\r\n _countryList = DataService.getKeyValueCollection(_countryList, \"id\", \"value\", false);\r\n _languageList = DataService.getKeyValueCollection(_languageList, \"id\", \"value\", false);\r\n _timeZoneList = DataService.getKeyValueCollection(_timeZoneList, \"id\", \"value\", false);\r\n _currencyList = DataService.getKeyValueCollection(_currencyList, \"id\", \"value\", false);\r\n _roles = DataService.getKeyValueCollection(_roles, \"roleId\", \"roleName\", false);\r\n\r\n this.oSubscriptions.add(\r\n LookupService.getVendorsByAffiliationsAsOBS(this.context.user.tenantId, _selAffiliationsList)\r\n .subscribe((_scopeVendorsList) => {\r\n // remove from SCOPE vendorList\r\n _scopeVendorsList = DataService.removeElementAll(_scopeVendorsList, \"id\"); // remove before passing\r\n\r\n var _selVendorsList = this.getSelectedVendors(_fullUserDataOrNull !== null ? _fullUserDataOrNull.selectedVendorList : [], _scopeVendorsList);\r\n _selVendorsList = DataService.removeElementAll(_selVendorsList, \"id\");\r\n\r\n // var _selRoles = this.getSelectedRoles(_fullUserDataOrNull !== null ? _fullUserDataOrNull.selectedRolesList : [], _roles);\r\n // _selRoles = DataService.removeElementAll(_selRoles, \"id\");\r\n\r\n this.setState(\r\n {\r\n // source-permissions\r\n scopeAffiliationsList: _scopeAffiliationsList.length > 0 ? DataService.addElementAll(_scopeAffiliationsList, \"id\") : [], // adds element\r\n scopeVendorsList: _scopeVendorsList.length > 0 ? DataService.addElementAll(_scopeVendorsList, \"id\") : [], // adds element\r\n countryList: _countryList.length > 0 ? DataService.addElementAll(_countryList, \"id\") : [], // adds element\r\n\r\n roles: _roles, //_roles.length > 0 ? DataService.addElementAll(_roles, \"id\") : [],\r\n selRoleId: _fullUserDataOrNull?.roleId,//_selRoles.length > 0 && _roles.length === _selRoles.length ? [LookupService.allElement] : _selRoles,\r\n\r\n // if both the scope and the selected length are equal then select only All\r\n // items that are already selected if any\r\n selAffiliationsList: _selAffiliationsList.length > 0 && _scopeAffiliationsList.length === _selAffiliationsList.length ? [LookupService.allElement] : _selAffiliationsList,\r\n selVendorsList: _selVendorsList.length > 0 && _scopeVendorsList.length === _selVendorsList.length ? [LookupService.allElement] : _selVendorsList,\r\n\r\n isAffiliatesLoading: false,\r\n isVendorsLoading: false,\r\n isUsersLoading: false,\r\n\r\n fullUserData: _fullUserDataOrNull,\r\n validatedLoginName: _fullUserDataOrNull?.primaryEmail,//_fullUserDataOrNull?.loginName,\r\n validatedPrimaryEmail: _fullUserDataOrNull?.primaryEmail,\r\n\r\n languageList: _languageList,\r\n timeZoneList: _timeZoneList,\r\n currencyList: _currencyList,\r\n //selCountryList: _selCountryList,\r\n selCountryList: _selCountryList.length > 0 && _countryList.length === _selCountryList.length ? [LookupService.allElement] : _selCountryList,\r\n\r\n selTransactionTypeList: _selTransactionTypeList.length > 0 && _transactionTypeList.length === _selTransactionTypeList.length ? [LookupService.allElement] : _selTransactionTypeList,\r\n transactionTypeList: DataService.addElementAll(_transactionTypeList, \"id\"),\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n })\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n getInitialValues() {\r\n return {\r\n firstName: this.state.isNew ? \"\" : this.state.fullUserData.firstName,\r\n middleInitial: this.state.isNew ? \"\" : this.state.fullUserData.middleInitial,\r\n lastName: this.state.isNew ? \"\" : this.state.fullUserData.lastName,\r\n title: this.state.isNew ? \"\" : this.state.fullUserData.title,\r\n activeID: this.state.isNew ? true : this.state.fullUserData.isActive,\r\n primaryEmail: this.state.isNew ? \"\" : this.state.fullUserData.primaryEmail,\r\n loginName: this.state.isNew ? \"\" : this.state.fullUserData.primaryEmail, //this.state.isNew ? \"\" : this.state.fullUserData.loginName,\r\n department: this.state.isNew ? \"\" : this.state.fullUserData.department,\r\n language: this.state.isNew ? \"\" : this.state.fullUserData.defaultLanguageId,\r\n timeZone: this.state.isNew ? \"\" : this.state.fullUserData.timeZoneId,\r\n currency: this.state.isNew ? \"\" : this.state.fullUserData.currencyId,\r\n\r\n // role: this.state.isNew ? \"\" : this.state.fullUserData.selectedRolesList,\r\n roleId: this.state.isNew ? \"\" : this.state.selRoleId,\r\n\r\n\r\n selAffiliationsList: this.state.selAffiliationsList,\r\n selVendorsList: this.state.selVendorsList,\r\n\r\n selCountryList: this.state.selCountryList,\r\n selTransactionTypeList: this.state.selTransactionTypeList,\r\n };\r\n }\r\n\r\n //validatedLoginName = \"\";\r\n //alidatedPrimaryEmail = \"\";\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n\r\n firstName: Yup.string().min(3, \"Must be atleast 3 characters long\").max(256, \"Must be 50 characters or less\").required(\"Required\"),\r\n middleInitial: Yup.string(),\r\n lastName: Yup.string().min(3, \"Must be atleast 3 characters long\").max(256, \"Must be 50 characters or less\").required(\"Required\"),\r\n title: Yup.string(),\r\n primaryEmail: Yup.string().email(\"Primary Email is not valid\").required(\"Required\").min(3, \"Must be at least 3 characters long\").max(50, \"Must be 50 characters or less\")\r\n .test(\"checkDuplicateEmail\", \"Email ID already exists\", async (_formikValue) => {\r\n if (this.props.inputAction === CrudAction.UPDATE && _formikValue === this.state.fullUserData.primaryEmail) {\r\n return true;\r\n } else {\r\n if (_formikValue === this.state.validatedPrimaryEmail) { return this.lastValidatedEmailResult; }\r\n else {\r\n try {\r\n const result = await fetch(`${process.env.REACT_APP_TENANT_HTTP}/User/CheckUserExists/${_formikValue}`, {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n });\r\n const isExists = await result.json();\r\n console.log(\"is primary email exists: \", !isExists);\r\n this.lastValidatedEmailResult = isExists;\r\n this.setState({ validatedPrimaryEmail: _formikValue });\r\n //this.validatedPrimaryEmail = _formikValue;\r\n return this.lastValidatedEmailResult;\r\n } catch {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n return false;\r\n }\r\n }\r\n }\r\n }),\r\n department: Yup.string(),\r\n roleId: Yup.number().required(),\r\n selAffiliationsList: DataService.hasElements(this.state.scopeAffiliationsList) ? Yup.array().required(\"Required\") : Yup.array(),\r\n selCountryList: DataService.hasElements(this.state.countryList) ? Yup.array().required(\"Required\") : Yup.array(),\r\n selVendorsList: DataService.hasElements(this.state.selVendorsList) ? Yup.array().required(\"Required\") : Yup.array(),\r\n selTransactionTypeList: DataService.hasElements(this.state.transactionTypeList) ? Yup.array().required(\"Required\") : Yup.array(),\r\n language: Yup.number().required(\"Required\").typeError(\"Required\"),\r\n timeZone: Yup.number().required(\"Required\").typeError(\"Required\"),\r\n currency: Yup.number().required(\"Required\").typeError(\"Required\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n const selRole = DataService.getFirstOrDefault(this.state.roles.filter(x => x.id === _formikProps.values.roleId), null);\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n // userID is set conditionally below\r\n loginName: _formikProps.values.primaryEmail, //this.state.fullUserData !== null ? this.state.fullUserData.loginName : _formikProps.values.primaryEmail,\r\n password: this.state.fullUserData !== null ? this.state.fullUserData.password : \"Porzio@1234\",\r\n tempPassword: \"\",\r\n firstName: _formikProps.values.firstName,\r\n lastName: _formikProps.values.lastName,\r\n isPorzioUser: this.state.fullUserData !== null ? this.state.fullUserData.isPorzioUser : false,\r\n tenantId: this.context.user.tenantId,\r\n userType: this.context.user.userTypeId,\r\n lastLoginDate: \"2020-09-22T17:31:43.114Z\",\r\n defaultLanguageId: _formikProps.values.language,\r\n middleInitial: _formikProps.values.middleInitial ?? '',\r\n title: _formikProps.values.title,\r\n primaryEmail: _formikProps.values.primaryEmail,\r\n department: _formikProps.values.department,\r\n isActive: _formikProps.values.activeID,\r\n timeZoneId: _formikProps.values.timeZone,\r\n currencyId: _formikProps.values.currency,\r\n\r\n roleId: selRole ? selRole.id : \"\",\r\n roleName: selRole ? selRole.text : \"\",\r\n selectedRolesList: [], // DataService.getScopeKeys(_formikProps.values.selRolesList, this.state.roles, \"id\"),\r\n selectedRolesListNames: [], // DataService.getScopeKeys(_formikProps.values.selRolesList, this.state.roles, \"text\"),\r\n rolesIntList: _formikProps.values.roleId ? [_formikProps.values.roleId] : [], //DataService.getScopeKeys(_formikProps.values.selRolesList, this.state.roles, \"id\"),\r\n roles: \"Master Data\",\r\n\r\n selectedAffiliatedCompanyList: DataService.getScopeKeys(this.state.selAffiliationsList, this.state.scopeAffiliationsList, \"id\"),\r\n selectedAffiliatedCompanyListNames: DataService.getScopeKeys(this.state.selAffiliationsList, this.state.scopeAffiliationsList, \"text\"),\r\n selectedCountryList: DataService.getScopeKeys(_formikProps.values.selCountryList, this.state.countryList, \"id\"),\r\n selectedCountryListNames: DataService.getScopeKeys(_formikProps.values.selCountryList, this.state.countryList, \"text\"),\r\n selectedVendorList: DataService.getScopeKeys(this.state.selVendorsList, this.state.scopeVendorsList, \"id\"),\r\n selectedVendorListNames: DataService.getScopeKeys(this.state.selVendorsList, this.state.scopeVendorsList, \"text\"),\r\n selectedTransactionTypeList: DataService.getScopeKeys(_formikProps.values.selTransactionTypeList, this.state.transactionTypeList, \"id\"),\r\n selectedTransactionTypes: DataService.getScopeKeys(_formikProps.values.selTransactionTypeList, this.state.transactionTypeList, \"text\"),\r\n\r\n addressList: this.state.fullUserData !== null ? this.state.fullUserData.addressList : [],\r\n contactList: this.state.fullUserData !== null ? this.state.fullUserData.contactList : [],\r\n createdBy: 0,\r\n updatedBy: 0,\r\n searchUserText: \"\",\r\n lastLogin: \"2020-09-22T17:31:43.114Z\",\r\n userName: _formikProps.values.primaryEmail, //this.state.fullUserData !== null ? this.state.fullUserData.loginName : _formikProps.values.primaryEmail,\r\n isCopy: false,\r\n addresses: \"\",\r\n contacts: \"\",\r\n tenantConnectionString: \"\",\r\n isLocked: false,\r\n tenantName: \"\",\r\n status: \"\",\r\n parentTenant: \"\",\r\n email: this.state.fullUserData !== null ? this.state.fullUserData.primaryEmail : _formikProps.values.primaryEmail, rolewithinTenant: \"\",\r\n loggedInUser: \"\",\r\n userPermissions: {\r\n isUserListView: true,\r\n isUserListExportView: true,\r\n isPersonalInformationCreate: true,\r\n isPersonalInformationView: true,\r\n isPersonalInformationEdit: true,\r\n isPersonalInformationDelete: true,\r\n isPersonalInformationViewDelete: true,\r\n isPrimaryEmailView: true,\r\n isRolesView: true,\r\n isRolesEdit: true,\r\n isActiveInactiveView: true,\r\n isActiveInactiveEdit: true,\r\n isOrganizationalMembershipView: true,\r\n isOrganizationalMembershipEdit: true,\r\n isAuthenticationView: true,\r\n isAuthenticationEdit: true,\r\n isCommunicationsView: true,\r\n isCommunicationsEdit: true,\r\n isUserAuditView: true,\r\n },\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n var actionVerb = \"\";\r\n if (this.state.isEditing) {\r\n // UPDATE\r\n actionVerb = \"POST\";\r\n mappedObj.userID = this.props.userId;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n } else {\r\n // CREATE\r\n actionVerb = \"POST\";\r\n mappedObj.userID = 0;\r\n mappedObj.createdBy = this.context.user.userId;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.TENANT, `/User/SaveUser`, JSON.stringify(mappedObj))\r\n .subscribe(\r\n (successResult) => {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS }, () => {\r\n console.log(successResult);\r\n if (successResult) {\r\n ToastService.showSuccess(\"Sucessfully Saved.\");\r\n this.props.refreshParentGrid(true);\r\n this.props.onClose(false);\r\n } else {\r\n ToastService.showError(\"Error while saving.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n });\r\n },\r\n (errorResult) => {\r\n ToastService.showError(\"Error while saving.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((errorObj) => {\r\n console.log(errorObj);\r\n ToastService.showError(\"Error while saving.\");\r\n (errorObj.inner || []).forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n getLanguageList(list) {\r\n let english = list.find(x => x.id === 1);\r\n let newList = list.filter(x => x.id !== 1);\r\n newList.unshift(english);\r\n return newList;\r\n }\r\n\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
\r\n \r\n\r\n \r\n { this.handleSubmit(fProps) })} />\r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_PRIMARY_EMAIL.cannotView ? null :\r\n \r\n }\r\n\r\n {/* */}\r\n \r\n\r\n {/* Tenant admin can modify the role regardless of the permissions */}\r\n {!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ROLES.cannotView ? null :\r\n {LayoutService.getSelectControl(this.state.isReadOnly || (!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ROLES.cannotEdit),\r\n classes, fProps, \"roleId\", \"Role *\", this.state.roles, \"id\", \"text\", \"80%\")}\r\n }\r\n\r\n {!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ACTIVE_INACTIVE.cannotView ? null :\r\n {LayoutService.getSwitch(this.state.isReadOnly || (!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ACTIVE_INACTIVE.cannotEdit),\r\n classes, fProps, \"activeID\", \"Active\")}\r\n }\r\n\r\n {!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ORG_MEMBERSHIP.cannotView ? null :\r\n <>\r\n \r\n\r\n {this.state.isAffiliatesLoading ? null\r\n : LayoutService.getChipSelect(this.state.isReadOnly || (!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ORG_MEMBERSHIP.cannotEdit),\r\n classes, fProps, \"selAffiliationsList\", \"Affiliated Companies *\", this.state.scopeAffiliationsList, \"id\", \"text\", this.onAffiliatesChange, \"80%\")}\r\n \r\n {LayoutService.getChipSelect(this.state.isReadOnly || (!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ORG_MEMBERSHIP.cannotEdit),\r\n classes, fProps, \"selCountryList\", \"Country Name *\", this.state.countryList, \"id\", \"text\",\r\n (_formikProps, _newValues) => { this._clearOthersIfAllIsSelected(_newValues, _formikProps, \"selCountryList\"); }, \"80%\")}\r\n \r\n {this.state.isVendorsLoading || DataService.hasNoElements(this.state.selAffiliationsList) ? null\r\n : LayoutService.getChipSelect(this.state.isReadOnly || (!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ORG_MEMBERSHIP.cannotEdit),\r\n classes, fProps, \"selVendorsList\", \"Vendors\", this.state.scopeVendorsList, \"id\", \"text\", this.onVendorsChange, \"80%\")}\r\n \r\n {LayoutService.getChipSelect(this.state.isReadOnly || (!this.state.isNew && RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION_ORG_MEMBERSHIP.cannotEdit),\r\n classes, fProps, \"selTransactionTypeList\", \"Transaction Type *\", this.state.transactionTypeList, \"id\", \"text\",\r\n (_formikProps, _newValues) => { this._clearOthersIfAllIsSelected(_newValues, _formikProps, \"selTransactionTypeList\"); }, \"80%\")}\r\n \r\n \r\n }\r\n\r\n\r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"language\", \"Language *\", this.getLanguageList(this.state.languageList), \"id\", \"text\", \"80%\")}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"timeZone\", \"Time Zone *\", this.state.timeZoneList, \"id\", \"text\", \"80%\")}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"currency\", \"Currency *\", this.state.currencyList, \"id\", \"text\", \"80%\")}\r\n\r\n \r\n
\r\n )\r\n }\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { }} />\r\n );\r\n }\r\n } /* */\r\n\r\n onAffiliatesChange = async (_formikProps, _newValues) => {\r\n // 1) clear the selected userList & its datasource\r\n await this._clearLookupStuff(_formikProps, \"isUsersLoading\", \"selUsersList\", \"scopeUsersList\");\r\n // 2) clear the selected vendorList & its datasource\r\n await this._clearLookupStuff(_formikProps, \"isVendorsLoading\", \"selVendorsList\", \"scopeVendorsList\");\r\n // 3) set the newely selectedAffiliations\r\n this.setState({ selAffiliationsList: _newValues }); // this is not formik equivalent, but updating just for reference\r\n // 4) filterFetch the vendorsList and set it as the datasource\r\n if (DataService.hasElements(_newValues)) {\r\n // clear others if is selected\r\n await this._clearOthersIfAllIsSelected(_newValues, _formikProps, \"selAffiliationsList\");\r\n // fetch and assign\r\n LookupService.getVendorsByAffiliationsAsOBS(this.context.user.tenantId, _newValues)\r\n .subscribe(\r\n (successResult) => {\r\n // load datasource for vendors-ChipSelect\r\n this.setState({\r\n scopeVendorsList: successResult.length > 0 ? DataService.addElementAll(successResult, \"id\") : [],\r\n isVendorsLoading: false,\r\n });\r\n },\r\n (errorResult) => {\r\n ToastService.showError(\"Error loading Affiliate-Vendors\");\r\n console.log(\"Error loading Affiliate-Vendors\", errorResult);\r\n }\r\n );\r\n }\r\n };\r\n\r\n onVendorsChange = async (_formikProps, _newValues) => {\r\n // 1) set the newely selUsersList\r\n this.setState({ selVendorsList: _newValues }); // this is not formik equivalent, but updating just for reference\r\n // 2) clear others if is selected\r\n if (DataService.hasElements(_newValues)) {\r\n await this._clearOthersIfAllIsSelected(_newValues, _formikProps, \"selVendorsList\");\r\n }\r\n };\r\n\r\n // Utils\r\n _clearOthersIfAllIsSelected = async (_newValues, _formikProps, _propName) => {\r\n // check for Item\r\n const itemAll = DataService.getFirstOrDefault(\r\n _newValues.filter((x) => x.id === LookupService.allElement.id)\r\n );\r\n // if is selected and is not the only selected item, then clear others\r\n if (itemAll && _newValues.length !== 1) {\r\n // then clear the others except All\r\n await _formikProps.setFieldValue(_propName, [itemAll], true);\r\n this.setState({ [_propName]: [itemAll] });\r\n }\r\n };\r\n\r\n _clearLookupStuff = async (_formikProps, _loadingKey, _selectionKey, _scopeKey) => {\r\n this.setState({ [_loadingKey]: true }); // set the vendors loading as true\r\n await _formikProps.setFieldValue(_selectionKey, [], true);\r\n await _formikProps.setFieldTouched(_selectionKey, true, false);\r\n this.setState({ [_selectionKey]: [], [_scopeKey]: [] }); // clear the user datasource\r\n };\r\n\r\n //---\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(PersonalSettingsModalComponent);","import React, { Component } from \"react\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { Box, Divider } from \"@material-ui/core\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\n\r\nclass AuditComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n columnDefs: [\r\n {\r\n headerName: \"Field\",\r\n field: \"field\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Beginning Value\",\r\n field: \"beginningValue\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Ending Value\",\r\n field: \"endingValue\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Modified On\",\r\n field: \"modifiedOn\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Modified By\",\r\n field: \"modifiedBy\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n ],\r\n rowData: [\r\n {\r\n field: \"FirstName\",\r\n beginningValue: \"Satyendra\",\r\n endingValue: \"Mustafa\",\r\n modifiedOn: \"2020-06-11 12:15:01\",\r\n modifiedBy: \"mustafa_alure@epam.com\",\r\n },\r\n {\r\n field: \"IsPorzioUser\",\r\n beginningValue: \"True\",\r\n endingValue: \"False\",\r\n modifiedOn: \"2020-06-11 12:15:01\",\r\n modifiedBy: \"mustafa_alure@epam.com\",\r\n },\r\n ],\r\n };\r\n }\r\n // componentDidMount() {\r\n // fetch(\r\n // \"https://gst2coreapi.azurewebsites.net/SourceSystems/GetRuleDetailsBySource/25\",\r\n // {\r\n // method: \"GET\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // }\r\n // )\r\n // .then((result) => result.json())\r\n // .then((rowData) => this.setState({ rowData }))\r\n // .then((a) => console.log(a))\r\n // .catch((err) => console.log(err));\r\n // }\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n render() {\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 AuditComponent;\r\n","import React from \"react\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { ResultStatus } from \"../../../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../../shared/components/page/pageErrorComponent\";\r\n\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\nimport { TextField } from \"@material-ui/core\";\r\n\r\nclass AuthenticationModalComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n componentWillUnmount() {}\r\n componentDidMount() {\r\n //this.SERVICE.fetchData(this);\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n }\r\n\r\n getInitialValues() {\r\n return {\r\n oldPassword: \"\",\r\n newPassword: \"\",\r\n confirmPassword: \"\",\r\n };\r\n }\r\n\r\n getValidationSchema() {\r\n return Yup.object({\r\n oldPassword: Yup.string()\r\n .min(3, \"Must be atleast 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .required(\"Required\"),\r\n newPassword: Yup.string()\r\n .min(3, \"Must be atleast 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .required(\"Required\"),\r\n confirmPassword: Yup.number()\r\n .min(0, \"Must be above 0\")\r\n .max(100, \"Must be below 100\")\r\n .required(\"Required\"),\r\n });\r\n }\r\n\r\n handleSubmit(_formikProps) {\r\n if (_formikProps.isSubmitting) {\r\n return;\r\n } else {\r\n if (_formikProps.isValid) {\r\n // TODO\r\n alert(JSON.stringify(_formikProps.values));\r\n this.setState({\r\n fetchResult: ResultStatus.LOADING,\r\n });\r\n _formikProps.setSubmitting(true);\r\n setTimeout(() => {\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n _formikProps.setSubmitting(false);\r\n }, 3000);\r\n } else {\r\n alert(\"Invalid values\");\r\n }\r\n }\r\n }\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n \r\n )}\r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n //this.SERVICE.fetchData(this, true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(AuthenticationModalComponent);\r\n","import React from \"react\";\r\nimport {\r\n withStyles,\r\n DialogTitle,\r\n DialogContent,\r\n Tabs,\r\n Tab,\r\n Box,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n Divider,\r\n} from \"@material-ui/core\";\r\n\r\nimport PersonalSettingsModalComponent from \"./personalSettings/personalSettingsModalComponent\";\r\nimport AuditComponent from \"./audit/auditComponent\";\r\nimport AuthenticationModalComponent from \"./authentication/authenticationModalComponent\";\r\nimport { ResultStatus, CrudAction } from \"../../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass UserDialogComponent extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // bind\r\n this.onValueChange = this.onValueChange.bind(this);\r\n\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n selectedTabIndex: 0,\r\n // build the state with the error model\r\n model: LayoutService.buildWithErrorModel({\r\n taskName: \"\",\r\n taskPriority: \"\",\r\n taskAssignedTo: \"Pradeep\",\r\n startDate: \"01/01/2020\",\r\n dueDate: \"31/12/2020\",\r\n status: \"Active\",\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() { }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS, });\r\n }\r\n\r\n onTabChange = (event, newValue) => {\r\n this.setState({ selectedTabIndex: newValue });\r\n };\r\n\r\n onValueChange(_event) {\r\n const key = _event.target.id;\r\n const value = _event.target.value;\r\n\r\n // set value\r\n this.setState({ model: { [key]: value, }, });\r\n\r\n // set validation message\r\n switch (key) {\r\n case \"taskName\": this.setModelError(key, value === \"\", \"Task Name is required\"); break;\r\n case \"taskPriority\": this.setModelError(key, value === \"\", \"Task Priority is required\"); break;\r\n case \"taskAssignedTo\": this.setModelError(key, value === \"\", \"Assigned To is required\"); break;\r\n case \"startDate\": this.setModelError(key, value === \"\", \"Start Date is required\"); break;\r\n case \"dueDate\": this.setModelError(key, value === \"\", \"Due Date is required\"); break;\r\n case \"status\": this.setModelError(key, value === \"\", \"Status is required\"); break;\r\n default: console.log(\"User Dialog Component default\");\r\n }\r\n }\r\n\r\n setModelError(_key, _hasError, _errorMsg) {\r\n this.setState({\r\n model: {\r\n [_key + \"_error\"]: _hasError ? _errorMsg : null,\r\n },\r\n });\r\n }\r\n\r\n buildProps(_key, _label) {\r\n return {\r\n label: _label,\r\n id: _key,\r\n name: _key,\r\n defaultValue: this.state.model[_key],\r\n error: this.state.model[_key + \"_error\"] !== null,\r\n helperText: this.state.model[_key + \"_error\"],\r\n onChange: this.onValueChange,\r\n };\r\n }\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.USER_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose(false); });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {/* Header */}\r\n \r\n \r\n \r\n Personal Settings\r\n { this.props.onClose(false); }}>{MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n {this.props.inputAction === CrudAction.UPDATE ? (\r\n <>\r\n \r\n \r\n \r\n\r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { }} />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(UserDialogComponent);","import React from \"react\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport { Button, DialogContent, DialogContentText, DialogTitle, DialogActions } from \"@material-ui/core\";\r\nimport LayoutService from \"../../services/layoutService\";\r\n\r\nclass ActionDialogComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n }\r\n render() {\r\n const { showDialog, title, description, content, actions, classes } = this.props;\r\n\r\n\r\n return (\r\n \r\n {title}\r\n \r\n {description}\r\n {content}\r\n \r\n \r\n {actions.map((_action, index) => {\r\n return \r\n })}\r\n \r\n \r\n );\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(ActionDialogComponent);\r\n\r\n","import { CELL_ACTION } from \"../../../shared/types/enums\";\r\nimport { DataService } from \"../dataService\";\r\nimport LayoutService from \"../layoutService\";\r\nimport ToastService from \"../toastService\";\r\n\r\n/**\r\n * Author : Pradeep_Rajendran@epam.com\r\n */\r\nexport class AgGridUtil {\r\n\r\n gridParams = null;\r\n /** derived from gridParams (equivalent of this.gridParams.api) */\r\n gridApi = null;\r\n /** derived from gridParams (equivalent of this.gridParams.columnApi) */\r\n gridColumnApi = null; // derived from gridParams\r\n\r\n gridColumnNameMap = new Map();\r\n\r\n defaultColumnName = \"\";\r\n frameworkComponents = {};\r\n\r\n editingRowIndex = -1;\r\n lastEditedRowIndex = -1;\r\n\r\n /**\r\n * will be called when client-component is re-rendered\r\n */\r\n resetIndexes() {\r\n this.editingRowIndex = -1;\r\n this.lastEditedRowIndex = -1;\r\n }\r\n\r\n getStyles() {\r\n return LayoutService.getStyles();\r\n }\r\n\r\n\r\n /**\r\n * @param _defaultColumnName Column to focus when EditIcon is Clicked\r\n */\r\n constructor(_defaultColumnName, _frameworkComponents) {\r\n this.defaultColumnName = _defaultColumnName;\r\n this.frameworkComponents = _frameworkComponents;\r\n this.resetIndexes();\r\n }\r\n\r\n /**\r\n * Usage:\r\n * { this.STORE.agGridUtils.setGridParams(params, true); }}\r\n * ...\r\n * @param _gridParams pass the grid params through onGridReady prop of the AgGridReact\r\n * @param _sizeColumnsToFit if set to true, calls the gridParams.api.sizeColumnsToFit()\r\n */\r\n setGridParams = (_gridParams, _sizeColumnsToFit) => {\r\n this.gridParams = _gridParams;\r\n this.gridApi = _gridParams.api;\r\n this.gridColumnApi = _gridParams.columnApi;\r\n\r\n this.gridColumnApi.getAllColumns().forEach((column) => {\r\n this.gridColumnNameMap.set(column.colId.toLowerCase(), column);\r\n })\r\n\r\n\r\n if (_sizeColumnsToFit) { this.gridApi.sizeColumnsToFit(); }\r\n // params.setDomLayout(\"autoHeight\");\r\n };\r\n\r\n getSelectedRows = (_selectColumnName) => {\r\n let oRET = [];\r\n this.gridApi.forEachNode((rowNode) => {\r\n // !!! this is very important as we cannot rely on the rowNode.rowIndex after a sort, so we are using the id to localte the correct index of the row\r\n const sortAndFilterAwareRowNode = this.gridApi.getRowNode(rowNode.id);\r\n if (sortAndFilterAwareRowNode.data[_selectColumnName] === true) {\r\n oRET.push(sortAndFilterAwareRowNode);\r\n }\r\n });\r\n return oRET;\r\n }\r\n\r\n sizeColumnsToFit = () => {\r\n if (this.gridParams && this.gridParams.api) {\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n }\r\n\r\n autoSizeColumns = (_skipHeader = false) => {\r\n var allColumnIds = [];\r\n this.gridParams.columnApi.getAllColumns().forEach(function (column) {\r\n allColumnIds.push(column.colId);\r\n });\r\n this.gridParams.columnApi.autoSizeColumns(allColumnIds, _skipHeader);\r\n }\r\n\r\n /**\r\n * Used to spread the default events for enabling the Inline-Edit\r\n * USAGE:\r\n * {\r\n this.resetIndexes();\r\n return {\r\n editType: \"fullRow\",\r\n suppressClickEdit: true,\r\n stopEditingWhenGridLosesFocus: false,\r\n // suppressCellSelection: true,\r\n // suppressRowClickSelection: true,\r\n onRowClicked: (_event) => {\r\n this._handleRowClick(_event);\r\n },\r\n onRowEditingStopped: (_event) => {\r\n // To prevent this geting triggered recursively\r\n if (this.lastEditedRowIndex !== _event.rowIndex) {\r\n this.lastEditedRowIndex = _event.rowIndex;\r\n this._handleRowEditingStopped(_event);\r\n }\r\n },\r\n };\r\n };\r\n\r\n /**\r\n * Not Implemented yet\r\n * @param {*} _parentThisRef \r\n * @param {*} _agGridUtils \r\n * @param {*} _rowData \r\n * @param {*} _columnDefs \r\n * @param {*} _frameworkComponents \r\n * @param {*} _rowHeight \r\n */\r\n static getInlineRowEditGridProps = (_parentThisRef, _agGridUtils, _rowData, _columnDefs, _frameworkComponents, _rowHeight = 32) => {\r\n return {\r\n rowData: _rowData,\r\n columnDefs: _columnDefs,\r\n frameworkComponents: _frameworkComponents,\r\n suppressClickEdit: true,\r\n gridOptions: {\r\n context: { componentParent: _parentThisRef },\r\n suppressContextMenu: true,\r\n rowHeight: _rowHeight,\r\n ..._agGridUtils.bindInlineEditEvents(),\r\n },\r\n onGridReady: (_params) => {\r\n _agGridUtils.setGridParams(_params, true);\r\n }\r\n };\r\n }\r\n\r\n /**\r\n * Returns an edit Icon column for the AgGrid's ColumnDef with all the necessacry logics to handle Edit/Cancel/Accept button\r\n * @param _showDelete Shows/Hides delete Icon\r\n * @param _onAcceptObsCallback called when accept button is clicked after an edit, the obs isSuccess determines to hide the accept button or not\r\n * @param _headerText Column Header Text of the agGrid\r\n * @param _frameworkCellRenderer eg: frameworkComponents: { inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent }\r\n {\r\n return {\r\n headerName: _headerText,\r\n width: _width,\r\n minWidth: _width,\r\n maxWidth: _width,\r\n cellStyle: _cellStyle,\r\n headerClass: \"text-center\",\r\n field: AgGridUtil.specialProperty,\r\n cellRenderer: _frameworkCellRenderer,\r\n cellRendererParams: {\r\n showDelete: _showDelete,\r\n onClick: (_cellRef, _action) => {\r\n switch (_action) {\r\n case CELL_ACTION.DELETE:\r\n if (this.isNotEditing()) {\r\n // TODO: ask for confirmation\r\n this.gridApi.applyTransaction({ remove: [_cellRef.props.data] });\r\n this._cancelRowEdit();\r\n }\r\n break;\r\n case CELL_ACTION.EDIT:\r\n if (this.isNotEditing()) {\r\n this.setEditingProperty(_cellRef.props.data); // make sure it exists\r\n // redraw the specific cells only\r\n this.refreshRows(_cellRef.props.api, [_cellRef.props.node]); // applies to other columns as well\r\n // set the row as editing row\r\n this._setEditingRow(_cellRef.props.rowIndex);\r\n }\r\n break;\r\n case CELL_ACTION.ACCEPT:\r\n _onAcceptObsCallback(_cellRef).subscribe((_result) => {\r\n if (_result.isSuccess) {\r\n this.clearPinnedColumns(); // clear pinned column\r\n this.deleteEditingProperty(_cellRef.props.data); // make sure it exists\r\n this._acceptRowEdit();\r\n // redraw the specific cells only\r\n this.refreshRows(_cellRef.props.api, [_cellRef.props.node]);\r\n this.focusEditCell(_cellRef.props.rowIndex);\r\n } else {\r\n // focus the _result.invalidCell\r\n ToastService.showError(_result.invalidMessage);\r\n if (_result.invalidCellRef) { this.gridApi.setFocusedCell(_result.invalidCellRef.props.rowIndex, _result.invalidCellRef.props.column.colId); }\r\n }\r\n });\r\n break;\r\n case CELL_ACTION.CANCEL:\r\n this.clearPinnedColumns(); // clear pinned column\r\n this.deleteEditingProperty(_cellRef.props.data); // make sure it exists\r\n // redraw the specific cells only\r\n this.refreshRows(_cellRef.props.api, [_cellRef.props.node]); // applies to other columns as well\r\n this._cancelRowEdit();\r\n this.focusEditCell(_cellRef.props.rowIndex);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n },\r\n },\r\n };\r\n };\r\n\r\n focusEditCell = (_rowIndex) => {\r\n if (_rowIndex >= 0) {\r\n setTimeout(() => {\r\n this.gridApi.ensureColumnVisible(AgGridUtil.specialProperty);\r\n this.gridApi.setFocusedCell(_rowIndex, AgGridUtil.specialProperty); // focus the default cell\r\n }, 0);\r\n }\r\n }\r\n\r\n //#region SPECIAL-PROPERTY-ZONE\r\n static specialProperty = \"specialProperty\";\r\n static editingProperty = \"isEditing\";\r\n static readOnlyProperty = \"isReadOnly\";\r\n\r\n ensureSpecialProperty = (_rowData) => {\r\n if (!_rowData[AgGridUtil.specialProperty]) {\r\n _rowData[AgGridUtil.specialProperty] = {};\r\n // add the properties\r\n _rowData[AgGridUtil.specialProperty][AgGridUtil.editingProperty] = false;\r\n _rowData[AgGridUtil.specialProperty][AgGridUtil.readOnlyProperty] = false;\r\n }\r\n return _rowData;\r\n }\r\n deleteSpecialProperty = (_rowData) => {\r\n this.ensureSpecialProperty(_rowData); // make sure it exists\r\n delete _rowData[AgGridUtil.specialProperty]; // simply delete the property\r\n }\r\n\r\n deleteEditingProperty = (_rowData) => {\r\n this.ensureSpecialProperty(_rowData); // make sure it exists\r\n delete _rowData[AgGridUtil.specialProperty][AgGridUtil.editingProperty]; // simply delete the property\r\n }\r\n\r\n setEditingProperty = (_rowData) => {\r\n this.pinColumn(AgGridUtil.specialProperty); // ensure pinned on edit\r\n this.ensureSpecialProperty(_rowData); // make sure it exists\r\n _rowData[AgGridUtil.specialProperty][AgGridUtil.editingProperty] = true;\r\n }\r\n\r\n pinColumn = (_colName, _side = \"left\") => {\r\n this.gridColumnApi.applyColumnState({\r\n state: [{ colId: _colName, pinned: _side }],\r\n defaultState: { pinned: null },\r\n });\r\n }\r\n clearPinnedColumns = () => {\r\n this.gridColumnApi.applyColumnState({ defaultState: { pinned: null } });\r\n }\r\n\r\n deleteReadOnlyProperty = (_rowData) => {\r\n this.ensureSpecialProperty(_rowData); // make sure it exists\r\n delete _rowData[AgGridUtil.specialProperty][AgGridUtil.readOnlyProperty]; // simply delete the property\r\n }\r\n\r\n /**\r\n * Should be implemented in 2 places:\r\n * 1/2) before render()'s return stmt : \r\n * 2/2) inside agGrid's onGridReady() : \r\n * @param {*} _isReadOnly If handled in the component then pass else if handled in the parent then pass \r\n */\r\n setReadOnlyMode = (_isReadOnly) => {\r\n if (this.gridParams) {\r\n this.gridApi.forEachNode((rowNode) => {\r\n this.ensureSpecialProperty(rowNode.data); // ensure the property exists\r\n rowNode.data[AgGridUtil.specialProperty][AgGridUtil.readOnlyProperty] = _isReadOnly;\r\n //rowNode.data[AgGridUtil.specialProperty][AgGridUtil.editingProperty] = !_isReadOnly;\r\n });\r\n\r\n // rerender the cells\r\n this.refreshAllCells(this.gridParams.api);\r\n }\r\n }\r\n\r\n setEditingMode = (_isReadOnly) => {\r\n if (this.gridParams) {\r\n this.gridApi.forEachNode((rowNode) => {\r\n this.ensureSpecialProperty(rowNode.data); // ensure the property exists\r\n //rowNode.data[AgGridUtil.specialProperty][AgGridUtil.readOnlyProperty] = _isReadOnly;\r\n rowNode.data[AgGridUtil.specialProperty][AgGridUtil.editingProperty] = !_isReadOnly;\r\n });\r\n\r\n // rerender the cells\r\n this.refreshAllCells(this.gridParams.api);\r\n }\r\n }\r\n\r\n /**\r\n * Should be implemented in 2 places:\r\n * 1/2) before render()'s return stmt : \r\n * 2/2) inside agGrid's onGridReady() : \r\n * @param {*} _value If handled in the component then pass else if handled in the parent then pass \r\n */\r\n disableEditability(_value) {\r\n if (this.gridParams) {\r\n this.gridApi.forEachNode((rowNode) => {\r\n this.ensureSpecialProperty(rowNode.data); // ensure the property exists\r\n rowNode.data[AgGridUtil.specialProperty][AgGridUtil.readOnlyProperty] = _value;\r\n rowNode.data[AgGridUtil.specialProperty][AgGridUtil.editingProperty] = !_value;\r\n });\r\n\r\n // rerender the cells\r\n this.refreshAllCells(this.gridParams.api);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n /** @returns true if the Grid is in EditMode */\r\n isEditing = () => {\r\n return this.editingRowIndex > -1;\r\n };\r\n /** @returns true if the Grid is Not in EditMode */\r\n isNotEditing = () => {\r\n return this.editingRowIndex === -1;\r\n };\r\n\r\n autoSizeAllColumns = (_skipHeader = false) => {\r\n var allColumnIds = [];\r\n this.gridColumnApi.getAllColumns().forEach((col) => { allColumnIds.push(col.colId); });\r\n this.gridColumnApi.autoSizeColumns(allColumnIds, _skipHeader);\r\n };\r\n\r\n /**\r\n * @returns the Array of modified row data\r\n */\r\n getUpdatedRowData = () => {\r\n const oRET = [];\r\n this.gridApi.forEachNode((rowNode) => {\r\n this.deleteSpecialProperty(rowNode.data); // remove temporary specialProperty Field\r\n oRET.push(rowNode.data);\r\n });\r\n return oRET;\r\n }\r\n\r\n /**\r\n * @returns the Array of modified Row Nodes\r\n */\r\n getUpdatedRowNodes = () => {\r\n const oRET = [];\r\n this.gridApi.forEachNode((rowNode) => {\r\n this.deleteSpecialProperty(rowNode.data); // remove temporary specialProperty Field\r\n oRET.push(rowNode);\r\n });\r\n return oRET;\r\n }\r\n\r\n /**\r\n * Refreshes the cells of the specified columns and rows\r\n * @param {*} _gridApi \r\n * @param {*} _rowNodes pass the array of row nodes\r\n * @param {*} _fieldNames pass the array of column names\r\n */\r\n refreshCells = (_gridApi, _rowNodes, _fieldNames) => {\r\n _gridApi.refreshCells({\r\n rowNodes: _rowNodes, // specify rows, or all rows by default\r\n columns: _fieldNames, // specify columns, or all columns by default\r\n force: true,\r\n });\r\n };\r\n\r\n /**\r\n * Refreshes all Rows cells of the specified columns\r\n * @param {*} _gridApi \r\n * @param {*} _fieldNames pass column names as array\r\n */\r\n refreshColumns = (_gridApi, _fieldNames) => {\r\n _gridApi.refreshCells({ columns: _fieldNames, force: true, });\r\n };\r\n\r\n /**\r\n * Refreshes all Columns cells of the specified Rows\r\n * @param {*} _gridApi \r\n * @param {*} _rowNodes pass the row nodes as array\r\n */\r\n refreshRows = (_gridApi, _rowNodes) => {\r\n _gridApi.refreshCells({\r\n rowNodes: _rowNodes, // specify rows, or all rows by default\r\n force: true\r\n });\r\n };\r\n\r\n /**\r\n * Refreshes all cells of the Grid\r\n * @param {*} _gridApi \r\n */\r\n refreshAllCells = (_gridApi) => {\r\n _gridApi.refreshCells({ force: true });\r\n };\r\n\r\n _lastEditedRowNode = null;\r\n /**\r\n * Called when the Edit-Icon is clicked\r\n * cancells the currently editing row if any,\r\n * makes the rowIndex Editable, and focuses on the defaultColumnName\r\n * @param _rowIndex to make editable\r\n */\r\n _setEditingRow = (_rowIndex) => {\r\n this.gridApi.stopEditing(true); // cancells any previous editing row\r\n this.editingRowIndex = _rowIndex; // set the current editing row Index\r\n this.gridApi.setFocusedCell(_rowIndex, this.defaultColumnName); // focus the default cell\r\n this.gridApi.startEditingCell({\r\n rowIndex: _rowIndex,\r\n colKey: this.defaultColumnName,\r\n }); // start editing the row\r\n\r\n // cache \r\n if (!this._lastEditedRowNode || this._lastEditedRowNode.rowIndex !== _rowIndex) {\r\n // TODO: for new node add, the below get row node returns obj with no keys, as a result an error is thrown,.. handle it \r\n // may be we need to hanfle new node differently\r\n this._lastEditedRowNode = Object.assign({}, this.gridApi.getRowNode(_rowIndex)); // shallow copy the node\r\n this._lastEditedRowNode.data = JSON.parse(JSON.stringify(this._lastEditedRowNode.data)); // deepclone data part\r\n }\r\n };\r\n\r\n /**\r\n * Called when the Cancel-Icon is clicked,\r\n * Discards any changes made\r\n */\r\n _cancelRowEdit = () => {\r\n this.gridApi.stopEditing(true); // true <- true <- cancel modifications and stops edit\r\n\r\n // if cancelled is a new row, then delete it from the grid\r\n if (this.addedRow && this.addedRow.rowIndex === this.editingRowIndex) {\r\n this.cancelNewRow();\r\n } else if (this.isEditing() && this._lastEditedRowNode) {\r\n var oldData = JSON.parse(JSON.stringify(this._lastEditedRowNode.data));\r\n this.ensureSpecialProperty(oldData); // make sure property exists\r\n oldData[AgGridUtil.specialProperty][AgGridUtil.editingProperty] = false; // set the editing mode as false\r\n this._lastEditedRowNode = null; // clear the cache\r\n\r\n var rowNode = this.gridApi.getRowNode(this.editingRowIndex);\r\n rowNode.data = oldData;\r\n\r\n var res = this.gridApi.applyTransaction({ update: [rowNode.data] });\r\n\r\n }\r\n\r\n // clear all others\r\n this.editingRowIndex = -1; // clears the editing Flag to allow navigation\r\n };\r\n\r\n /**\r\n * Helps to track the newly added row\r\n * Tracking will be removed if:\r\n * 1) Changes accepted by clicking the Accept Button after validation\r\n * 2) Changes Cancelled by clicking the Cancel Button\r\n */\r\n addedRow = null;\r\n\r\n /**\r\n * Adds a new row at the end of the grid and sets the focus to it.\r\n * Call this when other row is not editing and when add button is clicked\r\n * @param _newRowData pass the empty row Object with all keys\r\n */\r\n addNewRow = (_newRowData) => {\r\n // ensure specialProperty Exists\r\n this.ensureSpecialProperty(_newRowData);\r\n // set the esiting property\r\n _newRowData[AgGridUtil.specialProperty][AgGridUtil.editingProperty] = true;\r\n // const keys = Object.keys(_newRowData);\r\n // if (!keys.includes(\"isEditing\")) {\r\n // _newRowData.isEditing = true;\r\n // }\r\n\r\n this.addedRow = this.gridApi.applyTransaction({\r\n add: [_newRowData],\r\n }).add[0];\r\n this._setEditingRow(this.addedRow.rowIndex); // set this as the new row to edit\r\n };\r\n\r\n /**\r\n * This deletes the newely added row from the UI & the Underlying DataSource\r\n */\r\n cancelNewRow = () => {\r\n if (this.addedRow) {\r\n this.gridApi.applyTransaction({ remove: [this.addedRow.data] });\r\n this.addedRow = null; // remove tracking\r\n }\r\n };\r\n\r\n /**\r\n * Called when the Accept-Icon is clicked\r\n * Note: Should be called after validating the current changes\r\n */\r\n _acceptRowEdit = () => {\r\n this._lastEditedRowNode = null; // clear the cached values\r\n this.addedRow = null; // once validated, the added row becomes applied, so no longer track it\r\n this.editingRowIndex = -1; // clears the editing Flag to allow navigation\r\n this.gridApi.stopEditing(); // stops the editing\r\n };\r\n\r\n /** Prevents Editing Row from Losing focus, when the use clicks on an another row leaving the edit mode open */\r\n _handleRowClick = (_event) => {\r\n if (\r\n // To prevent this geting triggered if we are navigation inside the sameRow\r\n this.editingRowIndex !== _event.rowIndex &&\r\n // if Accept/Cancel is not clicked (>-1), but a new row receives focus\r\n this.isEditing()\r\n ) {\r\n this._setEditingRow(this.editingRowIndex); // move the focus back to the editing row\r\n }\r\n };\r\n\r\n /** Used to Prevent Cancellation of the EditMode of a Row Abruptly\r\n * Aceives this by reverting back the editing mode if the editing mode is lost\r\n * because of an keyPress (or) MouseClick on other Rows.\r\n * */\r\n _handleRowEditingStopped = (_event) => {\r\n // editingRowIndex will be -1 only if Accept/Cancel is clicked\r\n if (this.isEditing()) {\r\n this._setEditingRow(this.editingRowIndex); // move the focus back to the editing row\r\n }\r\n };\r\n\r\n /**\r\n * \r\n * @param {*} _rowsToUpdate pass array of rows to update\r\n */\r\n updateRows = (_rowsToUpdate) => {\r\n this.gridParams.api.applyTransaction({ update: _rowsToUpdate });\r\n }\r\n\r\n /**\r\n * \r\n * @param {*} columnValueMaxLengths {'colName1': 50, 'colName2' : 5 }\r\n * @returns \r\n */\r\n static truncateOnMaxCharLengthExceeds = (columnValueMaxLengths) => {\r\n return {\r\n onCellEditingStopped: (e) => {\r\n if (!columnValueMaxLengths) { columnValueMaxLengths = {}; }\r\n const columnNames = Object.keys(columnValueMaxLengths);\r\n\r\n if (columnNames.includes(e.column.colDef.field)) {\r\n let maxLength = columnValueMaxLengths[e.column.colDef.field];\r\n maxLength = maxLength > 0 ? maxLength : 256;\r\n const originalValue = e.value + \"\";\r\n if (originalValue.length > maxLength) {\r\n e.node.setDataValue(e.column.colId, originalValue.substr(0, maxLength));\r\n ToastService.showWarning(`Cannot exceed ${maxLength} Characters`);\r\n }\r\n }\r\n\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Determines if restrictions are applied via SpecialProperty\r\n * @param {*} _cellProps \r\n */\r\n static isEditingAllowed = (_cellProps) => {\r\n const specialObj = (_cellProps || {}).data[AgGridUtil.specialProperty];\r\n const isEditing = DataService.isNullOrUndefined(specialObj) ? false : specialObj[AgGridUtil.editingProperty] === true;\r\n const isReadOnly = DataService.isNullOrUndefined(specialObj) ? false : specialObj[AgGridUtil.readOnlyProperty] === true;\r\n\r\n // if specialObject not exits then allow editing, else it should not be readonly and should be in editing Mode\r\n const _allowEditing = DataService.isNullOrUndefined(specialObj) || (!isReadOnly && isEditing);\r\n\r\n // return\r\n return _allowEditing;\r\n }\r\n\r\n static isEditingDisabled = (_cellProps) => {\r\n return !this.isEditingAllowed(_cellProps);\r\n }\r\n //---\r\n}\r\n","import React from \"react\";\r\nimport { IconButton, Tooltip } from \"@material-ui/core\";\r\nimport { CELL_ACTION } from \"../../types/enums\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport MatSpecService from \"../../services/theme/matSpecService\";\r\nimport { AgGridUtil } from \"../../services/ag-grid/agGridUtil\";\r\nimport { DataService } from \"../../services/dataService\";\r\nimport { red } from '@material-ui/core/colors';\r\n\r\nexport default class AgGridEditButtonCellRendererComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n const specialObj = this.props.data[AgGridUtil.specialProperty];\r\n const isEditing = DataService.isNullOrUndefined(specialObj) ? false : specialObj[AgGridUtil.editingProperty] === true;\r\n const isReadOnly = DataService.isNullOrUndefined(specialObj) ? false : specialObj[AgGridUtil.readOnlyProperty] === true;\r\n\r\n return (\r\n <>\r\n {isEditing ? // available and true\r\n (<>\r\n \r\n { this.props.onClick(this, CELL_ACTION.CANCEL); }}> {MatIconService.CANCEL} \r\n \r\n \r\n { this.props.onClick(this, CELL_ACTION.ACCEPT); }}> {MatIconService.OK} \r\n \r\n )\r\n : (\r\n <>\r\n \r\n { this.props.onClick(this, CELL_ACTION.EDIT); }}> {MatIconService.EDIT_OUTLINED} \r\n \r\n {\r\n !this.props.showDelete ? null : \r\n \r\n { this.props.onClick(this, CELL_ACTION.DELETE); }}> {MatIconService.DELETE_FOREVER} \r\n \r\n \r\n }\r\n\r\n \r\n )\r\n }\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class ProfileDetailCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { AppBar, Typography, Button, DialogTitle, Grid, Toolbar, IconButton } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../services/layoutService\";\r\nimport { DataService } from \"../../services/dataService\";\r\n\r\nclass DialogErrorFragmentComponent extends React.Component {\r\n\r\n render() {\r\n const { classes, title, description, small, minHeight } = this.props;\r\n return (\r\n \r\n {DataService.isStringNullOrEmpty(title) ? null :\r\n \r\n \r\n \r\n {title}\r\n {MatIconService.CANCEL}\r\n \r\n \r\n \r\n }\r\n \r\n {description}\r\n {\r\n DataService.isNullOrUndefined(this.props.onRetry) ? null : \r\n }\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(DialogErrorFragmentComponent);\r\n","import { ALIGNMENT, ENTITY_FIELD_TYPE } from \"../../types/enums\";\r\nimport { DataService } from \"../dataService\";\r\nimport MatSpecService from \"../theme/matSpecService\";\r\n\r\n/**\r\n * Author : Pradeep_Rajendran@epam.com\r\n */\r\nexport class AgGridColumnExt {\r\n\r\n /**\r\n * holds the true column definintion\r\n */\r\n columnRef = {};\r\n\r\n columnType = ENTITY_FIELD_TYPE.TEXT;\r\n\r\n constructor(_isEditable, _filter, _fieldName, _headerText, _sortable = true, _resizable = true) {\r\n this.columnRef = ({\r\n editable: _isEditable,\r\n headerName: _headerText,\r\n field: _fieldName,\r\n resizable: _resizable,\r\n sortable: _sortable,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" }\r\n });\r\n\r\n if (!DataService.isNullOrUndefined(_filter)) { this.columnRef[\"filter\"] = _filter; }\r\n }\r\n\r\n /**\r\n * Shorthand for crearing a new instance\r\n * @param {*} _isEditable \r\n * @param {*} _filter \r\n * @param {*} _fieldName \r\n * @param {*} _headerText \r\n * @param {*} _sortable \r\n * @param {*} _resizable \r\n */\r\n static GET = (_isEditable, _filter, _fieldName, _headerText, _sortable = true, _resizable = true) => {\r\n return new AgGridColumnExt(_isEditable, _filter, _fieldName, _headerText, _sortable, _resizable);\r\n }\r\n\r\n /**\r\n * Resolves any conflicts that are chained,\r\n * Finalises and returns the actual reference\r\n */\r\n SET = () => {\r\n // Todo conflict resolution\r\n return this.columnRef;\r\n }\r\n\r\n /** * Displays the cell's content as tooltip on mouse hover */\r\n tooltip = () => { this.columnRef[\"tooltipField\"] = this.columnRef[\"field\"]; return this; }\r\n\r\n /**\r\n * Show tooltip when hovered over the header\r\n * @param {*} _value for empty/null value, the header text will be used as tooltip\r\n */\r\n headerTooltip = (_value = null) => {\r\n this.columnRef[\"headerTooltip\"] = DataService.isStringNullOrEmpty(_value) ? this.columnRef[\"headerName\"] : _value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Makes the column readonly if true is passed\r\n * @param {*} _value \r\n */\r\n isReadOnly = (_value) => { this.columnRef[\"editable\"] = _value === true; return this; }\r\n\r\n /**\r\n * .validateEditablity((e) => {return e.data.addressid === \"\" || e.data.addressid <= 0; }) // editable only for new rows\r\n * @param {*} _func \r\n * @returns \r\n */\r\n validateEditablity = (_func) => { this.columnRef[\"editable\"] = _func; return this; }\r\n\r\n\r\n /**\r\n * Appends a new css styles to the existing cell style\r\n * @param {*} _value \r\n */\r\n addCellStyle = (_value) => {\r\n this.columnRef[\"cellStyle\"] = { ...this.columnRef[\"cellStyle\"], ..._value };\r\n return this;\r\n }\r\n\r\n cellClassRules = (_value) => {\r\n this.columnRef[\"cellClassRules\"] = _value;\r\n return this;\r\n }\r\n \r\n cellClass = (_value) => {\r\n this.columnRef[\"cellClass\"] = _value;\r\n return this;\r\n }\r\n\r\n noCellHighlight = () => {\r\n this.columnRef[\"cellClass\"] = \"no-cell-highlight\";\r\n return this;\r\n }\r\n\r\n /**\r\n * Sets the cell cursor\r\n * @param {*} _value eg: \"pointer\"\r\n */\r\n cursor = (_value) => {\r\n this.columnRef[\"cellStyle\"] = { ...this.columnRef[\"cellStyle\"], ...{ \"cursor\": _value } };\r\n return this;\r\n }\r\n\r\n /**\r\n * Aligns the contet to Left/Right/Center/Justify\r\n * @param {*} _textAlignment \r\n */\r\n alignText = (_textAlignment = ALIGNMENT.LEFT) => {\r\n var textAlignment = \"left\";\r\n switch (_textAlignment) {\r\n case ALIGNMENT.RIGHT: textAlignment = \"right\"; break;\r\n case ALIGNMENT.CENTER: textAlignment = \"center\"; break;\r\n case ALIGNMENT.JUSTIFY: textAlignment = \"justify\"; break;\r\n case ALIGNMENT.LEFT:\r\n default: textAlignment = \"left\"; break;\r\n }\r\n this.columnRef[\"cellStyle\"] = { ...this.columnRef[\"cellStyle\"], ...{ \"text-align\": textAlignment } };\r\n\r\n return this;\r\n }\r\n\r\n /** * Applies Underline Style to the Text Content in the Cell */\r\n underlineText = () => {\r\n this.columnRef[\"cellStyle\"] = { ...this.columnRef[\"cellStyle\"], ...{ \"text-decoration\": \"underline\" } };\r\n return this;\r\n }\r\n /** * Center Aligns the Text Content in the Cell */\r\n centerAlignText = () => { return this.alignText(ALIGNMENT.CENTER); }\r\n /** * Center Aligns the Text Content in the Cell */\r\n rightAlignText = () => { return this.alignText(ALIGNMENT.RIGHT); }\r\n /** * Left Aligns the Text Content in the Cell */\r\n leftAlignText = () => { return this.alignText(ALIGNMENT.LEFT); }\r\n /** * Justifies Text Content in the Cell */\r\n justifyText = () => { return this.alignText(ALIGNMENT.JUSTIFY); }\r\n\r\n /** * filed name of this in the data rows */\r\n setFieldName = (_value) => { this.columnRef[\"field\"] = _value; return this; }\r\n\r\n /** * Sets the readonly mode of the cell */\r\n editable = (_value = true) => { this.columnRef[\"editable\"] = _value; return this; }\r\n\r\n /** * Enables/disables column resizing */\r\n resizable = (_value = true) => { this.columnRef[\"resizable\"] = _value; return this; }\r\n\r\n /** * Enables/disables sorting & shows/hides the sorting icon accordingly */\r\n sortable = (_value) => { this.columnRef[\"sortable\"] = _value; return this; }\r\n\r\n /**\r\n * determines what to look for when the column filter is applied\r\n * @param {*} _value \"text\" | true etc,..\r\n */\r\n filter = (_value) => { this.columnRef[\"filter\"] = _value; return this; }\r\n\r\n /**\r\n * determines what to look for when the column filter is applied\r\n * @param {*} _filter \"text\" | true etc,..\r\n * @param {*} _filterOptions filter options\r\n */\r\n filterOptions = (_filter, _filterOptions) => {\r\n this.columnRef[\"filter\"] = _filter;\r\n this.columnRef[\"filterOptions\"] = _filterOptions;\r\n return this;\r\n }\r\n\r\n /**\r\n * Css Class to be applied to the header cell\r\n * @param {*} _value \r\n */\r\n headerClass = (_value) => { this.columnRef[\"headerClass\"] = _value; return this; }\r\n\r\n /**\r\n * Weightage for the column Width\r\n * @param {*} _value works in conjuction with other columns flex property\r\n */\r\n flexWeight = (_value) => { this.columnRef[\"flex\"] = _value; return this; }\r\n\r\n /**\r\n * Width at begining\r\n * @param {*} _value \r\n */\r\n defaultWidth = (_value) => { this.columnRef[\"width\"] = _value; return this; }\r\n\r\n /**\r\n * Will not resize below this width\r\n * @param {*} _value \r\n */\r\n minWidth = (_value) => { this.columnRef[\"minWidth\"] = _value; return this; }\r\n\r\n /**\r\n * Will not resize beyound this width\r\n * @param {*} _value \r\n */\r\n maxWidth = (_value) => { this.columnRef[\"maxWidth\"] = _value; return this; }\r\n\r\n /**\r\n * Will allow to resize between the min & max widths\r\n * @param {*} _value \r\n */\r\n minMaxWidth = (_minWidth, _maxWidth) => { return this.minWidth(_minWidth).maxWidth(_maxWidth); }\r\n\r\n\r\n /**\r\n * Sets a fixed width and is not resizable\r\n * @param {*} _value \r\n */\r\n fixedWidth = (_value) => { this.minWidth(_value).maxWidth(_value).defaultWidth(_value).resizable(false); return this; }\r\n\r\n /**\r\n * Sets a default width at startup and will restrict resizing below that width\r\n * (i.e) allows only to grow in size\r\n * @param {*} _value \r\n */\r\n minAndDefaultWidth = (_value) => { this.minWidth(_value).defaultWidth(_value); return this; }\r\n\r\n /**\r\n * Sets a default width at startup and will restrict resizing beyond that width\r\n * (i.e) allows only to shrink in size\r\n * @param {*} _value \r\n */\r\n maxAndDefaultWidth = (_value) => { this.maxWidth(_value).defaultWidth(_value); return this; }\r\n\r\n\r\n /**\r\n * Set the cell renderer property of the column\r\n * @param {*} _value \r\n * @param {*} _params cellRendererParams\r\n */\r\n cellRenderer = (_value, _params = null) => {\r\n this.columnRef[\"cellRenderer\"] = _value;\r\n if (_params) { this.columnRef[\"cellRendererParams\"] = _params; }\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * \r\n * @param {*} _value text/etc,...\r\n * @param {*} _params \r\n */\r\n filterParams = (_value, _textComparator) => {\r\n this.columnRef[\"filter\"] = _value;\r\n this.columnRef[\"filterParams\"] = {\r\n textCustomComparator: _textComparator\r\n }\r\n }\r\n\r\n\r\n enableValue = (_value = true) => { this.columnRef[\"enableValue\"] = _value; return this; }\r\n\r\n /**\r\n * Used for Pivoting\r\n * @param {*} _value \r\n */\r\n pivot = (_value = true) => {\r\n this.columnRef[\"pivot\"] = _value;\r\n // this.columnRef[\"pivotMode\"] = _value;\r\n return this;\r\n }\r\n\r\n /**\r\n * Used for groupDefaultExpanded\r\n * @param {*} _value \r\n */\r\n groupDefaultExpanded = (_value) => {\r\n this.columnRef[\"groupDefaultExpanded\"] = _value;\r\n this.columnRef[\"enableRowGroup\"] = _value > 0;\r\n return this;\r\n }\r\n\r\n comparator = (_callback) => {\r\n this.columnRef[\"comparator\"] = _callback;\r\n return this;\r\n }\r\n\r\n /**\r\n * value setter\r\n * @param {*} _value callback when value is changed\r\n */\r\n valueSetter = (_callback) => {\r\n this.columnRef[\"valueSetter\"] = _callback;\r\n return this;\r\n }\r\n\r\n\r\n /**\r\n * makes this into a dropdown\r\n * @param {*} _mappings parsed values eg: [{ 1: \"Afganistan\", 2 : \"Argentina\" }] | UsageTip: DataService.arrayToObject(_componentThisRef.state.countryList, \"id\", \"value\");\r\n * @param {*} _cellEditorParams eg: cellHeight: _cellHeight,\r\n * @param {*} _cellEditor pass the cell-editor agSelectCellEditor\r\n */\r\n makeDropDown = (_mappings, _cellEditorParams = {}, _cellEditor = \"agSelectCellEditor\", _arrSort = []) => {\r\n this.columnType = ENTITY_FIELD_TYPE.LOV;\r\n\r\n delete this.columnRef.valueSetter; // remove this prop, if exists\r\n\r\n this.columnRef[\"refData\"] = _mappings;\r\n this.columnRef[\"cellEditor\"] = _cellEditor;\r\n this.columnRef[\"cellEditorParams\"] = {\r\n ..._cellEditorParams,\r\n values: _arrSort.length === 0 ? DataService.extractKeysAsNumbers(_mappings) : _arrSort, // extract the keys as numbers\r\n };\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * \r\n * @param {*} _options \r\n * @param {*} _optionKey \r\n * @param {*} _optionLabel \r\n * @param {*} _cellRenderer dropDownRenderer: AgGridDropdownWithStatusCellRenderer\r\n * @returns \r\n */\r\n makeMaterialDropDown = (_options, _optionKey, _optionLabel, _showEmpty = false, _emptyValue = \"\", _cellRenderer = \"dropDownRenderer\") => {\r\n this.columnType = ENTITY_FIELD_TYPE.LOV;\r\n delete this.columnRef.valueSetter; // remove this prop, if exists\r\n return this.cellRenderer(_cellRenderer,\r\n { \"options\": _options, \"optionKey\": _optionKey, \"optionLabel\": _optionLabel, \"showEmpty\": _showEmpty, \"emptyValue\": _emptyValue }\r\n );\r\n }\r\n\r\n\r\n static getGridOptions = (_headerHeight = 48, _rowHeight = 32, _tooltipShowDelay = MatSpecService.gridTooltipEnterDelay) => {\r\n return {\r\n headerHeight: _headerHeight,\r\n rowHeight: _rowHeight,\r\n tooltipShowDelay: _tooltipShowDelay,\r\n };\r\n }\r\n\r\n //---\r\n}","import React, { Component } from \"react\";\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, GST_API } from \"../../../../shared/types/enums\";\r\n\r\nexport default class ProfileTransactionService {\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static getProfileTransactionsOBS(modalAgNode, clientAuthContext) {\r\n return ApiService.getOBS(API_ENDPOINT.CORE,\r\n `/Profiles/GetProfileTransactions?tenantId=${clientAuthContext.user.tenantId}&userId=${clientAuthContext.user.userId}&profileId=${modalAgNode.prid}&pageNumber=1&pageSize=500`\r\n );\r\n }\r\n\r\n static getColumnDefs = (parentThis) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"companytransactionid\", \"Company Transaction Id\").flexWeight(1).tooltip().headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogsttransactionid\", \"Porzio GST Transaction ID\").flexWeight(1).tooltip().headerClass(\"center-text\").centerAlignText().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").flexWeight(1).tooltip().headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"form\", \"Form\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"purpose\", \"Purpose\").flexWeight(1).tooltip().SET(),\r\n\r\n AgGridColumnExt.GET(false, true, \"transactiondate\", \"Transaction Date\").tooltip().SET(),\r\n AgGridColumnExt.GET(false, true, \"convertedtotalamount\", \"Converted Total Amount\").flexWeight(1).tooltip().headerClass(\"center-text\").SET(),\r\n\r\n AgGridColumnExt.GET(false, true, \"transactionconsent\", \"Transaction Consent\").flexWeight(1).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, true, \"transactiondocuments\", \"Transaction Document(s)\").flexWeight(1).tooltip().SET(),\r\n ];\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport * as Yup from \"yup\";\r\nimport { Subject } from 'rxjs';\r\nimport { debounceTime, tap } from 'rxjs/operators';\r\nimport LayoutService from \"./layoutService\";\r\nimport { DataService } from \"./dataService\";\r\nimport { ENTITY_FIELD_TYPE } from \"../types/enums\";\r\nimport LookupService from \"./lookupService\";\r\nimport { AgGridColumnExt } from \"./ag-grid/agGridColumnExt\";\r\nimport ToastService from \"./toastService\";\r\nimport { MatIconService } from \"./theme/matIconService\";\r\nimport { IconButton, InputAdornment, Tooltip } from \"@material-ui/core\";\r\n\r\nexport default class DynamicControlService {\r\n\r\n // #region Declarations & INIT\r\n\r\n static _debounceMap = new Map();\r\n static _controlCache = new Map();\r\n static onClickCallbackKey = \"onClickCallbackKey\";\r\n\r\n static CLEAR() {\r\n // control cache\r\n this._controlCache = new Map();\r\n\r\n // clear the debouce subscriptions\r\n this._debounceMap.forEach(map => {\r\n if (DataService.hasValue(map.subscription)) {\r\n map.subscription.unsubscribe();\r\n map.subscription = null;\r\n }\r\n });\r\n this._debounceMap = new Map();\r\n }\r\n\r\n //#endregion\r\n\r\n static caseSensitiveFieldNames = [\"uslicensestatE2\", \"uslicensestatE3\", \"uslicensestatE4\", \"uslicensestatE5\", \"uslicensestatE6\",\r\n \"usstatelicensenumbeR2\", \"usstatelicensenumbeR3\", \"usstatelicensenumbeR4\", \"usstatelicensenumbeR5\", \"usstatelicensenumbeR6\"];\r\n\r\n static getIntitialValues = (_isNew, _groupInfoMap, _initialValuesOrNull) => {\r\n let oRET = {};\r\n if (DataService.mapHasElements(_groupInfoMap)) {\r\n const isNew = DataService.isNullOrUndefined(_initialValuesOrNull); // determine is new or an edit\r\n _groupInfoMap.forEach(_groupInfo => { // each group\r\n if (DataService.hasElements(_groupInfo.fieldConfigs)) {\r\n _groupInfo.fieldConfigs.forEach(_fieldConfig => { // group->field\r\n let fieldName = this.getMappedFieldName(_fieldConfig);\r\n\r\n // till case sensitive issue is resolved we will be using this\r\n let caseSensitiveFieldName = this.caseSensitiveFieldNames.find(x => x.toLowerCase() === fieldName.toLowerCase());\r\n fieldName = DataService.isStringNullOrEmpty(caseSensitiveFieldName) ? fieldName : caseSensitiveFieldName;\r\n const formikFieldName = DataService.isStringNullOrEmpty(caseSensitiveFieldName) ? fieldName : caseSensitiveFieldName.toLowerCase();\r\n\r\n let initialValue = '';\r\n let isCustomField = false;\r\n\r\n if (DataService.hasValue(_initialValuesOrNull)) {\r\n if (!_fieldConfig.isCustomField) { // not custom field\r\n initialValue = _initialValuesOrNull[fieldName];\r\n } else { // custom field\r\n isCustomField = true;\r\n let customObj = (_initialValuesOrNull.customfields || []).find(x => x.FIELDID === _fieldConfig.fieldID);\r\n if (customObj && DataService.hasValue(customObj.FIELDVALUE)) {\r\n initialValue = customObj.FIELDVALUE;\r\n }\r\n }\r\n }\r\n\r\n // if combobox and id is 0, then make it empty string\r\n if (_fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.LOV && initialValue === 0) { initialValue = ''; }\r\n else if (_fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.BOOLEAN) {\r\n if (isCustomField && _isNew)\r\n initialValue = _fieldConfig.customBoolean;\r\n\r\n initialValue = DataService.parseBoolean(initialValue);\r\n }\r\n else if (_fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE_TIME || _fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE) {\r\n if (isCustomField) {\r\n //_fieldConfig.customDateTime comes with an inconsistent format having 'T' appended to it hence this sloppy code. Need a better \r\n //way to handle it. Lookulist has the Date in correct format but since this is called from different places not sure if it will \r\n //be available always\r\n let fieldValue = _isNew ?\r\n (_fieldConfig.customDateTime && _fieldConfig.customDateTime.indexOf('T') != -1 ?\r\n _fieldConfig.customDateTime.split('T')[0] : _fieldConfig.customDateTime)\r\n : initialValue;\r\n\r\n if (DataService.hasValue(fieldValue))\r\n initialValue = DataService.getDateStringForDisplay(fieldValue);\r\n }\r\n } else { } // do nothing : keep the initial value as it is and proceed below\r\n\r\n // finalize initialValue (handling undefined)\r\n initialValue = isNew || DataService.isNullOrUndefined(initialValue) ? '' : initialValue;\r\n if ((_fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE || _fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE_TIME)\r\n && DataService.isStringNullOrEmpty(initialValue)) {\r\n initialValue = null; // for date time\r\n }\r\n\r\n // assign the initial value\r\n oRET[formikFieldName] = initialValue;\r\n });\r\n }\r\n });\r\n }\r\n return oRET;\r\n }\r\n\r\n static getValidationSchema = (_groupInfoMap) => {\r\n let oRET = {};\r\n if (DataService.mapHasElements(_groupInfoMap)) {\r\n _groupInfoMap.forEach(_groupInfo => { // each group\r\n if (DataService.hasElements(_groupInfo.fieldConfigs)) {\r\n _groupInfo.fieldConfigs.forEach(_fieldConfig => { // group->field\r\n const fieldName = this.getMappedFieldName(_fieldConfig);\r\n oRET[fieldName] = this.__getValidation(_fieldConfig);\r\n });\r\n }\r\n });\r\n }\r\n return Yup.object().shape({ ...oRET });\r\n }\r\n\r\n static parseCustomFields = (_initialValuesOrNull) => {\r\n if (_initialValuesOrNull) {\r\n if (!Array.isArray(_initialValuesOrNull.customfields) && !DataService.isStringNullOrEmpty(_initialValuesOrNull.customfields)) {\r\n _initialValuesOrNull.customfields = JSON.parse(_initialValuesOrNull.customfields);\r\n }\r\n }\r\n return _initialValuesOrNull;\r\n }\r\n\r\n static parseErrorFields = (_initialValuesOrNull) => {\r\n if (_initialValuesOrNull) {\r\n if (!Array.isArray(_initialValuesOrNull.erroredFields) && !DataService.isStringNullOrEmpty(_initialValuesOrNull.erroredFields)) {\r\n _initialValuesOrNull.erroredFields = JSON.parse(_initialValuesOrNull.erroredFields);\r\n }\r\n }\r\n return _initialValuesOrNull;\r\n }\r\n\r\n static setErrors = (_fPropsDynamic, _initialValuesOrNull) => {\r\n if (_initialValuesOrNull && DataService.hasElements(_initialValuesOrNull.erroredFields)) {\r\n var errorsObj = {};\r\n _initialValuesOrNull.erroredFields.forEach(errorInfo => {\r\n // !!!Note: Its an object, not an array, so the keys are auto created like below\r\n errorsObj[(errorInfo[\"fieldName\"] + \"\").toLowerCase()] = `[${errorInfo[\"fieldValue\"]}] ` + errorInfo[\"businessRuleMessage\"];\r\n });\r\n // errorsObj[\"profiletypeid\"] = \"wrong profile type\";\r\n // errorsObj[\"physicianownership\"] = \"Invalid physical ownership\";\r\n _fPropsDynamic.errors = errorsObj;\r\n }\r\n }\r\n\r\n static setFieldValues = (_fPropsDynamic, _object, _validate) => {\r\n if (_fPropsDynamic && _object) {\r\n const objKeys = Object.keys(_object);\r\n objKeys.forEach(_key => {\r\n _fPropsDynamic.setFieldValue(_key, _object[_key], _validate)\r\n });\r\n }\r\n }\r\n\r\n\r\n // #region CONTROLs\r\n\r\n static getControl(_isReadOnly, _classes, _fromikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig) {\r\n\r\n // if (DataService.isNullOrUndefined(this._controlCache)) { this._controlCache = new Map(); }\r\n // if (this._controlCache.has(_fieldConfig.entityName)) {\r\n if (false) {\r\n return this._controlCache.get(_fieldConfig.entityName);\r\n } else {\r\n var _control = null;\r\n switch (_fieldConfig.field_Type_ID) {\r\n // dropdown\r\n case ENTITY_FIELD_TYPE.LOV: _control = this._getDropDown(_isReadOnly, _classes, _fromikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig); break;\r\n // switch/checkbox\r\n case ENTITY_FIELD_TYPE.BOOLEAN: _control = this._getCheckBox(_isReadOnly, _classes, _fromikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig); break;\r\n // date-time\r\n case ENTITY_FIELD_TYPE.DATE:\r\n case ENTITY_FIELD_TYPE.DATE_TIME: _control = this._getDateTimePicker(_isReadOnly, _classes, _fromikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig); break;\r\n // text\r\n case ENTITY_FIELD_TYPE.TEXT: _control = this._getTextBox(_isReadOnly, _classes, _fromikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig, \"text\"); break;\r\n // number\r\n case ENTITY_FIELD_TYPE.NUMERIC:\r\n case ENTITY_FIELD_TYPE.DECIMAL:\r\n _control = this._getTextBox(_isReadOnly, _classes, _fromikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig, \"number\");\r\n break;\r\n // others\r\n default:\r\n console.warn(\"getControl() -> ControlType not Handled\", _fieldConfig);\r\n // _control = this._getTextBox(_isReadOnly, _classes, _fromikProps, _validationSchema, _index, _fieldConfig);\r\n break;\r\n // _control = null;\r\n }\r\n\r\n // cache the control\r\n // if (_control !== null) { this._controlCache.set(_fieldConfig.entityName, _control); }\r\n // return the control\r\n return _control;\r\n }\r\n }\r\n\r\n static _getErrorClassName = (_classes, _fieldName, _initialValuesOrNull) => {\r\n let isWarning = false;\r\n const _erroredFields = _initialValuesOrNull ? (_initialValuesOrNull.erroredFields ? _initialValuesOrNull.erroredFields : []) : [];\r\n _erroredFields.forEach(errorInfo => {\r\n if (errorInfo[\"fieldName\"].toLowerCase() === _fieldName && errorInfo[\"businessRuleSeverity\"].toLowerCase() === \"warning\") {\r\n isWarning = true;\r\n }\r\n });\r\n // return\r\n return isWarning ? _classes.warningStyles : _classes.dialogControl;\r\n }\r\n\r\n // TextBox\r\n static _getTextBox = (_isReadOnly, _classes, _formikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig, _type) => {\r\n // this will ensure template readonly fields are readonly despite of the components edit mode\r\n const _isParentReadOnly = _isReadOnly;\r\n const _controlReadOnly = _fieldConfig.isReadOnly;\r\n if (!_isParentReadOnly && _controlReadOnly) { _isReadOnly = true; }\r\n\r\n const fieldName = this.getMappedFieldName(_fieldConfig);\r\n const controlClass = this._getErrorClassName(_classes, fieldName, _initialValuesOrNull);\r\n\r\n let inputProps = {};\r\n if (!_isParentReadOnly) {\r\n inputProps.startAdornment = DynamicControlService.getInputAdornments(true, _isParentReadOnly, _fieldConfig);\r\n inputProps.endAdornment = DynamicControlService.getInputAdornments(false, _isParentReadOnly, _fieldConfig);\r\n }\r\n\r\n // return\r\n return LayoutService.getTextBox(_isReadOnly, controlClass, _formikProps, _validationSchema,\r\n fieldName, _fieldConfig.label, _type, \"32%\", this.__getDebouncedTextFieldFormikValidatorMap(fieldName),\r\n _fieldConfig[DynamicControlService.onClickCallbackKey],\r\n () => { }, \"small\", inputProps, {}\r\n );\r\n\r\n }\r\n\r\n // DropDown\r\n static _getDropDown = (_isReadOnly, _classes, _formikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig) => {\r\n // this will ensure template readonly fields are readonly despite of the components edit mode\r\n const _isParentReadOnly = _isReadOnly;\r\n const _controlReadOnly = _fieldConfig.isReadOnly;\r\n if (!_isParentReadOnly && _controlReadOnly) { _isReadOnly = true; }\r\n\r\n const fieldName = this.getMappedFieldName(_fieldConfig);\r\n const controlClass = this._getErrorClassName(_classes, fieldName, _initialValuesOrNull);\r\n const lovOptions = _fieldConfig.customLOVList.filter(x => x.lovId !== 0); //autoSelect\r\n\r\n let _otherSelectOptions = {};\r\n if (!_isParentReadOnly) {\r\n _otherSelectOptions.startAdornment = DynamicControlService.getInputAdornments(true, _isParentReadOnly, _fieldConfig);\r\n _otherSelectOptions.endAdornment = DynamicControlService.getInputAdornments(false, _isParentReadOnly, _fieldConfig, 24);\r\n }\r\n\r\n var _defaultValue = null;\r\n if (_fieldConfig.autoSelect === true && DataService.hasElements(lovOptions) && lovOptions.length === 1) {\r\n _defaultValue = lovOptions[0][\"lovId\"];\r\n }\r\n\r\n return LayoutService.getDropDown(_isReadOnly, controlClass, _classes.menuPaper, _formikProps, _validationSchema,\r\n fieldName, _fieldConfig.label,\r\n lovOptions, \"lovId\", \"localLovKey\", _defaultValue,\r\n (_fieldConfig.hideEmpty === true ? false : true),\r\n DataService.hasValue(_fieldConfig.secondaryActionIcon) ? `calc(32% - 56px)` : \"32%\",\r\n () => { }, \"small\",\r\n _otherSelectOptions\r\n );\r\n }\r\n\r\n // DatePicker\r\n static _getDateTimePicker = (_isReadOnly, _classes, _formikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig) => {\r\n // this will ensure template readonly fields are readonly despite of the components edit mode\r\n if (!_isReadOnly && _fieldConfig.isReadOnly) { _isReadOnly = true; }\r\n const fieldName = this.getMappedFieldName(_fieldConfig);\r\n const controlClass = this._getErrorClassName(_classes, fieldName, _initialValuesOrNull);\r\n\r\n return LayoutService.getDatePicker(_isReadOnly, controlClass, _formikProps, _validationSchema,\r\n fieldName, _fieldConfig.label, null, null, \"32%\", () => { });\r\n }\r\n\r\n // Checkbox\r\n static _getCheckBox = (_isReadOnly, _classes, _formikProps, _initialValuesOrNull, _validationSchema, _index, _fieldConfig) => {\r\n // this will ensure template readonly fields are readonly despite of the components edit mode\r\n if (!_isReadOnly && _fieldConfig.isReadOnly) { _isReadOnly = true; }\r\n const fieldName = this.getMappedFieldName(_fieldConfig);\r\n const controlClass = this._getErrorClassName(_classes, fieldName, _initialValuesOrNull);\r\n\r\n return LayoutService.getCheckBox(_isReadOnly, controlClass, _formikProps, _validationSchema,\r\n fieldName, _fieldConfig.label, \"32%\", () => { });\r\n }\r\n\r\n //#endregion\r\n static getInputAdornments = (_atStart, _isReadOnly, _fieldConfig, _marginRight = 0) => {\r\n const _adornmentActions = _atStart ? _fieldConfig[\"startAdornmentActions\"] : _fieldConfig[\"endAdornmentActions\"];\r\n if (DataService.hasNoElements(_adornmentActions)) {\r\n return null;\r\n } else {\r\n const _position = _atStart ? \"start\" : \"end\";\r\n return (\r\n \r\n {_adornmentActions.map((_action, index) => {\r\n const _key = `ipadorn_${_fieldConfig.fieldID}_${_position}_${index}`;\r\n return (\r\n \r\n {\r\n _fieldConfig.clickHandled = true;\r\n _action.callback(_fieldConfig)\r\n }}>{_action.icon}\r\n \r\n )\r\n })}\r\n \r\n );\r\n }\r\n }\r\n\r\n // #region AgGridColumns\r\n\r\n static getAgGridColumn(_componentThisRef, _isParentReadOnly, _colFieldConfig, _ruleSummaries, _sortableCols) {\r\n\r\n // create the column with basic info,\r\n // readonly is handled via isReadOnlyColumn Prop\r\n var colProps = AgGridColumnExt.GET(false, \"text\", _colFieldConfig.mappedFieldNameLower, _colFieldConfig.label, true);\r\n\r\n // if (_sortableCols && _sortableCols.includes(_colFieldConfig.mappedFieldNameLower)) {\r\n // colProps.sortable(true);\r\n // }\r\n\r\n // if (_colFieldConfig.comparator !== undefined && _colFieldConfig.comparator !== null) {\r\n // colProps.comparator(_colFieldConfig.comparator);\r\n // }\r\n\r\n switch (_colFieldConfig.field_Type_ID) {\r\n // dropdown\r\n case ENTITY_FIELD_TYPE.LOV:\r\n const lovOptions = _colFieldConfig.customLOVList.filter(x => x.lovId !== 0); // remove the -select- object with key 0\r\n colProps.cellRenderer(\"erroredDropdownCellRenderer\", {\r\n colFieldConfig: _colFieldConfig,\r\n componentThisRef: _componentThisRef, isParentReadOnly: _isParentReadOnly, isColumnReadOnly: _colFieldConfig.isReadOnly,\r\n dataSource: lovOptions, valueProp: \"lovId\", displayProp: \"localLovKey\",\r\n getErrorOrWarningInfoCallback: (_cellRef) => { return this.getCellErrorOrWarning(_cellRef, _colFieldConfig, _ruleSummaries); }\r\n });\r\n\r\n // this is a callback that applies to the filter, since the value is number(id) we need to find the matching lovKey\r\n //---\r\n colProps.filterParams(\"text\", (filterType, cellValue, filterText) => {\r\n cellValue = DataService.getNumberOrDefault(cellValue);\r\n if (!cellValue) { return false; } {\r\n const lov = DataService.getFirstOrDefault(lovOptions.filter(x => x.lovId === cellValue), null);\r\n if (!lov) { return false; } else {\r\n return DataService.applyFilter(filterType, lov.localLovKey, filterText);\r\n }\r\n }\r\n });\r\n // ---\r\n break;\r\n // switch/checkbox\r\n case ENTITY_FIELD_TYPE.BOOLEAN:\r\n colProps.headerClass(\"center-text\").cellRenderer(\"erroredCheckboxCellRenderer\", {\r\n colFieldConfig: _colFieldConfig,\r\n componentThisRef: _componentThisRef, isParentReadOnly: _isParentReadOnly, isColumnReadOnly: _colFieldConfig.isReadOnly,\r\n getErrorOrWarningInfoCallback: (_cellRef) => { return this.getCellErrorOrWarning(_cellRef, _colFieldConfig, _ruleSummaries); }\r\n });\r\n break;\r\n // date-time\r\n case ENTITY_FIELD_TYPE.DATE:\r\n case ENTITY_FIELD_TYPE.DATE_TIME:\r\n colProps.minWidth(128).headerClass(\"center-text\").cellRenderer(\"erroredDatePickerCellRenderer\", {\r\n colFieldConfig: _colFieldConfig,\r\n componentThisRef: _componentThisRef, isParentReadOnly: _isParentReadOnly, isColumnReadOnly: _colFieldConfig.isReadOnly,\r\n getErrorOrWarningInfoCallback: (_cellRef) => { return this.getCellErrorOrWarning(_cellRef, _colFieldConfig, _ruleSummaries); }\r\n });\r\n break;\r\n // text\r\n case ENTITY_FIELD_TYPE.TEXT:\r\n colProps.cellRenderer(\"erroredTextCellRenderer\", {\r\n colFieldConfig: _colFieldConfig,\r\n inputType: \"text\", componentThisRef: _componentThisRef, isParentReadOnly: _isParentReadOnly, isColumnReadOnly: _colFieldConfig.isReadOnly,\r\n getErrorOrWarningInfoCallback: (_cellRef) => { return this.getCellErrorOrWarning(_cellRef, _colFieldConfig, _ruleSummaries); }\r\n });\r\n break;\r\n // number\r\n case ENTITY_FIELD_TYPE.NUMERIC:\r\n case ENTITY_FIELD_TYPE.DECIMAL:\r\n colProps.cellRenderer(\"erroredTextCellRenderer\", {\r\n colFieldConfig: _colFieldConfig,\r\n inputType: \"number\", componentThisRef: _componentThisRef, isParentReadOnly: _isParentReadOnly, isColumnReadOnly: _colFieldConfig.isReadOnly,\r\n getErrorOrWarningInfoCallback: (_cellRef) => { return this.getCellErrorOrWarning(_cellRef, _colFieldConfig, _ruleSummaries); }\r\n },colProps.comparator(_componentThisRef.customComparator));\r\n break;\r\n // others\r\n default:\r\n console.warn(\"getColumn() -> ColumnType not Handled\", _colFieldConfig);\r\n ToastService.showError(\"ColumnType not Handled\");\r\n // colProps = this._getTextBox(_isReadOnly, _classes, _fromikProps, _validationSchema, _index, _colFieldConfig);\r\n break;\r\n // colProps = null;\r\n }\r\n\r\n return colProps;\r\n }\r\n\r\n static getCellErrorOrWarning = (_cellRef, _fieldConfig, _ruleSummaries) => {\r\n if (DataService.hasNoElements(_ruleSummaries)) {\r\n return {};\r\n } else {\r\n var oRET = { \"value\": null, \"message\": null, \"isWarning\": false };\r\n _ruleSummaries.forEach(ruleSummary => {\r\n if (ruleSummary.recordId === _cellRef.props.data.recordid && ruleSummary.fieldName.toLowerCase() === _fieldConfig.mappedFieldNameLower) {// _fieldConfig.fielD_ALIASNAME.toLowerCase()) {\r\n oRET = { \"value\": DataService.isStringNullOrEmpty(ruleSummary.fieldValue) ? \"[null]\" : ruleSummary.fieldValue, \"message\": ruleSummary.businessRuleMessage, \"isWarning\": ruleSummary.businessRuleSeverity === \"Warning\" };\r\n return oRET;\r\n }\r\n });\r\n return oRET;\r\n }\r\n }\r\n //#endregion\r\n\r\n //#region LOV's\r\n\r\n\r\n // Lov's to populate for both (Transaction, Profile & Agreement)\r\n static affiliationLovFieldIds = [29, 5, 170];\r\n static vendorNameLovFieldIds = [30, 171];\r\n static productLovFieldIds = [31, 302, 323, 324, 325, 326, 614, 615, 616, 617];\r\n static formLovFieldIds = [35];\r\n static currencyLovFieldIds = [43, 176];\r\n static countryLovFieldIds = [64, 80, 17, 125, 165, 501, 613];\r\n static materialItemNameLovFieldIds = [463];\r\n\r\n // 34-> EngagementRelated TODO: is returned as text, ask them to return it as boolean\r\n static booleanTransformFieldIds = [34];\r\n\r\n /**\r\n * ensure to call in the below in the component's componentDidMount\r\n * combineLatest(LookupService.fetchCommonLookupsOBS(this.context)).subscribe();\r\n * @param {*} _fieldConfig\r\n */\r\n static transformFieldConfig = (_fieldConfig) => {\r\n\r\n // parses the label\r\n _fieldConfig.label = _fieldConfig.fielD_NAME;//this.__parseFieldName(_fieldConfig.fielD_NAME);\r\n // parses the FieldName\r\n _fieldConfig.mappedFieldNameLower = this.getMappedFieldName(_fieldConfig);\r\n\r\n\r\n if (this.booleanTransformFieldIds.includes(_fieldConfig.fieldID)) {\r\n _fieldConfig.field_Type_ID = ENTITY_FIELD_TYPE.BOOLEAN;\r\n delete _fieldConfig.fieldlength;\r\n }\r\n else if (_fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.LOV) {\r\n\r\n // eg: profilestatusid will become profilestatus\r\n if (_fieldConfig.mappedFieldNameLower.endsWith(\"id\")) {\r\n _fieldConfig.lovTextColumnName = _fieldConfig.mappedFieldNameLower.substring(0, _fieldConfig.mappedFieldNameLower.length - 2); // eg: profilestatus\r\n }\r\n // eg: country lov field is not suffixed by id\r\n else if (_fieldConfig.mappedFieldNameLower === \"country\") {\r\n _fieldConfig.lovTextColumnName = \"countryname\";\r\n }\r\n\r\n\r\n\r\n\r\n // COUNTRY\r\n if (this.countryLovFieldIds.includes(_fieldConfig.fieldID)) {\r\n _fieldConfig.customLOVList = this.transformToCustomLovList(LookupService._COUNTRIES, \"id\", \"value\", _fieldConfig.entityName);\r\n }\r\n // AFFILIATE\r\n else if (this.affiliationLovFieldIds.includes(_fieldConfig.fieldID)) {\r\n _fieldConfig.customLOVList = this.transformToCustomLovList(LookupService._AFFILIATIONS, \"companyAffiliateId\", \"affiliateName\", _fieldConfig.entityName);\r\n }\r\n // Currency\r\n else if (this.currencyLovFieldIds.includes(_fieldConfig.fieldID)) {\r\n _fieldConfig.customLOVList = this.transformToCustomLovList(LookupService._CURRENCIES_FORMATTED, \"id\", \"value\", _fieldConfig.entityName);\r\n }\r\n // VendorName\r\n else if (this.vendorNameLovFieldIds.includes(_fieldConfig.fieldID)) {\r\n _fieldConfig.customLOVList = this.transformToCustomLovList(LookupService._VENDOR_NAMES, \"vendorId\", \"vendorName\", _fieldConfig.entityName);\r\n }\r\n // Product\r\n else if (this.productLovFieldIds.includes(_fieldConfig.fieldID)) {\r\n _fieldConfig.customLOVList = this.transformToCustomLovList(LookupService._PRODUCTS, \"id\", \"name\", _fieldConfig.entityName);\r\n }\r\n // MaterialItemName\r\n else if (this.materialItemNameLovFieldIds.includes(_fieldConfig.fieldID)) {\r\n _fieldConfig.customLOVList = this.transformToCustomLovList(LookupService._MATERIAL_ITEM_NAMES, \"materialId\", \"materialName\", _fieldConfig.entityName);\r\n }\r\n\r\n }\r\n\r\n //RETURN\r\n return _fieldConfig;\r\n }\r\n\r\n static transformToCustomLovList = (_array, _keyProp, _textProp, _fieldName) => {\r\n if (DataService.hasNoElements(_array)) {\r\n return [];\r\n } else {\r\n return _array.map((x, index) => {\r\n return {\r\n \"lovId\": x[_keyProp],\r\n \"lovKey\": x[_textProp],\r\n \"ordinal\": index + 1,\r\n \"isdefault\": false,\r\n \"fieldName\": _fieldName,\r\n \"localLovKey\": x[_textProp]\r\n };\r\n });\r\n }\r\n }\r\n\r\n\r\n //#endregion\r\n\r\n\r\n // #region Internal-UTILs\r\n\r\n static __getValidation = (_fieldConfig) => {\r\n // _fieldConfig.iS_PLSREQUIRED = false;\r\n\r\n switch (_fieldConfig.field_Type_ID) {\r\n case ENTITY_FIELD_TYPE.LOV:\r\n {\r\n let oRET = LayoutService.getNullableValidation(Yup.number());\r\n // required\r\n if (_fieldConfig.iS_PLSREQUIRED) { oRET = oRET.required(\"Required\"); }\r\n // return\r\n return oRET;\r\n };\r\n case ENTITY_FIELD_TYPE.BOOLEAN:\r\n {\r\n let oRET = LayoutService.getNullableValidation(Yup.boolean());\r\n // required\r\n if (_fieldConfig.iS_PLSREQUIRED) { oRET = oRET.required(\"Required\"); } // required\r\n // return\r\n return oRET;\r\n };\r\n case ENTITY_FIELD_TYPE.DATE:\r\n case ENTITY_FIELD_TYPE.DATE_TIME:\r\n {\r\n let oRET = Yup.date().nullable(true);\r\n if (_fieldConfig.iS_PLSREQUIRED) { oRET = oRET.required(\"Required\"); } // required\r\n\r\n // return\r\n return oRET;\r\n };\r\n case ENTITY_FIELD_TYPE.TEXT:\r\n {\r\n let oRET = Yup.string();\r\n if (_fieldConfig.iS_PLSREQUIRED) { oRET = oRET.required(\"Required\"); } // required\r\n if (_fieldConfig.fieldlength > 0) { oRET = oRET.max(_fieldConfig.fieldlength); } // length\r\n if (_fieldConfig.asyncValidationCallback) {\r\n oRET = _fieldConfig.asyncValidationCallback(oRET);\r\n }\r\n return oRET;\r\n };\r\n // number\r\n case ENTITY_FIELD_TYPE.NUMERIC:\r\n case ENTITY_FIELD_TYPE.DECIMAL:\r\n {\r\n let oRET = Yup.number()\r\n // Fix for Issue: https://github.com/jquense/yup/issues/500\r\n .nullable(true).transform((n, o) => { return (o === '' || o === \"\" || n === NaN) ? null : n; });\r\n if (_fieldConfig.iS_PLSREQUIRED) { oRET = oRET.required(\"Required\"); } // required\r\n // validations\r\n if (DataService.hasValidValue(_fieldConfig.fieldValueDetails)) {\r\n const validationObj = JSON.parse(_fieldConfig.fieldValueDetails);\r\n if (DataService.hasValue(validationObj)) {\r\n if (validationObj.Min) { oRET = oRET.min(validationObj.Min, `minimum ${validationObj.Min} is only allowed`); }\r\n if (validationObj.Max) { oRET = oRET.max(validationObj.Max, `maximum ${validationObj.Max} is only allowed`); }\r\n if (validationObj.DecimalPlaces > 0) {\r\n oRET = oRET.test('decimal-digits', `${validationObj.DecimalPlaces} decimal places are only allowed`,\r\n (value) => {\r\n const strValue = (value + \"\");\r\n if (strValue.includes(\".\")) {\r\n const parts = strValue.split(\".\");\r\n return parts[1].length <= validationObj.DecimalPlaces;\r\n } else {\r\n return true;\r\n }\r\n },\r\n );\r\n } else { oRET = oRET.integer(`Integers are only allowed`); } // integer\r\n }\r\n }\r\n // return\r\n return oRET;\r\n };\r\n\r\n default:\r\n console.warn(\"_getValidation() -> ControlType not Handled\", _fieldConfig);\r\n return null;\r\n }\r\n }\r\n\r\n static getMappedFieldName = (_fieldConfig) => {\r\n return (DataService.hasValidValue(_fieldConfig.mappedlovidfield) ? _fieldConfig.mappedlovidfield : _fieldConfig.entityName).toLowerCase();\r\n }\r\n\r\n static __parseFieldName = (_fielD_NAME) => {\r\n var tt = _fielD_NAME + \"\";\r\n if (tt.length > 4) {\r\n return tt.substring(4);\r\n } else {\r\n return tt;\r\n }\r\n }\r\n\r\n static __getDebouncedTextFieldFormikValidatorMap = (_fieldName) => {\r\n var oRET = null;\r\n if (this._debounceMap.has(_fieldName)) {\r\n oRET = this._debounceMap.get(_fieldName);\r\n } else {\r\n oRET = { subscription: null, observable: (new Subject()).pipe(debounceTime(500)) };\r\n // oRET = {subscription: null, observable: (new Subject()).pipe(debounceTime(500), tap(res => console.log('debounceTap:', res))) };\r\n oRET.subscription = oRET.observable.subscribe(({ _formikProps, _key, _value }) => {\r\n _formikProps.validateField(_key);\r\n });\r\n this._debounceMap.set(_fieldName, oRET);\r\n }\r\n return oRET;\r\n }\r\n\r\n //#endregion\r\n\r\n}","import { ALIGNMENT } from \"../../types/enums\";\r\nimport { DataService } from \"../dataService\";\r\n\r\nexport class AgGridService {\r\n\r\n /**\r\n * toLowerCase should go away. It is needed now because the Data come as LowerCase, and the Columns come as UpperCase. \r\n * They APIs should change in the future to use the same case for both \r\n * fieldAliasName -> header name, the same will be auto lowercased for fieldname\r\n * isExpViewDefault -> editable if true\r\n * \r\n * @param {*} _agGridColumns Pass the Api Data\r\n * @param {*} _columnsToExclude an array of coulmn names to exclude\r\n * @returns Returns Ag grid columns by Api Data\r\n */\r\n static getDynamicColumns(_agGridColumns, _lowerCase = true, _columnsToExclude, _agCellRenderers, _mixedCaseData = false) {\r\n\r\n _columnsToExclude = DataService.getLowerCaseElements(_columnsToExclude);\r\n\r\n return (_agGridColumns || []).filter((x) => !_columnsToExclude.includes(x.fieldAliasName.toLowerCase())).map((x) => ({\r\n headerName: x.fieldAliasName,\r\n field: _mixedCaseData && x.fieldAliasName === \"ADDRESS1\" ?\r\n \"addresS1\"\r\n : _lowerCase ? x.fieldAliasName.toLowerCase() : x.fieldAliasName,\r\n editable: x.isExpViewDefault,\r\n valueSetter: (params) => {\r\n params.data.ruleviolations = params.newValue;\r\n return true;\r\n },\r\n filter: \"text\",\r\n ...(_agCellRenderers.find(cr => cr.crId.toLowerCase() === x.fieldAliasName.toLowerCase()) && { cellRenderer: _agCellRenderers.find(cr => cr.crId.toLowerCase() === x.fieldAliasName.toLowerCase()).crVal })\r\n , resizable: true,\r\n }));\r\n }\r\n\r\n static getFixedWidth = (_width) => {\r\n return {\r\n resizable: false,\r\n width: _width,\r\n minWidth: _width,\r\n maxWidth: _width,\r\n }\r\n }\r\n\r\n static excelStyles = [\r\n {\r\n id: 'excelErrorClassName',\r\n font: {\r\n color: \"#FF0000\",\r\n strikeThrough: true,\r\n },\r\n },\r\n {\r\n id: 'excelWarningClassName',\r\n font: {\r\n color: \"#ffa500\",\r\n strikeThrough: true,\r\n },\r\n },\r\n ]\r\n\r\n static getBusinessRuleSeverity = (_ruleSummaries, _fieldName, _recordId) => {\r\n const fieldRuleSummary = _ruleSummaries.find(x =>\r\n x.fieldName.toLowerCase() === _fieldName.toLowerCase()\r\n && x.recordId === _recordId);\r\n\r\n if (fieldRuleSummary) {\r\n return (fieldRuleSummary.businessRuleSeverity + '').toLowerCase();\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * returns a dropdown column for the AgGrid's ColumnDef\r\n * @param {*} _fieldName field name in the row data (eg: countryId, languageId)\r\n * @param {*} _mappings parsed values eg: [{ 1: \"Afganistan\", 2 : \"Argentina\" }] | UsageTip: DataService.arrayToObject(_componentThisRef.state.countryList, \"id\", \"value\");\r\n * @param {*} _isEditable optional : {false} to disable editing the column\r\n * @param {*} _cellEditor optional : pass the cell-editor\r\n * @param {*} _cellHeight optional : height of the cell\r\n */\r\n static getDropdownColumn(_headerName, _fieldName, _mappings, _isEditable = true, _cellEditor = \"agSelectCellEditor\", _cellHeight = 20, _cellStyle = { \"border-right\": \"1px solid lightgray\" }) {\r\n const temp = {\r\n headerName: _headerName,\r\n field: _fieldName,\r\n editable: _isEditable,\r\n cellStyle: _cellStyle,\r\n cellEditor: _cellEditor,\r\n refData: _mappings, // dropdown-dataSource\r\n cellEditorParams: {\r\n cellHeight: _cellHeight,\r\n values: DataService.extractKeysAsNumbers(_mappings), // extract the keys as numbers\r\n },\r\n };\r\n return temp;\r\n }\r\n\r\n\r\n static getColumn(_isEditable, _headerText, _dataField, _cellRenderer, _width, _cellStyle = { \"border-right\": \"1px solid lightgray\" }, _filter = \"text\", _resizable = true) {\r\n return {\r\n headerName: _headerText,\r\n field: _dataField,\r\n editable: _isEditable,\r\n width: _width,\r\n cellStyle: _cellStyle,\r\n cellRenderer: _cellRenderer,\r\n filter: _filter,\r\n resizable: _resizable\r\n };\r\n }\r\n static getTextColumn(_isEditable, _headerText, _dataField, _cellStyle = { \"border-right\": \"1px solid lightgray\" }, _filter = \"text\") {\r\n return {\r\n headerName: _headerText,\r\n headerTooltip: _headerText,\r\n field: _dataField,\r\n editable: _isEditable,\r\n cellStyle: _cellStyle,\r\n filter: _filter,\r\n valueSetter: params => {\r\n params.data[_dataField] = (params.newValue + \"\").trim();\r\n return true;\r\n }\r\n };\r\n }\r\n\r\n static getSizedColumn(_isEditable, _dataField, _cellStyles = {},\r\n _headerText, _headerTextAlign = ALIGNMENT.LEFT,\r\n _filter = null, _sortable = null,\r\n _minWidth = null, _maxWidth = null, _flex = null, _resizable = true,\r\n ) {\r\n\r\n // corrections\r\n if (_minWidth > 0 && _maxWidth > 0) { _resizable = false; }\r\n if (DataService.isNullOrUndefined(_cellStyles)) { _cellStyles = {}; }\r\n\r\n // mandatory fields\r\n let oRET = {\r\n editable: _isEditable,\r\n headerName: _headerText,\r\n field: _dataField,\r\n resizable: _resizable,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\", ..._cellStyles }\r\n };\r\n\r\n // add conditionally\r\n if (!DataService.isNullOrUndefined(_filter)) { oRET[\"filter\"] = _filter; }\r\n if (!DataService.isNullOrUndefined(_sortable)) { oRET[\"sortable\"] = _sortable; }\r\n if (!DataService.isNullOrUndefined(_flex)) { oRET[\"flex\"] = _flex; }\r\n if (_minWidth > 0) { oRET[\"minWidth\"] = _minWidth; }\r\n if (_maxWidth > 0) { oRET[\"maxWidth\"] = _maxWidth; }\r\n switch (_headerTextAlign) {\r\n case ALIGNMENT.CENTER: oRET[\"headerClass\"] = \"center-text\"; break;\r\n case ALIGNMENT.JUSTIFY: oRET[\"headerClass\"] = \"justify-text\"; break;\r\n case ALIGNMENT.RIGHT: oRET[\"headerClass\"] = \"right-text\"; break;\r\n //---\r\n case ALIGNMENT.LEFT:\r\n default:\r\n oRET[\"headerClass\"] = \"left-text\";\r\n break;\r\n }\r\n\r\n // RETURN\r\n return oRET;\r\n\r\n }\r\n\r\n}","\r\n/**\r\n * Author : Pradeep_Rajendran@epam.com\r\n */\r\nexport class TemplateFieldConfigUtil {\r\n\r\n /**\r\n * holds the true column definintion\r\n */\r\n objRef = {};\r\n\r\n constructor(_groupRendererId, _ordinal, _filedTypeEnum, _fieldId, _fieldName, _entityName, _fieldAliasName, _tooltip, _fieldDesc) {\r\n\r\n this.groupRendererId(_groupRendererId);\r\n this.ordinal(_ordinal);\r\n this.fieldTypeId(_filedTypeEnum);\r\n this.fieldId(_fieldId);\r\n this.fieldName(_fieldName);\r\n this.entityName(_entityName);\r\n this.fieldAliasName(_fieldAliasName);\r\n this.toolTip(_tooltip);\r\n this.fieldDesc(_fieldDesc); \r\n\r\n // optionals\r\n this.fieldValueDetails(null);\r\n this.fieldLength(256);\r\n this.isPlsRequired(false);\r\n this.isCustomField(false);\r\n this.lookUpList(null);\r\n this.mappedlOVIdField(null);\r\n this.mask(null);\r\n\r\n this.customBoolean(false);\r\n this.customDateTime(false);\r\n this.customLOVList(null);\r\n this.customProfileLOVList([]);\r\n this.customField(null);\r\n this.encryption(null);\r\n\r\n }\r\n\r\n /**\r\n * Shorthand for crearing a new instance\r\n */\r\n static GET = (_groupRendererId, _ordinal, _filedTypeEnum, _fieldId, _fieldName, _entityName, _fieldAliasName, _tooltip, _fieldDesc) => {\r\n return new TemplateFieldConfigUtil(_groupRendererId, _ordinal, _filedTypeEnum, _fieldId, _fieldName, _entityName, _fieldAliasName, _tooltip, _fieldDesc);\r\n }\r\n\r\n /**\r\n * Resolves any conflicts that are chained,\r\n * Finalises and returns the actual reference\r\n */\r\n SET = () => {\r\n return this.objRef;\r\n }\r\n\r\n\r\n ordinal = (_value) => { this.objRef[\"ordinal\"] = _value; return this; }\r\n customBoolean = (_value) => { this.objRef[\"customBoolean\"] = _value; return this; }\r\n customDateTime = (_value) => { this.objRef[\"customDateTime\"] = _value; return this; }\r\n customfield = (_value) => { this.objRef[\"customfield\"] = _value; return this; }\r\n\r\n encryption = (_value) => { this.objRef[\"encryption\"] = _value; return this; }\r\n\r\n entityName = (_value) => { this.objRef[\"entityName\"] = _value; return this; }\r\n fieldAliasName = (_value) => { this.objRef[\"fielD_ALIASNAME\"] = _value; return this; }\r\n fieldDesc = (_value) => { this.objRef[\"fielD_DESCRIPTION\"] = _value; return this; }\r\n fieldName = (_value) => { this.objRef[\"fielD_NAME\"] = _value; return this; }\r\n fieldId = (_value) => { this.objRef[\"fieldID\"] = _value; return this; }\r\n fieldValueDetails = (_value) => { this.objRef[\"fieldValueDetails\"] = _value; return this; }\r\n fieldTypeId = (_value) => { this.objRef[\"field_Type_ID\"] = _value; return this; }\r\n fieldLength = (_value) => { this.objRef[\"fieldlength\"] = _value; return this; }\r\n\r\n groupRendererId = (_value) => { this.objRef[\"grouprenderid\"] = _value; return this; }\r\n\r\n isPlsRequired = (_value) => { this.objRef[\"iS_PLSREQUIRED\"] = _value; return this; }\r\n isCustomField = (_value) => { this.objRef[\"isCustomField\"] = _value; return this; }\r\n customField = (_value) => { this.objRef[\"customfield\"] = _value; return this; }\r\n mask = (_value) => { this.objRef[\"mask\"] = _value; return this; }\r\n\r\n ordinal = (_value) => { this.objRef[\"ordinal\"] = _value; return this; }\r\n toolTip = (_value) => { this.objRef[\"toolTip\"] = _value; return this; }\r\n\r\n isHidden = (_value = true) => { this.objRef[\"isHidden\"] = _value; return this; }\r\n isVisible = (_value = true) => { return this.isHidden(!_value); }\r\n\r\n isReadOnly = (_value = true) => { this.objRef[\"isReadOnly\"] = _value; return this; }\r\n isEditable = (_value = true) => { return this.isHidden(!_value); }\r\n\r\n autoSelect = (_value) => { this.objRef[\"autoSelect\"] = _value; return this; }\r\n hideEmpty = (_value = true) => { this.objRef[\"hideEmpty\"] = _value; return this; }\r\n\r\n mappedlOVIdField = (_value) => { this.objRef[\"mappedlovidfield\"] = _value; return this; }\r\n lookUpList = (_value) => { this.objRef[\"lookUpList\"] = _value; return this; }\r\n customLOVList = (_value) => { this.objRef[\"customLOVList\"] = _value; return this; }\r\n customProfileLOVList = (_value) => { this.objRef[\"customProfileLOVList\"] = _value; return this; }\r\n\r\n /**\r\n * \r\n * @param {*} _icon \r\n * @param {*} _tooltip \r\n * @param {*} _onClick\r\n * @returns \r\n */\r\n secondaryAction = (_icon, _tooltip, _onClick = () => { }) => {\r\n this.objRef[\"secondaryActionIcon\"] = _icon;\r\n this.objRef[\"secondaryActionTooltip\"] = _tooltip;\r\n this.objRef[\"onSecondaryActionClick\"] = _onClick;\r\n return this;\r\n }\r\n\r\n endAdornmentActions = (_value) => { this.objRef[\"endAdornmentActions\"] = _value; return this; }\r\n\r\n\r\n //---\r\n}","import { ReplaySubject, from, of } from 'rxjs';\r\nimport { AgGridService } from \"../../../../shared/services/ag-grid/agGridService\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport DynamicControlService from '../../../../shared/services/dynamicControlService';\r\nimport { API_ENDPOINT, ENTITY_FIELD_TYPE } from \"../../../../shared/types/enums\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport LookupService from '../../../../shared/services/lookupService';\r\nimport ToastService from '../../../../shared/services/toastService';\r\nimport { MatIconService } from '../../../../shared/services/theme/matIconService';\r\nimport RolePermissionService from '../../../../shared/role-permissions/rolePermissionService';\r\nimport { TemplateFieldConfigUtil } from '../../../../shared/utilities/templateFieldConfigUtil';\r\n\r\nexport default class TransactionTabService {\r\n\r\n static proRataFieldId = 458; // for splicing Currency after\r\n\r\n static otherFieldGroupKey = 100;\r\n static filterFieldGroupKey = 1;\r\n static staticFieldGroupKey = 2;\r\n static customFieldGroupKey = 9;\r\n\r\n static readonlyFieldIds = []; // filled in the INIT method\r\n\r\n static companyTransactionId = 23;\r\n static porzioGSTTransactionFieldId = 24;\r\n static transactionCategoryFieldId = 6;\r\n static transactionStatusFieldId = 33;\r\n static transactionConsentFieldId = 57;\r\n static transactionCompanySalesRepId = 460;\r\n\r\n // RecipinetInformation\r\n static recipientInformationFieldGroupKey = 3;\r\n // filled in the INIT method\r\n static recipientColCompanyProfileId = 47;\r\n static recipientColPorzioGstProfileId = 48;\r\n static recipientColLastNameFieldId = 50;\r\n static recipientColFirstNameFieldId = 51;\r\n static recipientColOrganizationName = 53;\r\n static recipientProfileTypeFieldId = 54;\r\n static recipientColCountryFieldId = 64;\r\n static recipientIdentifierTypeFieldId = 66;\r\n static recipientColRecipientIdentifierCountryFieldId = 501;\r\n static recipientColProfileStatusFieldId = -100; // TODO: not in template\r\n static recipientInformationFieldIds = [\r\n this.recipientColCompanyProfileId, this.recipientColPorzioGstProfileId,\r\n this.recipientColLastNameFieldId, this.recipientColFirstNameFieldId, this.recipientColOrganizationName, this.recipientProfileTypeFieldId, this.recipientColCountryFieldId,\r\n this.recipientIdentifierTypeFieldId, this.recipientColRecipientIdentifierCountryFieldId, this.recipientColProfileStatusFieldId,\r\n ];\r\n static recipinetProfileTypeLovOptions = [];\r\n static recipinetIdentifierTypeLovOptions = [];\r\n\r\n // OwnershipInformation\r\n static ownershipInformationFieldGroupKey = 4;\r\n static ownershipInformationFieldIds = []; // \r\n\r\n // EngagementInformation Grid\r\n static engagementInformationFieldGroupKey = 5;\r\n static fieldEngagementCompanyEventFieldId = 68;\r\n static fieldEngagementNameFieldId = 70;\r\n static fieldEngagementTypeFieldId = 69;\r\n static fieldEngagementDescriptionFieldId = 331;\r\n static fieldEngagementStartDateFieldId = 71;\r\n static fieldEngagementEndDateFieldId = 72;\r\n static engagementInformationFieldIds = [\r\n this.fieldEngagementCompanyEventFieldId, this.fieldEngagementNameFieldId, this.fieldEngagementTypeFieldId,\r\n this.fieldEngagementDescriptionFieldId, this.fieldEngagementStartDateFieldId, this.fieldEngagementEndDateFieldId\r\n ];\r\n\r\n // VenueInformation Grid\r\n static venueInformationFieldGroupKey = 6;\r\n static fieldVenueNameFieldId = 73;\r\n static fieldVenueAddress1FieldId = 74;\r\n static fieldVenueAddress2FieldId = 75;\r\n static fieldVenueAddress3FieldId = 76;\r\n static fieldVenueAddress4FieldId = 77;\r\n static fieldVenueCityFieldId = 78;\r\n static fieldVenueProvinceFieldId = 79;\r\n static fieldVenuePostalCodeFieldId = 81;\r\n static fieldVenueCountryFieldId = 80;\r\n static venueInformationFieldIds = [\r\n this.fieldVenueNameFieldId, this.fieldVenueAddress1FieldId, this.fieldVenueAddress2FieldId, this.fieldVenueAddress3FieldId, this.fieldVenueAddress4FieldId,\r\n this.fieldVenueCityFieldId, this.fieldVenueProvinceFieldId, this.fieldVenuePostalCodeFieldId, this.fieldVenueCountryFieldId,\r\n ];\r\n\r\n\r\n // ResearchInformation\r\n static researchInformationFieldGroupKey = 7;\r\n static researchInformationFieldIds = []; //\r\n\r\n // PIInformation\r\n static PIInformationFieldGroupKey = 8;\r\n static principalInvestigatorID1 = 480;\r\n static principalInvestigatorID2 = 481;\r\n static principalInvestigatorID3 = 482;\r\n static principalInvestigatorID4 = 483;\r\n static principalInvestigatorID5 = 484;\r\n static PIInformationFieldIds = [\r\n this.principalInvestigatorID1, this.principalInvestigatorID2, this.principalInvestigatorID3, this.principalInvestigatorID4, this.principalInvestigatorID5\r\n ];\r\n\r\n // Currency Information (should go with Custom Fields)\r\n static userPersonalCurrencyFieldId = 1024;\r\n static convertedCurrencyTotalAmountFieldId = 1025;\r\n\r\n //--- GroupExpensesFields ------------\r\n static transactionTypeFieldId = 25;\r\n static transactionDateFieldId = 26;\r\n static initiatorLastNameFieldId = 27;\r\n static initiatorFirstNameFieldId = 28;\r\n static afiliatedCompanyFieldId = 29;\r\n static vendorNameFieldId = 30;\r\n\r\n static productFieldId = 31;\r\n static product2FieldId = 323;\r\n static product3FieldId = 324;\r\n static product4FieldId = 325;\r\n static product5FieldId = 326;\r\n\r\n static salesRepFieldId = 460;\r\n static formFieldId = 35;\r\n static purposeFieldId = 36;\r\n static totalAmountFieldId = 37;\r\n static totalNumberOfRecipientsFieldId = 38;\r\n static numberOfProfessionalRecipientsFieldId = 39;\r\n static numberOfNonProfessionalRecipientsFieldId = 40;\r\n static numberOfCompanyRepresentativesFieldId = 41;\r\n static numberOfNoShowsFieldId = 42;\r\n static baseCurrencyFieldId = 43;\r\n\r\n static engagementTypeFieldId = 69;\r\n static engagementNameFieldId = 70;\r\n static engagementStartDateFieldId = 71;\r\n static engagementEndDateFieldId = 72;\r\n\r\n static groupExpensesFieldIds = [\r\n this.transactionTypeFieldId, this.transactionDateFieldId, this.initiatorLastNameFieldId, this.initiatorFirstNameFieldId,\r\n this.afiliatedCompanyFieldId, this.vendorNameFieldId, this.productFieldId, this.product2FieldId, this.product3FieldId,\r\n this.product4FieldId, this.product5FieldId, this.salesRepFieldId, this.formFieldId,\r\n this.purposeFieldId, this.totalAmountFieldId, this.totalNumberOfRecipientsFieldId, this.numberOfProfessionalRecipientsFieldId,\r\n this.numberOfNonProfessionalRecipientsFieldId, this.numberOfCompanyRepresentativesFieldId, this.numberOfNoShowsFieldId,\r\n this.baseCurrencyFieldId, this.engagementTypeFieldId, this.engagementNameFieldId, this.engagementStartDateFieldId, this.engagementEndDateFieldId,\r\n ];\r\n\r\n\r\n static INIT = (_isClone) => {\r\n // readonly fields\r\n this.readonlyFieldIds = [...this.PIInformationFieldIds];\r\n this.recipinetProfileTypeLovOptions = [];\r\n if (!_isClone) {\r\n this.readonlyFieldIds.push(this.companyTransactionId); // requirement\r\n }\r\n }\r\n\r\n static hardCodeColumns = (_columnsArray) => {\r\n (_columnsArray || []).splice(0, 0, {\r\n \"entityId\": 1,\r\n \"fieldAliasName\": \"PORZIOGSTTRANSACTIONID\",\r\n \"fieldId\": TransactionTabService.porzioGSTTransactionFieldId,\r\n \"isCustomField\": false,\r\n \"isExpViewDefault\": false,\r\n \"isPlsRequired\": false,\r\n \"startIndex\": 1\r\n })\r\n\r\n return _columnsArray;\r\n }\r\n\r\n static hardcodeFields = (_compThisRef, isNew, _templateData) => {\r\n if (DataService.hasValue(_templateData)) {\r\n let index = 1000;\r\n const _templateKeys = Object.keys(_templateData) || [];\r\n\r\n //--- transaction status: --------------\r\n // delete duplicate key\r\n const duplicateTransactionStatusKey = DataService.getFirstOrDefault(_templateKeys.filter(x => x.toLowerCase().includes(\"transaction status\")));\r\n if (duplicateTransactionStatusKey) { delete _templateData[duplicateTransactionStatusKey]; }\r\n // Make transactionStatus readonly and only be editable via Dialog\r\n _templateData.TransactionStatus = {\r\n // all others\r\n \"isHidden\": RolePermissionService.TRANSACTION_STATUS.cannotView,\r\n \"isReadOnly\": true,\r\n \"fieldID\": this.transactionStatusFieldId,\r\n \"fielD_NAME\": \"Transaction Status\",\r\n \"fielD_DESCRIPTION\": \"Hardcoded filed\",\r\n \"fieldlength\": 100,\r\n \"field_Type_ID\": 5,\r\n \"entityName\": \"transactionstatusid\",\r\n \"fielD_ALIASNAME\": \"transactionstatusid\",\r\n \"iS_PLSREQUIRED\": true,\r\n \"isCustomField\": false,\r\n \"lookUpList\": \"\",\r\n \"toolTip\": \"Transaction Status\",\r\n \"mappedlovidfield\": \"transactionstatusid\",\r\n \"autoSelect\": isNew, // autoselect for new\r\n \"hideEmpty\": true, // don't show none\r\n \"customLOVList\": DynamicControlService.transformToCustomLovList(\r\n isNew ? [LookupService._TRANSACTION_STATUSES[0]] : LookupService._TRANSACTION_STATUSES, \"id\", \"value\", \"transactionstatusid\"),\r\n \"customProfileLOVList\": [],\r\n \"customBoolean\": false,\r\n \"grouprenderid\": 1,\r\n \"endAdornmentActions\": isNew ? [] : [ // this replaces the secondary action\r\n {\r\n icon: MatIconService.OVERRIDE_28, tooltip: \"Override Transaction status\", iconColor: \"primary\",\r\n isReadOnly: RolePermissionService.TRANSACTION_STATUS.cannotEdit,\r\n callback: () => { _compThisRef.setState({ showTransactionStatusDialog: true }) },\r\n },\r\n ],\r\n }\r\n\r\n //--- Recipient Porzio GST Profile ID: --------------\r\n // delete duplicate key\r\n const duplicateRecipientPorzioGstProfileIdKey = DataService.getFirstOrDefault(_templateKeys.filter(x => x.toLowerCase().includes(\"porzio gst profile id\")));\r\n if (duplicateRecipientPorzioGstProfileIdKey) { delete _templateData[duplicateRecipientPorzioGstProfileIdKey]; }\r\n // Make Recipient Porzio GST Profile ID readonly and only be editable via Dialog\r\n _templateData[\"Porzio GST Profile ID\"] = {\r\n // all others\r\n \"isHidden\": false,\r\n \"isReadOnly\": true,\r\n \"fieldID\": this.recipientColPorzioGstProfileId,\r\n \"fielD_NAME\": \"Porzio GST Profile ID\",\r\n \"fieldlength\": 100,\r\n \"field_Type_ID\": 2,\r\n \"entityName\": \"PORZIOGSTPROFILEID\",\r\n \"fielD_ALIASNAME\": \"PORZIOGSTPROFILEID\",\r\n \"fielD_DESCRIPTION\": \"Hardcoded filed\",\r\n \"fieldValueDetails\": null,\r\n \"iS_PLSREQUIRED\": false,\r\n \"isCustomField\": false,\r\n \"lookUpList\": \"\",\r\n \"toolTip\": \"Porzio GST Recipient ID\",\r\n \"mappedlovidfield\": \"porziogstprofileid\",\r\n \"autoSelect\": isNew, // autoselect for new\r\n \"hideEmpty\": true, // don't show none\r\n \"customProfileLOVList\": [],\r\n \"customBoolean\": false,\r\n \"grouprenderid\": null,\r\n \"ordinal\": 1, // will be displayed first in the group\r\n }\r\n\r\n //--- As per PP2-407: --------------\r\n // find the key if exists else use manual name\r\n let porzioGstTransactionIdKey = DataService.getFirstOrDefault(_templateKeys.filter(x => x.toLowerCase().includes(\"porzio gst transaction id\")));\r\n if (porzioGstTransactionIdKey) { delete _templateData[porzioGstTransactionIdKey]; }\r\n else { porzioGstTransactionIdKey = \"Porzio GST Transaction ID\"; }\r\n // build the key\r\n let porzioGstTransactionIdConfigValue = TemplateFieldConfigUtil.GET(TransactionTabService.filterFieldGroupKey, 2, ENTITY_FIELD_TYPE.TEXT, TransactionTabService.porzioGSTTransactionFieldId,\r\n \"Porzio GST Transaction ID\", \"PORZIOGSTTRANSACTIONID\", \"PORZIOGSTTRANSACTIONID\", \"Porzio GST Transaction ID\", \"(Hardcoded field) A unique identifier assigned to each transaction, auto-generated by Porzio GST.\")\r\n .isReadOnly(true).isVisible(!isNew).SET();\r\n // if required after a specific field, then find its index and pass the index here\r\n _templateData = DataService.addToObject(_templateData, porzioGstTransactionIdKey, porzioGstTransactionIdConfigValue, 1);\r\n\r\n\r\n\r\n //--- 1/3 CurrencyFields : ProRata --------------\r\n let proRataKey = DataService.getFirstOrDefault(_templateKeys.filter(x => x.toLowerCase().includes(\"pro rata\")));\r\n if (proRataKey) { delete _templateData[proRataKey]; }\r\n // now add\r\n _templateData[`Pro Rata Amount`] = {\r\n \"isReadOnly\": false,\r\n \"fieldID\": this.proRataFieldId,\r\n \"fielD_NAME\": \"Pro Rata Amount\",\r\n \"fielD_DESCRIPTION\": \"(Hardcoded field) Pro Rata amount for each recipient of the group expense. Recipients of a group expense will be determined by a common Event ID.\",\r\n \"fieldlength\": 12,\r\n \"field_Type_ID\": 1,\r\n \"fieldValueDetails\": null,\r\n \"entityName\": \"PRORATAAMT\",\r\n \"fielD_ALIASNAME\": \"PRORATAAMT\",\r\n \"iS_PLSREQUIRED\": false,\r\n \"isCustomField\": false,\r\n \"lookUpList\": \"\",\r\n \"toolTip\": \"Pro Rata Amount\",\r\n \"ordinal\": 13,\r\n \"mask\": null,\r\n \"hideEmpty\": true, // don't show none\r\n \"customfield\": null,\r\n \"encryption\": null,\r\n \"customLOVList\": null,\r\n \"customProfileLOVList\": [],\r\n \"customBoolean\": false,\r\n \"customDateTime\": null,\r\n \"grouprenderid\": this.staticFieldGroupKey\r\n };\r\n\r\n //--- 2/3 CurrencyFields : UserPersonalCurrency --------------\r\n _templateData.UserPersonalCurrency = {\r\n \"isReadOnly\": true,\r\n \"fieldID\": this.userPersonalCurrencyFieldId,\r\n \"fielD_NAME\": \"Converted Currency\",\r\n \"fielD_DESCRIPTION\": \"(Hardcoded field)\",\r\n \"fieldlength\": 100,\r\n \"field_Type_ID\": 2,\r\n \"entityName\": \"userpersonalcurrency\",\r\n \"fielD_ALIASNAME\": \"userpersonalcurrency\",\r\n \"iS_PLSREQUIRED\": true,\r\n \"isCustomField\": false,\r\n \"lookUpList\": \"\",\r\n \"toolTip\": \"Converted Currency\",\r\n // \"mappedlovidfield\": \"null\", If this has a value it will be the Control Name for Fomik; otherwise fielD_ALIASNAME\r\n \"autoSelect\": isNew, // autoselect for new\r\n \"hideEmpty\": true, // don't show none\r\n \"customLOVList\": null,\r\n \"customProfileLOVList\": [],\r\n \"customBoolean\": false,\r\n \"grouprenderid\": this.staticFieldGroupKey\r\n };\r\n\r\n //--- 2/3 CurrencyFields : ConvertedCurrencyTotalAmount --------------\r\n _templateData.ConvertedCurrencyTotalAmount = {\r\n \"isReadOnly\": true,\r\n \"fieldID\": this.convertedCurrencyTotalAmountFieldId,\r\n \"fielD_NAME\": \"Converted Total Amount\",\r\n \"fielD_DESCRIPTION\": \"(Hardcoded field)\",\r\n \"fieldlength\": 100,\r\n \"field_Type_ID\": 2,\r\n \"entityName\": \"convertedcurrencytotalamount\",\r\n \"fielD_ALIASNAME\": \"convertedcurrencytotalamount\",\r\n \"iS_PLSREQUIRED\": true,\r\n \"isCustomField\": false,\r\n \"lookUpList\": \"\",\r\n \"toolTip\": \"Converted Total Amount\",\r\n // \"mappedlovidfield\": \"null\",\r\n \"autoSelect\": isNew, // autoselect for new\r\n \"hideEmpty\": true, // don't show none\r\n \"customLOVList\": null,\r\n \"customProfileLOVList\": [],\r\n \"customBoolean\": false,\r\n \"grouprenderid\": this.staticFieldGroupKey\r\n };\r\n\r\n }\r\n return _templateData;\r\n }\r\n\r\n\r\n static getGroupFieldsMap = (_compThisRef, _isNew, _templateConfigData, _sortProp1, _sortProp2) => {\r\n\r\n // hardcode the Transaction-status dropdown, etc,...\r\n _templateConfigData = this.hardcodeFields(_compThisRef, _isNew, _templateConfigData);\r\n\r\n // cache lov's\r\n\r\n // reCreate map\r\n var groupInfoMap = new Map();\r\n groupInfoMap.set(this.filterFieldGroupKey, { \"name\": \"\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.staticFieldGroupKey, { \"name\": \"\", \"fieldConfigs\": [] }); // static\r\n groupInfoMap.set(this.recipientInformationFieldGroupKey, { \"name\": \"Recipient Information\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.ownershipInformationFieldGroupKey, { \"name\": \"Ownership Information\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.engagementInformationFieldGroupKey, { \"name\": \"Engagement Information\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.venueInformationFieldGroupKey, { \"name\": \"Venue Information\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.researchInformationFieldGroupKey, { \"name\": \"Research Information\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.PIInformationFieldGroupKey, { \"name\": \"PI Information\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.customFieldGroupKey, { \"name\": \"Custom Fields\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.otherFieldGroupKey, { \"name\": \"Other Fields\", \"fieldConfigs\": [] });\r\n\r\n\r\n // sort\r\n _templateConfigData = DataService.sortObjectByEntries(_templateConfigData, \"ordinal\");\r\n // extract keys\r\n const keys = Object.keys(_templateConfigData);\r\n if (DataService.hasNoElements(keys)) {\r\n groupInfoMap = new Map(); // clear the Map\r\n } else {\r\n let nonGroupedControls = [];\r\n // parse through each key\r\n keys.forEach(key => {\r\n // this applies the missing LOV's and corrcts incorrect configs\r\n const fieldConfig = DynamicControlService.transformFieldConfig(_templateConfigData[key]);\r\n if (!fieldConfig.isHidden) {\r\n // cache lov's\r\n if (fieldConfig.fieldID === this.recipientProfileTypeFieldId) {\r\n this.recipinetProfileTypeLovOptions = fieldConfig.customLOVList.filter(x => x.lovId !== 0);\r\n } else if (fieldConfig.fieldID === this.recipientIdentifierTypeFieldId) {\r\n this.recipinetIdentifierTypeLovOptions = fieldConfig.customLOVList.filter(x => x.lovId !== 0);\r\n }\r\n\r\n // add any link properties if exists\r\n this.setLinkPropertiesIfAny(_compThisRef, fieldConfig);\r\n this.setAdornmentActionsIfAny(_compThisRef, fieldConfig);\r\n\r\n var groupInfo = {};\r\n if (fieldConfig.isCustomField) {\r\n groupInfo = groupInfoMap.get(this.customFieldGroupKey);\r\n } // CUSTOM\r\n else if (this.recipientInformationFieldIds.includes(fieldConfig.fieldID)) { groupInfo = groupInfoMap.get(this.recipientInformationFieldGroupKey); } // recipientInformationGroup\r\n else if (this.engagementInformationFieldIds.includes(fieldConfig.fieldID)) { groupInfo = groupInfoMap.get(this.engagementInformationFieldGroupKey); } // engagementGroup\r\n else if (this.venueInformationFieldIds.includes(fieldConfig.fieldID)) { groupInfo = groupInfoMap.get(this.venueInformationFieldGroupKey); } // venueGroup\r\n else if (groupInfoMap.has(fieldConfig.grouprenderid)) { groupInfo = groupInfoMap.get(fieldConfig.grouprenderid); }\r\n else {\r\n // TODO: Enable if others is needed\r\n // nonGroupedControls.push(fieldConfig);\r\n // groupInfo = groupInfoMap.get(this.otherFieldGroupKey);\r\n } // add to unmatched\r\n\r\n // push the field to the corresponding group\r\n if (groupInfo.fieldConfigs) {\r\n let _push = false;\r\n\r\n // hide Porzio GST Profile if new\r\n if (fieldConfig.fieldID === this.porzioGSTTransactionFieldId) {\r\n _push = !_isNew; // can see only in edit\r\n } else { _push = true; }\r\n\r\n // readonly\r\n if (this.readonlyFieldIds.includes(fieldConfig.fieldID)) {\r\n fieldConfig.isReadOnly = true;\r\n }\r\n\r\n // add the field{\r\n if (_push) { groupInfo.fieldConfigs.push(fieldConfig); }\r\n }\r\n }\r\n });\r\n\r\n // show warnings\r\n if (DataService.hasElements(nonGroupedControls)) { console.warn(\"Controls with no GroupRendererId\", nonGroupedControls); }\r\n }\r\n //sorting by ordinal\r\n groupInfoMap.forEach(value => {\r\n value.fieldConfigs = value.fieldConfigs.sort((a, b) => a.ordinal - b.ordinal);\r\n });\r\n\r\n\r\n //|---> rearranging order for Converted Currencies\r\n let staticGroupFields = groupInfoMap.get(this.staticFieldGroupKey).fieldConfigs;\r\n let indexToInsertAfter = staticGroupFields.findIndex(x => Number(x.fieldID) === Number(this.proRataFieldId));\r\n if (indexToInsertAfter < 0) indexToInsertAfter = staticGroupFields.length - 1;\r\n\r\n let indexUserPersonalCurrency = staticGroupFields.findIndex(x => x.fieldID === this.userPersonalCurrencyFieldId);\r\n let fieldConfigUserPersonalCurrency = staticGroupFields.splice(indexUserPersonalCurrency, 1);\r\n DataService.insertAt(staticGroupFields, indexToInsertAfter + 1, fieldConfigUserPersonalCurrency[0]);\r\n\r\n let indexConvertedCurrencyTotalAmount = staticGroupFields.findIndex(x => x.fieldID === this.convertedCurrencyTotalAmountFieldId);\r\n let fieldConfigConvertedCurrencyTotalAmount = staticGroupFields.splice(indexConvertedCurrencyTotalAmount, 1);\r\n DataService.insertAt(staticGroupFields, indexToInsertAfter + 2, fieldConfigConvertedCurrencyTotalAmount[0]);\r\n //<---|\r\n\r\n\r\n // return the Array of Arrays\r\n return groupInfoMap;\r\n }\r\n\r\n static setAdornmentActionsIfAny = (_compThisRef, _fieldConfig) => {\r\n // add secondary actions for PID's\r\n if (this.PIInformationFieldIds.includes(_fieldConfig.fieldID)) {\r\n _fieldConfig.endAdornmentActions = [\r\n { icon: MatIconService.SEARCH, iconColor: \"primary\", callback: _compThisRef.onPidSearchClick, tooltip: \"Search Profile\" },\r\n { icon: MatIconService.CLEAR_RED, iconColor: \"default\", callback: _compThisRef.onPidClearClick, tooltip: \"Clear Profile\" },\r\n ]\r\n }\r\n }\r\n\r\n static showProfileDetailDialog = (_compThisRef, _fieldConfig, _value, _profileId, _porziogstprofileid = \"\") => {\r\n if (_value && DataService.isValidNumber(_profileId)) {\r\n // if (_compThisRef.props.isReadOnly) {\r\n // ToastService.showWarning(\"Please switch to edit mode.\");\r\n // _fieldConfig.clickHandled = false; // reset so the linkClickCanWork\r\n // this.state.targetPidFieldConfig.clickHandled = false; // reset so the linkClickCanWork\r\n // } else {\r\n _compThisRef.setState({\r\n targetPidFieldConfig: _fieldConfig,\r\n profileIdForDetailsDialog: _profileId,\r\n gstProfileIdForDetailsDialog: _porziogstprofileid,\r\n showProfileDetailDialog: true,\r\n });\r\n // }\r\n } else { ToastService.showError(\"Not a valid Profile\"); }\r\n }\r\n\r\n static setLinkPropertiesIfAny = (_compThisRef, _fieldConfig) => {\r\n\r\n switch (_fieldConfig.fieldID) {\r\n case TransactionTabService.recipientColPorzioGstProfileId:\r\n _fieldConfig[DynamicControlService.onClickCallbackKey] = (e) => {\r\n TransactionTabService.showProfileDetailDialog(_compThisRef, _fieldConfig, e.value, _compThisRef.state.prid, _compThisRef.state.porziogstprofileid);\r\n }\r\n break;\r\n case TransactionTabService.principalInvestigatorID1:\r\n _fieldConfig[DynamicControlService.onClickCallbackKey] = (e) => {\r\n if (!_fieldConfig.clickHandled) {\r\n TransactionTabService.showProfileDetailDialog(_compThisRef, _fieldConfig, e.value, _compThisRef.state.initialValuesOrNull.pridpiid1);\r\n }\r\n }\r\n break;\r\n case TransactionTabService.principalInvestigatorID2:\r\n _fieldConfig[DynamicControlService.onClickCallbackKey] = (e) => {\r\n if (!_fieldConfig.clickHandled) {\r\n TransactionTabService.showProfileDetailDialog(_compThisRef, _fieldConfig, e.value, _compThisRef.state.initialValuesOrNull.pridpiid2);\r\n }\r\n }\r\n break;\r\n case TransactionTabService.principalInvestigatorID3:\r\n _fieldConfig[DynamicControlService.onClickCallbackKey] = (e) => {\r\n if (!_fieldConfig.clickHandled) {\r\n TransactionTabService.showProfileDetailDialog(_compThisRef, _fieldConfig, e.value, _compThisRef.state.initialValuesOrNull.pridpiid3);\r\n }\r\n }\r\n break;\r\n case TransactionTabService.principalInvestigatorID4:\r\n _fieldConfig[DynamicControlService.onClickCallbackKey] = (e) => {\r\n if (!_fieldConfig.clickHandled) {\r\n TransactionTabService.showProfileDetailDialog(_compThisRef, _fieldConfig, e.value, _compThisRef.state.initialValuesOrNull.pridpiid4);\r\n }\r\n }\r\n break;\r\n case TransactionTabService.principalInvestigatorID5:\r\n _fieldConfig[DynamicControlService.onClickCallbackKey] = (e) => {\r\n if (!_fieldConfig.clickHandled) {\r\n TransactionTabService.showProfileDetailDialog(_compThisRef, _fieldConfig, e.value, _compThisRef.state.initialValuesOrNull.pridpiid5);\r\n }\r\n }\r\n break;\r\n case TransactionTabService.transactionCompanySalesRepId:\r\n _fieldConfig[DynamicControlService.onClickCallbackKey] = (e) => {\r\n if (e.value) {\r\n _compThisRef.setState({ salesRepIdForDetailsDialog: { companySalesRepId: _compThisRef.state.initialValuesOrNull.companysalesrepid, srid: undefined }, openSalesRepDialog: true });\r\n } else { ToastService.showError(\"Not a valid SalesRep ID\"); }\r\n }\r\n break;\r\n default: break;\r\n }\r\n\r\n }\r\n\r\n //#region Recipient Information \r\n static getRecipientInformationRows = (_initialValuesOrNull) => {\r\n let oRET = [];\r\n if (DataService.hasValue(_initialValuesOrNull)) {\r\n oRET.push({\r\n \"companyprofileid\": _initialValuesOrNull[\"companyprofileId\"],\r\n \"porziogstprofileid\": _initialValuesOrNull[\"porziogstprofileid\"],\r\n \"lastname\": _initialValuesOrNull[\"lastname\"],\r\n \"firstname\": _initialValuesOrNull[\"firstname\"],\r\n \"organizationname\": _initialValuesOrNull[\"organizationname\"],\r\n \"country\": _initialValuesOrNull[\"country\"],\r\n \"profilestatus\": _initialValuesOrNull[\"profilestatus\"],\r\n });\r\n }\r\n return oRET;\r\n }\r\n\r\n static getRecipientInformationObject = (_isactive = true) => {\r\n return {\r\n active: _isactive,\r\n };\r\n }\r\n\r\n static getUserCurrencyAsOBS = (_userId) => {\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/Transactions/GetUserCurrency?userId=${_userId}`);\r\n };\r\n\r\n static fetchCurrenciesAsOBS = (_userId) => {\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/Transactions/FetchCurrencies`);\r\n };\r\n\r\n static getConvertedTotalAmountAsOBS = (_tenantId, _sourceCurrency, _targetCurrency, _totalAmount, _transactionDate) => {\r\n //const _exchangeDate = new Date().toISOString().substring(0, 10)\r\n _totalAmount = _totalAmount === null ? 0 : _totalAmount;\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/Transactions/GetConvertedTotalAmount?tenantId=${_tenantId}&sourceCurrency=${_sourceCurrency}&targetCurrency=${_targetCurrency}&totalAmount=${_totalAmount}&exchangeDate=${_transactionDate}`);\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n * @param _recipientInformationFieldConfigs config Array\r\n */\r\n static getRecipientInformationColumnDefs = (_componentThisRef, _isReadOnly, _agGridUtils, _recipientInformationFieldConfigs) => {\r\n return [\r\n AgGridService.getTextColumn(false, \"Porzio GST Profile ID\", \"porziogstprofileid\"),\r\n AgGridService.getTextColumn(false, \"Company Profile ID\", \"companyprofileid\"),\r\n AgGridService.getTextColumn(false, \"Last Name\", \"lastname\"),\r\n AgGridService.getTextColumn(false, \"First Name\", \"firstname\"),\r\n AgGridService.getTextColumn(false, \"Organization Name\", \"organizationname\"),\r\n AgGridService.getTextColumn(false, \"Country\", \"country\"),\r\n AgGridService.getTextColumn(false, \"Profile Status\", \"profilestatus\"),\r\n AgGridService.getTextColumn(false, \"Transaction Consent\", \"transactionconsent\"),\r\n ];\r\n }\r\n\r\n //#endregion\r\n\r\n\r\n //#region Cleanup clone\r\n\r\n static cleanupClone = (_transactionToClone) => {\r\n if (_transactionToClone) {\r\n // clone\r\n let _cleanedClone = { ..._transactionToClone };\r\n\r\n // cleanup\r\n _cleanedClone.porziogsttransactionid = \"\";\r\n _cleanedClone.erroredFields = [];\r\n _cleanedClone[\"isrecipientmatch\"] = false;\r\n\r\n // recipinet information\r\n _cleanedClone[\"porziogstprofileid\"] = \"\";\r\n _cleanedClone[\"companyprofileid\"] = \"\";\r\n _cleanedClone[\"companytransactionid\"] = \"\"; // requirement\r\n _cleanedClone[\"profiletypeid\"] = \"\";\r\n _cleanedClone[\"recipientcategoryid\"] = \"\";\r\n _cleanedClone[\"organizationname\"] = \"\";\r\n _cleanedClone[\"suffix\"] = \"\";\r\n _cleanedClone[\"lastname\"] = \"\";\r\n _cleanedClone[\"middlename\"] = \"\";\r\n _cleanedClone[\"firstname\"] = \"\";\r\n _cleanedClone[\"prefix\"] = \"\";\r\n _cleanedClone[\"credentialsid\"] = \"\";\r\n _cleanedClone[\"specialityid\"] = \"\";\r\n _cleanedClone[\"address1\"] = \"\";\r\n _cleanedClone[\"address2\"] = \"\";\r\n _cleanedClone[\"address3\"] = \"\";\r\n _cleanedClone[\"address4\"] = \"\";\r\n _cleanedClone[\"city\"] = \"\";\r\n _cleanedClone[\"province\"] = \"\";\r\n _cleanedClone[\"country\"] = \"\";\r\n _cleanedClone[\"postalcode\"] = \"\";\r\n _cleanedClone[\"usnpinumber\"] = \"\";\r\n _cleanedClone[\"uslicensestate\"] = \"\";\r\n _cleanedClone[\"usstatelicensenumber\"] = \"\";\r\n _cleanedClone[\"ustaxidnum\"] = \"\";\r\n _cleanedClone[\"recipientidentifiercountry\"] = \"\";\r\n _cleanedClone[\"recipientidentifiercountryid\"] = \"\";\r\n _cleanedClone[\"recipientidentifiertypeid\"] = \"\";\r\n _cleanedClone[\"recipientidentifiervalue\"] = \"\";\r\n _cleanedClone[\"customermasterid\"] = \"\";\r\n\r\n // return\r\n return _cleanedClone;\r\n } else {\r\n return null;\r\n }\r\n }\r\n //#endregion\r\n\r\n isGroupExpensesFieldsModified = () => {\r\n\r\n }\r\n\r\n\r\n static getKeyName = (_isEndsWithId, _isProductFields, _mappedFieldName) => {\r\n if (_isEndsWithId) { return _mappedFieldName.substring(0, _mappedFieldName.length - 2); } // eg: transactionstatus\r\n else if (_isProductFields) {\r\n // productid2\r\n const lastChar = _mappedFieldName[_mappedFieldName.length - 1]; // lastChar\r\n return _mappedFieldName.substring(0, _mappedFieldName.length - 3) + lastChar;\r\n } else {\r\n return _mappedFieldName;\r\n }\r\n }\r\n\r\n static convertForPost = (_dataToPost, _fieldConfig, _mappedFieldName, _currentValue) => {\r\n let formattedValue = { 'value': null, 'isLOV': false, 'lovTextKey': '', 'lovTextValue': '' };\r\n\r\n if (DynamicControlService.booleanTransformFieldIds.includes(_fieldConfig.fieldID)) {\r\n _dataToPost[_mappedFieldName] = (_currentValue === true ? \"Y\" : \"N\");\r\n formattedValue['value'] = _dataToPost[_mappedFieldName];\r\n } else if (_fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.BOOLEAN) {//&& _oldValue !== _currentValue) {\r\n _dataToPost[_mappedFieldName] = DataService.parseBoolean(_currentValue);\r\n formattedValue['value'] = _dataToPost[_mappedFieldName];\r\n } else if ((_fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.NUMERIC || _fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DECIMAL)) { // && _oldValue !== _currentValue) {\r\n _dataToPost[_mappedFieldName] = DataService.getNumberOrDefault(_currentValue, null);\r\n formattedValue['value'] = _dataToPost[_mappedFieldName];\r\n } else if (_fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.LOV) {\r\n formattedValue['isLOV'] = true;\r\n // For Lov both transactionstatusId & transactionstatus keys should be set\r\n _currentValue = _currentValue > 0 ? _currentValue : 0; // if null then use the 0 based lovKey\r\n // if (_oldValue !== _currentValue) {\r\n _dataToPost[_mappedFieldName] = _currentValue; // Id eg: transactionstatusId\r\n formattedValue['value'] = _currentValue;\r\n // }\r\n\r\n const isEndsWithId = _mappedFieldName.endsWith(\"id\");\r\n const isProductFields = [\"productid2\", \"productid3\", \"productid4\", \"productid5\"].includes(_mappedFieldName);\r\n if (isEndsWithId || isProductFields) {\r\n const _lovStringFieldName = TransactionTabService.getKeyName(isEndsWithId, isProductFields, _mappedFieldName);\r\n const lovObj = DataService.getFirstOrDefault(_fieldConfig.customLOVList.filter((x) => x.lovId === _currentValue));\r\n // if (_originalObj[_lovStringFieldName] !== lovObj?.lovKey) {\r\n _dataToPost[_lovStringFieldName] = lovObj ? lovObj.lovKey : \"\";\r\n formattedValue['lovTextKey'] = _lovStringFieldName;\r\n formattedValue['lovTextValue'] = _dataToPost[_lovStringFieldName].toLowerCase() === \"-select-\" ? \"\" : _dataToPost[_lovStringFieldName];\r\n // }\r\n }\r\n // creating a supplement key (countryid) for country which is required by id.\r\n if (_mappedFieldName === 'country') {\r\n const countryId = _dataToPost[\"country\"];\r\n _dataToPost[\"countryid\"] = countryId;\r\n _dataToPost[\"country\"] = LookupService._COUNTRIES.find(c => c.id === countryId) ?\r\n LookupService._COUNTRIES.find(c => c.id === countryId).value : \"\";\r\n // TODO: impl. formattedValue for country\r\n }\r\n } else {\r\n // if (_oldValue !== _currentValue) {\r\n _dataToPost[_mappedFieldName] = _currentValue;\r\n formattedValue['value'] = _currentValue;\r\n // }\r\n }\r\n\r\n // return\r\n return formattedValue;\r\n }\r\n\r\n //---\r\n}","import { AgGridColumnExt } from \"../../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridService } from \"../../../../../shared/services/ag-grid/agGridService\";\r\nimport ApiService from \"../../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../../shared/types/enums\"\r\n\r\nexport default class RecipientSearchDialogService {\r\n\r\n static searchOBS = (_tenantId, _searchValue) => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Profiles/FetchProfilesBySearch/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\"\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n {\r\n headerName: \"Select\",\r\n field: \"isSelected\",\r\n editable: true,\r\n width: 80,\r\n minWidth: 80,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n cellRenderer: \"isSelectedCellRenderer\",\r\n cellRendererParams: { onChange: (_cellRef, _data) => { _onSelectCallback(_data); } }\r\n },\r\n AgGridColumnExt.GET(false, \"text\", \"companyProfileId\", \"Company Profile ID\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").minWidth(150).cellRenderer(\"childMessageRendererComponent\").headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileType\", \"Profile Type\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpinumber\", \"NPI Number\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"uslicensestate\", \"US License State\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usstatelicensenumber\", \"US License Nnumber\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"addresS1\", \"Address\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"city\", \"City\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"province\", \"Province\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"country\", \"Country\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileStatus\", \"Profile Status\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n\r\n // AgGridService.getTextColumn(false, \"Company Profile ID\", \"companyProfileId\"),\r\n // AgGridService.getTextColumn(false, \"Porzio GST Profile ID\", \"porziogstprofileid\"),\r\n // AgGridService.getTextColumn(false, \"Last Name\", \"lastName\"),\r\n // AgGridService.getTextColumn(false, \"First Name\", \"firstName\"),\r\n // AgGridService.getTextColumn(false, \"Organization Name\", \"organizationName\"),\r\n // // AgGridService.getTextColumn(false, \"Country\", \"CountryName\"),\r\n // AgGridService.getTextColumn(false, \"Country\", \"country\"),\r\n // AgGridService.getTextColumn(false, \"Profile Status\", \"profileStatus\"),\r\n // AgGridService.getTextColumn(false, \"USNPINUMBER\", \"usnpinumber\"),\r\n // AgGridService.getTextColumn(false, \"USLICENSESTATE\", \"uslicensestate\"),\r\n // AgGridService.getTextColumn(false, \"USSTATELICENSENUMBER\", \"usstatelicensenumber\"),\r\n // AgGridService.getTextColumn(false, \"ADDRESS\", \"address1\"),\r\n // AgGridService.getTextColumn(false, \"CITY\", \"city\"),\r\n // AgGridService.getTextColumn(false, \"PROVINCE\", \"province\"),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport Radio from '@material-ui/core/Radio';\r\nimport { DataService } from \"../../services/dataService\";\r\nimport { AgGridUtil } from \"../../services/ag-grid/agGridUtil\";\r\n\r\nexport default class AgGridRadioButtonCellRendererComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { isChecked: this.props.data[this.props.colDef.field] };\r\n }\r\n\r\n render() {\r\n const specialObj = this.props.data[AgGridUtil.specialProperty];\r\n const notHasSpecialProperty = DataService.isNullOrUndefined(specialObj);\r\n const isEditing = notHasSpecialProperty ? true : specialObj[AgGridUtil.editingProperty] === true;\r\n const isReadOnly = notHasSpecialProperty ? false : specialObj[AgGridUtil.readOnlyProperty] === true;\r\n\r\n return ( { this.onStateChangeRequested(); }}\r\n />);\r\n }\r\n\r\n onStateChangeRequested = () => {\r\n if (!this.state.isChecked || this.props.allowUnCheck) { // act only if not checked\r\n // allowUncheck caused this to fire, then inverse the state, else the above condition logic, so true\r\n const _newState = this.props.allowUnCheck ? !this.state.isChecked : true;\r\n\r\n var itemsToUpdate = [];\r\n\r\n const fieldName = this.props.colDef.field;\r\n this.props.api.forEachNodeAfterFilterAndSort((rowNode, rowIndex) => {\r\n // TODO: rowIndex will not be correct if sorted, so search this app for sortAndFilterAwareRowNode and see the impl\r\n var rowData = rowNode.data;\r\n if (rowIndex != this.props.rowIndex && rowData[fieldName]) {\r\n rowData[fieldName] = false; // cancel otehrs\r\n itemsToUpdate.push(rowData); // mark for update\r\n }\r\n });\r\n\r\n this.props.data[fieldName] = _newState; // update current\r\n itemsToUpdate.push(this.props.data); // mark current for update\r\n\r\n // update\r\n if (DataService.hasElements(itemsToUpdate)) {\r\n var res = this.props.api.applyTransaction({ update: itemsToUpdate });\r\n if (this.props.onChange) { // call the callback if exists\r\n this.props.onChange(this, this.props.data);\r\n }\r\n }\r\n }\r\n }\r\n\r\n}","import React from 'react';\r\nimport './circleComponent.css'\r\n\r\n\r\nconst STYLES = [\r\n \"circle-error\",\r\n \"circle-warning\",\r\n \"circle-unmatched\",\r\n \"circle-eligible\",\r\n \"circle-approval\"\r\n]\r\n\r\nexport const CircleComponent = ({ value, circleStyle }) => {\r\n const customCircleStyles = STYLES.includes(circleStyle) ? circleStyle : STYLES[0];\r\n return (\r\n
\r\n {value}\r\n
\r\n )\r\n}\r\n\r\n","import React, { Component } from \"react\";\r\nimport { CircleComponent } from \"../../shared/components/elements/circleComponent/circleComponent.jsx\"\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n this.getComponent = this.getComponent(this);\r\n this.getHComp = this.getHComp(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(this.props.colDef.field, this.props.node.data);\r\n }\r\n\r\n tranTypes = {\r\n error: ,\r\n warn: ,\r\n unmatch: ,\r\n nonLicensed: ,\r\n eligible: ,\r\n approve: \r\n }\r\n\r\n getComponent() {\r\n let dynamic = null;\r\n switch (this.props.colDef.field) {\r\n case \"transactionCount\":\r\n dynamic = {this.props.value}\r\n break;\r\n case \"porziogsttransactionid\":\r\n dynamic = {this.props.value}\r\n break;\r\n case \"porzioGstTransactionId\":\r\n dynamic = {this.props.value}\r\n break;\r\n case \"PorzioTransactionId\":\r\n dynamic = {this.props.value}\r\n break;\r\n case \"porziogstprofileid\":\r\n dynamic = {this.props.value}\r\n break;\r\n case \"error\":\r\n dynamic = this.tranTypes.error\r\n break;\r\n case \"warning\":\r\n dynamic = this.tranTypes.warn\r\n break;\r\n case \"unmatched\":\r\n dynamic = this.tranTypes.unmatch\r\n break;\r\n case \"nonLicensed\":\r\n dynamic = this.tranTypes.nonLicensed\r\n break;\r\n case \"eligible\":\r\n dynamic = this.tranTypes.eligible\r\n break;\r\n case \"approval\":\r\n dynamic = this.tranTypes.approve\r\n break;\r\n case \"healthindicator\":\r\n dynamic = this.getHComp(this.props.value);\r\n break;\r\n default:\r\n break;\r\n }\r\n return dynamic;\r\n }\r\n\r\n getHComp(val) {\r\n let dynamic = null;\r\n switch (val) {\r\n case 1:\r\n dynamic = this.tranTypes.error\r\n break;\r\n case 2:\r\n dynamic = this.tranTypes.warn\r\n break;\r\n case 3:\r\n dynamic = this.tranTypes.unmatch\r\n break;\r\n case 4:\r\n dynamic = this.tranTypes.approve\r\n break;\r\n default:\r\n break;\r\n }\r\n return dynamic;\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.getComponent}\r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, InputBase, Box } from \"@material-ui/core\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../../../shared/store/authProvider\";\r\nimport { CrudAction, ResultStatus } from \"../../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../../shared/services/dataService\";\r\nimport LookupService from \"../../../../../shared/services/lookupService\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\nimport { AgGridColumnExt } from \"../../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../../shared/services/theme/matIconService\";\r\nimport RecipientSearchDialogService from \"./recipinetSearchDialogService\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../../shared/services/ag-grid/agGridUtil\";\r\nimport ChildMessageRendererComponent from \"../../../childMessageRendererComponent\";\r\nimport ProfileDetailDialogComponent from \"../../../../profile-center/profile-detail/profileDetailDialogComponent\";\r\n\r\nclass RecipientSearchDialogComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n // ept till component's unMount\r\n scopedSubscriptions = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n title: this.props.title || 'Search Recipient',\r\n profileList: [],\r\n selectedProfile: null,\r\n lastSearchedValue: '',\r\n errorMessage: null,\r\n agGridRecipientUtils: new AgGridUtil(\"lastName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n\r\n componentDidMount() {\r\n var searchOBS = this.searchSubject.pipe(\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((_searchValue) => from(this.searchRecipient(_searchValue)))\r\n );\r\n\r\n this.scopedSubscriptions.add(searchOBS.subscribe());\r\n }\r\n\r\n searchRecipient = (_searchValue) => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n if (DataService.stringShouldBe(_searchValue, 3)) {\r\n this.setState({ searchResult: ResultStatus.LOADING, profileList: [], selectedProfile: null, lastSearchedValue: _searchValue });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n RecipientSearchDialogService.searchOBS(this.context.user.tenantId, _searchValue),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]\r\n ).subscribe(\r\n ([_profileList, _countryList]) => {\r\n if (DataService.hasElements(_profileList)) {\r\n _profileList.forEach(x => { x.isSelected = false; });\r\n }\r\n this.setState({\r\n searchResult: DataService.hasElements(_profileList) ? ResultStatus.SUCCESS : ResultStatus.LOADED,//-> no records\r\n profileList: _profileList,\r\n });\r\n },\r\n (err) => { this.setState({ searchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n } else {\r\n this.setState({ searchResult: ResultStatus.NOT_LOADED });\r\n }\r\n return [];\r\n }\r\n\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node, profileIdForDetailsDialog: node.prid }, () => {\r\n this.setState({ showProfileDetailDialog: true })\r\n });\r\n }\r\n // render\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n <>\r\n \r\n \r\n \r\n {this.state.title}\r\n {/* Search */}\r\n
\r\n
{MatIconService.SEARCH}
\r\n { this.searchSubject.next(e.target.value); }} />\r\n
\r\n {LayoutService.getIconButton(DataService.isNullOrUndefined(this.state.selectedProfile), MatIconService.OK, \"Save\", () => {\r\n\r\n\r\n if (DataService.hasValue(this.state.selectedProfile)) {\r\n var retObj = {};\r\n const keys = Object.keys(this.state.selectedProfile);\r\n keys.forEach(key => { retObj[key.toLowerCase()] = this.state.selectedProfile[key]; });\r\n this.setState({\r\n searchResult: ResultStatus.NOT_LOADED, //-> no records\r\n profileList: [],\r\n });\r\n\r\n this.props.onClose(retObj);\r\n } else { this.props.onClose(null) }\r\n }, \"inherit\", \"keyActionSave\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => { this.props.onClose(null) }, \"secondary\", \"keyActionCancel1\")}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n this.setState({ showProfileDetailDialog: false })}\r\n />\r\n \r\n );\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.searchResult) {\r\n case ResultStatus.SAVING: return ;\r\n case ResultStatus.LOADING: return ;\r\n case ResultStatus.NOT_LOADED: return ;\r\n case ResultStatus.LOADED: return ;\r\n case ResultStatus.SUCCESS:\r\n return (
\r\n
\r\n {\r\n this.setState({ selectedProfile: _data });\r\n })}\r\n suppressClickEdit={true}\r\n frameworkComponents={this.state.agGridRecipientUtils.frameworkComponents}\r\n onGridReady={(params) => { this.state.agGridRecipientUtils.setGridParams(params, true); }}\r\n gridOptions={{\r\n ...AgGridColumnExt.getGridOptions(56),\r\n context: { componentParent: this },\r\n suppressContextMenu: true,\r\n rowHeight: 32,\r\n }}\r\n />\r\n
\r\n
);\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.searchRecipient(this.state.lastSearchedValue); }} />);\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(RecipientSearchDialogComponent);","import { AgGridColumnExt } from \"../../services/ag-grid/agGridColumnExt\";\r\nimport { AgGridService } from \"../../services/ag-grid/agGridService\";\r\nimport ApiService from \"../../services/apiService\"\r\nimport { API_ENDPOINT } from \"../../types/enums\"\r\n\r\nexport default class PossibleMatchesDialogService {\r\n\r\n static getPossibleMatches = (_tenantId, _recordid, _entityId) => {\r\n return ApiService.setOBS(\"GET\", API_ENDPOINT.CORE, `/Profiles/FetchPossibleMatches/${_tenantId}/${_recordid}`);\r\n }\r\n\r\n static getAsMatchCenterRow = (_profileObj = {}) => {\r\n return [\r\n {\r\n \"companyProfileId\": _profileObj[\"companyProfileId\"],\r\n \"porziogstprofileid\": _profileObj[\"porziogstprofileid\"],\r\n \"matchScore\": _profileObj[\"matchScore\"],\r\n \"matchKey\": _profileObj[\"matchKey\"],\r\n \"profileType\": _profileObj[\"profileType\"],\r\n \"lastName\": _profileObj[\"lastName\"],\r\n \"firstName\": _profileObj[\"firstName\"],\r\n \"middleName\": _profileObj[\"middleName\"],\r\n \"usnpinumber\": _profileObj[\"usnpinumber\"],\r\n \"uslicensestate\": _profileObj[\"uslicensestate\"],\r\n \"usstatelicensenumber\": _profileObj[\"usstatelicensenumber\"],\r\n \"usTaxIdNumber\": _profileObj[\"usTaxIdNumber\"],\r\n \"organizationName\": _profileObj[\"organizationName\"],\r\n \"city\": _profileObj[\"city\"],\r\n \"province\": _profileObj[\"province\"],\r\n \"postalCode\": _profileObj[\"postalCode\"],\r\n \"countryName\": _profileObj[\"countryName\"],\r\n \"profileStatusKey\": _profileObj[\"profileStatusKey\"],\r\n \"porzioGstIdentifierType\": _profileObj[\"porzioGstIdentifierType\"],\r\n \"identifierValue\": _profileObj[\"identifierValue\"],\r\n }\r\n ];\r\n }\r\n\r\n static getUnmatchedProfileColumnDefs = (_componentThisRef) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"companyProfileId\", \"Company Profile ID\").defaultWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").defaultWidth(150).cellRenderer(\"childMessageRendererComponent\").headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileType\", \"Profile Type\").defaultWidth(150).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").defaultWidth(150).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").defaultWidth(150).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpinumber\", \"US NPI Number\").defaultWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"uslicensestate\", \"US License State\").defaultWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usstatelicensenumber\", \"US License Number\").defaultWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usTaxIdNumber\", \"US Tax ID Number\").defaultWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").defaultWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"city\", \"City\").defaultWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"province\", \"Province\").defaultWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"postalCode\", \"Postal Code\").defaultWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"countryName\", \"Country\").defaultWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstIdentifierType\", \"Identifier Type\").defaultWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"identifierValue\", \"Identifier Value\").defaultWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n {\r\n headerName: \"Select\",\r\n field: \"isSelected\",\r\n editable: true,\r\n width: 80,\r\n minWidth: 80,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n cellRenderer: \"isSelectedCellRenderer\",\r\n cellRendererParams: { onChange: (_cellRef, _data) => { _onSelectCallback(_data); } }\r\n },\r\n AgGridColumnExt.GET(false, \"text\", \"companyProfileId\", \"Company Profile ID\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").minWidth(150).cellRenderer(\"childMessageRendererComponent\").headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"matchScore\", \"Match Rate\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"matchKey\", \"Match Rule\").minWidth(250).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileType\", \"Profile Type\").minWidth(150).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").minWidth(150).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").minWidth(150).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpinumber\", \"US NPI Number\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"uslicensestate\", \"US License State\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usstatelicensenumber\", \"US License Number\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usTaxIdNumber\", \"US Tax ID Number\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"city\", \"City\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"province\", \"Province\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"postalCode\", \"Postal Code\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"countryName\", \"Country\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileStatusKey\", \"Profile Status\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstIdentifierType\", \"Identifier Type\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"identifierValue\", \"Identifier Value\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n\r\n //---\r\n}","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, InputBase, Box } from \"@material-ui/core\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../store/authProvider\";\r\nimport { API_ENDPOINT, CrudAction, ENTITY_TYPE, ResultStatus } from \"../../types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../services/dataService\";\r\nimport LookupService from \"../../services/lookupService\";\r\nimport LayoutService from \"../../services/layoutService\";\r\n\r\nimport PageLoadingComponent from \"../page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport PossibleMatchesDialogService from \"./possibleMatchesDialogServise\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../elements/agGridRadioButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../services/ag-grid/agGridUtil\";\r\nimport ChildMessageRendererComponent from \"../childMessageRendererComponent\";\r\nimport ProfileDetailDialogComponent from \"../../../private/profile-center/profile-detail/profileDetailDialogComponent\";\r\nimport { AgGridColumnExt } from \"../../services/ag-grid/agGridColumnExt\";\r\nimport SectionComponent from \"../sectionComponent\";\r\n\r\nclass PossibleMatchesDialogComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n // ept till component's unMount\r\n scopedSubscriptions = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n profileList: [],\r\n selectedProfile: null,\r\n errorMessage: null,\r\n agGridUnmatchedDataUtils: new AgGridUtil(\"lastName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n }),\r\n agGridPossibleMatchUtils: new AgGridUtil(\"lastName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n\r\n componentDidMount() {\r\n this.fetchData(this.props.recordId, this.props.entityId);\r\n }\r\n\r\n fetchData = (_recordId, _entityId) => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n if (DataService.hasValidValue(_recordId)) {\r\n this.setState({ searchResult: ResultStatus.LOADING, profileList: [], selectedProfile: null });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n PossibleMatchesDialogService.getPossibleMatches(this.context.user.tenantId, _recordId, _entityId),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]\r\n ).subscribe(\r\n ([_profileList, _countryList]) => {\r\n if (DataService.hasElements(_profileList)) {\r\n _profileList.forEach(x => {\r\n x.isSelected = false;\r\n x.countryName = _countryList.find(c => c.id == x.country)?.value;\r\n });\r\n }\r\n this.setState({\r\n searchResult: DataService.hasElements(_profileList) ? ResultStatus.SUCCESS : ResultStatus.LOADED,//-> no records\r\n profileList: _profileList,\r\n possibleMatchCount: _profileList.length\r\n });\r\n },\r\n (err) => { this.setState({ searchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n } else {\r\n this.setState({ searchResult: ResultStatus.NOT_LOADED });\r\n }\r\n return [];\r\n }\r\n\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node, profileIdForDetailsDialog: node.prid }, () => {\r\n this.setState({ showProfileDetailDialog: true })\r\n });\r\n }\r\n\r\n // render\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n <>\r\n \r\n \r\n \r\n Manual Match Center\r\n {this.props.entityId === ENTITY_TYPE.TRANSACTION ? <> : LayoutService.getIconButton(false,\r\n MatIconService.PARENT, \"Mark as Permanent\", () => { this.props.markAsPermenant() }, \"inherit\")}\r\n {LayoutService.getIconButton(DataService.isNullOrUndefined(this.state.selectedProfile), MatIconService.OK, \"Save\", () => {\r\n if (DataService.hasValue(this.state.selectedProfile)) {\r\n var retObj = {};\r\n const keys = Object.keys(this.state.selectedProfile);\r\n keys.forEach(key => { retObj[key.toLowerCase()] = this.state.selectedProfile[key]; });\r\n this.setState({\r\n searchResult: ResultStatus.NOT_LOADED, //-> no records\r\n profileList: [],\r\n });\r\n\r\n this.props.onClose(retObj);\r\n } else { this.props.onClose(null) }\r\n }, \"inherit\", \"keyActionSave\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => { this.props.onClose(null) }, \"secondary\", \"keyActionCancel1\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n this.setState({ showProfileDetailDialog: false })}\r\n />\r\n \r\n );\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.searchResult) {\r\n case ResultStatus.SAVING: return ;\r\n case ResultStatus.LOADING: return ;\r\n case ResultStatus.NOT_LOADED: return ;\r\n case ResultStatus.LOADED: return ;\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n Customer Unmatched Data\r\n {/* */}\r\n
\r\n {\r\n this.state.agGridUnmatchedDataUtils.setGridParams(gridOptions, false);\r\n // this.state.agGridUnmatchedDataUtils.autoSizeColumns();\r\n }}\r\n gridOptions={{\r\n context: { componentParent: this },\r\n ...AgGridColumnExt.getGridOptions(40),\r\n }}\r\n\r\n onCellFocused={(e) => {\r\n if (this.state.agGridPossibleMatchUtils.gridColumnNameMap.has(e.column.colId.toLowerCase())) {\r\n this.state.agGridPossibleMatchUtils.gridApi.ensureColumnVisible(e.column.colId);\r\n this.state.agGridPossibleMatchUtils.gridApi.flashCells({ columns: [e.column.colId] }); // since only one row\r\n }\r\n }}\r\n >\r\n
\r\n\r\n \r\n
\r\n {\r\n this.setState({ selectedProfile: _data });\r\n })}\r\n suppressClickEdit={true}\r\n pagination={true}\r\n paginationPageSize={25}\r\n frameworkComponents={this.state.agGridPossibleMatchUtils.frameworkComponents}\r\n onGridReady={(params) => {\r\n this.state.agGridPossibleMatchUtils.setGridParams(params, false);\r\n this.state.agGridPossibleMatchUtils.pinColumn(\"isSelected\");\r\n }}\r\n gridOptions={{\r\n context: { componentParent: this },\r\n ...AgGridColumnExt.getGridOptions(40),\r\n }}\r\n onCellFocused={(e) => {\r\n if (this.state.agGridUnmatchedDataUtils.gridColumnNameMap.has(e.column.colId.toLowerCase())) {\r\n this.state.agGridUnmatchedDataUtils.gridApi.ensureColumnVisible(e.column.colId);\r\n this.state.agGridUnmatchedDataUtils.gridApi.flashCells({ columns: [e.column.colId] }); // since only one row\r\n }\r\n }}\r\n />\r\n
\r\n\r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(this.props.matchId, this.props.entityId); }} />);\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(PossibleMatchesDialogComponent);","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\n\r\nexport default class SalesRepDetailsService {\r\n\r\n static getReportValueDropdownAsOBS = (_tenantId, _srId, _companySalesRepId) => {\r\n let queryString = `srId=${_srId}`;\r\n if(_srId === undefined){\r\n queryString = `companySalesRepId=${_companySalesRepId}`;\r\n }\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/SalesRep/FetchSalesRepBySRIdOrCompanySalesRepId/${_tenantId}?${queryString}`\r\n );\r\n };\r\n\r\n} ","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { Box, Dialog, DialogTitle, DialogContent, Typography, AppBar, Toolbar, IconButton, TextField, Grid, FormGroup } from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, } from \"../../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport SalesRepDetailsService from \"./salesRepDetailsService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass SalesRepDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE || this.props.inputAction === CrudAction.READ ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE || this.props.inputAction === CrudAction.READ ? true : false,\r\n fetchResult: ResultStatus.NOT_LOADED\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchSalesRepDetails();\r\n }\r\n\r\n fetchSalesRepDetails = () => {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n (this.props.inputAction === CrudAction.CREATE ? of(null) : SalesRepDetailsService.getReportValueDropdownAsOBS(this.context.user.tenantId, this.props.modalAgNode.srId, this.props.modalAgNode.companySalesRepId)),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(([_salesRepObj, _countryList,]) => {\r\n this.setState(\r\n {\r\n salesRepObj: _salesRepObj,\r\n countryList: [{ id: 0, value: \"Select\" }, ..._countryList],\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n companySalesRepId: undefined,\r\n salesRepFirstName: undefined,\r\n salesRepMiddleName: undefined,\r\n salesRepLastName: undefined,\r\n province: undefined,\r\n country: \"\",\r\n licenseChicago: undefined,\r\n licenseConnecticut: undefined,\r\n licenseDC: undefined,\r\n licenseNevada: undefined,\r\n licenseMiamiIndicator: undefined,\r\n isActive: true,\r\n licenseOregon: undefined,\r\n };\r\n } else {\r\n return {\r\n companySalesRepId: this.state.salesRepObj.companySalesRepId,\r\n salesRepFirstName: this.state.salesRepObj.salesrepfirstname ?? undefined,\r\n salesRepMiddleName: this.state.salesRepObj.salesrepmiddlename ?? undefined,\r\n salesRepLastName: this.state.salesRepObj.salesreplastname,\r\n province: this.state.salesRepObj.province ?? undefined,\r\n country: this.state.salesRepObj.countryId,\r\n licenseChicago: this.state.salesRepObj.licenseChicago ?? undefined,\r\n licenseConnecticut: this.state.salesRepObj.licenseConnecticut ?? undefined,\r\n licenseDC: this.state.salesRepObj.licenseDC ?? undefined,\r\n licenseNevada: this.state.salesRepObj.licenseNevada ?? undefined,\r\n licenseMiamiIndicator: this.state.salesRepObj.licenseMiamiIndicator,\r\n isActive: this.state.salesRepObj.isActive,\r\n licenseOregon: this.state.salesRepObj.licenseOregon ?? undefined,\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n companySalesRepId: Yup.string().required(\"Required\")\r\n .min(2, \"Must be at least 2 characters long\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .test(\r\n \"checkDuplicateCompanySAlesRepId\",\r\n \"Company Sales Rep Id already exists\",\r\n async (_formikValue) => {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n if (_formikValue === this.state.salesRepObj.companySalesRepId) {\r\n return true;\r\n }\r\n }\r\n try {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/SalesRep/CompanySalesRepExists/${this.context.user.tenantId}/${_formikValue}`\r\n );\r\n const isExists = await result.json();\r\n return !isExists;\r\n } catch (error) {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n }\r\n ),\r\n\r\n salesRepFirstName: Yup.string().max(100, \"Must be 100 characters or less\"),\r\n salesRepMiddleName: Yup.string().max(100, \"Must be 100 characters or less\"),\r\n salesRepLastName: Yup.string().required(\"Required\").min(2, \"Must be at least 2 characters long\").max(100, \"Must be 100 characters or less\"),\r\n province: Yup.string().max(100, \"Must be 100 characters or less\"),\r\n licenseChicago: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n licenseConnecticut: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n licenseDC: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n licenseNevada: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n licenseOregon: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n companySalesRepId: _formikProps.values.companySalesRepId,\r\n salesRepFirstName: _formikProps.values.salesRepFirstName,\r\n salesRepMiddleName: _formikProps.values.salesRepMiddleName,\r\n salesRepLastName: _formikProps.values.salesRepLastName,\r\n province: _formikProps.values.province,\r\n countryId: _formikProps.values.country ? _formikProps.values.country : 0,\r\n licenseChicago: _formikProps.values.licenseChicago,\r\n licenseConnecticut: _formikProps.values.licenseConnecticut,\r\n licenseDC: _formikProps.values.licenseDC,\r\n licenseNevada: _formikProps.values.licenseNevada,\r\n licenseMiamiIndicator: _formikProps.values.licenseMiamiIndicator,\r\n isActive: _formikProps.values.isActive,\r\n licenseOregon: _formikProps.values.licenseOregon,\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let apiUrl = \"\";\r\n var actionVerb = \"\";\r\n if (this.state.isEditing) {\r\n // UPDATE\r\n actionVerb = \"PUT\";\r\n apiUrl = `/SalesRep/EditSalesRep/${this.context.user.tenantId}`\r\n mappedObj.srId = this.state.salesRepObj.srId;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n\r\n } else {\r\n // CREATE\r\n actionVerb = \"POST\";\r\n apiUrl = `/SalesRep/AddSalesRep/${this.context.user.tenantId}`\r\n mappedObj.srId = 0;\r\n mappedObj.createdBy = this.context.user.userId;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.TENANT, apiUrl, JSON.stringify(mappedObj)).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS, isReadOnly: true }, () => { this.fetchSalesRepDetails(); });\r\n this.props.refreshGrid(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(erroObj);\r\n if (erroObj.inner) {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n }\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.SALESREP_DETAIL.cannotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n\r\n \r\n {(fProps) => (\r\n
\r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n SalesRep Detail\r\n {this.props.inputAction === CrudAction.UPDATE ? RolePermissionService.SALESREP_DETAIL.cannotEdit ? LayoutService.getIconButton(false, MatIconService.CANCEL, \"Discard Changes\", () => { this.props.onClose(false) }, \"secondary\", \"keyActionCancel\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n {this.state.fetchResult === ResultStatus.SUCCESS ? (

Your SalesRep has been updated!!

) : null}\r\n \r\n \r\n {\" \"}\r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"country\", \"Country\", this.state.countryList, \"id\", \"value\", \"98%\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"licenseMiamiIndicator\", \"License Miami Indicator\")}\r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isActive\", \"Active\")}\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n\r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { console.log(\"Retry Clicked\"); }} />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(SalesRepDetailsComponent);","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\n\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, Box, Grid, LinearProgress } from \"@material-ui/core\";\r\nimport { Alert, AlertTitle } from \"@material-ui/lab\";\r\n\r\nimport LayoutService from \"../../services/layoutService\";\r\nimport { SubscriptionArray } from \"../../services/dataService\";\r\nimport PageLoadingComponent from \"../page/pageLoadingComponent\";\r\nimport { API_ENDPOINT, ENTITY_TYPE, ResultStatus } from \"../../types/enums\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport DialogErrorFragmentComponent from \"../page/dialogErrorFragmentComponent\";\r\nimport LookupService from \"../../services/lookupService\";\r\nimport ToastService from \"../../services/toastService\";\r\nimport { Entity } from \"draft-js\";\r\nimport ApiService from \"../../services/apiService\";\r\nimport { AuthContext } from \"../../store/authProvider\";\r\n\r\n\r\nclass StatusOverrideComponenet extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n apiResult: ResultStatus.LOADED,\r\n currentStatusId: this.props.currentValue,\r\n newStausId: this.props.currentValue,\r\n entityId: this.props.entityId,\r\n dropDownLabel: this.props.entityId === ENTITY_TYPE.PROFILE ? \"Profile Status\" : \"Transaction Status\",\r\n entityName: this.props.entityId === ENTITY_TYPE.PROFILE ? \"Profile\" : \"Transaction\"\r\n };\r\n }\r\n\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ apiResult: ResultStatus.LOADING });\r\n\r\n this.apiSubscriptions.cancelAll();\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n this.state.entityId === ENTITY_TYPE.PROFILE ? LookupService.getProfileStatusesAsOBS(this.context)\r\n : LookupService.getTransactionStatusesAsOBS(this.context)\r\n ]).subscribe(\r\n // success\r\n ([_statuses]) => {\r\n this.setState({\r\n statuses: _statuses.filter(x => x.id === 5 || x.id === 6),\r\n apiResult: ResultStatus.LOADED\r\n });\r\n },\r\n // error\r\n (errorObj) => {\r\n ToastService.showError(\"Error while Loading\");\r\n this.props.onClose(false);\r\n }\r\n )\r\n );\r\n }\r\n\r\n saveProfileStatus = () => {\r\n this.setState({ apiResult: ResultStatus.SAVING });\r\n\r\n this.apiSubscriptions.cancelAll();\r\n setTimeout(() => {\r\n ToastService.showSuccess(\"Successfully Saved.\");\r\n this.setState({ apiResult: ResultStatus.SUCCESS });\r\n this.props.onClose(true);\r\n }, 5000);\r\n }\r\n saveTransactionStatus = () => {\r\n this.setState({ apiResult: ResultStatus.SAVING });\r\n\r\n this.apiSubscriptions.cancelAll();\r\n // setTimeout(() => {\r\n // ToastService.showSuccess(\"Successfully Saved.\");\r\n // this.setState({ apiResult: ResultStatus.SUCCESS });\r\n // this.props.onClose(true);\r\n // }, 5000);\r\n let ids = this.props.selectedTransactions !== undefined ? [...this.props.selectedTransactions] : [this.props.id];\r\n let targetUrl = \"\";\r\n const selTransIds = ids.join();\r\n targetUrl = `/Transactions/UpdateTransactionStatus/${this.context.user.tenantId}/${this.state.newStausId}?userId=${this.context.user.userId}`\r\n ApiService.postOBS(API_ENDPOINT.CORE, targetUrl,JSON.stringify(selTransIds))\r\n .subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Successfully Saved.\");\r\n this.setState({ apiResult: ResultStatus.SUCCESS });\r\n this.props.onClose(false);\r\n this.props.refreshTab();\r\n }\r\n else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n ToastService.showError(\"Error while saving Transaction status\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n // let targetUrl = `/Transactions/UpdateTransactionStatus/${this.context.user.tenantId}/${this.props.id}?userId=${this.context.user.userId}&transactionStatusId=${this.state.newStausId}`\r\n // ApiService.postOBS(API_ENDPOINT.CORE, targetUrl)\r\n // .subscribe(\r\n // (successResult) => {\r\n // if (successResult) {\r\n // ToastService.showSuccess(\"Successfully Saved.\");\r\n // this.setState({ apiResult: ResultStatus.SUCCESS });\r\n // this.props.onClose(false);\r\n // this.props.refreshTab();\r\n // }\r\n // else {\r\n // this.setState({ fetchResult: ResultStatus.ERROR });\r\n // }\r\n // },\r\n // (errorResult) => {\r\n // ToastService.showError(\"Error while saving Transaction status\");\r\n // this.setState({ fetchResult: ResultStatus.ERROR });\r\n // }\r\n // );\r\n }\r\n\r\n\r\n // formik\r\n getInitialValues = () => {\r\n return { statusId: this.state.currentStatusId ? this.state.currentStatusId : \"\" };\r\n }\r\n\r\n validationSchemaObj = Yup.object().shape({});\r\n getValidationSchema = () => {\r\n this.validationSchemaObj = Yup.object().shape({\r\n statusId: LayoutService.getNullableValidation(Yup.number().required(\"Required\"))\r\n });\r\n return this.validationSchemaObj;\r\n }\r\n\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n {/* Title */}\r\n \r\n \r\n \r\n Override {this.state.entityName} Status\r\n {LayoutService.getIconButton((this.state.currentStatusId === this.state.newStausId || this.state.apiResult !== ResultStatus.LOADED),\r\n MatIconService.OK, \"Save\", () => {\r\n this.state.entityId === ENTITY_TYPE.PROFILE ? this.saveProfileStatus() : this.saveTransactionStatus()\r\n }, \"inherit\", \"keyActionSave\")}\r\n {LayoutService.getIconButton(this.state.apiResult === ResultStatus.SAVING, MatIconService.CANCEL, \"Cancel\", () => { this.props.onClose(false); }, \"secondary\", \"keyActionCancel1\")}\r\n \r\n \r\n \r\n {/* Content */}\r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n );\r\n\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.apiResult) {\r\n case ResultStatus.LOADING:\r\n case ResultStatus.NOT_LOADED:\r\n return ;\r\n case ResultStatus.SAVING:\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (<>\r\n {this.state.apiResult === ResultStatus.SAVING ? : null}\r\n {/* Form */}\r\n \r\n {(fProps) => (\r\n
\r\n \r\n {LayoutService.getDropDown(this.state.apiResult !== ResultStatus.LOADED, classes.dialogControl, classes.menuPaper, fProps, this.validationSchemaObj, \"statusId\", this.state.dropDownLabel,\r\n this.state.statuses, \"id\", \"value\", \"\", false, \"98%\",\r\n (_fProps, _newStatusId) => {\r\n this.setState({ newStausId: _newStatusId })\r\n })\r\n }\r\n \r\n
\r\n )}\r\n
\r\n {/* Alert */}\r\n {/* \r\n \r\n Note: This is only a temporary override of the Profile Status.\r\n Any changes to the profile will Reset this Override and the profile status will be newley set based on the Profile Status matching logic.\r\n \r\n */}\r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( {\r\n this.state.entityId === ENTITY_TYPE.PROFILE ? this.saveProfileStatus() : this.saveTransactionStatus()\r\n }} />);\r\n }\r\n\r\n }\r\n\r\n //---\r\n}\r\nexport default LayoutService.getHocComponenet(StatusOverrideComponenet);","import { DataService } from \"../services/dataService\";\r\n\r\nexport class AddressModel {\r\n\r\n addressid = \"\";\r\n addresS1 = \"\";\r\n addresS2 = \"\";\r\n addresS3 = \"\";\r\n addresS4 = \"\";\r\n city = \"\";\r\n province = \"\";\r\n postalcode = \"\";\r\n countryId = \"\";\r\n countryName = \"\";\r\n countrylist = \"\";\r\n porziogstaddressid = \"\";\r\n isprimary = \"\";\r\n isactive = \"\";\r\n companyaddressid = \"\";\r\n\r\n constructor(_isprimary = false, _isactive = true,\r\n _addressid = \"\", _addresS1 = \"\", _addresS2 = \"\", _addresS3 = \"\", _addresS4 = \"\",\r\n _city = \"\", _province = \"\", _postalcode = \"\", _porziogstaddressid = \"\", _companyaddressid = \"\",\r\n _countrylist = { \"countryId\": \"\", \"countryName\": \"\" }\r\n ) {\r\n this.addressid = _addressid;\r\n this.addresS1 = _addresS1;\r\n this.addresS2 = _addresS2;\r\n this.addresS3 = _addresS3;\r\n this.addresS4 = _addresS4;\r\n this.city = _city;\r\n this.province = _province;\r\n this.postalcode = _postalcode;\r\n this.countryId = _countrylist.countryId;\r\n this.countryName = _countrylist.countryName;\r\n this.countrylist = _countrylist;\r\n this.porziogstaddressid = _porziogstaddressid;\r\n this.isprimary = _isprimary;\r\n this.isactive = _isactive;\r\n this.companyaddressid = _companyaddressid;\r\n }\r\n\r\n //---\r\n}\r\n\r\nexport class ProfileAddressModel {\r\n\r\n AddressId = null;\r\n Address1 = \"\";\r\n Address2 = \"\";\r\n Address3 = \"\";\r\n Address4 = \"\";\r\n City = \"\";\r\n Province = \"\";\r\n PostalCode = \"\";\r\n CountryId = null;\r\n CountryName = \"\";\r\n CountryList = \"\";\r\n\r\n ISPRIMARY = false;\r\n IsActive = false;\r\n PorzioGSTAddressId = \"\";\r\n CompanyAddressId = \"\";\r\n AddressList = null;\r\n\r\n constructor(_isprimary = false, _isactive = true,\r\n _addressid = \"\", _addresS1 = \"\", _addresS2 = \"\", _addresS3 = \"\", _addresS4 = \"\",\r\n _city = \"\", _province = \"\", _postalcode = \"\", _porziogstaddressid = \"\", _companyaddressid = \"\",\r\n _countrylist = { \"CountryId\": null, \"CountryName\": \"\", \"CountryCode\": \"\" }\r\n ) {\r\n this.AddressId = DataService.isStringNullOrEmpty(_addressid) ? null : _addressid;\r\n this.Address1 = _addresS1;\r\n this.Address2 = _addresS2;\r\n this.Address3 = _addresS3;\r\n this.Address4 = _addresS4;\r\n this.City = _city;\r\n this.Province = _province;\r\n this.PostalCode = _postalcode;\r\n this.CountryId = _countrylist.CountryId > 0 ? _countrylist.CountryId : null;\r\n this.CountryName = _countrylist.CountryName;\r\n\r\n this.IsActive = _isactive;\r\n this.CountryList = _countrylist;\r\n this.AddressList = null;\r\n this.CompanyAddressId = _companyaddressid;\r\n this.PorzioGSTAddressId = _porziogstaddressid;\r\n this.ISPRIMARY = _isprimary;\r\n }\r\n\r\n //---\r\n}","import { ReplaySubject } from 'rxjs';\r\nimport { AddressModel, ProfileAddressModel } from '../../../../shared/models/addressModel';\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport { AgGridColumnExt } from '../../../../shared/services/ag-grid/agGridColumnExt';\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport DynamicControlService from '../../../../shared/services/dynamicControlService';\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport { MatIconService } from '../../../../shared/services/theme/matIconService';\r\nimport { CrudAction, ENTITY_FIELD_TYPE, ResultStatus } from '../../../../shared/types/enums';\r\nimport { TemplateFieldConfigUtil } from '../../../../shared/utilities/templateFieldConfigUtil';\r\n\r\nexport default class ProfileTabService {\r\n\r\n static gridColumnGroupKey = 99;\r\n static otherFieldGroupKey = 100;\r\n static filterFieldGroupKey = 1;\r\n static staticFieldGroupKey = 2;\r\n static customFieldGroupKey = 3;\r\n\r\n static readonlyFieldIds = []; // filled in the INIT method\r\n\r\n static companyProfileID = 1;\r\n static porzioGSTProfileID = 2;\r\n static profileCategoryFieldId = 6;\r\n static profileStatusFieldId = 133;\r\n\r\n static recipinetProfileTypeLovOptions = [];\r\n static recipinetIdentifierTypeLovOptions = [];\r\n\r\n // Address Grid\r\n static addressesFieldGroupKey = 4;\r\n static addressFieldIds = []; // filled in the INIT method\r\n static addressIsActiveFieldId = 137;\r\n static addressIsPrimaryFieldId = 121;\r\n static address1FieldId = 12;\r\n static address2FieldId = 13;\r\n static address3FieldId = 14;\r\n static address4FieldId = 124;\r\n static addressCityFieldId = 15;\r\n static addressProvinceFieldId = 16;\r\n static addressPostalCodeFieldId = 18;\r\n static addressCountryFieldId = 17;\r\n static companyAddressIDFieldId = 122;\r\n static porzioGSTAddressIDFieldId = 12;\r\n\r\n // Contact Grid\r\n static contactMethodsFieldGroupKey = 5;\r\n static contactMethodFieldIds = []; // filled in the INIT method\r\n static contactIsActiveFieldId = 139;\r\n static contactIsPreferredFieldId = 129;\r\n static contactTypeFieldId = 131;\r\n static contactInformationFieldId = 132;\r\n static contactCountryFieldId = 130;\r\n static companyContactIdFieldId = 128;\r\n static porzioGSTContactIDFieldId = 127;\r\n\r\n // Identifier Grid\r\n static identifierFieldGroupKey = 6;\r\n static identifierFieldIds = []; // filled in the INIT method\r\n static identifierTypeFieldId = 21;\r\n static identifierCountryFieldId = 125;\r\n static identifierValueFieldId = 22;\r\n static identifierDescriptionFieldId = 126;\r\n static identifierCompanyFieldId = 20;\r\n static porzioGSTIdentifierFieldId = 126;\r\n\r\n // Consent Grid\r\n static consentFieldGroupKey = 7;\r\n static consentFieldIds = []; // filled in the INIT method\r\n static consentFieldId = 120;\r\n static consentStartDateFieldId = 135;\r\n static consentEndDateFieldId = 136;\r\n static consentExecutedDateFieldId = 261;\r\n\r\n static INIT = (isNew) => {\r\n // readonly fields\r\n this.readonlyFieldIds = [];\r\n if (!isNew) {\r\n this.readonlyFieldIds.push(this.companyProfileID);\r\n }\r\n\r\n // address columns\r\n this.addressFieldIds = [\r\n this.addressIsActiveFieldId, this.addressIsPrimaryFieldId,\r\n this.address1FieldId, this.address2FieldId, this.address3FieldId, this.address4FieldId,\r\n this.addressCityFieldId, this.addressProvinceFieldId, this.addressPostalCodeFieldId, this.addressCountryFieldId,\r\n this.companyAddressIDFieldId, this.porzioGSTAddressIDFieldId\r\n ];\r\n\r\n // contact columns\r\n this.contactMethodFieldIds = [\r\n this.contactIsActiveFieldId, this.contactIsPreferredFieldId,\r\n this.contactTypeFieldId, this.contactInformationFieldId, this.contactCountryFieldId,\r\n this.companyContactIdFieldId, this.porzioGSTContactIDFieldId\r\n ];\r\n\r\n // identifier columns\r\n this.identifierFieldIds = [\r\n this.identifierTypeFieldId, this.identifierCountryFieldId,\r\n this.identifierValueFieldId, this.identifierDescriptionFieldId,\r\n this.identifierCompanyFieldId, this.porzioGSTIdentifierFieldId\r\n ];\r\n\r\n // consent columns\r\n this.consentFieldIds = [\r\n this.consentFieldId, this.consentStartDateFieldId,\r\n this.consentEndDateFieldId, this.consentExecutedDateFieldId,\r\n ];\r\n\r\n }\r\n\r\n static getGroupFieldsMap = (_compThisRef, _isNew, _templateConfigData, _sortProp1, _sortProp2, _forGrid = false) => {\r\n // hardcode the prfile-status dropdown, etc,...\r\n _templateConfigData = this.hardcodeFields(_compThisRef, _isNew, _templateConfigData);\r\n\r\n // reCreate map\r\n var groupInfoMap = new Map();\r\n groupInfoMap.set(this.gridColumnGroupKey, { \"name\": \"ExpandedViewGrid\", \"fieldConfigs\": [] });\r\n\r\n groupInfoMap.set(this.filterFieldGroupKey, { \"name\": \"\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.staticFieldGroupKey, { \"name\": \"\", \"fieldConfigs\": [] });\r\n // grid\r\n groupInfoMap.set(this.addressesFieldGroupKey, { \"name\": \"Addresses\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.contactMethodsFieldGroupKey, { \"name\": \"Contact Methods\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.identifierFieldGroupKey, { \"name\": \"Identifiers\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.consentFieldGroupKey, { \"name\": \"Consents\", \"fieldConfigs\": [] });\r\n //---\r\n groupInfoMap.set(this.customFieldGroupKey, { \"name\": \"Custom Fields\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.otherFieldGroupKey, { \"name\": \"Other Fields\", \"fieldConfigs\": [] });\r\n\r\n\r\n // sort\r\n _templateConfigData = DataService.sortObjectByEntries(_templateConfigData, \"grouprenderid\");\r\n\r\n // extract keys\r\n const keys = Object.keys(_templateConfigData);\r\n if (DataService.hasNoElements(keys)) {\r\n groupInfoMap = new Map(); // clear the Map\r\n } else {\r\n let nonGroupedControls = [];\r\n // parse through each key\r\n keys.forEach(key => {\r\n const fieldConfig = DynamicControlService.transformFieldConfig(_templateConfigData[key]);\r\n\r\n if (fieldConfig.fieldID === this.companyProfileID) {\r\n fieldConfig[\"asyncValidationCallback\"] = (oRET) => { return this.validateCompanyProfileId(oRET, _compThisRef); };\r\n }\r\n\r\n if (!fieldConfig.isHidden) {\r\n\r\n if (fieldConfig.fieldID === 21) {\r\n fieldConfig.customLOVList = fieldConfig.customLOVList.slice().filter(k => k.lovKey.substring(0, 3) !== \"US:\").sort((a, b) => (a.lovKey > b.lovKey) ? 1 : ((b.lovKey > a.lovKey) ? -1 : 0));\r\n }\r\n\r\n var groupInfo = {};\r\n\r\n if (_forGrid) { groupInfo = groupInfoMap.get(this.gridColumnGroupKey); }\r\n else {\r\n if (fieldConfig.isCustomField) { groupInfo = groupInfoMap.get(this.customFieldGroupKey); } // CUSTOM\r\n else if (this.addressFieldIds.includes(fieldConfig.fieldID)) { groupInfo = groupInfoMap.get(this.addressesFieldGroupKey); } // ADDRESS-GRID\r\n else if (this.contactMethodFieldIds.includes(fieldConfig.fieldID)) { groupInfo = groupInfoMap.get(this.contactMethodsFieldGroupKey); } // CONTACT-GRID\r\n else if (this.identifierFieldIds.includes(fieldConfig.fieldID)) { groupInfo = groupInfoMap.get(this.identifierFieldGroupKey); } // IDENTIFIER-GRID\r\n else if (this.consentFieldIds.includes(fieldConfig.fieldID)) { groupInfo = groupInfoMap.get(this.consentFieldGroupKey); } // CONSENT-GRID\r\n else if (groupInfoMap.has(fieldConfig.grouprenderid)) { groupInfo = groupInfoMap.get(fieldConfig.grouprenderid); }\r\n else {\r\n // TODO: Enable if others is needed\r\n // nonGroupedControls.push(fieldConfig);\r\n // groupInfo = groupInfoMap.get(this.unmatchedFieldGroupKey);\r\n } // add to unmatched\r\n }\r\n\r\n // push the field to the corresponding group\r\n if (groupInfo.fieldConfigs) {\r\n let _push = true;\r\n\r\n // // hide Porzio GST Profile if new (handled in the hardcode)\r\n // if (fieldConfig.fieldID === this.porzioGSTProfileID) {\r\n // _push = !_isNew; // can see only in edit\r\n // } else { _push = true; }\r\n\r\n // readonly\r\n if (this.readonlyFieldIds.includes(fieldConfig.fieldID)) {\r\n fieldConfig.isReadOnly = true;\r\n }\r\n\r\n // add the field\r\n if (_push) { groupInfo.fieldConfigs.push(fieldConfig); }\r\n }\r\n }\r\n });\r\n\r\n // show warnings\r\n if (DataService.hasElements(nonGroupedControls)) { console.warn(\"Controls with no GroupRendererId\", nonGroupedControls); }\r\n }\r\n\r\n //sorting controls based on ordinal\r\n groupInfoMap.forEach(value => {\r\n value.fieldConfigs = value.fieldConfigs.sort((a, b) => a.ordinal - b.ordinal);\r\n });\r\n\r\n // return the Array of Arrays\r\n return groupInfoMap;\r\n }\r\n\r\n static hardCodeColumns = (_columnsArray) => {\r\n if (DataService.hasElements(_columnsArray)) {\r\n const index = (_columnsArray).findIndex(x => x.fieldId === ProfileTabService.porzioGSTProfileID);\r\n if (index === -1) {\r\n _columnsArray.splice(0, 0, {\r\n \"entityId\": 1,\r\n \"fieldAliasName\": \"PORZIOGSTPROFILEID\",\r\n \"fieldId\": ProfileTabService.porzioGSTProfileID,\r\n \"isCustomField\": false,\r\n \"isExpViewDefault\": false,\r\n \"isPlsRequired\": false,\r\n \"startIndex\": 1\r\n });\r\n }\r\n }\r\n\r\n\r\n return _columnsArray;\r\n }\r\n\r\n static hardcodeFields = (_compThisRef, _isNew, _templateData) => {\r\n if (DataService.hasValue(_templateData)) {\r\n let index = 1000;\r\n const _templateKeys = Object.keys(_templateData) || [];\r\n // delete duplicate key\r\n let duplicateProfileStatusKey = DataService.getFirstOrDefault(_templateKeys.filter(x => x.toLowerCase().includes(\"profile status\")));\r\n if (duplicateProfileStatusKey) { delete _templateData[duplicateProfileStatusKey]; }\r\n\r\n // Make ProfileStatus readonly and only be editable via Dialog\r\n _templateData.ProfileStatus = {\r\n // all others\r\n \"isHidden\": RolePermissionService.PROFILE_DETAILS_STATUS.cannotView,\r\n \"isReadOnly\": true,\r\n \"fieldID\": this.profileStatusFieldId,\r\n \"fielD_NAME\": \"Profile Status\",\r\n \"fielD_DESCRIPTION\": \"Hardcoded field\",\r\n \"fieldlength\": 100,\r\n \"field_Type_ID\": 5,\r\n \"entityName\": \"profilestatusid\",\r\n \"fielD_ALIASNAME\": \"profilestatusid\",\r\n \"iS_PLSREQUIRED\": true,\r\n \"isCustomField\": false,\r\n \"lookUpList\": \"\",\r\n \"toolTip\": \"Profile Status\",\r\n \"mappedlovidfield\": \"profilestatusid\",\r\n \"autoSelect\": _isNew, // autoselect for new\r\n \"hideEmpty\": true, // don't show none\r\n \"customLOVList\": DynamicControlService.transformToCustomLovList(\r\n _isNew ? [LookupService._PROFILE_STATUSES[0]] : LookupService._PROFILE_STATUSES, \"id\", \"value\", \"profilestatusid\"),\r\n \"customProfileLOVList\": [],\r\n \"customBoolean\": false,\r\n \"grouprenderid\": 1,\r\n \"endAdornmentActions\": _isNew ? [] : [ // this replaces the secondary action\r\n {\r\n icon: MatIconService.OVERRIDE_28, tooltip: \"Override Profile status\", iconColor: \"primary\",\r\n isReadOnly: RolePermissionService.PROFILE_DETAILS_STATUS.cannotEdit,\r\n callback: () => {\r\n if (RolePermissionService.PROFILE_DETAILS_STATUS.cannotEdit) { RolePermissionService.showAccessDeniedToast(); }\r\n else { _compThisRef.setState({ showProfileStatusDialog: true }); }\r\n },\r\n },\r\n ],\r\n }\r\n\r\n //--- As per PP2-407: --------------\r\n // find the key if exists else use manual name\r\n let porzioGstProfileIdKey = DataService.getFirstOrDefault(_templateKeys.filter(x => x.toLowerCase().includes(\"porzio gst profile id\")));\r\n if (porzioGstProfileIdKey) { delete _templateData[porzioGstProfileIdKey]; }\r\n else { porzioGstProfileIdKey = \"Porzio GST Profile ID\"; }\r\n // build the key\r\n let porzioGstProfileIdConfigValue = TemplateFieldConfigUtil.GET(ProfileTabService.filterFieldGroupKey, 3, ENTITY_FIELD_TYPE.TEXT, ProfileTabService.porzioGSTProfileID,\r\n \"Porzio GST Profile ID\", \"PORZIOGSTPROFILEID\", \"PORZIOGSTPROFILEID\", \"Porzio GST Profile ID\", \"(Hardcoded field) A unique identifier assigned to each profile, auto-generated by Porzio GST.\")\r\n .isReadOnly(true).isVisible(!_isNew).SET();\r\n // if required after a specific field, then find its index and pass the index here\r\n _templateData = DataService.addToObject(_templateData, porzioGstProfileIdKey, porzioGstProfileIdConfigValue, 1);\r\n\r\n }\r\n return _templateData;\r\n }\r\n\r\n\r\n //#region Address Grid\r\n\r\n static getAddressRows = (_initialValuesOrNull) => {\r\n const addressRows = _initialValuesOrNull ? _initialValuesOrNull.addresslist : [];\r\n (addressRows || []).forEach(row => {\r\n row[\"countryId\"] = row[\"countrylist\"].countryId;\r\n row[\"countryName\"] = row[\"countrylist\"].countryName;\r\n });\r\n return addressRows;\r\n }\r\n\r\n static getAddressObject = (_isprimary = false, _isactive = true,\r\n _addressid = \"\", _addresS1 = \"\", _addresS2 = \"\", _addresS3 = \"\", _addresS4 = \"\",\r\n _city = \"\", _province = \"\", _postalcode = \"\", _porziogstaddressid = \"\", _companyaddressid = \"\",\r\n _countrylist = { \"countryId\": \"\", \"countryName\": \"\" }\r\n ) => {\r\n return new AddressModel(_isprimary, _isactive,\r\n _addressid, _addresS1, _addresS2, _addresS3, _addresS4,\r\n _city, _province, _postalcode, _porziogstaddressid, _companyaddressid,\r\n _countrylist\r\n )\r\n }\r\n static getAddressObjectForPost = (_isprimary = false, _isactive = true,\r\n _addressid = \"\", _addresS1 = \"\", _addresS2 = \"\", _addresS3 = \"\", _addresS4 = \"\",\r\n _city = \"\", _province = \"\", _postalcode = \"\", _porziogstaddressid = \"\", _companyaddressid = \"\",\r\n _countrylist = { \"CountryId\": \"\", \"CountryName\": \"\", \"CountryCode\": \"\" }\r\n ) => {\r\n return new ProfileAddressModel(_isprimary, _isactive,\r\n _addressid, _addresS1, _addresS2, _addresS3, _addresS4,\r\n _city, _province, _postalcode, _porziogstaddressid, _companyaddressid,\r\n _countrylist\r\n )\r\n }\r\n\r\n static isNewAddressRow = (e) => {\r\n return e.data.addressid === \"\" || e.data.addressid <= 0;\r\n }\r\n\r\n\r\n static validateAddressRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n static addressFieldNamesInLowerCase = [\"address1\", \"address2\", \"address3\", \"address4\", \"city\", \"province\", \"postalcode\", \"country\", \"countryid\", \"companyaddressid\", \"porziogstaddressid\"];\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n * @param _addressFieldConfigs config Array\r\n */\r\n static getAddressAgGridColumnDefs = (_componentThisRef, _isReadOnly, _showDelete, _agGridUtils) => {\r\n let oRET = [\r\n // edit button column\r\n _agGridUtils.getInlineEditActionColumn(_showDelete, this.validateAddressRowEditOBS),\r\n // other columns\r\n AgGridColumnExt.GET(false, \"text\", \"isactive\", \"Active\").fixedWidth(96).headerClass(\"center-text\").cellRenderer(\"isActiveCellRenderer\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"isprimary\", \"Primary Address\").fixedWidth(96).headerClass(\"center-text\").cellRenderer(\"isPrimaryCellRenderer\").SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"addresS1\", \"Address 1\").defaultWidth(128).tooltip().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"addresS2\", \"Address 2\").defaultWidth(128).tooltip().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"addresS3\", \"Address 3\").defaultWidth(112).tooltip().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"addresS4\", \"Address 4\").defaultWidth(112).tooltip().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"city\", \"City\").defaultWidth(128).tooltip().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"province\", \"Province / State\").defaultWidth(112).tooltip().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"postalcode\", \"Postal Code\").defaultWidth(112).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"countryId\", \"Country\").minAndDefaultWidth(192).makeMaterialDropDown(_componentThisRef.state.countryList, \"id\", \"value\", true, 0).SET(),\r\n // .makeDropDown(_componentThisRef.state.countryCellSource, {}, \"agSelectCellEditor\", _componentThisRef.state.countryList.map(o => o.id))\r\n AgGridColumnExt.GET(false, \"text\", \"companyaddressid\", \"Company Address Id\").headerTooltip().defaultWidth(112).headerClass(\"center-text\").centerAlignText()\r\n .validateEditablity((e) => { return this.isNewAddressRow(e) }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstaddressid\", \"Porzio GST Address Id\").defaultWidth(144).headerClass(\"center-text\").centerAlignText().SET()\r\n ];\r\n return oRET;\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Contacts Method Grid\r\n static getContactRows = (_initialValuesOrNull) => {\r\n const contactRows = DataService.hasValue(_initialValuesOrNull) ? _initialValuesOrNull.contactlist : [];\r\n (contactRows || []).forEach(row => {\r\n // add this temp key since it doesnot exists & is required for aggrid\r\n row[\"countryId\"] = row[\"countrylist\"].countryId;\r\n row[\"country\"] = row[\"countrylist\"].countryId;\r\n row[\"contacttypeid\"] = row[\"conatacttypelist\"].lovId;\r\n row[\"contacttype\"] = row[\"conatacttypelist\"].lovKey;\r\n });\r\n return contactRows;\r\n }\r\n\r\n static getContactsObject = (_ispreferred = false, _isactive = true, _companycontactid = \"\",\r\n _contactid = \"\", _contactinformation = \"\", _porziogstcontactid = \"\",\r\n _contacttypelist = { \"lovId\": \"\", \"lovKey\": \"\", \"ordinal\": \"\" },\r\n _countrylist = { \"countryId\": \"\", \"countryName\": \"\" }\r\n ) => {\r\n return {\r\n companycontactid: _companycontactid,\r\n conatacttypelist: _contacttypelist, // TEMP\r\n contactid: _contactid,\r\n contactinformation: _contactinformation,\r\n contacttype: _contacttypelist.lovKey,\r\n contacttypeid: _contacttypelist.lovId,\r\n countryId: _countrylist.countryId, // TEMP\r\n country: _countrylist.countryId,\r\n countrylist: _countrylist, // TEMP\r\n isactive: _isactive,\r\n ispreferred: _ispreferred,\r\n porziogstcontactid: _porziogstcontactid\r\n };\r\n }\r\n static isNewContactRow = (e) => {\r\n return e.data.contactid === \"\" || e.data.contactid <= 0;\r\n }\r\n\r\n static validateContactRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n static contactsFieldNamesInLowerCase = [\"contacttypeid\", \"contactinformation\", \"country\", \"countryid\", \"companycontactid\", \"porziogstcontactid\"];\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n * @param _contactFieldConfigs config Array\r\n */\r\n static getContactsAgGridColumnDefs = (_componentThisRef, _isReadOnly, _showDelete, _agGridUtils, _contactFieldConfigs) => {\r\n return [\r\n // edit button column\r\n _agGridUtils.getInlineEditActionColumn(_showDelete, this.validateContactRowEditOBS),\r\n // other columns\r\n AgGridColumnExt.GET(false, \"text\", \"isactive\", \"Active Contact\").fixedWidth(96).headerClass(\"center-text\").cellRenderer(\"isActiveCellRenderer\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"ispreferred\", \"Preferred Contact\").fixedWidth(112).headerClass(\"center-text\").cellRenderer(\"isPreferedCellRenderer\").SET(),\r\n //AgGridColumnExt.GET(true, \"text\", \"contacttypeid\", \"Contact Type\").minAndDefaultWidth(144).makeDropDown(_componentThisRef.state.contactTypeCellSource).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"contacttypeid\", \"Contact Type\").minAndDefaultWidth(144).makeMaterialDropDown(_componentThisRef.state.contactTypeList,\"lovId\",\"lovKey\",true,0).SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"contactinformation\", \"Contact Information\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"countryId\", \"Country\").minAndDefaultWidth(192).makeMaterialDropDown(_componentThisRef.state.countryList, \"id\", \"value\", true, 0).SET(),\r\n // AgGridColumnExt.GET(true, \"text\", \"countryId\", \"Contact Country\").minAndDefaultWidth(192).makeDropDown(_componentThisRef.state.countryCellSource, {}, \"agSelectCellEditor\", _componentThisRef.state.countryList.map(o => o.id)).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companycontactid\", \"Company Contact Id\").defaultWidth(112).headerClass(\"center-text\").centerAlignText()\r\n .validateEditablity((e) => { return this.isNewContactRow(e) }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstcontactid\", \"Porzio GST Contact Id\").defaultWidth(144).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n\r\n //#endregion\r\n\r\n\r\n //#region Identifier Method Grid\r\n static getIdentifierRows = (_initialValuesOrNull) => {\r\n const identifierRows = DataService.hasValue(_initialValuesOrNull) ? _initialValuesOrNull.identifierlist : [];\r\n // (identifierRows || []).forEach(row => {\r\n // });\r\n return identifierRows;\r\n }\r\n\r\n static getIdentifierObject = (\r\n _porzioGSTIdentifierTypeId = 0,\r\n _companyIdentifierID = \"\",\r\n _countryId = \"\",\r\n _countryInfo = { \"countryId\": \"\", \"countryName\": \"\", \"countryCode\": \"\" },\r\n _identifierDescription = \"\",\r\n _identifierValue = \"\",\r\n _porzioGSTIdentifierType = { \"lovId\": 0, \"lovKey\": \"\", \"ordinal\": 0, \"isdefault\": false, \"fieldName\": \"\", \"localLovKey\": \"\" },\r\n _porzioGSTIdentifierID = \"\",\r\n _profileIdentifierId = 0,\r\n ) => {\r\n return {\r\n \"porzioGSTIdentifierTypeId\": _porzioGSTIdentifierTypeId,\r\n \"companyIdentifierID\": _companyIdentifierID,\r\n \"countryId\": _countryId,\r\n \"countryInfo\": {\r\n \"countryId\": _countryInfo.countryId,\r\n \"countryName\": _countryInfo.countryName,\r\n \"countryCode\": _countryInfo.countryCode\r\n },\r\n \"identifierDescription\": _identifierDescription,\r\n \"identifierValue\": _identifierValue,\r\n \"porzioGSTIdentifierType\": {\r\n \"lovId\": _porzioGSTIdentifierType.lovId,\r\n \"lovKey\": _porzioGSTIdentifierType.lovKey,\r\n \"ordinal\": _porzioGSTIdentifierType.ordinal,\r\n \"isdefault\": _porzioGSTIdentifierType.isdefault,\r\n \"fieldName\": _porzioGSTIdentifierType.fieldName,\r\n \"localLovKey\": _porzioGSTIdentifierType.localLovKey\r\n },\r\n \"porzioGSTIdentifierID\": _porzioGSTIdentifierID,\r\n \"profileIdentifierId\": _profileIdentifierId,\r\n };\r\n }\r\n\r\n static isNewIdentifierRow = (e) => {\r\n return e.data.companyIdentifierID === \"\" || e.data.companyIdentifierID <= 0;\r\n }\r\n\r\n static validateIdentifierRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n\r\n // static identifierFieldNamesInLowerCase = [\"contacttypeid\", \"contactinformation\", \"country\", \"countryid\", \"companycontactid\", \"porziogstcontactid\"];\r\n\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getIdentifierAgGridColumnDefs = (_componentThisRef, _isReadOnly, _showDelete, _agGridUtils) => {\r\n const arrSort = _componentThisRef.state.porzioGstIdentifierTypeList.slice().sort((a, b) => (a.lovKey > b.lovKey) ? 1 : ((b.lovKey > a.lovKey) ? -1 : 0)).map(i => i.lovId);\r\n //const arrSort = _componentThisRef.state.porzioGstIdentifierTypeList.filter(k => k.lovKey.substring(0, 3) !== \"US:\").map(i => i.lovId); // this preserves the alphabetical sort order of the drop down\r\n let oRET = [\r\n // edit button column\r\n _agGridUtils.getInlineEditActionColumn(_showDelete, this.validateIdentifierRowEditOBS),\r\n\r\n // other columns\r\n // Note this first key must match the default focus key in this Service's corresponding Component: new AgGridUtil()\r\n AgGridColumnExt.GET(true, \"text\", \"porzioGSTIdentifierTypeId\", \"Porzio GST Identifier Type\").minAndDefaultWidth(384).makeDropDown(_componentThisRef.state.porzioGstIdentifierTypeCellSource, {}, \"agSelectCellEditor\", [\"\", ...arrSort]).SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"countryId\", \"Country\").minAndDefaultWidth(192).makeDropDown(_componentThisRef.state.countryCellSource, {}, \"agSelectCellEditor\", _componentThisRef.state.countryList.map(o => o.id)).SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"identifierValue\", \"Identifier Value\").minAndDefaultWidth(192).tooltip().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"identifierDescription\", \"Identifier Description\").minAndDefaultWidth(130).flexWeight(1).tooltip().SET(),\r\n\r\n AgGridColumnExt.GET(false, \"text\", \"companyIdentifierID\", \"Company Identifier Id\").fixedWidth(128).headerClass(\"center-text\").centerAlignText()\r\n .validateEditablity((e) => { return this.isNewIdentifierRow(e) }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTIdentifierID\", \"Porzio GST Identifier Id\").fixedWidth(144).headerClass(\"center-text\").centerAlignText()\r\n .SET()\r\n ];\r\n return oRET;\r\n }\r\n\r\n //#endregion\r\n\r\n\r\n\r\n //#region Consent Method Grid\r\n static getConsentRows = (_consentList) => {\r\n let consentRows = DataService.hasElements(_consentList) ? _consentList : [];\r\n // consentRows.map(x => x.delete = false);\r\n return consentRows;\r\n }\r\n\r\n static getConsentObject = (\r\n _profileConsentId = 0,\r\n _profileConsent = \"\",\r\n _profileConsentName = \"\",\r\n _profileConsentStartDate = \"\",\r\n _profileConsentEndDate = \"\",\r\n _profileConsentExecuteDate = \"\",\r\n ) => {\r\n return {\r\n \"profileConsentId\": _profileConsentId,\r\n \"profileConsent\": _profileConsent,\r\n \"profileConsentName\": _profileConsentName,\r\n \"profileConsentStartDate\": _profileConsentStartDate,\r\n \"profileConsentEndDate\": _profileConsentEndDate,\r\n \"profileConsentExecuteDate\": _profileConsentExecuteDate,\r\n };\r\n }\r\n\r\n static isNewConsentRow = (e) => {\r\n return e.data.profileConsentId === \"\" || e.data.profileConsentId <= 0;\r\n }\r\n\r\n static validateConsentRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n\r\n // static identifierFieldNamesInLowerCase = [\"contacttypeid\", \"contactinformation\", \"country\", \"countryid\", \"companycontactid\", \"porziogstcontactid\"];\r\n\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getConsentAgGridColumnDefs = (_componentThisRef, _isReadOnly, _showDelete, _agGridUtils) => {\r\n return [\r\n // edit button column\r\n _agGridUtils.getInlineEditActionColumn(_showDelete, this.validateConsentRowEditOBS),\r\n // other columns\r\n AgGridColumnExt.GET(true, \"text\", \"profileConsent\", \"Consent\").minAndDefaultWidth(192).makeDropDown(_componentThisRef.state.consentLovList).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileConsentStartDate\", \"Start Date\").flexWeight(1).cellRenderer(\"dateCellRenderer\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileConsentEndDate\", \"End Date\").flexWeight(1).cellRenderer(\"dateCellRenderer\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileConsentExecuteDate\", \"Executed Date\").flexWeight(1).cellRenderer(\"dateCellRenderer\").SET(),\r\n\r\n ];\r\n }\r\n\r\n //#endregion\r\n\r\n static validateCompanyProfileId = (oRET, _componentThisRef) => {\r\n let valSchema = oRET\r\n .test(\"checkDuplicateCompanyProfileId\", \"Company Profile Id already exists\", async (_formikValue) => {\r\n if (_componentThisRef.props.inputAction === CrudAction.UPDATE) {\r\n return true;\r\n } else {\r\n try {\r\n const result = await fetch(`${process.env.REACT_APP_CORE_HTTP}/Profiles/CheckIfProfileAvailable/${_componentThisRef.context.user.tenantId}/${_formikValue}`);\r\n const isExists = await result.json();\r\n return !isExists;\r\n } catch {\r\n return false;\r\n }\r\n }\r\n })\r\n return valSchema;\r\n }\r\n\r\n //---\r\n}","import React from \"react\";\r\nimport { ReplaySubject, combineLatest, of } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { Box, Divider, Typography, Grid, Dialog, LinearProgress, DialogTitle, DialogContent, AppBar, Toolbar, TextField } from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\n\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\n\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { API_ENDPOINT, CrudAction, ENTITY_FIELD_TYPE, ENTITY_TYPE, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport DynamicControlService from \"../../../../shared/services/dynamicControlService\";\r\n\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport TransactionTabService from \"./transactionTabService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\n\r\nimport RecipientSearchDialogComponent from \"./recipient-information-dialog/recipinetSearchDialogComponent\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport PossibleMatchesDialogComponent from \"../../../../shared/components/possible-matches/possibleMatchesDialogComponent\";\r\nimport ProfileDetailDialogComponent from \"../../../profile-center/profile-detail/profileDetailDialogComponent\";\r\nimport SalesRepDetailsComponent from \"../../../tenant-profile-setup/sales-rep/sales-rep-details/salesRepDetailsComponent\";\r\nimport StatusOverrideComponenet from \"../../../../shared/components/profiles-transactions/StatusOverrideComponent\";\r\nimport ProfileTabService from \"../../../profile-center/profile-detail/tabs/profileTabService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass TransactionTabComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n isNew: this.props.inputAction === CrudAction.CREATE,\r\n isClone: DataService.hasValue(this.props.transactionToClone),\r\n cleanedTransactionToClone: TransactionTabService.cleanupClone(this.props.transactionToClone),\r\n selTransactionId: !props.modalAgNode ? \"\" : props.modalAgNode.transactionid,\r\n // 1) source-name\r\n fetchSourceSystemsResult: ResultStatus.NOT_LOADED,\r\n sourceSystemList: [],\r\n selSourceSystemId: (this.props.transactionToClone && this.props.transactionToClone.sourceid > 0) ?\r\n this.props.transactionToClone.sourceid : (!props.modalAgNode ? \"\" : props.modalAgNode.sourceid),\r\n\r\n templateFetchResult: ResultStatus.NOT_LOADED,\r\n allGroupFieldsMap: new Map(),\r\n dynamicInitialValies: {},\r\n initialValuesOrNull: {},\r\n dynamicValidationSchema: Yup.object().shape({}),\r\n showSearchRecipientDialog: false,\r\n showPossibleMatchesDialog: false,\r\n showConfirmCreateNewProfile: false,\r\n showCreateNewProfileDialog: false,\r\n\r\n showPIDProfileSearchDialog: false, // opens the profile search-dialog for pid\r\n targetPidFieldConfig: {}, // stores the pid field name which triggered the profile search\r\n piIdMap: new Map(), // map used to store the values\r\n prIdpiIdMap: new Map(), // map used to store the values\r\n\r\n showProfileDetailDialog: false,\r\n\r\n agGridRecipientInformationUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n }),\r\n\r\n recipientProfileInfo: {},\r\n recipientIdentifierInfo: {},\r\n recipientAddressInfo: {},\r\n };\r\n }\r\n\r\n componentWillUnmount() { }\r\n componentDidMount() {\r\n LookupService.fetchCommonLookups(this.context);\r\n this.fetchSourceSystems();\r\n //console.log(\"Clone\", this.props.transactionToClone);\r\n }\r\n\r\n //#region SourceSystem DropDown\r\n\r\n // api\r\n fetchSourceSystems = () => {\r\n this.oSubscriptions.cancelAll();\r\n\r\n // set the loading state\r\n this.setState({ fetchSourceSystemsResult: ResultStatus.LOADING });\r\n // fetch-source-list\r\n this.oSubscriptions.add(\r\n LookupService.getSourceSystemsByEntityAsOBS(this.context.user.tenantId, ENTITY_TYPE.TRANSACTION).subscribe(\r\n (_sourceSystemList) => {\r\n _sourceSystemList = DataService.getKeyValueCollection(_sourceSystemList, \"sourceId\", \"sourceName\", false);\r\n // set it in the state\r\n this.setState({ sourceSystemList: _sourceSystemList },\r\n () => {\r\n this.onSourceSystemChange(this.state.selSourceSystemId, true);\r\n this.setState({ fetchSourceSystemsResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n (err) => {\r\n ToastService.showError(\"An Error occured while fetching the SourceSystems\");\r\n this.setState({ sourceSystemList: [] },\r\n () => { this.setState({ fetchSourceSystemsResult: ResultStatus.ERROR }); }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n getUnmatchedProfileObj = () => {\r\n const countryObj = LookupService._COUNTRIES.find(c => c.id === this.fPropsDynamic.values[\"country\"]);\r\n const profileType = TransactionTabService.recipinetProfileTypeLovOptions.find(x => x.lovId === this.fPropsDynamic.values[\"profiletypeid\"]);\r\n const recipientIdentifierType = TransactionTabService.recipinetIdentifierTypeLovOptions.find(x => x.lovId === this.fPropsDynamic.values[\"recipientidentifiertypeid\"]);\r\n\r\n // object for PossibleMatchesDialogService->getAsMatchCenterRow()\r\n return {\r\n \"companyProfileId\": this.fPropsDynamic.values[\"companyprofileid\"],\r\n \"porziogstprofileid\": this.fPropsDynamic.values[\"porziogstprofileid\"],\r\n \"matchScore\": \"\",\r\n \"matchKey\": \"\",\r\n \"profileType\": profileType ? profileType[\"localLovKey\"] : \"\",\r\n \"lastName\": this.fPropsDynamic.values[\"lastname\"],\r\n \"firstName\": this.fPropsDynamic.values[\"firstname\"],\r\n \"middleName\": this.fPropsDynamic.values[\"middlename\"],\r\n \"usnpinumber\": this.fPropsDynamic.values[\"usnpinumber\"],\r\n \"uslicensestate\": this.fPropsDynamic.values[\"uslicensestate\"],\r\n \"usstatelicensenumber\": this.fPropsDynamic.values[\"usstatelicensenumber\"],\r\n \"usTaxIdNumber\": this.fPropsDynamic.values[\"ustaxidnum\"],\r\n \"organizationName\": this.fPropsDynamic.values[\"organizationname\"],\r\n \"city\": this.fPropsDynamic.values[\"city\"],\r\n \"province\": this.fPropsDynamic.values[\"province\"],\r\n \"postalCode\": this.fPropsDynamic.values[\"postalcode\"],\r\n \"countryName\": countryObj ? countryObj.value : \"\",\r\n \"profileStatusKey\": \"\",\r\n \"porzioGstIdentifierType\": recipientIdentifierType ? recipientIdentifierType[\"localLovKey\"] : \"\",\r\n \"identifierValue\": this.fPropsDynamic.values[\"recipientidentifiervalue\"],\r\n }\r\n }\r\n\r\n //selectedProfile[\"prid\"]\r\n generateRecipientInfo = (_selProfileId) => {\r\n if (DataService.isValidNumber(_selProfileId) && _selProfileId > 0) {\r\n this.setState({ isRecipientInfoInProgress: true });\r\n this.isRecipientMatched = true;\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getProfileTabDetailsWithErrorInfoAsOBS(this.context.user.tenantId, _selProfileId),\r\n ApiService.getOBS(API_ENDPOINT.CORE, `/Profiles/FetchProfileIdentifier?tenantId=${this.context.user.tenantId}&prid=${_selProfileId}&pageNum=1&rowsPerPage=100`)\r\n ]).subscribe(\r\n ([_profile, _identifier]) => {\r\n const sortedIdentifiers = _identifier.length === 0 ? null : _identifier.sort((a, b) => b.profileIdentifierId - a.profileIdentifierId)[0];\r\n const addressInfo = _profile.addresslist.length === 0 ? null : _profile.addresslist.length === 1 ? _profile.addresslist[0]\r\n : _profile.addresslist.some(x => x.isprimary === true) ? _profile.addresslist.filter(add => add.isprimary === true)[0] :\r\n _profile.addresslist.sort((a, b) => { return b.updateddate - a.updateddate })[0];\r\n this.setState({\r\n prid: _selProfileId,\r\n recipientProfileInfo: _profile,\r\n recipientIdentifierInfo: sortedIdentifiers,\r\n recipientAddressInfo: addressInfo\r\n }, () => {\r\n this.setState({ porziogstprofileid: this.state.recipientProfileInfo.porziogstprofileid });\r\n this.fPropsDynamic.setFieldValue(\"matchKey\", \"Manual Match\", false);\r\n this.fPropsDynamic.setFieldValue(\"porziogstprofileid\", this.state.recipientProfileInfo.porziogstprofileid, false);\r\n this.fPropsDynamic.setFieldValue(\"companyprofileid\", this.state.recipientProfileInfo.companyprofileid, false);\r\n this.fPropsDynamic.setFieldValue(\"profiletypeid\", this.state.recipientProfileInfo.profiletypeid, false);\r\n this.fPropsDynamic.setFieldValue(\"recipientcategoryid\", this.state.recipientProfileInfo.profilecategoryid, false);\r\n this.fPropsDynamic.setFieldValue(\"organizationname\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"organizationname\"), false);\r\n this.fPropsDynamic.setFieldValue(\"suffix\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"suffix\"), false);\r\n this.fPropsDynamic.setFieldValue(\"lastname\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"lastname\"), false);\r\n this.fPropsDynamic.setFieldValue(\"middlename\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"middlename\"), false);\r\n this.fPropsDynamic.setFieldValue(\"firstname\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"firstname\"), false);\r\n this.fPropsDynamic.setFieldValue(\"prefix\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"prefix\"), false);\r\n this.fPropsDynamic.setFieldValue(\"credentialsid\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"credentialsid\"), false);\r\n this.fPropsDynamic.setFieldValue(\"specialityid\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"specialtyid\"), false);\r\n this.fPropsDynamic.setFieldValue(\"address1\", DataService.getEmptyStringIfNull(this.state.recipientAddressInfo, \"addresS1\"), false);\r\n this.fPropsDynamic.setFieldValue(\"address2\", DataService.getEmptyStringIfNull(this.state.recipientAddressInfo, \"addresS2\"), false);\r\n this.fPropsDynamic.setFieldValue(\"address3\", DataService.getEmptyStringIfNull(this.state.recipientAddressInfo, \"addresS3\"), false);\r\n this.fPropsDynamic.setFieldValue(\"address4\", DataService.getEmptyStringIfNull(this.state.recipientAddressInfo, \"addresS4\"), false);\r\n this.fPropsDynamic.setFieldValue(\"city\", DataService.getEmptyStringIfNull(this.state.recipientAddressInfo, \"city\"), false);\r\n this.fPropsDynamic.setFieldValue(\"province\", DataService.getEmptyStringIfNull(this.state.recipientAddressInfo, \"province\"), false);\r\n this.fPropsDynamic.setFieldValue(\"country\", DataService.getEmptyStringIfNull(this.state.recipientAddressInfo, \"countryId\"), false);\r\n this.fPropsDynamic.setFieldValue(\"postalcode\", DataService.getEmptyStringIfNull(this.state.recipientAddressInfo, \"postalcode\"), false);\r\n this.fPropsDynamic.setFieldValue(\"usnpinumber\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"usnpinumber\"), false);\r\n this.fPropsDynamic.setFieldValue(\"uslicensestate\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"uslicensestate\"), false);\r\n this.fPropsDynamic.setFieldValue(\"usstatelicensenumber\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"usstatelicensenumber\"), false);\r\n this.fPropsDynamic.setFieldValue(\"ustaxidnum\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"ustaxidnumber\"), false);\r\n this.fPropsDynamic.setFieldValue(\"recipientidentifiercountryid\", DataService.getEmptyStringIfNull(this.state.recipientIdentifierInfo, \"countryId\"), false);\r\n this.fPropsDynamic.setFieldValue(\"recipientidentifiertypeid\", DataService.getEmptyStringIfNull(this.state.recipientIdentifierInfo, \"porzioGSTIdentifierTypeId\"), false);\r\n this.fPropsDynamic.setFieldValue(\"recipientidentifiervalue\", DataService.getEmptyStringIfNull(this.state.recipientIdentifierInfo, \"identifierValue\"), false);\r\n this.fPropsDynamic.setFieldValue(\"customermasterid\", DataService.getEmptyStringIfNull(this.state.recipientProfileInfo, \"customermasterid\"), false);\r\n ToastService.showInfo(\"Recipient details loaded.\");\r\n this.setState({ isRecipientInfoInProgress: false });\r\n })\r\n },\r\n (errorObj) => {\r\n ToastService.showError(\"An Error Occured while loading the profile details.\");\r\n this.setState({ isRecipientInfoInProgress: false });\r\n }\r\n )\r\n )\r\n this.setState({\r\n profileId: _selProfileId,\r\n showSearchRecipientDialog: false,\r\n showPossibleMatchesDialog: false,\r\n showConfirmCreateNewProfile: false,\r\n showCreateNewProfileDialog: false,\r\n });\r\n }\r\n }\r\n\r\n // formik\r\n getSourceSystemInitialValues() {\r\n return {\r\n sourceSystemId: this.state.selSourceSystemId,\r\n transactionfilename: \"\"\r\n };\r\n }\r\n\r\n sourceSystemValidationSchema = Yup.object().shape({});\r\n getSourceSystemValidationSchema() {\r\n this.sourceSystemValidationSchema = Yup.object().shape({\r\n sourceSystemId: LayoutService.getNullableValidation(Yup.number().required(\"Required\"))\r\n });\r\n return this.sourceSystemValidationSchema;\r\n }\r\n\r\n //#region PI Information related stuff\r\n _resetClickHandle = (_fieldConfig) => {\r\n setTimeout(() => {\r\n _fieldConfig.clickHandled = false; // reset so the linkClickCanWork\r\n }, 500);\r\n }\r\n onPidSearchClick = (_fieldConfig) => {\r\n if (this.props.isReadOnly) {\r\n ToastService.showWarning(\"Please switch to edit mode.\");\r\n this._resetClickHandle(_fieldConfig); // reset so the linkClickCanWork\r\n } else {\r\n this.setState({\r\n targetPidFieldConfig: _fieldConfig, // set the caller config, will be reset on dialog close\r\n showPIDProfileSearchDialog: true,\r\n });\r\n }\r\n }\r\n onPidClearClick = (_fieldConfig) => {\r\n this._resetClickHandle(_fieldConfig); // reset so the linkClickCanWork\r\n if (this.props.isReadOnly) {\r\n ToastService.showWarning(\"Please switch to edit mode.\");\r\n }\r\n else if (DataService.isStringNullOrEmpty(this.fPropsDynamic.values[_fieldConfig.mappedFieldNameLower])) {\r\n ToastService.showWarning(\"No Profile Selected.\");\r\n }\r\n else {\r\n this.setPiIDandPridpiID(_fieldConfig, null, null);\r\n ToastService.showInfo(\"Cleared\");\r\n }\r\n }\r\n\r\n\r\n setPiIDandPridpiID = (_fieldconfig, _piId, _pridpiid) => {\r\n //get the lastId (1|2|3|4|5) fieldName: piid2 // initalvaluesOrNull Key: pridpiid2\r\n const id = (_fieldconfig.mappedFieldNameLower + \"\").replace(\"piid\", \"\");\r\n // this map is used for post (initially it holds the initial values, now it holds the updated value)\r\n this.state.piIdMap.set(`piid${id}`, _piId);\r\n this.state.prIdpiIdMap.set(`pridpiid${id}`, _pridpiid);\r\n // if exists then assign directly to the initialvalues (not using setstate to prevent unecessary rerenders)\r\n if (this.state.initialValuesOrNull !== null) {\r\n this.state.initialValuesOrNull[`piid${id}`] = _piId;\r\n this.state.initialValuesOrNull[`pridpiid${id}`] = _pridpiid;\r\n }\r\n // do the formik assignment here\r\n // update the formik so that the textfield shows the porzioGstProfileId eg: \"DEV0010232323\"\r\n this.fPropsDynamic.setFieldValue(_fieldconfig.mappedFieldNameLower, _piId ? _piId : \"\", false);\r\n\r\n }\r\n //#endregion\r\n\r\n extractRecipientInfo = (_fProps) => {\r\n let oRET = {};\r\n if (_fProps) {\r\n\r\n oRET[\"filename\"] = \"Manual Entry\";//this.state.initialValuesOrNull?.transactionfilename;\r\n oRET[\"porziogstprofileid\"] = _fProps.values[\"porziogstprofileid\"];\r\n oRET[\"companyprofileid\"] = _fProps.values[\"companyprofileid\"];\r\n // affiliated company and PhysicalOwnership\r\n oRET[\"affiliatedcompanyid\"] = _fProps.values[\"affiliatedcompanyid\"];\r\n oRET[\"physicianownership\"] = _fProps.values[\"physicianownership\"];\r\n\r\n oRET[\"profiletypeid\"] = _fProps.values[\"profiletypeid\"];\r\n oRET[\"profilecategoryid\"] = _fProps.values[\"recipientcategoryid\"];\r\n oRET[\"organizationname\"] = _fProps.values[\"organizationname\"];\r\n oRET[\"suffix\"] = _fProps.values[\"suffix\"];\r\n oRET[\"lastname\"] = _fProps.values[\"lastname\"];\r\n oRET[\"middlename\"] = _fProps.values[\"middlename\"];\r\n oRET[\"firstname\"] = _fProps.values[\"firstname\"];\r\n oRET[\"prefix\"] = _fProps.values[\"prefix\"];\r\n oRET[\"credentialsid\"] = _fProps.values[\"credentialsid\"];\r\n\r\n oRET[\"usnpinumber\"] = _fProps.values[\"usnpinumber\"];\r\n oRET[\"uslicensestate\"] = _fProps.values[\"uslicensestate\"];\r\n oRET[\"usstatelicensenumber\"] = _fProps.values[\"usstatelicensenumber\"];\r\n oRET[\"ustaxidnumber\"] = _fProps.values[\"ustaxidnum\"];\r\n\r\n // no need to pass since they can be added via identifier tab only\r\n oRET[\"identifiercountry\"] = _fProps.values[\"recipientidentifiercountryid\"];\r\n oRET[\"identifiertypeid\"] = _fProps.values[\"recipientidentifiertypeid\"];\r\n oRET[\"identifiervalue\"] = _fProps.values[\"recipientidentifiervalue\"];\r\n oRET[\"identifierdescription\"] = _fProps.values[\"recipientidentifierdescription\"];\r\n\r\n oRET[\"specialityid\"] = _fProps.values[\"specialityid\"];\r\n oRET[\"specialtyid\"] = _fProps.values[\"specialityid\"];\r\n\r\n\r\n let addressCountryObj = { \"countryId\": \"\", \"countryName\": \"\" };\r\n if (_fProps.values[\"country\"] > 0) {\r\n // console.log(\"COUNTRIES\", LookupService._COUNTRIES);\r\n const countryObj = LookupService._COUNTRIES.find(c => c.id === _fProps.values[\"country\"]);\r\n addressCountryObj.countryId = countryObj ? countryObj.id : \"\";\r\n addressCountryObj.countryName = countryObj ? countryObj.value : \"\";\r\n }\r\n oRET.addresslist = [\r\n ProfileTabService.getAddressObject(true, true, \"\", // primary & active\r\n _fProps.values[\"address1\"], _fProps.values[\"address2\"], _fProps.values[\"address3\"], _fProps.values[\"address4\"],\r\n _fProps.values[\"city\"], _fProps.values[\"province\"], _fProps.values[\"postalcode\"],\r\n \"\", \"\", // _porziogstaddressid & _companyaddressid\r\n addressCountryObj\r\n )\r\n ];\r\n let recipientIdentifierTypeObj = { \"lovId\": 0, \"lovKey\": \"\", \"ordinal\": 0, \"isdefault\": false, \"fieldName\": \"\", \"localLovKey\": \"\" };\r\n // if (_fProps.values[\"recipientidentifiertypeid\"] > 0) {\r\n // // console.log(\"COUNTRIES\", LookupService._COUNTRIES);\r\n // //identifiertypelist = [LookupService.getIdentifierTypes(this.context.user.tenantId)]\r\n // const identifierTypes = LookupService.getIdentifierTypes(this.context.user.tenantId);\r\n // if (Array.isArray(identifierTypes)) {\r\n // const identifierTypeObj = identifierTypes.filter(c => c.lovid === _fProps.values[\"recipientidentifiertypeid\"]);\r\n // recipientIdentifierTypeObj.lovId = identifierTypeObj ? identifierTypeObj.lovId : \"\";\r\n // recipientIdentifierTypeObj.lovKey = identifierTypeObj ? identifierTypeObj.lovKey : \"\";\r\n // console.log(identifierTypeObj);\r\n // } else {\r\n // console.log('identifierTypes is not an array:', identifierTypes);\r\n // }\r\n // // const identifierTypeObj = LookupService.getIdentifierTypes(this.context.user.tenantId).filter(c => c.lovid === _fProps.values[\"recipientidentifiertypeid\"]); \r\n // }\r\n oRET.identifierlist = [\r\n ProfileTabService.getIdentifierObject(_fProps.values[\"recipientidentifiertypeid\"],_fProps.values[\"recipientcompanyidentifierid\"],\r\n _fProps.values[\"recipientidentifiercountryid\"],addressCountryObj,_fProps.values[\"recipientidentifierdescription\"],\r\n _fProps.values[\"recipientidentifiervalue\"],recipientIdentifierTypeObj,\r\n null, null,\r\n \r\n )\r\n ]\r\n\r\n }\r\n return oRET;\r\n }\r\n\r\n\r\n fPropsSourceSystem = null;\r\n setSourceSystemFormikProps = (_fPropsSourceSystem) => {\r\n this.fPropsSourceSystem = _fPropsSourceSystem;\r\n return <>;\r\n }\r\n\r\n // render\r\n TAB_PERMISSIONS = RolePermissionService.TRANSACTION_DETAILS;\r\n render() {\r\n const { classes } = this.props;\r\n // set the props for parent's validation & post logic\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n this.fPropsDynamic = null;\r\n\r\n switch (this.state.fetchSourceSystemsResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n {/* Profile Details Tab */}\r\n {\r\n this.setState({ showProfileDetailDialog: false, targetPidFieldConfig: {} })\r\n // !!! DONOT change the recipient info if linked profile is edited.\r\n // if (_isModified) { \r\n // this.generateRecipientInfo(this.state.profileIdForDetailsDialog);\r\n // }\r\n }}\r\n />\r\n\r\n {this.state.openSalesRepDialog ?\r\n \r\n this.setState({ openSalesRepDialog: false })}\r\n modalAgNode={this.state.salesRepIdForDetailsDialog}\r\n inputAction={CrudAction.UPDATE}\r\n refreshGrid={false}\r\n />\r\n \r\n : null}\r\n\r\n {/* Recipient Search Dialog Component */}\r\n \r\n {\r\n if (DataService.hasValue(selectedProfile)) {\r\n this.generateRecipientInfo(selectedProfile[\"prid\"]);\r\n } else {\r\n this.setState({\r\n showSearchRecipientDialog: false, showPossibleMatchesDialog: false,\r\n showCreateNewProfileDialog: false, showConfirmCreateNewProfile: false,\r\n }); // just hide\r\n }\r\n }} />\r\n \r\n\r\n {/* PID Profile Search Dialog Component */}\r\n \r\n {\r\n this.state.targetPidFieldConfig.clickHandled = false; // reset so the linkClickCanWork\r\n if (DataService.hasValue(selectedProfile)) {\r\n this.setPiIDandPridpiID(this.state.targetPidFieldConfig, selectedProfile.porziogstprofileid, selectedProfile.prid,);\r\n }\r\n // finally close and clear\r\n this.setState({ showPIDProfileSearchDialog: false, targetPidFieldConfig: {} })\r\n }} />\r\n \r\n\r\n {/* SourceSystem Dropdown*/}\r\n \r\n {(fPropsSourceSystem) => (\r\n
\r\n \r\n {this.setSourceSystemFormikProps(fPropsSourceSystem)}\r\n {LayoutService.getDropDown((this.props.isReadOnly || !this.state.isNew), classes.dialogControl, classes.menuPaper, fPropsSourceSystem, this.sourceSystemValidationSchema, \"sourceSystemId\", \"Source System\",\r\n this.state.sourceSystemList, \"id\", \"text\", null, true, \"48%\",\r\n (_formikProps, _newSourceSystemId) => { this.onSourceSystemChange(_newSourceSystemId, false); })\r\n }\r\n {LayoutService.getTextBox(true, classes.dialogControl, fPropsSourceSystem, this.sourceSystemValidationSchema, \"transactionfilename\", \"File Name\", \"string\", \"48%\", null, null, null, \"small\", {},\r\n { InputLabelProps: { shrink: true } })}\r\n \r\n
\r\n )}\r\n
\r\n {/* Render Dynamic Controls */}\r\n {this.renderDynamicControls(classes)}\r\n {}\r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchSourceSystems(); }} />);\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Dynamic controls\r\n\r\n // api\r\n onSourceSystemChange = (_newSourceSystemId, _force) => {\r\n this.oSubscriptions.cancelAll();\r\n\r\n if (_force || this.state.selSourceSystemId !== _newSourceSystemId) {\r\n if (DataService.hasValidValue(_newSourceSystemId)) {\r\n //CLEAR CAHCE etc,...\r\n TransactionTabService.INIT(this.state.isClone);\r\n DynamicControlService.CLEAR();\r\n this._setTemplateFetchState(ResultStatus.LOADING, _newSourceSystemId, null, null, () => {\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getTemplateBySourceIdAsOBS(this.context.user.tenantId, _newSourceSystemId, LookupService._FULL_USER_PREFERENCES_OBJ?.defaultLanguageId ?? 1), // get the template\r\n // for new don't get the data, set it null\r\n (this.state.isNew ? of(this.state.isClone ? this.state.cleanedTransactionToClone : null) : LookupService.getTransactionTabDetailsAsOBS(this.context.user.tenantId, this.props.modalAgNode.transactionid, this.props.porzioGstId)),\r\n (this.state.isNew ? of(null) : ApiService.getOBS(API_ENDPOINT.CORE, `/Transactions/RelatedTransactions/${this.context.user.tenantId}/${this.context.user.userId}/${this.props.modalAgNode.transactionid}/1/5000`)),\r\n TransactionTabService.getUserCurrencyAsOBS(this.context.user.userId),\r\n TransactionTabService.fetchCurrenciesAsOBS(),\r\n LookupService.getCountriesAsOBS(this.context),\r\n ]).subscribe(\r\n // success result\r\n ([_templateData, _initialValuesOrNull, _relatedTransactions, _userCurrencyObject, _currencyList, _countryList]) => {\r\n _relatedTransactions = Array.isArray(_relatedTransactions) ? _relatedTransactions : [];\r\n this.setState({ relatedTransactions: _relatedTransactions });\r\n LookupService._CURRENCIES = DataService.formatCurrencyList(LookupService._CURRENCIES);\r\n if (_initialValuesOrNull) {\r\n _initialValuesOrNull[\"userpersonalcurrency\"] = _userCurrencyObject.currencyNameFormatted;\r\n _initialValuesOrNull[\"country\"] = LookupService._COUNTRIES.find(c => c.value === _initialValuesOrNull[\"country\"]) ? _countryList.find(c => c.value === _initialValuesOrNull[\"country\"]).id : 0;\r\n _initialValuesOrNull[\"recipientidentifiercountry\"] = _initialValuesOrNull.recipientidentifiercountryid;\r\n _initialValuesOrNull[\"prorataamt\"] = Number(_initialValuesOrNull.prorataamt).toFixed(2);\r\n _initialValuesOrNull[\"convertedcurrencytotalamount\"] = \"n/a - base or conversion currency not found\";\r\n\r\n if (_currencyList.find(o => o.currencyid === _initialValuesOrNull.currencyid)) {\r\n this.oSubscriptions.add(\r\n TransactionTabService.getConvertedTotalAmountAsOBS(this.context.user.tenantId, _currencyList.find(o => o.currencyid === _initialValuesOrNull.currencyid).currencyAcronym, _userCurrencyObject.currencyAcronym, _initialValuesOrNull.totalamount, _initialValuesOrNull.transactiondate)\r\n .subscribe((_convertedTotalAmount) => {\r\n if (!_convertedTotalAmount || _convertedTotalAmount === \"\") {\r\n _initialValuesOrNull[\"convertedcurrencytotalamount\"] = \"n/a - conversion service not available\";\r\n } else if (DataService.isNullOrUndefined(_initialValuesOrNull.transactiondate)) {\r\n _initialValuesOrNull[\"convertedcurrencytotalamount\"] = \"Transaction Date is required\";\r\n } else {\r\n _initialValuesOrNull[\"convertedcurrencytotalamount\"] = _convertedTotalAmount;\r\n }\r\n // get group fields map\r\n const groupFieldsMap = TransactionTabService.getGroupFieldsMap(this, this.state.isNew, _templateData, \"grouprenderid\", \"fieldID\");\r\n this._setTemplateFetchState(ResultStatus.LOADED, _newSourceSystemId, groupFieldsMap, _initialValuesOrNull, () => {\r\n this.props.onTransactionTabLoaded(_initialValuesOrNull, _relatedTransactions);\r\n // ToastService.showInfo(`${this.state.isNew ? \"Template\" : \"Data\"} Loaded`, 1000);\r\n if (this.state.isClone) {\r\n ToastService.showInfo(`Cloned from ${this.props.transactionToClone[\"porziogsttransactionid\"]}`);\r\n }\r\n });\r\n }))\r\n } else {\r\n // get group fields map\r\n const groupFieldsMap = TransactionTabService.getGroupFieldsMap(this, this.state.isNew, _templateData, \"grouprenderid\", \"fieldID\");\r\n this._setTemplateFetchState(ResultStatus.LOADED, _newSourceSystemId, groupFieldsMap, _initialValuesOrNull, () => {\r\n this.props.onTransactionTabLoaded(_initialValuesOrNull, _relatedTransactions);\r\n // ToastService.showInfo(`${this.state.isNew ? \"Template\" : \"Data\"} Loaded`, 1000);\r\n });\r\n }\r\n } else {\r\n // get group fields map\r\n const groupFieldsMap = TransactionTabService.getGroupFieldsMap(this, this.state.isNew, _templateData, \"grouprenderid\", \"fieldID\");\r\n this._setTemplateFetchState(ResultStatus.LOADED, _newSourceSystemId, groupFieldsMap, _initialValuesOrNull, () => {\r\n this.props.onTransactionTabLoaded(_initialValuesOrNull, _relatedTransactions);\r\n // passed from profileTransactions for add new\r\n if (this.props.preloadedRecipientProfileId > 0) {\r\n this.generateRecipientInfo(this.props.preloadedRecipientProfileId);\r\n }\r\n });\r\n }\r\n },\r\n // on error\r\n (err) => {\r\n ToastService.showError(`Error Occured while Loading the ${this.state.isNew ? \"Template\" : \"Data\"}`);\r\n this._setTemplateFetchState(ResultStatus.ERROR, _newSourceSystemId, null, null, () => { });\r\n }\r\n )\r\n );\r\n });\r\n } else { this._setTemplateFetchState(ResultStatus.LOADED, \"\", null, null, () => { }); } // clear selectedSourceSystemId\r\n }\r\n }\r\n\r\n // render\r\n renderDynamicControls = (_classes) => {\r\n switch (this.state.templateFetchResult) {\r\n case ResultStatus.NOT_LOADED: return (<>);\r\n case ResultStatus.LOADING: return ();\r\n // Good to Render the components\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n if (!DataService.hasValidValue(this.state.selSourceSystemId)) {\r\n return ();\r\n }\r\n else if (DataService.mapHasNoElements(this.state.allGroupFieldsMap)) {\r\n return ( { this.onSourceSystemChange(this.state.selSourceSystemId, true); }} />);\r\n }\r\n else {\r\n return (\r\n \r\n {(_fPropsDynamic) => (\r\n
\r\n \r\n <>\r\n {this.renderData(_classes, _fPropsDynamic)}\r\n {!this.state.showTransactionStatusDialog ? null :\r\n {\r\n this.setState({ showTransactionStatusDialog: false });\r\n }}\r\n refreshTab={() => {\r\n if (this.props.setReadOnlyMode) {\r\n this.props.setReadOnlyMode(true);\r\n }\r\n LookupService.fetchCommonLookups(this.context);\r\n this.fetchSourceSystems();\r\n }}\r\n />}\r\n \r\n \r\n
\r\n )}\r\n
\r\n );\r\n }\r\n // Error\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.onSourceSystemChange(this.state.selSourceSystemId, true); }} />);\r\n }\r\n }\r\n //#endregion\r\n\r\n\r\n renderData = (_classes, _fPropsDynamic) => {\r\n this.fPropsDynamic = _fPropsDynamic;\r\n var lastGroupIndex = 0;\r\n\r\n // 2/2) Map Errors\r\n DynamicControlService.setErrors(_fPropsDynamic, this.state.initialValuesOrNull);\r\n\r\n // filter, static & custom fields\r\n const oRET = [\r\n TransactionTabService.filterFieldGroupKey,\r\n TransactionTabService.staticFieldGroupKey,\r\n RolePermissionService.TRANSACTION_RECIPINET_INFORMATION.cannotView ? -1 : TransactionTabService.recipientInformationFieldGroupKey,\r\n ].filter((_mapKey) => this.state.dynamicControlFieldsMap.get(_mapKey)?.fieldConfigs.length > 0 // empty check\r\n ).map((_mapKey, _groupIndex) => {\r\n lastGroupIndex = _groupIndex;\r\n const groupInfo = this.state.dynamicControlFieldsMap.get(_mapKey);\r\n return (\r\n \r\n\r\n {/* Possible Matches Dialog Component */}\r\n \r\n {\r\n if (DataService.hasValue(selectedProfile)) {\r\n this.generateRecipientInfo(selectedProfile[\"prid\"]);\r\n } else {\r\n this.setState({ showSearchRecipientDialog: false, showPossibleMatchesDialog: false, showCreateNewProfileDialog: false }); // just hide\r\n }\r\n }} />\r\n \r\n\r\n {/* Confirm New Profile dialog */}\r\n {!this.state.showConfirmCreateNewProfile ? null :\r\n \r\n {/* Title */}\r\n \r\n \r\n \r\n Create New Profile Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => { this.setState({ showConfirmCreateNewProfile: false }) }, \"secondary\", \"keyActionCancel1\")}\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Confirm\", () => {\r\n this.setState({ showConfirmCreateNewProfile: false, showCreateNewProfileDialog: true, });\r\n }, \"inherit\", \"keyActionSave\")}\r\n \r\n \r\n \r\n {/* Content */}\r\n \r\n

This record will be inserted as a new Profile. This action cannot be reversed.

\r\n
\r\n
\r\n }\r\n\r\n {/* Add New Profile Contained-Dialog as a Page */}\r\n {!this.state.showCreateNewProfileDialog ? null :\r\n {\r\n this.setState({ showCreateNewProfileDialog: false });\r\n if (_result && _result !== false && _result.profileId > 0) {\r\n this.generateRecipientInfo(_result.profileId);\r\n } else {\r\n this.setState({ showSearchRecipientDialog: false, showPossibleMatchesDialog: false, showCreateNewProfileDialog: false }); // just hide\r\n }\r\n }}\r\n />\r\n }\r\n\r\n \r\n {DataService.isStringNullOrEmpty(groupInfo.name) ? null :\r\n _mapKey !== TransactionTabService.recipientInformationFieldGroupKey ?\r\n {groupInfo.name}\r\n :\r\n // Recipient Information - header icons\r\n \r\n {groupInfo.name}\r\n {this.isRecipientMatched ? null : Unmatched Recipient}\r\n \r\n {/* Create and Link New Recipient Icon */}\r\n {this.isRecipientMatched || RolePermissionService.TRANSACTION_RECIPINET_INFORMATION.cannotCreate ? null\r\n : LayoutService.getIconButton(this.props.isReadOnly, MatIconService.ADD_CIRCLE_OUTLINE, \"Create new Recipient\", () => {\r\n this.setState({ showConfirmCreateNewProfile: true })\r\n }, \"secondary\")}\r\n {/* PossibleMatches Icon */}\r\n {this.isRecipientMatched || this.state.isClone || this.props.preloadedRecipientProfileId > 0 || RolePermissionService.TRANSACTION_RECIPINET_INFORMATION.cannotEdit ? null\r\n : LayoutService.getIconButton(this.props.isReadOnly, MatIconService.IDEA_BULB_32, \"Manual Match Center\", () => {\r\n this.setState({ showPossibleMatchesDialog: true })\r\n }, \"inherit\", \"\", \"bottom\", { color: this.props.isReadOnly ? null : \"#F57C00\" })}\r\n {/* Manually Search Profile Icon */}\r\n {this.props.preloadedRecipientProfileId > 0 || RolePermissionService.TRANSACTION_RECIPINET_INFORMATION.cannotEdit ? null // preloadedRecipientProfileId -> received from profileTransactions\r\n : LayoutService.getIconButton(this.props.isReadOnly, MatIconService.SEARCH, \"Search\", () => {\r\n this.setState({ showSearchRecipientDialog: true })\r\n }, \"secondary\", \"\", \"bottom\", { fontSize: 30, marginTop: 4 })}\r\n \r\n \r\n }\r\n <>\r\n {_mapKey === TransactionTabService.recipientInformationFieldGroupKey && this.state.isRecipientInfoInProgress ? : null}\r\n {_mapKey === TransactionTabService.recipientInformationFieldGroupKey && this.isRecipientMatched ? : null}\r\n {\r\n // Recipient Information or Other - controls\r\n groupInfo.fieldConfigs.map((_fconfig, _fieldIndex) => {\r\n let _control = DynamicControlService.getControl(\r\n //false,\r\n _mapKey === TransactionTabService.recipientInformationFieldGroupKey ? true : this.props.isReadOnly, // recipientcontrols should always be readonly\r\n _classes, _fPropsDynamic, this.state.initialValuesOrNull, this.state.dynamicControlsValidationSchema, _fieldIndex, _fconfig);\r\n if (_fconfig.secondaryActionIcon) {\r\n _control = (\r\n \r\n {_control}\r\n {LayoutService.getIconButton(this.props.isReadOnly, _fconfig.secondaryActionIcon, _fconfig.secondaryActionTooltip, _fconfig.onSecondaryActionClick, \"primary\", `secondaryAction${_fconfig.fieldID}`)}\r\n \r\n );\r\n }\r\n return _control;\r\n })\r\n }\r\n \r\n \r\n \r\n
\r\n );\r\n });\r\n\r\n // engagement & venue, PI etc,... controls\r\n // if (_fPropsDynamic.values[\"engagementrelated\"] === true) {\r\n oRET.push([\r\n TransactionTabService.ownershipInformationFieldGroupKey,\r\n TransactionTabService.engagementInformationFieldGroupKey,\r\n TransactionTabService.venueInformationFieldGroupKey,\r\n TransactionTabService.researchInformationFieldGroupKey,\r\n TransactionTabService.PIInformationFieldGroupKey,\r\n TransactionTabService.customFieldGroupKey,\r\n TransactionTabService.otherFieldGroupKey,\r\n ]\r\n .filter((_mapKey) => this.state.dynamicControlFieldsMap.get(_mapKey).fieldConfigs.length > 0 // empty check\r\n ).map((_mapKey, _groupIndex) => {\r\n lastGroupIndex = _groupIndex;\r\n const groupInfo = this.state.dynamicControlFieldsMap.get(_mapKey);\r\n return (\r\n \r\n \r\n {DataService.isStringNullOrEmpty(groupInfo.name) ? null : {groupInfo.name}}\r\n {\r\n groupInfo.fieldConfigs.map((_fconfig, _fieldIndex) => {\r\n return DynamicControlService.getControl(this.props.isReadOnly, _classes, _fPropsDynamic, this.state.initialValuesOrNull, this.state.dynamicControlsValidationSchema, _fieldIndex, _fconfig);\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 return oRET;\r\n }\r\n\r\n\r\n //#region Utils\r\n _getGroup = (_header, _group, _gridUtils, _rowData, _columnDefsCallback) => {\r\n return {\r\n \"header\": _header,\r\n \"group\": _group,\r\n \"gridUtils\": _gridUtils,\r\n \"rowData\": _rowData,\r\n \"columnDefs\": _columnDefsCallback(this, this.props.isReadOnly, _gridUtils, _group.fieldConfigs),\r\n \"frameworkComponents\": _gridUtils.frameworkComponents,\r\n \"setGridParamsCallback\": _gridUtils.setGridParams,\r\n };\r\n }\r\n\r\n _setTemplateFetchState = (_templateFetchResult, _sourceSystemId, _groupFieldsMap, _initialValuesOrNull, _callback = () => { }) => {\r\n\r\n // 1/2) parse error fileds\r\n _initialValuesOrNull = DynamicControlService.parseErrorFields(_initialValuesOrNull);\r\n _initialValuesOrNull = DynamicControlService.parseCustomFields(_initialValuesOrNull);\r\n\r\n const _dynamicControlFieldsMap = DataService.getMapByKeys(_groupFieldsMap,\r\n [TransactionTabService.filterFieldGroupKey, TransactionTabService.staticFieldGroupKey, TransactionTabService.recipientInformationFieldGroupKey,\r\n TransactionTabService.ownershipInformationFieldGroupKey, TransactionTabService.engagementInformationFieldGroupKey, TransactionTabService.venueInformationFieldGroupKey,\r\n TransactionTabService.researchInformationFieldGroupKey, TransactionTabService.PIInformationFieldGroupKey,\r\n TransactionTabService.customFieldGroupKey, TransactionTabService.otherFieldGroupKey\r\n ]);\r\n\r\n this.isRecipientMatched = DataService.isNullOrUndefined(_initialValuesOrNull) ? false : _initialValuesOrNull[\"isrecipientmatch\"];\r\n\r\n if (this.fPropsSourceSystem) {\r\n if (_initialValuesOrNull) {\r\n this.fPropsSourceSystem.setFieldValue(\"transactionfilename\", _initialValuesOrNull?.transactionfilename);\r\n } else if (this.state.isNew) {\r\n this.fPropsSourceSystem.setFieldValue(\"transactionfilename\", \"Manual Entry\");\r\n }\r\n }\r\n\r\n // prepare the piidMap\r\n let _piIdMap = new Map();\r\n let _prIdpiIdMap = new Map();\r\n _piIdMap.set(\"piid1\", _initialValuesOrNull?.piid1);\r\n _prIdpiIdMap.set(\"pridpiid1\", _initialValuesOrNull?.pridpiid1);\r\n _piIdMap.set(\"piid2\", _initialValuesOrNull?.piid2);\r\n _prIdpiIdMap.set(\"pridpiid2\", _initialValuesOrNull?.pridpiid2);\r\n _piIdMap.set(\"piid3\", _initialValuesOrNull?.piid3);\r\n _prIdpiIdMap.set(\"pridpiid3\", _initialValuesOrNull?.pridpiid3);\r\n _piIdMap.set(\"piid4\", _initialValuesOrNull?.piid4);\r\n _prIdpiIdMap.set(\"pridpiid4\", _initialValuesOrNull?.pridpiid4);\r\n _piIdMap.set(\"piid5\", _initialValuesOrNull?.piid5);\r\n _prIdpiIdMap.set(\"pridpiid5\", _initialValuesOrNull?.pridpiid5);\r\n\r\n // insert match key\r\n let _dynamicControlInitialValues = DynamicControlService.getIntitialValues(this.state.isNew, _dynamicControlFieldsMap, _initialValuesOrNull);\r\n if (_dynamicControlInitialValues && _initialValuesOrNull) {\r\n // _initialValuesOrNull[\"matchKey\"] = \"First, Last, Middle-b, City, Country, Province-b, Recipient Identifier Type, Recipient Identifier Value, Postal Code\";\r\n _dynamicControlInitialValues[\"matchKey\"] = _initialValuesOrNull[\"matchKey\"];\r\n }\r\n\r\n this.setState({\r\n prid: _initialValuesOrNull?.prid,\r\n porziogstprofileid: _initialValuesOrNull?.porziogstprofileid,\r\n profileId: _initialValuesOrNull ? _initialValuesOrNull.prid : null,\r\n profileIdForDetailsDialog: _initialValuesOrNull ? _initialValuesOrNull.prid : null, // set via setLinkPropertiesIfAny() for different types of Profiles\r\n\r\n selSourceSystemId: _sourceSystemId,\r\n templateFetchResult: _templateFetchResult,\r\n initialValuesOrNull: _initialValuesOrNull,\r\n piIdMap: _piIdMap,\r\n prIdpiIdMap: _prIdpiIdMap,\r\n allGroupFieldsMap: _groupFieldsMap,\r\n dynamicControlFieldsMap: _dynamicControlFieldsMap,\r\n dynamicControlInitialValues: _dynamicControlInitialValues,\r\n dynamicControlsValidationSchema: DynamicControlService.getValidationSchema(_dynamicControlFieldsMap)\r\n }, _callback);\r\n }\r\n //#endregion\r\n\r\n fPropsDynamic = null;\r\n validationCallback = () => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next(true); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n }\r\n\r\n\r\n /** 1/3 Required */\r\n isDirtyCallback = () => {\r\n // do any additional checkings if needed\r\n if (this.fPropsDynamic) {\r\n return this.fPropsDynamic.dirty;\r\n } else {\r\n return false;\r\n }\r\n }\r\n /** 2/3 Required in Parent */\r\n resetCallback = (_updateFormWithNewValues = false) => {\r\n // modified on 02-03-2022 as per ticket PP2-1241\r\n if (this.fPropsDynamic) {\r\n if (_updateFormWithNewValues) {\r\n this.fPropsDynamic.resetForm({ values: { ...this.fPropsDynamic.values } });\r\n }\r\n else {\r\n this.fPropsDynamic.resetForm();\r\n }\r\n }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 3/3 Required in Parent */\r\n isRecipientMatched = false;\r\n postCallbackOBS = () => {\r\n if (DataService.isNullOrUndefined(this.fPropsDynamic) || this.fPropsDynamic.isSubmitting) {\r\n return of(null);\r\n }\r\n else {\r\n var oReturnSubject = new ReplaySubject(); // 1st\r\n var oValidationSubject = new ReplaySubject(); // 2nd\r\n\r\n this._validate(oValidationSubject);\r\n oValidationSubject.asObservable().subscribe((x) => {\r\n if (x.currentTransactionData) {\r\n ApiService.postOBS(API_ENDPOINT.CORE, \"/Transactions/SaveTransaction\", JSON.stringify(x))\r\n .subscribe(\r\n (_successResult) => {\r\n ToastService.showSuccess(\"Transaction Saved\");\r\n oReturnSubject.next(_successResult);\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while saving\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n );\r\n\r\n } else {\r\n ToastService.showWarning(\"Please recheck your Input\");\r\n oReturnSubject.next(\"validation_error\");\r\n }\r\n });\r\n\r\n // return the subject as observable\r\n return oReturnSubject.asObservable(); // 3rd\r\n }\r\n }\r\n\r\n _validate = async (_oSubject) => {\r\n // if (!this.state.isNew) {\r\n // _oSubject.next(this._getDataToPost());\r\n // } else {\r\n // await this.state.dynamicControlsValidationSchema.validate(this.fPropsDynamic.values, { abortEarly: false })\r\n // .then((x) => {\r\n // _oSubject.next(this._getDataToPost());\r\n // })\r\n // .catch((erroObj) => {\r\n // if (erroObj.inner) { erroObj.inner.forEach(err => { this.fPropsDynamic.setFieldError(err.path, err.message); }); }\r\n // _oSubject.next(null); // error\r\n // });\r\n // }\r\n _oSubject.next(this.getDataToPost());\r\n }\r\n\r\n getDataToPost = () => {\r\n //---Mandatory-Fields---------------\r\n var dataToPost = {};\r\n\r\n //---Filter/Static/Enagagement/Venue - Fields---------------\r\n const controlFieldConfigs = [\r\n ...this.state.dynamicControlFieldsMap.get(TransactionTabService.filterFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(TransactionTabService.staticFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(TransactionTabService.recipientInformationFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(TransactionTabService.ownershipInformationFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(TransactionTabService.engagementInformationFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(TransactionTabService.venueInformationFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(TransactionTabService.researchInformationFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(TransactionTabService.PIInformationFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(TransactionTabService.otherFieldGroupKey).fieldConfigs,\r\n\r\n ];\r\n // push the engagement related section only if it is required\r\n // if (this.fPropsDynamic.values[\"engagementrelated\"] === true) {\r\n controlFieldConfigs.push(...this.state.dynamicControlFieldsMap.get(TransactionTabService.engagementInformationFieldGroupKey).fieldConfigs);\r\n controlFieldConfigs.push(...this.state.dynamicControlFieldsMap.get(TransactionTabService.venueInformationFieldGroupKey).fieldConfigs);\r\n // }\r\n\r\n // recipientInformation\r\n const preloadedRecipientProfileId = this.fPropsDynamic.values[\"porziogstprofileid\"];\r\n if (DataService.hasValidValue(preloadedRecipientProfileId)) {\r\n dataToPost['porziogstprofileid'] = preloadedRecipientProfileId;\r\n dataToPost['isrecipientmatch'] = this.isRecipientMatched;\r\n }\r\n\r\n // populate matchKey\r\n dataToPost['matchKey'] = this.fPropsDynamic.values[\"matchKey\"];\r\n\r\n // populate the dataToPost\r\n let updatedFieldsForRelatedTransactions = {};\r\n let hasRelatedTransactionUpdates = false;\r\n controlFieldConfigs.forEach(fieldConfig => {\r\n const _mappedFieldName = DynamicControlService.getMappedFieldName(fieldConfig) + \"\";\r\n const _oldValue = this.state.isNew ? null : this.state.initialValuesOrNull[_mappedFieldName]; // 0\r\n const _newValue = this.fPropsDynamic.values[_mappedFieldName]; // \"\"\r\n const formattedValue = TransactionTabService.convertForPost(dataToPost, fieldConfig, _mappedFieldName, _newValue);\r\n\r\n if (!this.state.isNew && TransactionTabService.groupExpensesFieldIds.includes(fieldConfig.fieldID) && _oldValue !== _newValue\r\n && !((_oldValue === undefined || _oldValue === null || _oldValue === 0) && _newValue === \"\") // this should be considerd as no change\r\n ) {\r\n hasRelatedTransactionUpdates = true;\r\n updatedFieldsForRelatedTransactions[_mappedFieldName] = dataToPost[_mappedFieldName];\r\n if (formattedValue.isLOV) {\r\n updatedFieldsForRelatedTransactions[formattedValue.lovTextKey] = formattedValue.lovTextValue;\r\n }\r\n }\r\n });\r\n\r\n //--- PIID (1|2|3|4|5)------------------\r\n // piId key will be created with the initial or updated value from the map\r\n this.state.piIdMap.forEach((_value, _key) => { dataToPost[_key] = _value; });\r\n //--- PRIDPIID (1|2|3|4|5)------------------\r\n this.state.prIdpiIdMap.forEach((_value, _key) => { dataToPost[_key] = _value; });\r\n\r\n //---Custom-Fields---------------\r\n dataToPost.customfields = this.state.dynamicControlFieldsMap.get(TransactionTabService.customFieldGroupKey).fieldConfigs.map(fieldConfig => {\r\n var _fieldValue = this.fPropsDynamic.values[DynamicControlService.getMappedFieldName(fieldConfig)];\r\n if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.LOV) {\r\n _fieldValue = _fieldValue > 0 ? _fieldValue : 0;\r\n const lovObj = DataService.getFirstOrDefault(fieldConfig.customLOVList.filter((x) => x.lovId === _fieldValue));\r\n return { 'FIELDID': fieldConfig.fieldID, 'FIELDNAME': fieldConfig.fielD_ALIASNAME, 'FIELDVALUE': _fieldValue, 'FIELDLOVKEY': lovObj ? lovObj.lovKey : \"\" };\r\n } else if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE_TIME || fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE) {\r\n return { 'FIELDID': fieldConfig.fieldID, 'FIELDNAME': fieldConfig.fielD_ALIASNAME, 'FIELDVALUE': _fieldValue ? DataService.formatDate(new Date(_fieldValue)) : null };\r\n } else {\r\n return { 'FIELDID': fieldConfig.fieldID, 'FIELDNAME': fieldConfig.fielD_ALIASNAME, 'FIELDVALUE': _fieldValue };\r\n }\r\n });\r\n dataToPost.customfields = DataService.arrayToSingleQuotedJsonString(dataToPost.customfields, \"\");\r\n\r\n //--- ensure mandatory fields\r\n dataToPost.prid = this.state.prid;\r\n dataToPost.tenantid = this.context.user.tenantId;\r\n dataToPost.userId = this.context.user.userId;\r\n dataToPost.userType = this.context.user.userTypeId;\r\n dataToPost.uid = this.context.user.uid;\r\n dataToPost.transactionid = this.state.isNew ? 0 : this.state.selTransactionId;\r\n dataToPost.sourceid = this.state.selSourceSystemId;\r\n dataToPost.recordid = this.state.initialValuesOrNull ? this.state.initialValuesOrNull.recordid : null;\r\n dataToPost.fileid = this.state.initialValuesOrNull ? this.state.initialValuesOrNull.fileid : null;\r\n dataToPost.ismanuallyentered = true; //this.state.initialValuesOrNull ? this.state.initialValuesOrNull.ismanuallyentered : 1;\r\n //---\r\n\r\n // return\r\n return {\r\n 'currentTransactionData': dataToPost,\r\n 'hasRelatedTransactionUpdates': hasRelatedTransactionUpdates,\r\n 'relatedTransactionIds': this.state.relatedTransactions.map(x => x.TransactionId),\r\n 'updatedFieldsForRelatedTransactions': updatedFieldsForRelatedTransactions\r\n };\r\n\r\n }\r\n\r\n\r\n\r\n //---\r\n}\r\nexport default LayoutService.getHocComponenet(TransactionTabComponent);","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT,ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class RuleSummaryService {\r\n\r\n static getRuleSummaryAsOBS = (_tenantId, _userId, _modalAgNode,) => {\r\n const targetUrl = `/RuleSummary/FetchRuleSummaryByEntity/${_tenantId}/${ENTITY_TYPE.TRANSACTION}?id=${_modalAgNode.transactionid}&pageNumber=1&pageSize=5000`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleSeverity\", \"Rule Severity\").minAndDefaultWidth(144).valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleMessage\", \"Rule Message\").flexWeight(6).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fieldValue\", \"Bad Value\").flexWeight(6).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleName\", \"Rule Name\").flexWeight(4).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n ];\r\n }\r\n\r\n //---\r\n}","import React from \"react\";\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Typography, AppBar, Toolbar, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport RuleSummaryService from \"./ruleSummaryService\";\r\n\r\nclass RuleSummaryComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n RuleSummaryService.getRuleSummaryAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode,),\r\n ]).subscribe(\r\n // success\r\n ([_data,]) => {\r\n this.setState(\r\n {\r\n data: _data,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showProfileDetailDialog: true });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Rule Summary\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(RuleSummaryComponent);\r\n","import React, { Component } from \"react\";\r\nimport { Typography, Tooltip } from \"@material-ui/core\";\r\nimport { AgGridColumnExt } from \"../../../services/ag-grid/agGridColumnExt\";\r\nimport { DataService } from \"../../../services/dataService\";\r\nimport MatSpecService from \"../../../services/theme/matSpecService\";\r\nimport ToastService from \"../../../services/toastService\";\r\n\r\n/**\r\n * Author : Pradeep_Rajendran@epam.com\r\n */\r\nexport class AgGridBulkEditUtil {\r\n\r\n static selectColumnName = \"is_selected\";\r\n\r\n static getSelectColumn = (_isEditable, _callbackOnChange) => {\r\n return AgGridColumnExt.GET(_isEditable, \"text\", AgGridBulkEditUtil.selectColumnName, \"Edit\").fixedWidth(88).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", { onChange: _callbackOnChange }).SET();\r\n }\r\n\r\n\r\n constructor() {\r\n this.clearUpdateTrackers();\r\n }\r\n\r\n clearUpdateTrackers = () => {\r\n this.updatedRowIds = [];\r\n this.updatedCells = [];\r\n this.updatedRowIdsCoumnNamesMap = new Map();\r\n }\r\n\r\n updatedRowIdsCoumnNamesMap = new Map();\r\n updatedRowIds = [];\r\n updatedCells = [];\r\n hasUpdates = () => { return this.updatedRowIds.length > 0; }\r\n markUpdatedRowIds = (_rowId, _columnName) => {\r\n if (!this.updatedRowIds.includes(_rowId)) {\r\n this.updatedRowIds.push(_rowId);\r\n }\r\n\r\n const cellInfo = AgGridBulkEditUtil._getCellInfo(_rowId, _columnName);\r\n if (!this.updatedCells.includes(cellInfo)) { this.updatedCells.push(cellInfo); }\r\n\r\n\r\n if (!this.updatedRowIdsCoumnNamesMap.has(_rowId)) {\r\n this.updatedRowIdsCoumnNamesMap.set(_rowId, []);\r\n }\r\n let rowColumnNames = this.updatedRowIdsCoumnNamesMap.get(_rowId);\r\n if (!rowColumnNames.includes(_columnName)) {\r\n rowColumnNames.push(_columnName);\r\n this.updatedRowIdsCoumnNamesMap.set(_rowId, rowColumnNames);\r\n }\r\n }\r\n\r\n static _getCellInfo = (_rowId, _columnName) => {\r\n return `rowId:${_rowId}|columnName:${_columnName}`;\r\n }\r\n\r\n /**\r\n * \r\n * @param {*} _parentCellRef \r\n * @param {*} _newValue for lov its the id.\r\n * @param {*} _lovTextColumnName applies to lov only (text column name for lov)\r\n * @param {*} _lovText applies to lov only (pass the text value for lov)\r\n */\r\n bulkApply = (_parentCellRef, _newValue, _lovTextColumnName = null, _lovText = null) => {\r\n const parentCellProps = _parentCellRef.props;\r\n\r\n const currentCell = parentCellProps.api.getFocusedCell();\r\n if (currentCell.column.colDef.field === AgGridBulkEditUtil.selectColumnName) {\r\n parentCellProps.node.setSelected(parentCellProps.node.data[AgGridBulkEditUtil.selectColumnName] === true);\r\n } else {\r\n var rowNodesToUpdate = [parentCellProps.node];\r\n this.markUpdatedRowIds(parentCellProps.node.id, parentCellProps.column.colDef.field); //TODO\r\n\r\n parentCellProps.api.forEachNodeAfterFilter((rowNode) => {\r\n // !!! this is very important as we cannot rely on the rowNode.rowIndex after a sort, so we are using the id to localte the correct index of the row\r\n // const sortAndFilterAwareRowNode = parentCellProps.api.getRowNode(rowNode.id);\r\n\r\n if (parentCellProps.node.id !== rowNode.id && rowNode.data[AgGridBulkEditUtil.selectColumnName] === true) {\r\n // applies the new value\r\n rowNode.setDataValue(parentCellProps.column.colDef.field, _newValue);\r\n // updates the underlying text property of lov\r\n if (!DataService.isStringNullOrEmpty(_lovTextColumnName)) {\r\n rowNode.data[_lovTextColumnName] = _lovText;\r\n }\r\n //---\r\n\r\n rowNodesToUpdate.push(rowNode);\r\n this.markUpdatedRowIds(rowNode.id, parentCellProps.column.colDef.field);\r\n }\r\n });\r\n parentCellProps.api.flashCells({ rowNodes: rowNodesToUpdate, columns: [parentCellProps.column.colDef.field] });\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * \r\n * @param {*} _cellRef \r\n * @param {*} _newValue for lov its the id.\r\n * @param {*} _lovTextColumnName applies to lov only (text column name for lov)\r\n * @param {*} _newValueText applies to lov only (pass the text value for lov)\r\n */\r\n static applyChange = (_cellRef, _newValue, _lovTextColumnName = null, _lovText = null) => {\r\n const cellProps = _cellRef.props;\r\n\r\n // for transaction, todo: check for profile\r\n if ((_lovTextColumnName || \"\").startsWith(\"vendor\")) { _lovTextColumnName = \"vendorname\"; }\r\n\r\n // this.props.node.setDataValue(this.props.column.colDef.field, e);\r\n //--- the entire cell-component will reload if setDataValue() is used,.. so avoid it and update the underlying datasource directly\r\n cellProps.node.data[cellProps.column.colDef.field] = _newValue;\r\n cellProps.data[cellProps.column.colDef.field] = _newValue;\r\n // apply the text value for Lov\r\n if (!DataService.isStringNullOrEmpty(_lovTextColumnName)) {\r\n cellProps.node.data[_lovTextColumnName] = _lovText;\r\n cellProps.data[_lovTextColumnName] = _lovText;\r\n }\r\n //---\r\n\r\n // bulk apply\r\n _cellRef.state.parentRef.state.agGridBulkEditUtil.bulkApply(_cellRef, _newValue, _lovTextColumnName, _lovText);\r\n\r\n _cellRef.setState({\r\n isEditing: false,\r\n hasErrorOrWarning: AgGridBulkEditUtil.hasErrorOrWarning(_cellRef.state.parentRef.state.agGridBulkEditUtil, _cellRef.props, _cellRef.state.errorOrWarningConfig),\r\n value: _newValue,\r\n })\r\n }\r\n\r\n static handleClose = (_cellRef) => {\r\n _cellRef.setState({ isEditing: false });\r\n }\r\n\r\n\r\n static getRenderer = (_cellRef, _formattedValueCallback, _editorElementCallback, _parentContainerOptions = {}, _formattedValueOptions = {}) => {\r\n\r\n const showErrorOrWarningElement = _cellRef.state.hasErrorOrWarning && !_cellRef.state.isEditing;\r\n const showEditorElement = _cellRef.state.isEditing;\r\n const showFormattedElement = !_cellRef.state.hasErrorOrWarning && !_cellRef.state.isEditing;\r\n\r\n return (\r\n
{ AgGridBulkEditUtil._validateEdit(_cellRef, e) }} style={{ ..._parentContainerOptions }}\r\n onBlur={(e) => {\r\n if (!_cellRef.state.onBlurHandled) { AgGridBulkEditUtil._cancelEditing(_cellRef, e); }\r\n }}>\r\n {showErrorOrWarningElement ? AgGridBulkEditUtil._getErrorOrWarningElement(_cellRef.state.errorOrWarningConfig) : null}\r\n {showEditorElement ? _editorElementCallback() : null}\r\n {showFormattedElement ? AgGridBulkEditUtil._getFormattedElement(_formattedValueCallback, _formattedValueOptions) : null}\r\n
\r\n );\r\n }\r\n\r\n static _getErrorOrWarningElement = (_errorOrWarningConfig) => {\r\n let _style = { color: _errorOrWarningConfig.isWarning ? \"orange\" : \"red\", fontSize: 14, fontWeight: 400, lineHeight: 1.9, textDecoration: \"line-through\" };\r\n\r\n return (\r\n \r\n {_errorOrWarningConfig.value}\r\n {_errorOrWarningConfig.message}\r\n \r\n }>\r\n \r\n {_errorOrWarningConfig.value}\r\n \r\n \r\n );\r\n }\r\n\r\n static _getFormattedElement = (_formattedValueCallback, _formattedOptions) => {\r\n return (\r\n {_formattedValueCallback()}\r\n );\r\n }\r\n\r\n\r\n static hasErrorOrWarning = (_agGridBulkEditUtilRef, _props, _errorOrWarningConfig) => {\r\n const _cellInfo = AgGridBulkEditUtil._getCellInfo(_props.node.id, _props.column.colDef.field);\r\n const _hasErrorOrWarning = (\r\n _errorOrWarningConfig && DataService.hasValidValue(_errorOrWarningConfig.message) // has error message\r\n && !_agGridBulkEditUtilRef.updatedCells.includes(_cellInfo) // error value is not yet updated\r\n );\r\n\r\n return _hasErrorOrWarning;\r\n }\r\n\r\n static _validateEdit = (_cellRef, e) => {\r\n if (_cellRef.props.node.data[AgGridBulkEditUtil.selectColumnName] !== true) { ToastService.showWarning(\"Please select this row to Edit.\"); }\r\n else if (_cellRef.props.isParentReadOnly) { ToastService.showWarning(\"The Component is in Readonly mode.\"); }\r\n else if (_cellRef.props.isColumnReadOnly) { ToastService.showWarning(\"The Column is marked as Readonly.\"); }\r\n else {\r\n _cellRef.setState({ isEditing: true })\r\n }\r\n }\r\n\r\n static _cancelEditing = (_cellRef, e) => {\r\n const currentCell = _cellRef.props.api.getFocusedCell();\r\n if (currentCell && (currentCell.node.id !== _cellRef.props.node.id || currentCell.column.colDef.field !== _cellRef.props.column.colDef.field)) {\r\n _cellRef.setState({ isEditing: false });\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n //---\r\n\r\n}","import { AgGridColumnExt } from \"../../services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../services/apiService\";\r\nimport { API_ENDPOINT, ENTITY_TYPE } from \"../../types/enums\";\r\nimport { of } from \"rxjs\";\r\nimport { AgGridBulkEditUtil } from \"../../components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class AgreementsService {\r\n\r\n static getAgreementsAsOBS = (_tenantId, _userId, _modalAgNode, entityType) => {\r\n let targetUrl = \"\";\r\n if (entityType === ENTITY_TYPE.PROFILE) {\r\n targetUrl = `/Agreement/GetAgreementsByProfileId/${_tenantId}/${_userId}/${_modalAgNode.prid}?isDelete=false`;\r\n } else if (entityType === ENTITY_TYPE.TRANSACTION) {\r\n targetUrl = `/Agreement/GetAgreementsByTransactionId/${_tenantId}/${_userId}/${_modalAgNode.trid}`;\r\n }\r\n return ApiService.getOBS(API_ENDPOINT.CORE, targetUrl);\r\n };\r\n\r\n static getDeleteOBS = (tenantId, idsToDelete, entityType) => {\r\n if (entityType === ENTITY_TYPE.PROFILE) {\r\n return ApiService.deleteOBS(API_ENDPOINT.CORE,\r\n `/Profiles/DeleteProfileAgreements?tenantId=${tenantId}&porzioGSTAgreementIds=${idsToDelete}`);\r\n } else if (entityType === ENTITY_TYPE.TRANSACTION) {\r\n return ApiService.deleteOBS(API_ENDPOINT.CORE,\r\n `/Transactions/DeleteTransactionAgreements?tenantId=${tenantId}&selectedTransactionId=${idsToDelete}`);\r\n } else return of([]);\r\n }\r\n\r\n static saveProfileAgreements = (tenantId, profileId, porzioGSTAgreementIds) => {\r\n let url = `/Profiles/SaveProfileAgreements?tenantId=${tenantId}&profileId=${profileId}&porzioGSTAgreementIds=${porzioGSTAgreementIds}`;\r\n return ApiService.postOBS(API_ENDPOINT.CORE, url);\r\n }\r\n\r\n static saveTransactionAgreements = (tenantId, transactionId, companyAgreementId, porzioGSTAgreementId) => {\r\n let url = `/Transactions/SaveTransactionAgreements?tenantId=${tenantId}&transactionId=${transactionId}&companyAgreementId=${companyAgreementId}&porzioGSTAgreementId=${porzioGSTAgreementId}`;\r\n return ApiService.postOBS(API_ENDPOINT.CORE, url);\r\n }\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n let colDefs = [\r\n AgGridColumnExt.GET(false, true, \"companyAgreementId\", \"Company Agreement Id\").fixedWidth(144).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"porzioGSTAgreementID\", \"Porzio GST Agreement ID\").minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"agreementDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, true, \"agreementName\", \"Agreement Name\").flexWeight(1).minWidth(136).tooltip().SET(),\r\n AgGridColumnExt.GET(false, true, \"agreementType\", \"Agreement Type\").flexWeight(1).minWidth(136).tooltip().SET(),\r\n AgGridColumnExt.GET(false, true, \"startdate\", \"Start Date\").flexWeight(1).minWidth(136).SET(),\r\n AgGridColumnExt.GET(false, true, \"enddate\", \"End Date\").flexWeight(1).minWidth(136).SET(),\r\n AgGridColumnExt.GET(false, true, \"executeddate\", \"Executed Date\").flexWeight(1).minWidth(136).SET(),\r\n AgGridColumnExt.GET(false, true, _componentThisRef.props.entityType === ENTITY_TYPE.TRANSACTION ? \"disclosureConsent\" : \"agreementConsent\", \"Agreement Consent\").flexWeight(1).minWidth(136).headerClass(\"center-text\").tooltip().SET(),\r\n AgGridColumnExt.GET(false, true, \"agreementdocuments\", \"Agreement Document(s)\").flexWeight(1).minWidth(136).tooltip().SET()\r\n ];\r\n\r\n if (_componentThisRef.props.entityType === ENTITY_TYPE.TRANSACTION) {\r\n colDefs.unshift(AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", { onChange: _componentThisRef.toggleSubmitButton }).SET());\r\n }\r\n return colDefs;\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport { Checkbox } from \"@material-ui/core\";\r\nimport { AgGridBulkEditUtil } from \"../bluk-edit/agGridBulkEditUtil\";\r\nimport { DataService } from \"../../../services/dataService\";\r\nimport MatThemeService from \"../../../services/theme/matThemeService\";\r\n\r\nexport class AgGridErroredCheckboxCellRenderer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n if (DataService.isNullOrUndefined(this.props.node.data[this.props.column.colDef.field])) {\r\n // if null or undefined is passed then the textcontrol becomes uncontrolled,\r\n // to avoid that we are updating the underlying datasource's value to empty string \r\n this.props.node.data[this.props.column.colDef.field] = \"\";\r\n }\r\n\r\n const _errorOrWarningConfig = this.props.getErrorOrWarningInfoCallback(this);\r\n this.state = {\r\n //|---> Mandatory Fields\r\n isEditing: false,\r\n isParentReadOnly: this.props.isParentReadOnly,\r\n isColumnReadOnly: this.props.isColumnReadOnly,\r\n value: this.props.node.data[this.props.column.colDef.field],\r\n parentRef: this.props.componentThisRef,\r\n errorOrWarningConfig: _errorOrWarningConfig,\r\n hasErrorOrWarning: AgGridBulkEditUtil.hasErrorOrWarning(this.props.componentThisRef.state.agGridBulkEditUtil, this.props, _errorOrWarningConfig),\r\n //<---|\r\n };\r\n }\r\n\r\n\r\n render() {\r\n\r\n return AgGridBulkEditUtil.getRenderer(this,\r\n // formattedValue callback\r\n () => { return this.state.value ? \"Y\" : \"N\"; },\r\n // editor callback\r\n () => {\r\n return (\r\n { AgGridBulkEditUtil.applyChange(this, !this.state.value); }}\r\n />\r\n );\r\n },\r\n { display: \"flex\", alignItems: \"center\", justifyContent: \"center\" },\r\n { textAlign: \"center\" }\r\n\r\n );\r\n }\r\n\r\n //---\r\n}","import React from \"react\";\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { DataService } from \"../../services/dataService\";\r\nimport { AgGridUtil } from \"../../services/ag-grid/agGridUtil\";\r\n\r\nexport default class AgGridCheckboxCellRendererComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { isChecked: this.props.data[this.props.colDef.field] };\r\n }\r\n\r\n render() {\r\n const specialObj = this.props.data[AgGridUtil.specialProperty];\r\n const notHasSpecialProperty = DataService.isNullOrUndefined(specialObj);\r\n const isEditing = notHasSpecialProperty ? true : specialObj[AgGridUtil.editingProperty] === true;\r\n const isReadOnly = notHasSpecialProperty ? (!this.props.column.colDef.editable) : specialObj[AgGridUtil.readOnlyProperty] === true;\r\n \r\n let forceReadOnly = false;\r\n if (this.props.isCellEnabledCallback && !this.props.isCellEnabledCallback(this)) {\r\n forceReadOnly= true;\r\n }\r\n\r\n return ( { this.onStateChangeRequested(); }}\r\n />);\r\n }\r\n\r\n onStateChangeRequested = () => {\r\n this.setState({ isChecked: !this.state.isChecked }, // invert the checked state\r\n () => {\r\n // this.props.data[this.props.colDef.field] = this.state.isChecked; // update the datasource\r\n this.props.node.setDataValue(this.props.colDef.field, this.state.isChecked); // update the datasource\r\n\r\n // call the callback\r\n if (this.props.onChange) {\r\n this.props.onChange(this, this.state.isChecked);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","import { AgGridColumnExt } from \"../../../services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../types/enums\"\r\n\r\nexport default class AgreementsSearchDialogService {\r\n\r\n static searchOBS = (_tenantId, _searchValue) => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Agreement/SearchAgreements/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: null,\r\n firstName: null,\r\n lastName: null,\r\n organizationName: null,\r\n companyId: null,\r\n country: null,\r\n porzioGSTProfileId:null\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n {\r\n headerName: \"Select\",\r\n field: \"isSelected\",\r\n editable: true,\r\n width: 176,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n cellRenderer: \"isSelectedCellRenderer\",\r\n cellRendererParams: { onChange: (_cellRef, _data) => { _onSelectCallback(_data); } }\r\n },\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstAgreementId\", \"Porzio GST Agreement ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"agreementDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"agreementType\", \"Agreement Type\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),//TODO: pending\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"country\", \"Country\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"startDate\", \"Agreement Start Date\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"endDate\", \"Agreement End Date\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}","import React, { Component } from \"react\";\r\n\r\nexport default class AgreementDetailCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Typography, Paper, Toolbar, IconButton, AppBar, Divider } from \"@material-ui/core\";\r\nimport MatThemeService from \"../../services/theme/matThemeService\";\r\n\r\n\r\n/* { console.log('Delete clicked') } },\r\n { icon: MatIconService.OK, color: \"primary\", onClick: (e) => { console.log('Save clicked') } },\r\n ]}\r\n />\r\n*/\r\nexport default class TabDetailsToolbarComponent extends React.Component {\r\n render() {\r\n const { classes, label, leftControls, rightControls, contentJsx } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {/* controls to be rendered in the left side of the toolbar*/}\r\n {\r\n leftControls.map((x, index) =>\r\n {x.icon}\r\n )\r\n }\r\n {/* Label*/}\r\n {label}\r\n {/* controls to be rendered in the right side of the toolbar*/}\r\n {\r\n rightControls.map((x, index) =>\r\n {x.icon}\r\n )\r\n }\r\n \r\n \r\n {/* content to be rendered belwo the toolbar */}\r\n {contentJsx}\r\n \r\n \r\n \r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { combineLatest, ReplaySubject, of } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { DialogTitle, DialogContent, Grid, Box, Typography, AppBar, Toolbar, IconButton, TextField, FormHelperText, Input, Divider } from \"@material-ui/core\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, } from \"../../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass ConsentComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isNew: this.props.inputAction === CrudAction.CREATE,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n agreementId: this.props.modalAgNode?.agreementId ?? null,\r\n agreementConsent: {}\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their reusult in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n ApiService.getOBS(API_ENDPOINT.CORE, `/Agreement/GetAgreementConsent/${this.context.user.tenantId}/${this.state.agreementId}`),\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Util/GetFieldLOVByIds/${this.context.user.tenantId}/97`)\r\n ]).subscribe(\r\n ([_agreementConsent, _consentLOVValues]) => {\r\n this.setState(\r\n {\r\n agreementConsent: _agreementConsent,\r\n consentLOVValues: _consentLOVValues\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n }\r\n\r\n getInitialValues() {\r\n return {\r\n agreementId: !this.state.agreementConsent ? \"\" : this.state.agreementId,\r\n consentValues: !this.state.agreementConsent ? \"\" : this.state.agreementConsent.consentValues,\r\n disclosureConsent: !this.state.agreementConsent ? \"\" : this.state.agreementConsent.disclosureConsent,\r\n consentStartDate: !this.state.agreementConsent ? \"\" : this.state.agreementConsent.consentStartDate,\r\n consentEndDate: !this.state.agreementConsent ? \"\" : this.state.agreementConsent.consentEndDate,\r\n consentExecutedDate: !this.state.agreementConsent ? \"\" : this.state.agreementConsent.consentExecutedDate,\r\n consentRevoked: !this.state.agreementConsent ? \"\" : this.state.agreementConsent.consentRevoked,\r\n consentRevocationStartDate: !this.state.agreementConsent ? \"\" : this.state.agreementConsent.consentRevocationStartDate,\r\n consentRevocationEndDate: !this.state.agreementConsent ? \"\" : this.state.agreementConsent.consentRevocationEndDate,\r\n consentRevocationExecutedDate: !this.state.agreementConsent ? \"\" : this.state.agreementConsent.consentRevocationExecutedDate,\r\n consentRevocationReason: !this.state.agreementConsent ? \"\" : DataService.getStringOrDefault(this.state.agreementConsent.consentRevocationReason),\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n consentStartDate: Yup.date().min(\"1/1/2018\", \"On or after 1/1/2018\").max(\"1/1/2051\", \"On or before 1/1/2051\"),\r\n consentEndDate: Yup.date().min(\"1/1/2018\", \"On or after 1/1/2018\").max(\"1/1/2051\", \"On or before 1/1/2051\"),\r\n consentRevocationReason: Yup.string(),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n\r\n\r\n /**Render */\r\n TAB_PERMISSIONS = RolePermissionService.AGREEMENT_CONSENT;\r\n render() {\r\n const { classes } = this.props;\r\n this.fPropsDynamic = null;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n\r\n if (RolePermissionService.AGREEMENT_CONSENT.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
\r\n {this.renderData(classes, fProps)}\r\n
\r\n )}\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n //this.SERVICE.fetchData(this, true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n renderData = (_classes, _fProps) => {\r\n this.fProps = _fProps;\r\n\r\n return (\r\n \r\n \r\n Disclosure Consent\r\n \r\n {LayoutService.getSelectControl(this.props.isReadOnly, _classes, _fProps, \"disclosureConsent\", \"Disclosure Consent\", this.state.consentLOVValues, \"lovId\", \"lovKey\", \"90%\", false)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Consent Revocations\r\n \r\n {LayoutService.getSelectControl(this.props.isReadOnly, _classes, _fProps, \"consentRevoked\", \"Consent Revoked\", [{ \"id\": 1, \"text\": \"YES\" }, { \"id\": 0, \"text\": \"NO\" }], \"id\", \"text\", \"90%\", true)}\r\n \r\n \r\n \r\n {LayoutService.getTextBox(this.props.isReadOnly, _classes.dialogControl, _fProps, this.validationSchema, \"consentRevocationReason\", \"Consent Revocation Reason\")}\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n /** 2/4 Required */\r\n isDirtyCallback = () => {\r\n // do any additional checkings if needed\r\n if (this.fProps) {\r\n return this.fProps.dirty;\r\n } else {\r\n return false;\r\n }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n if (this.fProps) {\r\n this.fProps.resetForm();\r\n }\r\n // do any additional resetting if needed\r\n }\r\n\r\n\r\n _validate = async (_oSubject) => {\r\n\r\n await this.validationSchema.validate(this.fProps.values, { abortEarly: false })\r\n .then((x) => {\r\n _oSubject.next(this._getDataToPost());\r\n })\r\n .catch((erroObj) => {\r\n if (erroObj.inner) { erroObj.inner.forEach(err => { this.fProps.setFieldError(err.path, err.message); }); }\r\n _oSubject.next(null); // error\r\n });\r\n\r\n }\r\n\r\n _getDataToPost = () => {\r\n return {\r\n agreementId: this.fProps.values[\"agreementId\"],\r\n consentValues: this.fProps.values[\"consentValues\"],\r\n disclosureConsent: this.fProps.values[\"disclosureConsent\"],\r\n consentStartDate: this.fProps.values[\"consentStartDate\"],\r\n consentEndDate: this.fProps.values[\"consentEndDate\"],\r\n consentExecutedDate: this.fProps.values[\"consentExecutedDate\"],\r\n consentRevoked: this.fProps.values[\"consentRevoked\"],\r\n consentRevocationStartDate: this.fProps.values[\"consentRevocationStartDate\"],\r\n consentRevocationEndDate: this.fProps.values[\"consentRevocationEndDate\"],\r\n consentRevocationExecutedDate: this.fProps.values[\"consentRevocationExecutedDate\"],\r\n consentRevocationReason: this.fProps.values[\"consentRevocationReason\"],\r\n };\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n if (DataService.isNullOrUndefined(this.fProps) || this.fProps.isSubmitting) {\r\n return of(null);\r\n }\r\n else {\r\n var oReturnSubject = new ReplaySubject(); // 1st\r\n var oValidationSubject = new ReplaySubject(); // 2nd\r\n\r\n this._validate(oValidationSubject);\r\n oValidationSubject.asObservable().subscribe((_dataToPost) => {\r\n if (_dataToPost) {\r\n ApiService.postOBS(API_ENDPOINT.CORE, `/Agreement/SaveAgreementConsent/${this.context.user.tenantId}`, JSON.stringify(_dataToPost))\r\n .subscribe(\r\n (_successResult) => {\r\n ToastService.showSuccess(\"Agreement Saved\");\r\n oReturnSubject.next(true);\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while saving\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n );\r\n } else {\r\n ToastService.showWarning(\"Please recheck your Input\");\r\n oReturnSubject.next(\"validation_error\");\r\n }\r\n });\r\n\r\n // return the subject as observable\r\n return oReturnSubject.asObservable(); // 3rd\r\n }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ConsentComponent);","import React, { Component, createRef } from \"react\";\r\nimport { Typography } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\n\r\nexport default class DownloadFileAgRenderer extends Component {\r\n link = createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod = async () => {\r\n if (this.link.current.href) { return }\r\n let blob = await this.props.context.componentParent.handleDownloadAg(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data, this.props.value, this.linkRefAg, window.URL);\r\n const href = window.URL.createObjectURL(blob);\r\n this.link.current.download = this.props.value;\r\n this.link.current.href = href;\r\n this.link.current.click();\r\n }\r\n showCannotDownloadDialog = () => {\r\n this.props.context.componentParent.canNotDownloadFile(RolePermissionService.DOWNLOAD_FILE_DATACENTER.cannotView);\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {this.props.value}\r\n {this.props.node.data?.hasComments ?
{MatIconService.FILE_COMMENT_ON}
: null}\r\n
\r\n );\r\n }\r\n}\r\n","import React from 'react';\r\nimport { AppBar, Box, Dialog, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport LayoutService from \"../../services/layoutService\";\r\n\r\nclass DocumentDeleteConfirmComponent extends React.Component {\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n Delete Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete\", this.props.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.handleDeleteDismiss, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to delete the selected Document?\r\n \r\n \r\n {this.props.documentName}\r\n \r\n \r\n This action cannot be reversed\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 LayoutService.getHocComponenet(DocumentDeleteConfirmComponent);","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class ComplianceReportMappingService {\r\n\r\n static getFieldLOVByIdsAsOBS = (_tenantId, _fieldId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetFieldLOVByIds/${_tenantId}/${_fieldId}`\r\n );\r\n };\r\n\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n TextField,\r\n Grid,\r\n FormHelperText,\r\n Input,\r\n} from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, ENTITY_TYPE } from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport ToastService from \"../../services/toastService\";\r\nimport DocumentDeleteConfirmComponent from \"./documentDeleteConfirmComponent\";\r\nimport DocumentDetailsService from \"./documentDetailsService\";\r\nimport OktaAuthService from \"../../../public/authentication/oktaAuthService\";\r\n\r\nclass DocumentDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n lastValidatedCompanyStudyId = null;\r\n lastValidatedCompanyStudyResult = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n DocumentDetailsService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 268),\r\n ]).subscribe(\r\n // success\r\n ([_documentCategoryList]) => {\r\n this.setState(\r\n {\r\n documentCategoryList: _documentCategoryList,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING, });\r\n\r\n // 2) extract the formik values into a FormData object\r\n const formData = new FormData();\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let actionVerb = \"\";\r\n let targetUrl = \"\";\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n // CREATE\r\n formData.append(\"documentId\", 0);\r\n if (this.props.entityType == 1) {\r\n formData.append(\"TransactionId\", this.props.profileId)\r\n }\r\n else if (this.props.entityType == 3){\r\n formData.append(\"TransactionId\", this.props.agreementId);\r\n }\r\n else {\r\n formData.append(\"TransactionId\", this.props.transactionId);\r\n }\r\n formData.append(\"TenantId\", this.context.user.tenantId);\r\n formData.append(\"EntityId\", this.props.entityType);\r\n formData.append(\"documentCategoryId\", _formikProps.values.documentCategory);\r\n //get the file type after the file name period\r\n formData.append(\"fileType\", this.state.selectedFileName.split('.').pop());\r\n formData.append(\"ContainerType\", \"transactiondocs\");\r\n formData.append(\"documentName\", _formikProps.values.documentName);\r\n formData.append(\"fileName\", _formikProps.values.documentName);\r\n formData.append(\"DocumentTypeId\", _formikProps.values.documentCategory);\r\n formData.append(\"documentDescription\", _formikProps.values.documentDescription);\r\n formData.append(\"isDeleted\", false);\r\n formData.append(\"isActive\", 1);\r\n formData.append(\"startDate\", \"2020-08-19T20:06:07Z\");\r\n formData.append(\"endDate\", \"2021-08-19T20:06:07Z\");\r\n formData.append(\"filePath\", this.state.selectedFileName);\r\n formData.append(\"efile\", this.state.selectedFile);\r\n actionVerb = \"POST\";\r\n targetUrl = `/Document/SaveDocumentByEntity/${this.context.user.tenantId}`;\r\n } else {\r\n // UPDATE\r\n formData.append(\"TransactionId\", 0); //int\r\n formData.append(\"TenantId\", this.context.user.tenantId); //int\r\n formData.append(\"TransactionDocumentId\", String(this.props.modalAgNode.documentID)); //string\r\n formData.append(\"PorzioGSTDocumentID\", \"0\"); //string\r\n formData.append(\"EntityId\", 0); //int\r\n formData.append(\"DocumentName\", _formikProps.values.documentName); //string\r\n formData.append(\"DocumentDescription\", _formikProps.values.documentDescription); //string\r\n formData.append(\"DocumentType\", \"csv\"); //string\r\n formData.append(\"DocumentTypeId\", _formikProps.values.documentCategory); //int\r\n\r\n formData.append(\"CreatedBy\", this.context.user.userId); //int\r\n formData.append(\"ModifiedDate\", \"2020-12-28\"); //string\r\n\r\n // formData.append(\"DocumentTypes\", this.props.modalAgNode.documentID); //array\r\n // formData.append(\"Document\", this.props.modalAgNode.documentID); //string\r\n formData.append(\"ContainerType\", this.props.modalAgNode.documentID); //string\r\n\r\n if (this.state.selectedFileName) {\r\n formData.append(\"FilePath\", this.state.selectedFileName);\r\n formData.append(\"BlobName\", this.state.selectedFileName);\r\n formData.append(\"efile\", this.state.selectedFile);\r\n } else {\r\n formData.append(\"FilePath\", \"\");\r\n formData.append(\"BlobName\", \"\");\r\n formData.append(\"efile\", \"\");\r\n }\r\n actionVerb = \"POST\";\r\n targetUrl = `/Document/SaveDocument/${this.context.user.tenantId}`;\r\n }\r\n\r\n // Do not set the Content-type in the headers below. Let the browser set it. For example\r\n // Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3sy40ozPAfPAnNRy\r\n // The browser handles and controls the random string at the end of the boundary\r\n const headers = {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n };\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n formData,\r\n headers\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshGrid(true);\r\n this.props.onClose(false);\r\n } else {\r\n console.error(\"Error: falsey successResult while saving Document Details\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Document Details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n getInitialValues() {\r\n return {\r\n documentName: this.props.modalAgNode.documentName,\r\n documentDescription: this.props.modalAgNode.documentDescription,\r\n documentCategory: this.props.modalAgNode.documentCategoryId,\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n documentName: Yup.string()\r\n .required(\"Required\")\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\"),\r\n documentCategory: Yup.number().required(\"Required\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleDelete = () => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n \r\n var pathParams = `/Document/DeleteDocument/${this.context.user.tenantId}/${this.context.user.userId}/${this.props.modalAgNode.porzioGSTDocumentID}`;\r\n // switch (this.props.entityType) {\r\n // case ENTITY_TYPE.PROFILE:\r\n // pathParams = `/Document/DeleteDocument/${this.context.user.tenantId}/${this.context.user.userId}/${this.props.modalAgNode.documentID}`;\r\n // break;\r\n // case ENTITY_TYPE.TRANSACTION:\r\n // pathParams = `/Document/DeleteDocument/${this.context.user.tenantId}/${this.context.user.userId}/${this.props.modalAgNode.documentID}`;\r\n // break;\r\n // default:\r\n // this.setState({ fetchResult: ResultStatus.ERROR });\r\n // }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\"DELETE\", API_ENDPOINT.CORE, pathParams, JSON.stringify({})).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Delete Document Successful\");\r\n this.props.refreshGrid(true);\r\n this.props.onClose();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
\r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n Document Details\r\n {this.state.isEditing ? LayoutService.getIconButton(false, MatIconService.DELETE_RED, \"Delete\", () => this.setState({ openDeleteConfirm: true, porziogsttransactionid: this.props.modalAgNode.porziogsttransactionid }), \"inherit\", \"keyActionDelete\") : null}\r\n {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"documentCategory\",\r\n \"Document Category\",\r\n this.state.documentCategoryList,\r\n \"lovId\",\r\n \"lovKey\",\r\n \"98%\"\r\n )}\r\n \r\n \r\n Attachment\r\n \r\n this.setState({\r\n selectedFile: event.target.files[0],\r\n selectedFileName: event.target.files[0].name,\r\n })\r\n }\r\n fullWidth\r\n />\r\n
\r\n \r\n Attached File:\r\n \r\n \r\n {this.props.inputAction === CrudAction.UPDATE\r\n ? this.props.modalAgNode.fileName\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.setState({ openDeleteConfirm: false })} h\r\n handleDeleteDismiss={() => this.setState({ openDeleteConfirm: false })}\r\n handleDeleteConfirm={() => {\r\n this.setState({ openDeleteConfirm: false });\r\n this.handleDelete();\r\n this.props.refreshGrid(true);\r\n }}\r\n documentName={this.props.modalAgNode.documentName} />\r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.props.onClose(false);\r\n }}\r\n onRetry={() => {\r\n console.log(\"Retry Clicked\");\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(DocumentDetailsComponent);\r\n","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class DocumentsService {\r\n\r\n static getDocumentsAsOBS = (_tenantId, _modalAgNode) => {\r\n const targetUrl = `/Document/GetDocumentsByEntity/${_tenantId}/${ENTITY_TYPE.AGREEMENT}/${_modalAgNode.agreementId}?page=1&pageSize=100`;//${_modalAgNode.agreementId}\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n _setRuleViolations = (_params) => {\r\n _params.data.ruleviolations = _params.newValue;\r\n return true;\r\n }\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", { onChange: _componentThisRef.toggleSubmitButton }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTDocumentID\", \"Porzio GST Document ID\").headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"documentName\", \"Document Name\").cellRenderer(\"childMessageRendererComponent\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"documentDescription\", \"Description\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"documentType\", \"Category Name\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"filePath\", \"File Name\").cellRenderer(\"downloadFileAgRenderer\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n //AgGridColumnExt.GET(true, \"text\", \"fileType\", \"File Type\").fixedWidth(104).valueSetter(this._setRuleViolations).SET(),\r\n ];\r\n }\r\n\r\n //---\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { Dialog, DialogTitle, DialogContent, DialogContentText, Box, Typography, Grid, AppBar, Toolbar } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport ChildMessageRendererComponent from \"../../../../shared/components/childMessageRendererComponent\";\r\nimport DownloadFileAgRenderer from \"../../../data-center/download-file/downloadFileAgRenderer\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport SectionComponent from \"../../../../shared/components/sectionComponent\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport DocumentDetailsComponent from \"../../../../shared/components/document-details/documentDetailsComponent\"\r\nimport DocumentsService from \"./documentsService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport OktaAuthService from \"../../../../public/authentication/oktaAuthService\";\r\n\r\nclass DocumentsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n porzioSearch: \"\",\r\n selectedDocuments:[],\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n downloadFileAgRenderer: DownloadFileAgRenderer,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n }\r\n\r\n handleDownloadAg = async (\r\n cell,\r\n agNodeData,\r\n filename,\r\n linkRefAg,\r\n windowUrl\r\n ) => {\r\n //ToastService.showInfo(\"Under Construction\");\r\n if (this.state.canNotDownload) {\r\n this.setState({ accessDenied: this.state.canNotDownload });\r\n return;\r\n } else {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/Document/DownloadDocument/${this.context.user.tenantId}?filename=${agNodeData.filePath}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n );\r\n const blob = await result.blob();\r\n return blob;\r\n }\r\n\r\n };\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n DocumentsService.getDocumentsAsOBS(this.context.user.tenantId, this.props.modalAgNode),\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 268),\r\n ]).subscribe(\r\n // success\r\n ([_documents, _documentCategoryLov]) => {\r\n this.setState(\r\n {\r\n //data: [..._systemDocuments, ..._complianceDocuments, ..._customDocuments].map(r => (parseInt(r.documentCategoryId) ? { ...r, documentCategoryName: _documentCategoryLov.find(f => f.lovId === r.documentCategoryId).lovKey } : \"\")),\r\n data: _documents || []\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({\r\n modalShow: true,\r\n modalAgNode: node,\r\n inputAction: CrudAction.UPDATE,\r\n });\r\n };\r\n\r\n TAB_PERMISSIONS = RolePermissionService.AGREEMENT_DOCUMENTS;\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const cannotDelete = this.props.isReadOnly || this.state.selectedDocuments.length === 0;\r\n const componentType = \"Documents\";\r\n\r\n if (RolePermissionService.AGREEMENT_DOCUMENTS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getIconButton(cannotDelete, cannotDelete ? MatIconService.DELETE : MatIconService.DELETE_RED, \"Delete\", () => { this.handleDeleteClick()},\"inherit\")}\r\n {LayoutService.getIconButton(this.props.isReadOnly || RolePermissionService.AGREEMENT_DOCUMENTS.cannotCreate, MatIconService.ADD_CIRCLE_OUTLINE, \"Add New Document\", () => {\r\n this.setState({ modalShow: true, modalAgNode: {}, inputAction: CrudAction.CREATE, })\r\n }\r\n )}\r\n \r\n {/* this.setState({ modalShow: true, modalAgNode: {}, inputAction: CrudAction.CREATE, })} /> */}\r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n }}>\r\n
\r\n
\r\n
\r\n {this.state.openDeleteConfirm ?\r\n this.setState({ openDeleteConfirm: false })} aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\">\r\n \r\n \r\n \r\n Delete Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete\", this.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => this.setState({ openDeleteConfirm: false }), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to delete the selected document? This action cannot be reversed.\r\n \r\n \r\n {this.state.selectedDocuments.map(r => ({r.filePath}
))}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n :<>\r\n }\r\n \r\n this.setState({ modalShow: false })}\r\n modalAgNode={this.state.modalAgNode}\r\n inputAction={this.state.inputAction}\r\n refreshGrid={this.fetchData}\r\n entityType={this.props.entityType}\r\n agreementId={this.props.agreementId}\r\n />\r\n \r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n }\r\n\r\n handleDeleteClick = () => {\r\n this.setState({\r\n openDeleteConfirm: true\r\n });\r\n }\r\n\r\n handleDeleteConfirm = () => {\r\n this.setState({ openDeleteConfirm: false });\r\n let idsToDelete = this.state.selectedDocuments.map(r => r.porzioGSTDocumentID)?.join(\",\");\r\n var pathParams = `/Document/DeleteDocument/${this.context.user.tenantId}/${this.context.user.userId}/${idsToDelete}`;\r\n ApiService.setOBS(\"DELETE\", API_ENDPOINT.CORE, pathParams, JSON.stringify({})).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Delete Document Successful\");\r\n //refreshGrid= false;\r\n this.fetchData();\r\n this.props.onClose();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n \r\n (errorResult) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n this.setState({ selectedDocuments: [] });\r\n }\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n let hasSelected = false;\r\n let selectedDocuments = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedDocuments.push(rowNode.data);\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n selectedDocuments: selectedDocuments,\r\n isReadOnly: !hasSelected,\r\n });\r\n }\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(DocumentsComponent);\r\n","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class RuleSummaryService {\r\n\r\n static getRuleSummaryAsOBS = (_tenantId, _agreementId) => {//TODO : fileid : need to figure out and pass\r\n\r\n const targetUrl = `​/RuleSummary/FetchRuleSummaryByEntity/${_tenantId}/${ENTITY_TYPE.AGREEMENT}?id=${_agreementId}&pageNumber=1&pageSize=5000`;\r\n\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleSeverity\", \"Rule Severity\").minAndDefaultWidth(144).valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleMessage\", \"Rule Message\").flexWeight(6).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fieldValue\", \"Bad Value\").flexWeight(6).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleName\", \"Rule Name\").flexWeight(4).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Typography, AppBar, Toolbar, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport RuleSummaryService from \"./ruleSummaryService\";\r\n\r\nclass RuleSummaryComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n RuleSummaryService.getRuleSummaryAsOBS(this.context.user.tenantId, this.props.modalAgNode.agreementId),\r\n ]).subscribe(\r\n // success\r\n ([_data]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showProfileDetailDialog: true });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Rule Summary\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n this.state.agGridUtils.setGridParams(params, true);\r\n }}>\r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(RuleSummaryComponent);\r\n","import { ReplaySubject } from 'rxjs';\r\nimport { AgGridColumnExt } from '../../../../shared/services/ag-grid/agGridColumnExt';\r\nimport { AgGridService } from \"../../../../shared/services/ag-grid/agGridService\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport DynamicControlService from '../../../../shared/services/dynamicControlService';\r\nimport ToastService from '../../../../shared/services/toastService';\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\n\r\nexport default class AgreementTabService {\r\n\r\n static baseCurrencyFieldId = 176; // for splicing Currency after\r\n\r\n static otherFieldGroupKey = 100;\r\n static filterFieldGroupKey = 1;\r\n static staticFieldGroupKey = 2;\r\n static customFieldGroupKey = 5;\r\n static eventFieldGroupKey = 4;\r\n\r\n static readonlyFieldIds = []; // filled in the INIT method\r\n\r\n static porzioGSTAgreementID = 140;\r\n static companyAgreementId = 306;\r\n static agreementCategory = 88;\r\n static agreementStatusFieldId = 82;\r\n\r\n // RecipinetInformation\r\n static recipientInformationFieldGroupKey = 3;\r\n static recipientInformationFieldIds = []; // filled in the INIT method\r\n static recipientColCompanyProfileId = 178;\r\n static recipientColPorzioGstProfileId = 179;\r\n static recipientColLastNameFieldId = 153;\r\n static recipientColFirstNameFieldId = 154;\r\n static recipientColOrganizationName = 158;\r\n static recipientColRecipientIdentifierCountryFieldId = 165;\r\n static recipientColProfileTypeId = 168;\r\n static recipientColProfileStatusFieldId = -100; // TODO: not in template\r\n\r\n // Currency Information (should go with Custom Fields)\r\n static userPersonalCurrencyFieldId = 1024;\r\n static convertedCurrencyTotalAmountFieldId = 1025;\r\n\r\n static INIT = () => {\r\n\r\n // readonly fields\r\n this.readonlyFieldIds = [this.porzioGSTAgreementID];\r\n\r\n // recipientInformation columns\r\n this.recipientInformationFieldIds = [\r\n this.recipientColCompanyProfileId, this.recipientColPorzioGstProfileId,\r\n this.recipientColLastNameFieldId, this.recipientColFirstNameFieldId, this.recipientColOrganizationName,\r\n this.recipientColRecipientIdentifierCountryFieldId, this.recipientColProfileStatusFieldId,\r\n this.recipientColProfileTypeId\r\n //this.recipientColTransactionConsent,\r\n ];\r\n }\r\n\r\n static getGroupFieldsMap = (_compThisRef, _isNew, _templateConfigData, _sortProp1, _sortProp2) => {\r\n // hardcode the prfile-status dropdown, etc,...\r\n this.hardcodeFields(_isNew, _templateConfigData);\r\n\r\n if (!_isNew) { this.readonlyFieldIds.push(this.companyAgreementId); }\r\n\r\n // reCreate map\r\n var groupInfoMap = new Map();\r\n groupInfoMap.set(this.filterFieldGroupKey, { \"name\": \"\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.staticFieldGroupKey, { \"name\": \"\", \"fieldConfigs\": [] });\r\n //---\r\n groupInfoMap.set(this.customFieldGroupKey, { \"name\": \"Custom Fields\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.eventFieldGroupKey, { \"name\": \"Event Information\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.recipientInformationFieldGroupKey, { \"name\": \"Recipient Information\", \"fieldConfigs\": [] });\r\n groupInfoMap.set(this.otherFieldGroupKey, { \"name\": \"Other Fields\", \"fieldConfigs\": [] });\r\n\r\n\r\n // sort\r\n _templateConfigData = DataService.sortObjectByEntries(_templateConfigData, _sortProp1);\r\n // extract keys\r\n const keys = Object.keys(_templateConfigData);\r\n if (DataService.hasNoElements(keys)) {\r\n groupInfoMap = new Map(); // clear the Map\r\n } else {\r\n let nonGroupedControls = [];\r\n // parse through each key\r\n keys.forEach(key => {\r\n const fieldConfig = DynamicControlService.transformFieldConfig(_templateConfigData[key]);\r\n\r\n this.setLinkPropertiesIfAny(_compThisRef, fieldConfig);\r\n if (fieldConfig.fieldID === 21) {\r\n fieldConfig.customLOVList = fieldConfig.customLOVList.slice().filter(k => k.lovKey.substring(0, 3) !== \"US:\").sort((a, b) => (a.lovKey > b.lovKey) ? 1 : ((b.lovKey > a.lovKey) ? -1 : 0));\r\n }\r\n\r\n var groupInfo = {};\r\n\r\n if (fieldConfig.isCustomField) { groupInfo = groupInfoMap.get(this.customFieldGroupKey); } // CUSTOM\r\n else if (groupInfoMap.has(fieldConfig.grouprenderid)) { groupInfo = groupInfoMap.get(fieldConfig.grouprenderid); }\r\n else {\r\n // TODO: Enable if others is needed\r\n // nonGroupedControls.push(fieldConfig);\r\n // groupInfo = groupInfoMap.get(this.unmatchedFieldGroupKey);\r\n } // add to unmatched\r\n\r\n // push the field to the corresponding group\r\n if (groupInfo.fieldConfigs) {\r\n let _push = false;\r\n\r\n // hide Porzio GST Agreement if new\r\n if (fieldConfig.fieldID === this.porzioGSTAgreementID) {\r\n _push = !_isNew; // can see only in edit\r\n } else { _push = true; }\r\n\r\n // readonly\r\n if (this.readonlyFieldIds.includes(fieldConfig.fieldID)) {\r\n fieldConfig.isReadOnly = true;\r\n }\r\n\r\n // add the field\r\n if (_push) { groupInfo.fieldConfigs.push(fieldConfig); }\r\n }\r\n });\r\n\r\n // show warnings\r\n if (DataService.hasElements(nonGroupedControls)) { console.warn(\"Controls with no GroupRendererId\", nonGroupedControls); }\r\n }\r\n\r\n //sort controls based on ordinal\r\n groupInfoMap.forEach(value => {\r\n value.fieldConfigs = value.fieldConfigs.sort((a, b) => a.ordinal - b.ordinal);\r\n });\r\n\r\n //|---> rearranging order for Converted Currencies\r\n let staticGroupFields = groupInfoMap.get(this.staticFieldGroupKey).fieldConfigs;\r\n let indexToInsertAfter = staticGroupFields.findIndex(x => Number(x.fieldID) === Number(this.baseCurrencyFieldId));\r\n if (indexToInsertAfter < 0) indexToInsertAfter = staticGroupFields.length - 1;\r\n\r\n let indexConvertedCurrencyTotalAmount = staticGroupFields.findIndex(x => x.fieldID === this.convertedCurrencyTotalAmountFieldId);\r\n let fieldConfigConvertedCurrencyTotalAmount = staticGroupFields.splice(indexConvertedCurrencyTotalAmount, 1);\r\n DataService.insertAt(staticGroupFields, indexToInsertAfter + 1, fieldConfigConvertedCurrencyTotalAmount[0]);\r\n\r\n let indexUserPersonalCurrency = staticGroupFields.findIndex(x => x.fieldID === this.userPersonalCurrencyFieldId);\r\n let fieldConfigUserPersonalCurrency = staticGroupFields.splice(indexUserPersonalCurrency, 1);\r\n DataService.insertAt(staticGroupFields, indexToInsertAfter + 1, fieldConfigUserPersonalCurrency[0]);\r\n //<---|\r\n\r\n\r\n\r\n // return the Array of Arrays\r\n return groupInfoMap;\r\n }\r\n static setLinkPropertiesIfAny = (_compThisRef, _fieldConfig) => {\r\n\r\n switch (_fieldConfig.fieldID) {\r\n case AgreementTabService.recipientColPorzioGstProfileId:\r\n _fieldConfig[DynamicControlService.onClickCallbackKey] = (e) => {\r\n AgreementTabService.showProfileDetailDialog(_compThisRef, _fieldConfig, e.value, _compThisRef.state.prid,_compThisRef.state.porziogstprofileid);\r\n }\r\n break;\r\n default: break;\r\n }\r\n\r\n }\r\n static showProfileDetailDialog = (_compThisRef, _fieldConfig, _value, _profileId,_porziogstprofileid) => {\r\n if (_value && DataService.isValidNumber(_profileId)) {\r\n _compThisRef.setState({\r\n targetPidFieldConfig: _fieldConfig,\r\n profileIdForDetailsDialog: _profileId,\r\n gstProfileIdForDetailsDialog:_porziogstprofileid,\r\n showProfileDetailDialog: true,\r\n });\r\n // }\r\n } else { ToastService.showError(\"Not a valid Profile\"); }\r\n }\r\n\r\n static hardcodeFields = (isNew, _templateData) => {\r\n if (DataService.hasValue(_templateData)) {\r\n let index = 1000;\r\n // delete duplicate key\r\n const duplicateAgreementStatusKey = DataService.getFirstOrDefault((Object.keys(_templateData) || []).filter(x => x.toLowerCase().includes(\"agreement status\")));\r\n if (duplicateAgreementStatusKey) { delete _templateData[duplicateAgreementStatusKey]; }\r\n\r\n // template status\r\n _templateData.AgreementStatus = {\r\n \"isReadOnly\": false,\r\n \"fieldID\": this.agreementStatusFieldId,\r\n \"fielD_NAME\": \"Agreement Status\",\r\n \"fielD_DESCRIPTION\": \"Hardcoded field\",\r\n \"fieldlength\": 100,\r\n \"field_Type_ID\": 5,\r\n \"entityName\": \"agreementstatusid\",\r\n \"fielD_ALIASNAME\": \"agreementstatusid\",\r\n \"iS_PLSREQUIRED\": true,\r\n \"isCustomField\": false,\r\n \"lookUpList\": \"\",\r\n \"toolTip\": \"Agreement Status\",\r\n \"mappedlovidfield\": \"agreementstatusid\",\r\n \"autoSelect\": isNew, // autoselect for new\r\n \"hideEmpty\": true, // don't show none\r\n \"customLOVList\": DynamicControlService.transformToCustomLovList(\r\n isNew ? [LookupService._AGREEMENT_STATUSES[1]] : LookupService._AGREEMENT_STATUSES, \"id\", \"value\", \"agreementstatusid\"),\r\n \"customAgreementLOVList\": [],\r\n \"customBoolean\": false,\r\n \"grouprenderid\": 1\r\n }\r\n\r\n _templateData.UserPersonalCurrency = {\r\n \"isReadOnly\": true,\r\n \"fieldID\": this.userPersonalCurrencyFieldId,\r\n \"fielD_NAME\": \"Converted Currency\",\r\n \"fielD_DESCRIPTION\": \"Hardcoded filed\",\r\n \"fieldlength\": 100,\r\n \"field_Type_ID\": 2,\r\n \"entityName\": \"userpersonalcurrency\",\r\n \"fielD_ALIASNAME\": \"userpersonalcurrency\",\r\n \"iS_PLSREQUIRED\": false,\r\n \"isCustomField\": false,\r\n \"lookUpList\": \"\",\r\n \"toolTip\": \"Converted Currency\",\r\n // \"mappedlovidfield\": \"null\", If this has a value it will be the Control Name for Fomik; otherwise fielD_ALIASNAME\r\n \"autoSelect\": isNew, // autoselect for new\r\n \"hideEmpty\": true, // don't show none\r\n \"customLOVList\": null,\r\n \"customProfileLOVList\": [],\r\n \"customBoolean\": false,\r\n \"grouprenderid\": this.staticFieldGroupKey\r\n }\r\n\r\n _templateData.ConvertedCurrencyTotalAmount = {\r\n \"isReadOnly\": true,\r\n \"fieldID\": this.convertedCurrencyTotalAmountFieldId,\r\n \"fielD_NAME\": \"Converted Total Amount\",\r\n \"fielD_DESCRIPTION\": \"Hardcoded filed\",\r\n \"fieldlength\": 100,\r\n \"field_Type_ID\": 2,\r\n \"entityName\": \"convertedcurrencytotalamount\",\r\n \"fielD_ALIASNAME\": \"convertedcurrencytotalamount\",\r\n \"iS_PLSREQUIRED\": false,\r\n \"isCustomField\": false,\r\n \"lookUpList\": \"\",\r\n \"toolTip\": \"Converted Total Amount\",\r\n // \"mappedlovidfield\": \"null\",\r\n \"autoSelect\": isNew, // autoselect for new\r\n \"hideEmpty\": true, // don't show none\r\n \"customLOVList\": null,\r\n \"customProfileLOVList\": [],\r\n \"customBoolean\": false,\r\n \"grouprenderid\": this.staticFieldGroupKey\r\n }\r\n\r\n }\r\n }\r\n}","import { AgGridColumnExt } from \"../../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridService } from \"../../../../../shared/services/ag-grid/agGridService\";\r\nimport ApiService from \"../../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../../shared/types/enums\"\r\n\r\nexport default class RecipientSearchDialogService {\r\n\r\n static searchOBS = (_tenantId, _searchValue) => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Profiles/FetchProfilesBySearch/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\"\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n {\r\n headerName: \"Select\",\r\n field: \"isSelected\",\r\n editable: true,\r\n width: 80,\r\n minWidth: 80,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n cellRenderer: \"isSelectedCellRenderer\",\r\n cellRendererParams: { onChange: (_cellRef, _data) => { _onSelectCallback(_data); } }\r\n },\r\n AgGridColumnExt.GET(false, \"text\", \"companyProfileId\", \"Company Profile ID\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").minWidth(150).cellRenderer(\"childMessageRendererComponent\").headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileType\", \"Profile Type\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpinumber\", \"NPI Number\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"uslicensestate\", \"US License State\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usstatelicensenumber\", \"US License Nnumber\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"addresS1\", \"Address\").minWidth(150).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"city\", \"City\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"province\", \"Province\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"country\", \"Country\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileStatusKey\", \"Profile Status\").minWidth(104).headerClass(\"center-text\").centerAlignText().SET(),\r\n // AgGridService.getTextColumn(false, \"Company Profile ID\", \"companyProfileId\"),\r\n // AgGridService.getTextColumn(false, \"Porzio GST Profile ID\", \"porziogstprofileid\"),\r\n // AgGridService.getTextColumn(false, \"Last Name\", \"lastName\"),\r\n // AgGridService.getTextColumn(false, \"First Name\", \"firstName\"),\r\n // AgGridService.getTextColumn(false, \"Organization Name\", \"organizationName\"),\r\n // // AgGridService.getTextColumn(false, \"Country\", \"CountryName\"),\r\n // AgGridService.getTextColumn(false, \"Country\", \"country\"),\r\n // AgGridService.getTextColumn(false, \"Profile Status\", \"profileStatus\"),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, InputBase, Box } from \"@material-ui/core\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../../../shared/store/authProvider\";\r\nimport { ResultStatus } from \"../../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../../shared/services/dataService\";\r\nimport LookupService from \"../../../../../shared/services/lookupService\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\nimport { AgGridColumnExt } from \"../../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../../shared/services/theme/matIconService\";\r\nimport RecipientSearchDialogService from \"./recipientSearchDialogService\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../../shared/services/ag-grid/agGridUtil\";\r\n\r\nclass RecipientSearchDialogComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n // ept till component's unMount\r\n scopedSubscriptions = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n profileList: [],\r\n selectedProfile: null,\r\n lastSearchedValue: '',\r\n errorMessage: null,\r\n agGridRecipientUtils: new AgGridUtil(\"lastName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n\r\n componentDidMount() {\r\n var searchOBS = this.searchSubject.pipe(\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((_searchValue) => from(this.searchRecipient(_searchValue)))\r\n );\r\n\r\n this.scopedSubscriptions.add(searchOBS.subscribe());\r\n }\r\n\r\n searchRecipient = (_searchValue) => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n if (DataService.stringShouldBe(_searchValue, 3)) {\r\n this.setState({ searchResult: ResultStatus.LOADING, profileList: [], selectedProfile: null, lastSearchedValue: _searchValue });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n RecipientSearchDialogService.searchOBS(this.context.user.tenantId, _searchValue),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]\r\n ).subscribe(\r\n ([_profileList, _countryList]) => {\r\n if (DataService.hasElements(_profileList)) {\r\n _profileList.forEach(x => { x.isSelected = false; });\r\n }\r\n this.setState({\r\n searchResult: DataService.hasElements(_profileList) ? ResultStatus.SUCCESS : ResultStatus.LOADED,//-> no records\r\n profileList: _profileList,\r\n });\r\n },\r\n (err) => { this.setState({ searchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n } else {\r\n this.setState({ searchResult: ResultStatus.NOT_LOADED });\r\n }\r\n return [];\r\n }\r\n\r\n // render\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n Search Recipient\r\n {/* Search */}\r\n
\r\n
{MatIconService.SEARCH}
\r\n { this.searchSubject.next(e.target.value); }} />\r\n
\r\n {LayoutService.getIconButton(DataService.isNullOrUndefined(this.state.selectedProfile), MatIconService.OK, \"Save\", () => {\r\n\r\n\r\n if (DataService.hasValue(this.state.selectedProfile)) {\r\n var retObj = {};\r\n const keys = Object.keys(this.state.selectedProfile);\r\n keys.forEach(key => { retObj[key.toLowerCase()] = this.state.selectedProfile[key]; });\r\n this.setState({\r\n searchResult: ResultStatus.NOT_LOADED, //-> no records\r\n profileList: [],\r\n });\r\n\r\n this.props.onClose(retObj);\r\n } else { this.props.onClose(null) }\r\n }, \"inherit\", \"keyActionSave\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => { this.props.onClose(null) }, \"secondary\", \"keyActionCancel1\")}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n
\r\n );\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.searchResult) {\r\n case ResultStatus.SAVING: return ;\r\n case ResultStatus.LOADING: return ;\r\n case ResultStatus.NOT_LOADED: return ;\r\n case ResultStatus.LOADED: return ;\r\n case ResultStatus.SUCCESS:\r\n return (
\r\n
\r\n {\r\n this.setState({ selectedProfile: _data });\r\n })}\r\n suppressClickEdit={true}\r\n frameworkComponents={this.state.agGridRecipientUtils.frameworkComponents}\r\n onGridReady={(params) => { this.state.agGridRecipientUtils.setGridParams(params, true); }}\r\n gridOptions={{\r\n ...AgGridColumnExt.getGridOptions(56),\r\n context: { componentParent: this },\r\n suppressContextMenu: true,\r\n rowHeight: 32,\r\n }}\r\n />\r\n
\r\n
);\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.searchRecipient(this.state.lastSearchedValue); }} />);\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(RecipientSearchDialogComponent);","import React from \"react\";\r\nimport { ReplaySubject, combineLatest, of } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { Box, Divider, Typography, Grid, LinearProgress } from \"@material-ui/core\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\n\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { API_ENDPOINT, CrudAction, ENTITY_FIELD_TYPE, ENTITY_TYPE, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport DynamicControlService from \"../../../../shared/services/dynamicControlService\";\r\n\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport AgreementTabService from \"./agreementTabService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport RecipientSearchDialogComponent from \"../agreement-tab/recipient-information-dialog/recipientSearchDialogComponent\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport RuleSummaryService from \"../rule-summary/ruleSummaryService\";\r\nimport ProfileDetailDialogComponent from \"../../../profile-center/profile-detail/profileDetailDialogComponent\";\r\n\r\nclass AgreementTabComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n // isReadOnly: true, not applicable here since it will be sent as a props by the parent Container\r\n isNew: props.inputAction === CrudAction.CREATE,\r\n selAgreementId: props.modalAgNode?.agreementId ?? \"\",\r\n selPorzioGSTAgreementId: props.modalAgNode?.porzioGstAgreementId ?? \"\",\r\n // 1) source-name\r\n fetchAgreementDataResult: ResultStatus.NOT_LOADED,\r\n sourceSystemList: [],\r\n\r\n templateFetchResult: ResultStatus.NOT_LOADED,\r\n allGroupFieldsMap: new Map(),\r\n dynamicControlsValidationSchema: Yup.object().shape({}),\r\n\r\n showSearchRecipientDialog: false,\r\n recipientProfileInfo: {},\r\n recipientIdentifierInfo: {},\r\n recipientAddressInfo: {},\r\n };\r\n }\r\n\r\n componentWillUnmount() { }\r\n componentDidMount() {\r\n LookupService.fetchCommonLookups(this.context);\r\n this.fetchAgreementData();\r\n }\r\n\r\n\r\n //#region SourceSystem DropDown\r\n\r\n // api\r\n fetchAgreementData = () => {\r\n this.oSubscriptions.cancelAll();\r\n\r\n // set the loading state\r\n this.setState({ fetchAgreementDataResult: ResultStatus.LOADING });\r\n // fetch-source-list\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n // get source system list\r\n LookupService.getSourceSystemsByEntityAsOBS(this.context.user.tenantId, ENTITY_TYPE.AGREEMENT),\r\n // for new don't get the data, set it null (addressList & contactsList are included)\r\n (this.state.isNew ? of(null) : LookupService.getAgreementTabDetailsWithErrorInfoAsOBS(this.context.user.tenantId, this.state.selAgreementId)),\r\n (this.state.isNew ? of(null) : RuleSummaryService.getRuleSummaryAsOBS(this.context.user.tenantId, this.state.selAgreementId)),\r\n LookupService.getUserCurrencyAsOBS(this.context.user.userId),\r\n LookupService.fetchCurrenciesAsOBS(),\r\n ]).subscribe(\r\n // success result\r\n ([_countryList, _sourceSystemList, _initialValuesOrNull, _rulesSummaryOrNull, _userCurrencyObject, _currencyList,]) => {\r\n\r\n // converting all keys to lowercase\r\n if (!this.state.isNew) {\r\n const keys = Object.keys(_initialValuesOrNull);\r\n let lowerCaseObj = {};\r\n keys.forEach(key => {\r\n lowerCaseObj[key.toLowerCase()] = _initialValuesOrNull[key];\r\n });\r\n _initialValuesOrNull = lowerCaseObj;\r\n }\r\n\r\n if (_initialValuesOrNull) {\r\n _initialValuesOrNull['countryid'] = _initialValuesOrNull['country']; // api is returning countryid in country\r\n\r\n // 1/2) parse error fileds\r\n _initialValuesOrNull = DynamicControlService.parseErrorFields(_initialValuesOrNull);\r\n _initialValuesOrNull = DynamicControlService.parseCustomFields(_initialValuesOrNull);\r\n _initialValuesOrNull[\"totalamount\"] = Number(_initialValuesOrNull?.totalamount).toFixed(2);\r\n _initialValuesOrNull[\"userpersonalcurrency\"] = _userCurrencyObject.currencyNameFormatted;\r\n _initialValuesOrNull[\"convertedcurrencytotalamount\"] = \"n/a - base or conversion currency not found\";\r\n // append error information\r\n _initialValuesOrNull.erroredFields = _rulesSummaryOrNull || [];\r\n }\r\n\r\n if (_currencyList.find(o => o.currencyid === _initialValuesOrNull?.basecurrencyid)) {\r\n this.oSubscriptions.add(\r\n LookupService.getConvertedTotalAmountAsOBS(this.context.user.tenantId, _currencyList.find(o => o.currencyid === _initialValuesOrNull.basecurrencyid).currencyAcronym, _userCurrencyObject.currencyAcronym, _initialValuesOrNull.totalamount).subscribe((_convertedTotalAmount) => {\r\n\r\n _initialValuesOrNull[\"convertedcurrencytotalamount\"] = DataService.isStringNullOrEmpty(_convertedTotalAmount) ? \"n/a - conversion service not available\" : _convertedTotalAmount;\r\n\r\n this.setState({\r\n prid: _initialValuesOrNull?.prid,\r\n porziogstprofileid: _initialValuesOrNull?.porziogstprofileid,\r\n countryList: _countryList,\r\n countryCellSource: DataService.arrayToObject(_countryList, \"id\", \"value\"),\r\n\r\n sourceSystemList: DataService.getKeyValueCollection(_sourceSystemList, \"sourceId\", \"sourceName\", false),\r\n\r\n initialValuesOrNull: _initialValuesOrNull,\r\n }, () => {\r\n this.onSourceSystemChange(this.state.isNew ? null : _initialValuesOrNull.sourceid, true);\r\n this.setState({ fetchAgreementDataResult: ResultStatus.LOADED });\r\n this.props.onAgreementTabLoaded(_initialValuesOrNull);\r\n });\r\n }));\r\n } else {\r\n this.setState({\r\n prid: _initialValuesOrNull?.prid,\r\n porziogstprofileid: _initialValuesOrNull?.porziogstprofileid,\r\n countryList: _countryList,\r\n countryCellSource: DataService.arrayToObject(_countryList, \"id\", \"value\"),\r\n\r\n sourceSystemList: DataService.getKeyValueCollection(_sourceSystemList, \"sourceId\", \"sourceName\", false),\r\n\r\n initialValuesOrNull: _initialValuesOrNull,\r\n }, () => {\r\n this.onSourceSystemChange(this.state.isNew ? null : _initialValuesOrNull.sourceid, true);\r\n this.setState({ fetchAgreementDataResult: ResultStatus.LOADED });\r\n this.props.onAgreementTabLoaded(_initialValuesOrNull);\r\n });\r\n }\r\n },\r\n // on error\r\n (err) => {\r\n ToastService.showError(`Error Occured while Loading the Agreement`);\r\n this.setState({ fetchAgreementDataResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n\r\n }\r\n\r\n\r\n // formik\r\n getSourceSystemInitialValues() {\r\n return { sourceSystemId: this.state.isNew ? \"\" : this.state.initialValuesOrNull.sourceid };\r\n }\r\n\r\n sourceSystemValidationSchema = Yup.object().shape({});\r\n getSourceSystemValidationSchema() {\r\n this.sourceSystemValidationSchema = Yup.object().shape({\r\n sourceSystemId: LayoutService.getNullableValidation(Yup.number().required(\"Required\"))\r\n });\r\n return this.sourceSystemValidationSchema;\r\n }\r\n\r\n\r\n // render\r\n TAB_PERMISSIONS = RolePermissionService.AGREEMENT_DETAIL;\r\n render() {\r\n const { classes } = this.props;\r\n // set the props for parent's validation & post logic\r\n this.fPropsDynamic = null;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n\r\n if (this.props.inputAction !== CrudAction.CREATE && RolePermissionService.AGREEMENT_DETAIL.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchAgreementDataResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n this.setState({ showProfileDetailDialog: false })}\r\n modalAgNode={{\r\n \"prid\": this.state.profileIdForDetailsDialog,\r\n \"porziogstprofileid\": this.state.gstProfileIdForDetailsDialog\r\n }}\r\n />\r\n {/* Recipient Search Dialog Component Tab */}\r\n {\r\n if (DataService.isNullOrUndefined(selectedProfile)) {\r\n this.setState({ showSearchRecipientDialog: false }); // just hide\r\n } else {\r\n // show the progress & hide the search dialog\r\n this.setState({ showSearchRecipientDialog: false, isRecipientInfoInProgress: true });\r\n\r\n this.isRecipientMatched = true;\r\n this.fPropsDynamic.setFieldValue(\"porziogstprofileid\", selectedProfile[\"porziogstprofileid\"], true); // only the id,.. leave the other fields with old values\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getProfileTabDetailsWithErrorInfoAsOBS(this.context.user.tenantId, selectedProfile[\"prid\"]),\r\n ApiService.getOBS(API_ENDPOINT.CORE, `/Profiles/FetchProfileIdentifier?tenantId=${this.context.user.tenantId}&prid=${selectedProfile[\"prid\"]}&pageNum=1&rowsPerPage=100`)\r\n ]).subscribe(([_profile, _identifier]) => {\r\n const sortedIdentifiers = _identifier.length === 0 ? null : _identifier.sort((a, b) => b.profileIdentifierId - a.profileIdentifierId)[0];\r\n //const addressInfo = _profile.addresslist.filter(a => a.isprimary === true)[0];\r\n const addressInfo = _profile.addresslist.length === 0 ? null : _profile.addresslist.length === 1 ? _profile.addresslist[0]\r\n : _profile.addresslist.some(x => x.isprimary === true) ? _profile.addresslist.filter(add => add.isprimary === true)[0] :\r\n _profile.addresslist.sort((a, b) => { return b.updateddate - a.updateddate })[0];\r\n this.setState({\r\n prid: selectedProfile[\"prid\"],\r\n recipientProfileInfo: _profile,\r\n recipientIdentifierInfo: sortedIdentifiers,\r\n recipientAddressInfo: addressInfo,\r\n showSearchRecipientDialog: false,\r\n }, () => {\r\n this.fPropsDynamic.setFieldValue(\"companyprofileid\", this.state.recipientProfileInfo.companyprofileid || '', false);\r\n this.fPropsDynamic.setFieldValue(\"profiletypeid\", this.state.recipientProfileInfo.profiletypeid || '', false);\r\n this.fPropsDynamic.setFieldValue(\"recipientcategoryid\", this.state.recipientProfileInfo.profilecategoryid || '', false);\r\n this.fPropsDynamic.setFieldValue(\"organizationname\", this.state.recipientProfileInfo.organizationname || '', false);\r\n this.fPropsDynamic.setFieldValue(\"suffix\", this.state.recipientProfileInfo.suffix || '', false);\r\n this.fPropsDynamic.setFieldValue(\"lastname\", this.state.recipientProfileInfo.lastname || '', false);\r\n this.fPropsDynamic.setFieldValue(\"middlename\", this.state.recipientProfileInfo.middlename || '', false);\r\n this.fPropsDynamic.setFieldValue(\"firstname\", this.state.recipientProfileInfo.firstname || '', false);\r\n this.fPropsDynamic.setFieldValue(\"prefix\", this.state.recipientProfileInfo.prefix || '', false);\r\n this.fPropsDynamic.setFieldValue(\"credentialsid\", this.state.recipientProfileInfo.credentialsid || '', false);\r\n this.fPropsDynamic.setFieldValue(\"specialtyid\", this.state.recipientProfileInfo.specialtyid || '', false);\r\n if (this.state.recipientAddressInfo !== null) {\r\n this.fPropsDynamic.setFieldValue(\"address1\", this.state.recipientAddressInfo.addresS1 || '', false);\r\n this.fPropsDynamic.setFieldValue(\"address2\", this.state.recipientAddressInfo.addresS2 || '', false);\r\n this.fPropsDynamic.setFieldValue(\"address3\", this.state.recipientAddressInfo.addresS3 || '', false);\r\n this.fPropsDynamic.setFieldValue(\"address4\", this.state.recipientAddressInfo.addresS4 || '', false);\r\n this.fPropsDynamic.setFieldValue(\"city\", this.state.recipientAddressInfo.city || '', false);\r\n this.fPropsDynamic.setFieldValue(\"province\", this.state.recipientAddressInfo.province || '', false);\r\n this.fPropsDynamic.setFieldValue(\"countryid\", this.state.recipientAddressInfo.countryId || '', false);\r\n this.fPropsDynamic.setFieldValue(\"postalcode\", this.state.recipientAddressInfo.postalcode || '', false);\r\n }\r\n this.fPropsDynamic.setFieldValue(\"usnpinumber\", this.state.recipientProfileInfo.usnpinumber || '', false);\r\n this.fPropsDynamic.setFieldValue(\"uslicensestate\", this.state.recipientProfileInfo.uslicensestate || '', false);\r\n this.fPropsDynamic.setFieldValue(\"usstatelicensenumber\", this.state.recipientProfileInfo.usstatelicensenumber || '', false);\r\n this.fPropsDynamic.setFieldValue(\"ustaxidnumber\", this.state.recipientProfileInfo.ustaxidnumber || '', false);\r\n if (this.state.recipientIdentifierInfo !== null && this.state.recipientIdentifierInfo !== undefined) {\r\n this.fPropsDynamic.setFieldValue(\"recipientidentifiercountryid\", this.state.recipientIdentifierInfo.countryId || '', false);\r\n this.fPropsDynamic.setFieldValue(\"recipientidentifiertypeid\", this.state.recipientIdentifierInfo.porzioGSTIdentifierTypeId || '', false);\r\n }\r\n });\r\n\r\n ToastService.showInfo(\"Recipient details loaded.\");\r\n this.setState({ isRecipientInfoInProgress: false });\r\n\r\n })\r\n );\r\n }\r\n }}\r\n />\r\n {/* SourceSystem Dropdown*/}\r\n \r\n {(fPropsSourceSystem) => (\r\n
\r\n \r\n {LayoutService.getDropDown((this.props.isReadOnly || !this.state.isNew), classes.dialogControl, classes.menuPaper, fPropsSourceSystem, this.sourceSystemValidationSchema, \"sourceSystemId\", \"Source System\",\r\n this.state.sourceSystemList, \"id\", \"text\", null, true, \"48%\",\r\n (_formikProps, _newSourceSystemId) => { this.onSourceSystemChange(_newSourceSystemId, false); })\r\n }\r\n \r\n
\r\n )}\r\n
\r\n {/* Render Dynamic Controls */}\r\n {this.renderDynamicControls(classes)}\r\n {}\r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchAgreementData(); }} />);\r\n }\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Dynamic controls\r\n\r\n // api\r\n onSourceSystemChange = (_newSourceSystemId, _force) => {\r\n this.oSubscriptions.cancelAll();\r\n\r\n if (_force || this.state.selSourceSystemId !== _newSourceSystemId) {\r\n if (DataService.hasValidValue(_newSourceSystemId)) {\r\n //CLEAR CAHCE etc,...\r\n AgreementTabService.INIT();\r\n DynamicControlService.CLEAR();\r\n this._setTemplateFetchState(ResultStatus.LOADING, _newSourceSystemId, null, () => {\r\n this.oSubscriptions.add(\r\n LookupService.getTemplateBySourceIdAsOBS(this.context.user.tenantId, _newSourceSystemId).subscribe(\r\n // success result\r\n (_templateData) => {\r\n // get grouped filed configs\r\n const groupFieldsMap = AgreementTabService.getGroupFieldsMap(this, this.state.isNew, _templateData, \"grouprenderid\", \"fieldID\");\r\n this._setTemplateFetchState(ResultStatus.LOADED, _newSourceSystemId, groupFieldsMap, () => {\r\n // ToastService.showInfo(`${this.state.isNew ? \"Template\" : \"Data\"} Loaded`, 1000);\r\n });\r\n },\r\n // on error\r\n (err) => {\r\n ToastService.showError(`Error Occured while Loading the ${this.state.isNew ? \"Template\" : \"Data\"}`);\r\n this._setTemplateFetchState(ResultStatus.ERROR, _newSourceSystemId, null, () => { });\r\n }\r\n )\r\n );\r\n });\r\n } else { this._setTemplateFetchState(ResultStatus.LOADED, null, null, () => { }); } // clear selectedSourceSystemId\r\n }\r\n }\r\n\r\n // render\r\n fPropsDynamic = null;\r\n renderDynamicControls = (_classes) => {\r\n switch (this.state.templateFetchResult) {\r\n case ResultStatus.NOT_LOADED: return (<>);\r\n case ResultStatus.LOADING: return ();\r\n // Good to Render the components\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n if (!DataService.hasValidValue(this.state.selSourceSystemId)) {\r\n return ();\r\n }\r\n else if (DataService.mapHasNoElements(this.state.allGroupFieldsMap)) {\r\n return ( { this.onSourceSystemChange(this.state.selSourceSystemId, true); }} />);\r\n }\r\n else {\r\n return (\r\n \r\n {(_fPropsDynamic) => (\r\n
\r\n \r\n <>\r\n {this.renderData(_classes, _fPropsDynamic)}\r\n \r\n \r\n
\r\n )}\r\n
\r\n );\r\n }\r\n // Error\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.onSourceSystemChange(this.state.selSourceSystemId, true); }} />);\r\n }\r\n }\r\n //#endregion\r\n\r\n\r\n renderData = (_classes, _fPropsDynamic) => {\r\n this.fPropsDynamic = _fPropsDynamic;\r\n\r\n\r\n // 2/2) Map Errors\r\n DynamicControlService.setErrors(_fPropsDynamic, this.state.initialValuesOrNull);\r\n\r\n var lastGroupIndex = 0;\r\n // filter, static & dynamic fields\r\n const oRET = DataService.getMapKeys(this.state.dynamicControlFieldsMap).filter((_mapKey) =>\r\n _mapKey !== AgreementTabService.recipientInformationFieldGroupKey &&\r\n this.state.dynamicControlFieldsMap.get(_mapKey).fieldConfigs.length > 0 // empty check\r\n ).map((_mapKey, _groupIndex) => {\r\n lastGroupIndex = _groupIndex;\r\n const groupInfo = this.state.dynamicControlFieldsMap.get(_mapKey);\r\n return (\r\n \r\n \r\n {DataService.isStringNullOrEmpty(groupInfo.name) ? null : {groupInfo.name}}\r\n {\r\n groupInfo.fieldConfigs.map((_fconfig, _fieldIndex) => {\r\n return DynamicControlService.getControl(this.props.isReadOnly, _classes, _fPropsDynamic, this.state.initialValuesOrNull, this.state.dynamicControlsValidationSchema, _fieldIndex, _fconfig);\r\n })\r\n }\r\n \r\n \r\n \r\n );\r\n });\r\n\r\n //Recipient Information\r\n oRET.push([\r\n AgreementTabService.recipientInformationFieldGroupKey,\r\n ].filter((_mapKey) => this.state.dynamicControlFieldsMap.get(_mapKey).fieldConfigs.length > 0 // empty check\r\n ).map((_mapKey, _groupIndex) => {\r\n lastGroupIndex = _groupIndex;\r\n const groupInfo = this.state.dynamicControlFieldsMap.get(_mapKey);\r\n return (\r\n \r\n \r\n {DataService.isStringNullOrEmpty(groupInfo.name) ? null :\r\n // Recipient Information - header icons\r\n \r\n {groupInfo.name}\r\n {/* {this.isRecipientMatched ? null : Unmatched Recipient} */}\r\n \r\n {/* {LayoutService.getIconButton(this.props.isReadOnly, MatIconService.IDEA_BULB_32, \"Possible Matches\", () => {\r\n \r\n }, \"inherit\", \"\", \"bottom\", { color: \"#F57C00\" })} */}\r\n {LayoutService.getIconButton(this.props.isReadOnly, MatIconService.SEARCH, \"Search\", () => {\r\n this.setState({ showSearchRecipientDialog: true })\r\n }, \"secondary\", \"\", \"bottom\", { fontSize: 30, marginTop: 4 })}\r\n \r\n \r\n }\r\n {this.state.isRecipientInfoInProgress ? : null}\r\n {\r\n // Recipient Information - controls\r\n groupInfo.fieldConfigs.map((_fconfig, _fieldIndex) => {\r\n return DynamicControlService.getControl(\r\n _mapKey === AgreementTabService.recipientInformationFieldGroupKey ? true : this.props.isReadOnly, // recipientcontrols should always be readonly\r\n _classes, _fPropsDynamic, this.state.initialValuesOrNull, this.state.dynamicControlsValidationSchema, _fieldIndex, _fconfig);\r\n })\r\n }\r\n \r\n \r\n \r\n );\r\n }));\r\n\r\n // RETURN\r\n return oRET;\r\n }\r\n\r\n\r\n //#region Utils\r\n _setTemplateFetchState = (_templateFetchResult, _sourceSystemId, _groupFieldsMap, _callback = () => { }) => {\r\n\r\n const _dynamicControlFieldsMap = DataService.getMapByKeys(_groupFieldsMap,\r\n [AgreementTabService.filterFieldGroupKey,\r\n AgreementTabService.staticFieldGroupKey,\r\n AgreementTabService.eventFieldGroupKey,\r\n AgreementTabService.recipientInformationFieldGroupKey,\r\n AgreementTabService.otherFieldGroupKey,\r\n AgreementTabService.customFieldGroupKey\r\n ]);\r\n\r\n this.isRecipientMatched = DataService.isNullOrUndefined(this.state.initialValuesOrNull) ? false : this.state.initialValuesOrNull[\"isrecipientmatch\"];\r\n this.setState({\r\n selSourceSystemId: _sourceSystemId,\r\n templateFetchResult: _templateFetchResult,\r\n allGroupFieldsMap: _groupFieldsMap,\r\n dynamicControlFieldsMap: _dynamicControlFieldsMap,\r\n dynamicControlInitialValues: DynamicControlService.getIntitialValues(this.state.isNew, _dynamicControlFieldsMap, this.state.initialValuesOrNull),\r\n dynamicControlsValidationSchema: DynamicControlService.getValidationSchema(_dynamicControlFieldsMap),\r\n }, _callback);\r\n }\r\n //#endregion\r\n\r\n /** 2/4 Required */\r\n isDirtyCallback = () => {\r\n // do any additional checkings if needed\r\n if (this.fPropsDynamic) {\r\n return this.fPropsDynamic.dirty;\r\n } else {\r\n return false;\r\n }\r\n }\r\n /** 3/4 Required in Parent */\r\n resetCallback = (_updateFormWithNewValues = false) => {\r\n // modified on 02-03-2022 as per ticket PP2-1241\r\n if (this.fPropsDynamic) {\r\n if (_updateFormWithNewValues) {\r\n this.fPropsDynamic.resetForm({ values: { ...this.fPropsDynamic.values } });\r\n }\r\n else {\r\n this.fPropsDynamic.resetForm();\r\n }\r\n }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n if (DataService.isNullOrUndefined(this.fPropsDynamic) || this.fPropsDynamic.isSubmitting) {\r\n return of(null);\r\n }\r\n else {\r\n var oReturnSubject = new ReplaySubject(); // 1st\r\n var oValidationSubject = new ReplaySubject(); // 2nd\r\n\r\n this._validate(oValidationSubject);\r\n oValidationSubject.asObservable().subscribe((_dataToPost) => {\r\n if (_dataToPost) {\r\n ApiService.postOBS(API_ENDPOINT.CORE, \"/Agreement/SaveAgreement\", JSON.stringify(_dataToPost))\r\n .subscribe(\r\n (_successResult) => {\r\n ToastService.showSuccess(\"Agreement Saved\");\r\n oReturnSubject.next(true);\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while saving\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n );\r\n } else {\r\n ToastService.showWarning(\"Please recheck your Input\");\r\n oReturnSubject.next(\"validation_error\");\r\n }\r\n });\r\n\r\n // return the subject as observable\r\n return oReturnSubject.asObservable(); // 3rd\r\n }\r\n }\r\n\r\n _validate = async (_oSubject) => {\r\n // if (!this.state.isNew) { // no validation for edit\r\n // _oSubject.next(this._getDataToPost());\r\n // } else {\r\n // await this.state.dynamicControlsValidationSchema.validate(this.fPropsDynamic.values, { abortEarly: false })\r\n // .then((x) => {\r\n // _oSubject.next(this._getDataToPost());\r\n // })\r\n // .catch((erroObj) => {\r\n // if (erroObj.inner) { erroObj.inner.forEach(err => { this.fPropsDynamic.setFieldError(err.path, err.message); }); }\r\n // _oSubject.next(null); // error\r\n // });\r\n // }\r\n _oSubject.next(this._getDataToPost());\r\n }\r\n\r\n isRecipientMatched = false;\r\n _getDataToPost = () => {\r\n //---Mandatory-Fields---------------\r\n var dataToPost = {\r\n tenantid: this.context.user.tenantId,\r\n userId: this.context.user.userId,\r\n userType: this.context.user.userTypeId,\r\n uid: this.context.user.uid,\r\n prid: this.state.prid ? this.state.prid : 0,\r\n agreementid: this.state.isNew ? 0 : this.state.selAgreementId,\r\n porziogstagreementid:this.state.isNew ? \"\" : this.state.selPorzioGSTAgreementId,\r\n sourceid: this.state.selSourceSystemId,\r\n recordid: this.state.initialValuesOrNull ? this.state.initialValuesOrNull.recordid : null\r\n };\r\n\r\n\r\n //---Static-Fields---------------\r\n const staticFieldConfigs = [\r\n ...this.state.dynamicControlFieldsMap.get(AgreementTabService.filterFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(AgreementTabService.staticFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(AgreementTabService.recipientInformationFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(AgreementTabService.otherFieldGroupKey).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(AgreementTabService.eventFieldGroupKey).fieldConfigs,\r\n ];\r\n staticFieldConfigs.forEach(fieldConfig => {\r\n const _mappedFieldName = DynamicControlService.getMappedFieldName(fieldConfig) + \"\";\r\n var _fieldValue = this.fPropsDynamic.values[_mappedFieldName];\r\n if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.BOOLEAN) {\r\n dataToPost[_mappedFieldName] = DataService.parseBoolean(_fieldValue);\r\n }\r\n else if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.NUMERIC || fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DECIMAL) {\r\n dataToPost[_mappedFieldName] = DataService.getNumberOrDefault(_fieldValue, null);\r\n }\r\n else if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.LOV) {\r\n // For Lov both agreementstatusId & agreementstatus keys should be set\r\n _fieldValue = _fieldValue > 0 ? _fieldValue : 0; // if null then use the 0 based lovKey\r\n dataToPost[_mappedFieldName] = _fieldValue; // Id eg: agreementstatusId\r\n if (_mappedFieldName === 'countryid') { // since api not impl in a consistent way\r\n dataToPost['country'] = _fieldValue;\r\n }\r\n else if (_mappedFieldName.endsWith(\"id\")) {\r\n const _lovStringFieldName = _mappedFieldName.substring(0, _mappedFieldName.length - 2); // eg: agreementstatus\r\n const lovObj = DataService.getFirstOrDefault(fieldConfig.customLOVList.filter((x) => x.lovId === _fieldValue));\r\n dataToPost[_lovStringFieldName] = lovObj ? lovObj.lovKey : \"\";\r\n }\r\n } else {\r\n dataToPost[_mappedFieldName] = _fieldValue;\r\n }\r\n });\r\n\r\n // recipientInformation\r\n const recipientProfileId = this.fPropsDynamic.values[\"porziogstprofileid\"];\r\n if (DataService.hasValidValue(recipientProfileId)) {\r\n dataToPost['porziogstprofileid'] = recipientProfileId;\r\n dataToPost['isrecipientmatch'] = this.isRecipientMatched;\r\n }\r\n\r\n\r\n //---Custom-Fields---------------\r\n dataToPost.customfields = this.state.dynamicControlFieldsMap.get(AgreementTabService.customFieldGroupKey).fieldConfigs.map(fieldConfig => {\r\n var _fieldValue = this.fPropsDynamic.values[DynamicControlService.getMappedFieldName(fieldConfig)];\r\n if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.LOV) {\r\n _fieldValue = _fieldValue > 0 ? _fieldValue : 0;\r\n const lovObj = DataService.getFirstOrDefault(fieldConfig.customLOVList.filter((x) => x.lovId === _fieldValue));\r\n return { 'FIELDID': fieldConfig.fieldID, 'FIELDNAME': fieldConfig.fielD_ALIASNAME, 'FIELDVALUE': _fieldValue, 'FIELDLOVKEY': lovObj ? lovObj.lovKey : \"\" };\r\n } else if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE_TIME || fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE) {\r\n return { 'FIELDID': fieldConfig.fieldID, 'FIELDNAME': fieldConfig.fielD_ALIASNAME, 'FIELDVALUE': _fieldValue ? DataService.formatDate(new Date(_fieldValue)) : null };\r\n } else {\r\n return { 'FIELDID': fieldConfig.fieldID, 'FIELDNAME': fieldConfig.fielD_ALIASNAME, 'FIELDVALUE': _fieldValue };\r\n }\r\n });\r\n dataToPost.customfields = DataService.arrayToSingleQuotedJsonString(dataToPost.customfields, \"\");\r\n\r\n // return\r\n return dataToPost;\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(AgreementTabComponent);","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class TransactionsService {\r\n\r\n static getTransactionsByAgreementId(agreementId, userId, tenantId) {\r\n //const targetUrl = `/Agreement/GetTransactionsByAgreementId?agreementId=${agreementId}&userId=${userId}&tenantId=${tenantId}`;\r\n const targetUrl = `/Transactions/GetTransactionsByAgreementId/${agreementId}/${userId}/${tenantId}`;\r\n return ApiService.getOBS(API_ENDPOINT.CORE,targetUrl);\r\n }\r\n\r\n static getDeleteOBS = (tenantId, transactionId) => {\r\n return ApiService.deleteOBS(API_ENDPOINT.CORE,\r\n `/Transactions/DeleteTransactionAgreements?tenantId=${tenantId}&selectedTransactionId=${transactionId}`);\r\n }\r\n\r\n static saveTransactionData = (postObj) => {\r\n let url = `/Agreement/SaveAgreementTransactions`;\r\n return ApiService.postOBS(API_ENDPOINT.CORE, url, JSON.stringify(postObj));\r\n }\r\n\r\n static getColumnDefs = (_parentThis) => {\r\n return [\r\n //TODO : getSelectColumn not being set to editable correctly. Hardcoding it to 'true' for now\r\n //AgGridBulkEditUtil.getSelectColumn(!_parentThis.props.isReadOnly, _parentThis.toggleSubmitButton),\r\n //AgGridBulkEditUtil.getSelectColumn(true, _parentThis.toggleSubmitButton),\r\n AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", { onChange: _parentThis.toggleSubmitButton }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companytransactionid\", \"Company Transaction ID\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogsttransactionid\", \"Porzio GST Transaction ID\").minAndDefaultWidth(136).flexWeight(1).headerClass(\"center-text\").centerAlignText().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"form\", \"Form\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"purpose\", \"Purpose\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactiondate\", \"Transaction Date\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"convertedtotalamount\", \"Converted Total Amount\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionconsent\", \"Transaction Consent\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionDocumnet\", \"Transaction Document\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}\r\n","import { AgGridColumnExt } from \"../../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../../shared/types/enums\"\r\n\r\nexport default class TransactionSearchDialogService {\r\n\r\n static searchTransaction = (_tenantId, _searchValue = null) => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Transactions/FetchTransactionsSearchValue/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: null,\r\n firstName: null,\r\n lastName: null,\r\n organizationName: null,\r\n companyId: null,\r\n country: null\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n {\r\n headerName: \"Select\",\r\n field: \"isSelected\",\r\n editable: true,\r\n width: 176,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n cellRenderer: \"isSelectedCellRenderer\",\r\n cellRendererParams: {\r\n onChange: (_cellRef, _data) => { _onSelectCallback(_data); }\r\n }\r\n },\r\n AgGridColumnExt.GET(false, \"set\", \"sourceName\", \"Source\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstTransactionId\", \"Porzio GST Transaction ID\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionDate\", \"Transaction Date\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"transactionStatus\", \"Transaction Status\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"country\", \"Country\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"totalAmount\", \"Converted Total Amount\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET()\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, Box } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction } from \"../../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../../shared/services/theme/matIconService\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AgGridColumnExt } from \"../../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport LookupService from \"../../../../../shared/services/lookupService\";\r\nimport TransactionSearchDialogService from \"./transactionsSearchDialogService\";\r\n\r\nclass TransactionSearchDialogComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n errorMessage: null,\r\n isEditing: true,\r\n transactionList: [],\r\n selectedTransaction: null,\r\n agGridUtils: new AgGridUtil(\"porzioGstTransactionId\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.isEditing) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, transactionList: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n TransactionSearchDialogService.searchTransaction(this.context.user.tenantId, this.props.porzioGSTProfileId),\r\n LookupService.getSourceSystemsByEntityAsOBS(this.context.user.tenantId, 2),\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 35),//form\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 36),//purpose\r\n //LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n // success\r\n ([_data, _sourceList, _formList, _purposeList]) => {\r\n this.setState(\r\n {\r\n transactionList: DataService.hasElements(_data) ? _data.map(r => ({\r\n ...r,\r\n sourceName: _sourceList.find(s => s.sourceId === r.sourceId)?.sourceName,\r\n form: _formList.find(f => f.lovId === r.formId)?.lovKey,\r\n purpose: _purposeList.find(p => p.lovId === r.purposeId)?.lovKey\r\n //countryName: _countryList.find(c => c.id === r.country)?.value,\r\n })) : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n handleSubmit = (_selectedTransaction) => {\r\n this.resetFields(() => {\r\n this.props.onSubmitClick(_selectedTransaction);\r\n })\r\n }\r\n\r\n // onClose = (_reloadRequired) => {\r\n // this.resetFields(() => this.props.onClose(_reloadRequired)); \r\n // }\r\n\r\n resetFields(_callback) {\r\n this.setState({\r\n transactionList : [],\r\n _selectedTransaction : null,\r\n errorMessage: null,\r\n }, _callback);\r\n }\r\n\r\n // // called on row-cell click\r\n // methodFromParent = (row_col, node) => {\r\n // this.setState({ modalAgNode: { ...node, porziogsttransactionid: node.porzioGstTransactionId, transactionid: node.trid, sourceid: node.sourceId } });\r\n // if (this.state.agGridUtils.isNotEditing()) {\r\n // this.setState({ showTransactionDetailDialog: true });\r\n // }\r\n // };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n //this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Transactions\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n Transactions Search\r\n {LayoutService.getIconButton(!this.state.selectedTransaction, MatIconService.LINK, \"Link Transactions\", () => {\r\n this.handleSubmit(this.state.selectedTransaction)\r\n }, \"inherit\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Discard Changes\",() => {this.props.onClose(false)}, \"inherit\")}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.setState({ selectedTransaction: _data });\r\n })}\r\n frameworkComponents={this.state.agGridUtils.frameworkComponents}\r\n suppressClickEdit={true}\r\n gridOptions={{\r\n context: { componentParent: this },\r\n ...AgGridColumnExt.getGridOptions(40),\r\n //...this.state.agGridUtils.bindInlineEditEvents(),\r\n }}\r\n onGridReady={(params) => {\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(TransactionSearchDialogComponent);","import React from \"react\";\r\nimport { withStyles, Dialog, DialogTitle, DialogContent, Box, Divider, Typography, Grid, AppBar, Toolbar, DialogContentText } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport { combineLatest, of, ReplaySubject } from \"rxjs\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { CrudAction, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport TransactionsService from \"./transactionsService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport TransactionSearchDialogComponent from \"./transactions-search-dialog/transactionsSearchDialogComponent\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { AgGridErroredCheckboxCellRenderer } from \"../../../../shared/components/ag-grid/error-cell-renderers/agGridErroredCheckboxCellRenderer\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport ChildMessageRendererComponent from \"../../../transaction-center/childMessageRendererComponent\";\r\nimport TransactionDetailDialogComponent from \"../../../transaction-center/transaction-detail/transactionDetailDialogComponent\";\r\n\r\nclass TransactionsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n transactionsToDelete = [];// this will store saved/unsaved deleted Transactions\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isReadOnly: this.props.isReadOnly,\r\n //isEditing: !this.props.isReadOnly,\r\n agreementId: this.props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.agreementId : null,\r\n porzioGSTProfileId: this.props.selectedAgreement.porziogstprofileid,\r\n selectedTransactions: [],\r\n showSearchTransactionsDialog: false,\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"companytransactionid\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n erroredCheckboxCellRenderer: AgGridErroredCheckboxCellRenderer,\r\n childMessageRendererComponent: ChildMessageRendererComponent\r\n }),\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n TransactionsService.getTransactionsByAgreementId(this.state.agreementId, this.context.user.userId, this.context.user.tenantId)\r\n .subscribe(\r\n // success\r\n (_data) => {\r\n this.setState({\r\n data: DataService.hasElements(_data) ? _data : [],\r\n originalTransactionIds: DataService.hasElements(_data) ? _data.map(d => d['trid']) : [],\r\n fetchResult: ResultStatus.LOADED\r\n });\r\n },\r\n // onError\r\n (error) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: { ...node, porziogsttransactionid: node.porziogsttransactionid, transactionid: node.trid, sourceid: node.sourceId } });\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showTransactionDetailDialog: true });\r\n }\r\n };\r\n\r\n updateGrid = (_selectedTransaction) => {\r\n let newObj = {};\r\n newObj = {\r\n is_selected: false,\r\n trid: _selectedTransaction.trid,\r\n companytransactionid: _selectedTransaction.companyTransactionId,\r\n porziogsttransactionid: _selectedTransaction.porzioGstTransactionId,\r\n form: _selectedTransaction.form,\r\n purpose: _selectedTransaction.purpose,\r\n transactiondate: _selectedTransaction.transactionDate,\r\n convertedtotalamount: _selectedTransaction.totalAmount,\r\n transactionconsent: _selectedTransaction.transactionConsentId,\r\n transactionDocumnet: _selectedTransaction.transactionDocumnet\r\n };\r\n this.state.agGridUtils.addNewRow(newObj);\r\n }\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n let hasSelected = false;\r\n let selectedTransactions = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedTransactions.push(rowNode.data);\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n selectedTransactions: selectedTransactions,\r\n isReadOnly: !hasSelected,\r\n });\r\n }\r\n\r\n handleSubmitClick = (_selectedTransaction) => {\r\n this.setState({\r\n showSearchTransactionsDialog: false,\r\n }, () => {\r\n this.updateGrid(_selectedTransaction);\r\n });\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n this.setState({ searchResult: ResultStatus.SAVING });\r\n var oReturnSubject = new ReplaySubject(); // 1st\r\n\r\n let tridsToDelete = [];\r\n if (DataService.hasElements(this.transactionsToDelete)) {\r\n this.transactionsToDelete.forEach(transtn => {\r\n if (this.state.originalTransactionIds.includes(transtn.trid)) {\r\n tridsToDelete.push(transtn.trid);\r\n }\r\n });\r\n }\r\n\r\n let tridsToSave = [];\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n if (rowNode.data && rowNode.data.porziogsttransactionid && !this.state.originalTransactionIds.includes(rowNode.data.trid)) {\r\n tridsToSave.push(rowNode.data.porziogsttransactionid);\r\n }\r\n });\r\n\r\n let postObj = {\r\n tenantId: this.context.user.tenantId,\r\n porzioGSTAgreementId: this.props.modalAgNode.porzioGstAgreementId,\r\n companyAgreementId: this.props.modalAgNode.agreementId,\r\n porzioGSTTransactionIds: tridsToSave.join(\",\")\r\n };\r\n\r\n if (DataService.hasElements(tridsToDelete)) {\r\n TransactionsService.getDeleteOBS(this.context.user.tenantId, tridsToDelete.join(\",\"))\r\n .subscribe(\r\n (_successResult) => {\r\n oReturnSubject.next(true);\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while deleting\");\r\n oReturnSubject.next(\"delete_error\");\r\n }\r\n );\r\n }\r\n\r\n if (DataService.hasElements(tridsToSave)) {\r\n TransactionsService.saveTransactionData(postObj)\r\n .subscribe(\r\n (_successResult) => {\r\n ToastService.showSuccess(\"Transactions Saved\");\r\n oReturnSubject.next(true);\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while saving\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n );\r\n }\r\n return oReturnSubject.asObservable();\r\n }\r\n\r\n handleDeleteClick = () => {\r\n this.setState({\r\n openDeleteConfirm: true\r\n });\r\n }\r\n\r\n handleDeleteConfirm = () => {\r\n this.setState({ openDeleteConfirm: false, selectedTransactions: [] });\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n this.transactionsToDelete.push(rowNode.data);\r\n this.state.agGridUtils.gridApi.applyTransaction({ remove: [rowNode.data] });\r\n }\r\n });\r\n }\r\n\r\n // render\r\n TAB_PERMISSIONS = RolePermissionService.AGREEMENT_TRANSACTIONS;\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Transactions\";\r\n if (RolePermissionService.AGREEMENT_TRANSACTIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n this.state.agGridUtils.setEditingMode(this.props.isReadOnly);\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {LayoutService.getIconButton(this.props.isReadOnly || this.state.selectedTransactions.length === 0 || RolePermissionService.AGREEMENT_TRANSACTIONS.cannotDelete,\r\n MatIconService.UNLINK, \"Unlink Transactions\",\r\n this.handleDeleteClick, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(this.props.isReadOnly || RolePermissionService.AGREEMENT_TRANSACTIONS.cannotCreate, MatIconService.ADD_CIRCLE_OUTLINE, \"Add\", () => {\r\n this.setState({ showSearchTransactionsDialog: true })\r\n }, \"inherit\")}\r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n this.state.agGridUtils.pinColumn(AgGridBulkEditUtil.selectColumnName); // pin the edit column to the left\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n {this.state.showSearchTransactionsDialog ?\r\n \r\n {\r\n this.setState({ showSearchTransactionsDialog: false });\r\n if (_reloadRequired) {\r\n this.fetchData();\r\n }\r\n }}\r\n porzioGSTProfileId={this.state.porzioGSTProfileId}\r\n agreementId={this.state.agreementId}\r\n onSubmitClick={(_selectedTransaction) => {\r\n this.handleSubmitClick(_selectedTransaction);\r\n }}\r\n />\r\n \r\n : <>}\r\n
\r\n\r\n {/* Unlink dialog */}\r\n {this.state.openDeleteConfirm ?\r\n this.setState({ openDeleteConfirm: false })}>\r\n \r\n \r\n \r\n Unlink Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Unlink\", this.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => this.setState({ openDeleteConfirm: false }), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to unlink the selected Transaction(s)?\r\n \r\n \r\n {this.state.selectedTransactions.map(t => t.porziogsttransactionid).join(\",\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n : <>}\r\n\r\n {this.state.showTransactionDetailDialog ?\r\n { this.setState({ showTransactionDetailDialog: false }); }} />\r\n : null}\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(true); }} />);\r\n }\r\n }\r\n }\r\n\r\n}\r\n/** HOC */\r\nexport default withStyles(MatClassService)(TransactionsComponent);","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class ReportReferenceService {\r\n\r\n static getReportReferenceAsOBS = (_tenantId, _modalAgNode) => {//TODO : fileid : need to figure out and pass\r\n const targetUrl = `​​/RuleSummary/FetchReportReferncesByEntity/${_tenantId}?entityId=${ENTITY_TYPE.AGREEMENT}&id=${_modalAgNode.agreementId}&pageNumber=1&pageSize=1000`;\r\n\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"reportDetailID\", \"Report ID\").minAndDefaultWidth(144).valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportLibrary\", \"Report Library\").flexWeight(6).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportDetailName\", \"Report Name\").flexWeight(6).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"finalDispositionName\", \"Final Disposition\").flexWeight(4).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportCreatedDate\", \"Report Generation Date\").flexWeight(4).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Typography, AppBar, Toolbar, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ReportReferenceService from \"./reportReferenceService\";\r\n\r\nclass ReportReferenceComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n ReportReferenceService.getReportReferenceAsOBS(this.context.user.tenantId, this.props.modalAgNode),\r\n ]).subscribe(\r\n // success\r\n ([_data]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Report Reference\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n this.state.agGridUtils.setGridParams(params, true);\r\n }}>\r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ReportReferenceComponent);\r\n","import React from 'react';\r\nimport { AppBar, Box, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\n\r\nclass AgreementDetailDeleteConfirmComponent extends React.Component {\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Delete Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete\", this.props.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.handleDeleteDismiss, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to delete the selected Agreement?\r\n \r\n \r\n {this.props.porzioGstAgreementId}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(AgreementDetailDeleteConfirmComponent);","import React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { Typography, Divider, Grid, Tooltip, IconButton, MenuItem, Select } from \"@material-ui/core\";\r\nimport MatSpecService from \"../../services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\n\r\nexport default class PageDynamicHeaderComponent extends React.Component {\r\n render() {\r\n const { small, classes, label, rightPadding, bottomPadding, bgColor } = this.props;\r\n const leftActions = this.props.leftActions || [];\r\n const rightActions = this.props.rightActions || [];\r\n\r\n return (\r\n \r\n \r\n 0 ? rightPadding : 0, paddingBottom: bottomPadding > 0 ? bottomPadding : 0 }}>\r\n\r\n {/* LeftSideElements */}\r\n {leftActions.map((action, index) => {\r\n if (action) {\r\n if (action.jsxElement) {\r\n return action.jsxElement;\r\n } else {\r\n return (\r\n \r\n \r\n {action.icon}\r\n \r\n \r\n );\r\n }\r\n }\r\n })}\r\n\r\n {/* Label */}\r\n {{label}}\r\n\r\n {/* RightSideElements */}\r\n {rightActions.map((action, index) => {\r\n if (action) {\r\n if (action.jsxElement) {\r\n return action.jsxElement;\r\n } else {\r\n return (\r\n \r\n \r\n {action.icon}\r\n \r\n \r\n );\r\n }\r\n }\r\n })}\r\n \r\n {this.props.divider ? : null}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { AppBar, Box, Dialog, DialogContent, DialogTitle, Divider, IconButton, LinearProgress, Tab, Tabs, TextField, Toolbar, Typography, DialogContentText, Grid } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport TabDetailsToolbarComponent from \"../../../shared/components/tab/tabDetailsToolbarComponent\";\r\nimport { CrudAction, API_ENDPOINT, ENTITY_TYPE } from \"../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport ActionDialog from \"../../../shared/components/dialog/actionDialog\";\r\nimport ConsentComponent from \"./consents/consentComponent\";\r\nimport DocumentsComponent from \"./documents/documentsComponent\";\r\nimport RuleSummaryComponent from \"./rule-summary/ruleSummaryComponent\";\r\nimport AgreementTabComponent from \"./agreement-tab/agreementTabComponent\";\r\nimport TransactionsComponent from \"./transactions/transactionsComponent\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport ReportReferenceComponent from \"./report-reference/reportReferenceComponent\";\r\nimport AgreementDetailDeleteConfirmComponent from \"./agreementDetailDeleteConfirmComponent\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport RolePermissionInfo from \"../../../shared/role-permissions/rolePermissionInfo\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport MatThemeService from \"../../../shared/services/theme/matThemeService\";\r\n\r\nclass AgreementDetailDialogComponent extends React.Component {\r\n oSubscriptions = new SubscriptionArray();\r\n static contextType = AuthContext;\r\n constructor(props) {\r\n super(props);\r\n\r\n this.tabIndexMap = new Map();\r\n this.tabIndexMap.set(0, { ref: null });\r\n this.tabIndexMap.set(1, { ref: null });\r\n this.tabIndexMap.set(2, { ref: null });\r\n this.tabIndexMap.set(3, { ref: null });\r\n this.tabIndexMap.set(4, { ref: null });\r\n this.tabIndexMap.set(5, { ref: null });\r\n this.tabIndexMap.set(6, { ref: null });\r\n\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isNew: this.props.inputAction === CrudAction.CREATE,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n\r\n isDialog: this.props.standAloneProps ? false : true,\r\n derivedProps: this.props.standAloneProps ? this.props.standAloneProps : { fullWidth: true, maxWidth: \"lg\" },\r\n\r\n selectedTabIndex: 0,\r\n openDeleteConfirm: false,\r\n agreementTabLoaded: false,\r\n selectedAgreement: null\r\n };\r\n }\r\n\r\n onClose = (_reloadRequired) => {\r\n this.setState({ isReadOnly: true }, () => {\r\n this.props.onClose(_reloadRequired);\r\n });\r\n }\r\n\r\n _changeTab = (_newTabIndex) => {\r\n this.setState({\r\n selectedTabIndex: _newTabIndex,\r\n isReadOnly: true // on tab change make it readonly\r\n });\r\n }\r\n\r\n onTabChange = (event, _newTabIndex) => {\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n\r\n if (currentTabRef) {\r\n if (currentTabRef.isDirtyCallback()) {\r\n this.setState({ showConfirmDialog: true, newTabIndex: _newTabIndex });\r\n } else {\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(_newTabIndex);\r\n });\r\n }\r\n } else {\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(_newTabIndex);\r\n });\r\n }\r\n };\r\n\r\n onSave = () => {\r\n console.log(\"this.state.selectedTabIndex: \", this.state.selectedTabIndex);\r\n this.oSubscriptions.cancelAll();\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n\r\n if (currentTabRef.postCallbackOBS) {\r\n this.setState({ isSaving: true });\r\n this.oSubscriptions.add(currentTabRef.postCallbackOBS().subscribe(\r\n (_successResult) => {\r\n this.setState({ isSaving: false, saveErrorInfo: null });\r\n if (this.state.isNew) {\r\n this.onClose(true); // close this and reload the AgreementCenter\r\n } else {\r\n // stay on the same screen as per PP2-871\r\n }\r\n currentTabRef.resetCallback(true);\r\n },\r\n (_error) => {\r\n console.log(\"Error while Saving\", _error);\r\n this.setState({ isSaving: false, saveErrorInfo: _error }, () => {\r\n setTimeout(() => { this.setState({ saveErrorInfo: null }); }, 5000);\r\n });\r\n }\r\n ));\r\n }\r\n }\r\n\r\n onDelete = () => {\r\n this.oSubscriptions.cancelAll();\r\n\r\n this.setState({ isSaving: true });\r\n this.oSubscriptions.add(this.getDeleteOBS().subscribe(\r\n (_successResult) => {\r\n this.setState({ isSaving: false, saveErrorInfo: null });\r\n if (_successResult === \"validation_error\") {\r\n this.flashError(\"Validation Failed\");\r\n } else if (_successResult === \"save_error\") {\r\n this.flashError(\"Delete Failed\");\r\n } else {\r\n ToastService.showSuccess(\"Agreement Deleted Successfully\");\r\n this.onClose(true);\r\n }\r\n },\r\n (_error) => {\r\n this.flashError(\"Error Occured while Deleting\");\r\n }\r\n ));\r\n }\r\n\r\n getDeleteOBS = () => {\r\n return ApiService.deleteOBS(API_ENDPOINT.CORE,\r\n `/Agreement/DeleteAgreement?tenantId=${this.context.user.tenantId}&userId=${this.context.user.userId}&agreementId=${this.props.modalAgNode.agreementId}`);\r\n }\r\n\r\n handleAgreementTabLoaded = (_selectedAgreement) => {\r\n this.setState({\r\n selectedAgreement: _selectedAgreement,\r\n agreementTabLoaded: true\r\n });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const TAB_REF = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n const TAB_PERMISSIONS = TAB_REF ? (TAB_REF.TAB_PERMISSIONS ? TAB_REF.TAB_PERMISSIONS : RolePermissionInfo.INIT()) : RolePermissionInfo.INIT();\r\n\r\n return (\r\n <>\r\n {/* discard action dialog */}\r\n {\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n currentTabRef.resetCallback();\r\n\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(this.state.newTabIndex);\r\n })\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n\r\n {/* tab dialog */}\r\n { this.onClose(false); }} >\r\n {/* DialogTitle */}\r\n {this.state.isDialog ?\r\n \r\n \r\n \r\n Agreement Details\r\n {LayoutService.getIconButton(this.state.isNew, MatIconService.DELETE, \"Delete\", () => this.setState({\r\n openDeleteConfirm: true, agreementId: this.props.modalAgNode.agreementId\r\n }), \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getReadOnlyActions(this, (this.props.inputAction === CrudAction.CREATE), () => { this.onClose(false) }, () => { this.onSave(); })}\r\n \r\n \r\n \r\n :\r\n { this.onClose(false); }, title: \"Go back\", iconColor: \"secondary\" },\r\n ]}\r\n rightActions={[\r\n {\r\n icon: this.state.selectedTabIndex !== 0 || RolePermissionService.AGREEMENT_DETAIL.cannotDelete ? MatIconService.DELETE : MatIconService.DELETE_RED,\r\n isReadOnly: this.state.selectedTabIndex !== 0 || RolePermissionService.AGREEMENT_DETAIL.cannotDelete, // this delete is for entire agreement\r\n title: \"Delete Agreement\", onClick: () => this.setState({\r\n openDeleteConfirm: true, agreementId: this.props.modalAgNode.agreementId\r\n }),\r\n },\r\n this.state.isReadOnly ?\r\n { icon: MatIconService.EDIT, title: \"Edit\", onClick: () => { this.setState({ isReadOnly: false }); }, isReadOnly: TAB_PERMISSIONS.cannotEdit } :\r\n { icon: MatIconService.OK, title: \"Save\", iconColor: \"primary\", onClick: () => { this.onSave(); }, isReadOnly: TAB_PERMISSIONS.cannotCreateOrEdit },\r\n ]}\r\n />\r\n }\r\n\r\n {this.state.isSaving ? : null}\r\n {this.state.saveErrorInfo ? {this.state.saveErrorInfo} : null}\r\n\r\n {/* DialogContent */}\r\n \r\n \r\n \r\n \r\n {this.state.agreementTabLoaded ?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : <>}\r\n \r\n {/* delete dialog */}\r\n {this.state.openDeleteConfirm ?\r\n this.setState({ openDeleteConfirm: false })}\r\n handleDeleteDismiss={() => this.setState({ openDeleteConfirm: false })}\r\n handleDeleteConfirm={() => {\r\n this.setState({ openDeleteConfirm: false });\r\n this.onDelete();\r\n this.onClose(true);\r\n }}\r\n porzioGstAgreementId={this.props.modalAgNode.porzioGstAgreementId} />\r\n : <>}\r\n \r\n );\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(AgreementDetailDialogComponent);","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, InputBase, Box } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AuthContext } from \"../../../store/authProvider\";\r\nimport { ResultStatus, CrudAction } from \"../../../types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../services/dataService\";\r\nimport LayoutService from \"../../../services/layoutService\";\r\nimport PageLoadingComponent from \"../../page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../services/theme/matIconService\";\r\nimport AgreementsSearchDialogService from \"./agreementsSearchDialogService\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../elements/agGridRadioButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../services/ag-grid/agGridUtil\";\r\nimport LookupService from \"../../../services/lookupService\";\r\nimport AgreementDetailCellRendererComponent from \"../../../../private/agreements/agreementDetailCellRendererComponent\";\r\nimport AgreementDetailDialogComponent from \"../../../../private/agreements/agreement-detail/agreementDetailDialogComponent\";\r\n\r\nclass AgreementsSearchDialogComponent extends React.Component {\r\n static contextType = AuthContext;\r\n //searchSubject = new BehaviorSubject(\"\");\r\n\r\n // ept till component's unMount\r\n // = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n //scopedSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n searchResult: ResultStatus.LOADING,\r\n agreementList: [],\r\n selectedAgreement: null,\r\n //lastSearchedValue: '',\r\n errorMessage: null,\r\n agGridUtils: new AgGridUtil(\"lastName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n agreementDetailCellRendererComponent: AgreementDetailCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n //this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n componentDidMount() {\r\n this.searchAgreement();\r\n\r\n // var searchOBS = this.searchSubject.pipe(\r\n // debounceTime(750),\r\n // distinctUntilChanged(),\r\n // mergeMap((_searchValue) => from(this.searchRecipient(_searchValue)))\r\n // );\r\n\r\n // this.scopedSubscriptions.add(searchOBS.subscribe());\r\n }\r\n\r\n onSearch = (event) => {\r\n this.setState({ selectedSearchValue: event.target.value });\r\n this.gridApi.setQuickFilter(event.target.value);\r\n }\r\n\r\n searchAgreement = () => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n this.setState({ searchResult: ResultStatus.LOADING, agreementList: [], selectedAgreement: null });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n AgreementsSearchDialogService.searchOBS(this.context.user.tenantId, this.props.selectedPorzioGSTProfileId),\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 180),//agreementDocumentTypeId\r\n ]).subscribe(\r\n ([_agreementList, _documentTypeList]) => {\r\n if (DataService.hasElements(_agreementList)) {\r\n _agreementList = _agreementList.map(ag => ({\r\n ...ag,\r\n isSelected: false,\r\n agreementdocuments: _documentTypeList.find(f => f.lovId === ag.agreementDocumentTypeId)?.lovKey\r\n }));\r\n }\r\n this.setState({\r\n searchResult: ResultStatus.SUCCESS,\r\n agreementList: DataService.hasElements(_agreementList) ? _agreementList : [],\r\n });\r\n },\r\n (err) => { this.setState({ searchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n return [];\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n //if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showAgreementDetailDialog: true, inputAction: CrudAction.UPDATE, modalAgNode: node });\r\n //}\r\n };\r\n\r\n // render\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n Agreement Search\r\n {/* Search */}\r\n
\r\n
{MatIconService.SEARCH}
\r\n { this.onSearch(e) }} />\r\n
\r\n {LayoutService.getIconButton(DataService.isNullOrUndefined(this.state.selectedAgreement), MatIconService.LINK, \"Link\", () => {\r\n this.props.onSubmitClick(this.state.selectedAgreement);\r\n }, \"inherit\", \"keyActionSave\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => { this.props.onClose(\"\", \"\") }, \"secondary\", \"keyActionCancel1\")}\r\n
\r\n
\r\n
\r\n \r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n {\r\n this.setState({ showAgreementDetailDialog: false });\r\n if (_reloadRequired) {\r\n this.fetchData(true);\r\n }\r\n }}\r\n />\r\n
\r\n );\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.searchResult) {\r\n case ResultStatus.SAVING: return ;\r\n case ResultStatus.LOADING: return ;\r\n //case ResultStatus.NOT_LOADED: return ;\r\n case ResultStatus.LOADED: return ;\r\n case ResultStatus.SUCCESS:\r\n return (
\r\n
\r\n {\r\n this.setState({ selectedAgreement: _data });\r\n })}\r\n suppressClickEdit={true}\r\n frameworkComponents={this.state.agGridUtils.frameworkComponents}\r\n onGridReady={(params) => {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n this.gridApi = params.api\r\n }}\r\n gridOptions={{\r\n context: { componentParent: this },\r\n suppressContextMenu: true,\r\n rowHeight: 32,\r\n }}\r\n />\r\n
\r\n
);\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.searchAgreement(); }} />);\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(AgreementsSearchDialogComponent);","import React from \"react\";\r\nimport { of, combineLatest, ReplaySubject } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Typography, Grid, Divider, Dialog, AppBar, Toolbar, DialogContentText } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../services/ag-grid/agGridUtil\";\r\nimport { AgGridBulkEditUtil } from \"../../components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport { AuthContext } from \"../../store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus } from \"../../types/enums\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport LayoutService from \"../../services/layoutService\";\r\nimport PageLoadingComponent from \"../../components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../components/page/dialogErrorFragmentComponent\";\r\nimport AgreementsService from \"./agreementsService\";\r\nimport { AgGridErroredCheckboxCellRenderer } from \"../../components/ag-grid/error-cell-renderers/agGridErroredCheckboxCellRenderer\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { AgGridColumnExt } from \"../../services/ag-grid/agGridColumnExt\";\r\nimport ToastService from \"../../services/toastService\";\r\nimport AgreementsSearchDialogComponent from \"./agreements-search-dialog/agreementsSearchDialogComponent\";\r\nimport AgreementDetailCellRendererComponent from \"../../../private/agreements/agreementDetailCellRendererComponent\";\r\nimport AgreementDetailDialogComponent from \"../../../private/agreements/agreement-detail/agreementDetailDialogComponent\";\r\nimport RolePermissionService from \"../../role-permissions/rolePermissionService\";\r\n\r\nclass AgreementsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n agreementsToDelete = [];// this will store saved/unsaved deleted Agreements\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n selectedAgreements: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isReadOnly: this.props.isReadOnly,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n porzioSearch: \"\",\r\n showSearchAgreementsDialog: false,\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"porzioGSTAgreementID\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n erroredCheckboxCellRenderer: AgGridErroredCheckboxCellRenderer\r\n }),\r\n frameworkComponents: {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n erroredCheckboxCellRenderer: AgGridErroredCheckboxCellRenderer,\r\n agreementDetailCellRendererComponent: AgreementDetailCellRendererComponent\r\n },\r\n selectedPorzioGSTProfileId: this.props.entityType === ENTITY_TYPE.TRANSACTION && this.props.selectedTransaction ?\r\n this.props.selectedTransaction.porziogstprofileid : null\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.inputAction !== CrudAction.CREATE) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n AgreementsService.getAgreementsAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode, this.props.entityType),\r\n ]).subscribe(\r\n // success\r\n ([_data]) => {\r\n this.setState({\r\n data: DataService.hasElements(_data) ? _data : [],\r\n originalAgreementIds: DataService.hasElements(_data) ? _data.map(d => d['porzioGSTAgreementID']) : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n //if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showAgreementDetailDialog: true, inputAction: CrudAction.UPDATE, modalAgNode: node });\r\n //}\r\n };\r\n\r\n updateGrid = (_selectedAgreement) => {\r\n let newObj = {};\r\n newObj = {\r\n is_selected: false,\r\n companyAgreementId: _selectedAgreement.companyAgreementId,\r\n porzioGSTAgreementID: _selectedAgreement.porzioGstAgreementId,\r\n agreementName: _selectedAgreement.agreementName,\r\n //agreementType: _selectedAgreement.agreementType,//TODO: pending\r\n startdate: _selectedAgreement.startDate,\r\n enddate: _selectedAgreement.endDate,\r\n executeddate: _selectedAgreement.executedDate,\r\n // agreementConsent: _selectedAgreement.agreementConsent, //TODO: pending\r\n agreementdocuments: _selectedAgreement.agreementdocuments //TODO: pending\r\n };\r\n this.state.agGridUtils.addNewRow(newObj);\r\n }\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n let hasSelected = false;\r\n let selectedAgreements = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedAgreements.push(rowNode.data);\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n selectedAgreements: selectedAgreements,\r\n isReadOnly: !hasSelected,\r\n });\r\n }\r\n\r\n handleSubmitClick = (_selectedAgreement) => {\r\n this.setState({\r\n showSearchAgreementsDialog: false,\r\n }, () => {\r\n this.updateGrid(_selectedAgreement);\r\n });\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n this.setState({ searchResult: ResultStatus.SAVING });\r\n var oReturnSubject = new ReplaySubject(); // 1st\r\n\r\n let agIdsToDelete = [];\r\n if (DataService.hasElements(this.agreementsToDelete)) {\r\n this.agreementsToDelete.forEach(agmnt => {\r\n if (this.props.entityType === ENTITY_TYPE.TRANSACTION) {\r\n agIdsToDelete.push(agmnt);\r\n }\r\n else {\r\n if (this.state.originalAgreementIds.includes(agmnt.porzioGSTAgreementID)) {\r\n agIdsToDelete.push(agmnt.porzioGSTAgreementID);\r\n }\r\n }\r\n });\r\n }\r\n\r\n let porzioGSTAgreementIDsToSave = [], companyAgreementIdsToSave = [];\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n if (rowNode.data && rowNode.data.porzioGSTAgreementID && !this.state.originalAgreementIds.includes(rowNode.data.porzioGSTAgreementID)) {\r\n porzioGSTAgreementIDsToSave.push(rowNode.data.porzioGSTAgreementID);\r\n companyAgreementIdsToSave.push(rowNode.data.companyAgreementId);\r\n }\r\n });\r\n\r\n if (DataService.hasElements(agIdsToDelete)) {\r\n AgreementsService.getDeleteOBS(this.context.user.tenantId, agIdsToDelete.join(\",\"), this.props.entityType)\r\n .subscribe(\r\n (_successResult) => {\r\n ToastService.showSuccess(\"Agreement(s) Deleted\");\r\n oReturnSubject.next(true);\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while deleting\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n );\r\n }\r\n\r\n if (DataService.hasElements(porzioGSTAgreementIDsToSave)) {\r\n if (this.props.entityType === ENTITY_TYPE.PROFILE) {\r\n AgreementsService.saveProfileAgreements(this.context.user.tenantId, this.props.modalAgNode.prid, porzioGSTAgreementIDsToSave.join(\",\"))\r\n .subscribe(\r\n (_successResult) => {\r\n ToastService.showSuccess(\"Agreements Saved\");\r\n oReturnSubject.next(true);\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while saving\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n );\r\n } else if (this.props.entityType === ENTITY_TYPE.TRANSACTION) {\r\n AgreementsService.saveTransactionAgreements(this.context.user.tenantId, this.props.modalAgNode.trid, companyAgreementIdsToSave.join(\",\"), porzioGSTAgreementIDsToSave.join(\",\"))\r\n .subscribe(\r\n (_successResult) => {\r\n ToastService.showSuccess(\"Agreements Saved\");\r\n oReturnSubject.next(true);\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while saving\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n );\r\n }\r\n }\r\n return oReturnSubject.asObservable();\r\n }\r\n\r\n handleDeleteClick = () => {\r\n const cannotDelete = ((this.props.entityType === ENTITY_TYPE.PROFILE && RolePermissionService.PROFILE_AGREEMENTS.cannotDelete)\r\n || (this.props.entityType === ENTITY_TYPE.TRANSACTION && RolePermissionService.TRANSACTION_AGREEMENTS.cannotDelete)\r\n );\r\n if (cannotDelete) {\r\n RolePermissionService.showAccessDeniedToast();\r\n } else {\r\n this.setState({ openDeleteConfirm: true });\r\n }\r\n }\r\n\r\n handleDeleteConfirm = () => {\r\n this.setState({ openDeleteConfirm: false, selectedAgreements: [] });\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n this.props.entityType === ENTITY_TYPE.TRANSACTION ?\r\n this.agreementsToDelete.push(this.props.modalAgNode.transactionid)\r\n : this.agreementsToDelete.push(rowNode.data);\r\n this.state.agGridUtils.gridApi.applyTransaction({ remove: [rowNode.data] });\r\n }\r\n });\r\n }\r\n\r\n // render\r\n TAB_PERMISSIONS = (this.props.entityType === ENTITY_TYPE.PROFILE ? RolePermissionService.PROFILE_AGREEMENTS : RolePermissionService.TRANSACTION_AGREEMENTS);\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Agreements\";\r\n\r\n const cannotView = (this.TAB_PERMISSIONS.cannotView);\r\n const isReadOnly = (this.props.isReadOnly || this.TAB_PERMISSIONS.cannotEdit);\r\n\r\n if (cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n }\r\n else {\r\n this.state.agGridUtils.disableEditability(isReadOnly);\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {this.props.entityType === ENTITY_TYPE.TRANSACTION ? LayoutService.getIconButton(this.props.isReadOnly || this.TAB_PERMISSIONS.cannotDelete || this.state.selectedAgreements?.length === 0, MatIconService.UNLINK, \"Unlink Agreements\", this.handleDeleteClick, \"secondary\", \"keyActionDelete\") : <>}\r\n {this.props.entityType === ENTITY_TYPE.TRANSACTION ? LayoutService.getIconButton(this.props.isReadOnly || this.TAB_PERMISSIONS.cannotCreate, MatIconService.ADD_CIRCLE_OUTLINE, \"Add\", () => { this.setState({ showSearchAgreementsDialog: true }) }, \"primary\") : <>}\r\n \r\n
\r\n {\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n this.state.agGridUtils.setGridParams(params, true);\r\n this.state.agGridUtils.pinColumn(AgGridBulkEditUtil.selectColumnName); // pin the edit column to the left\r\n this.state.agGridUtils.disableEditability(isReadOnly);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n {this.state.showSearchAgreementsDialog ?\r\n this.state.selectedPorzioGSTProfileId ?\r\n {\r\n this.setState({ showSearchAgreementsDialog: false });\r\n if (_reloadRequired) {\r\n this.fetchData();\r\n }\r\n }}\r\n onSubmitClick={(_selectedTransaction) => {\r\n this.handleSubmitClick(_selectedTransaction);\r\n }}\r\n selectedPorzioGSTProfileId={this.state.selectedPorzioGSTProfileId}\r\n />\r\n :\r\n this.setState({ showSearchAgreementsDialog: false })} aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\">\r\n \r\n \r\n \r\n Agreement Search\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Close\", () => this.setState({ showSearchAgreementsDialog: false }), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : <>}\r\n
\r\n\r\n {/* Unlink dialog */}\r\n {this.state.openDeleteConfirm ?\r\n this.setState({ openDeleteConfirm: false })} aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\">\r\n \r\n \r\n \r\n Unlink Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Unlink\", this.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => this.setState({ openDeleteConfirm: false }), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to unlink the selected Agreement(s)?\r\n \r\n \r\n {this.state.selectedAgreements.map(t => t.porzioGSTAgreementID).join(\",\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n : <>}\r\n {this.state.showAgreementDetailDialog ? {\r\n this.setState({ showAgreementDetailDialog: false });\r\n if (_reloadRequired) {\r\n this.fetchData(true);\r\n }\r\n }}\r\n /> : null}\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n }\r\n\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(AgreementsComponent);\r\n","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT,ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class DocumentsService {\r\n\r\n static getDocumentsAsOBS = (_tenantId, _modalAgNode) => {\r\n const targetUrl = `/Document/GetDocumentsByEntity/${_tenantId}/${ENTITY_TYPE.TRANSACTION}/${_modalAgNode.transactionid}?page=1&pageSize=100`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", { onChange: _componentThisRef.toggleSubmitButton }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTDocumentID\", \"Porzio GST Document ID\").headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"documentName\", \"Document Name\").cellRenderer(\"childMessageRendererComponent\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"documentDescription\", \"Description\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"documentType\", \"Category Name\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"filePath\", \"File Name\").cellRenderer(\"downloadFileAgRenderer\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n //AgGridColumnExt.GET(true, \"text\", \"fileType\", \"File Type\").fixedWidth(90).valueSetter(this._setRuleViolations).SET(),\r\n ];\r\n }\r\n \r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { Dialog, DialogTitle, DialogContent, DialogContentText, Box, Typography, Grid, AppBar, Toolbar } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport ChildMessageRendererComponent from \"../../../../shared/components/childMessageRendererComponent\";\r\nimport DownloadFileAgRenderer from \"../../../data-center/download-file/downloadFileAgRenderer\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport SectionComponent from \"../../../../shared/components/sectionComponent\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport DocumentDetailsComponent from \"../../../../shared/components/document-details/documentDetailsComponent\"\r\nimport DocumentsService from \"./documentsService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport OktaAuthService from \"../../../../public/authentication/oktaAuthService\";\r\n\r\nclass DocumentsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n porzioSearch: \"\",\r\n selectedDocuments:[],\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n downloadFileAgRenderer: DownloadFileAgRenderer,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n handleDownloadAg = async (\r\n cell,\r\n agNodeData,\r\n filename,\r\n linkRefAg,\r\n windowUrl\r\n ) => {\r\n //ToastService.showInfo(\"Under Construction\");\r\n if (this.state.canNotDownload) {\r\n this.setState({ accessDenied: this.state.canNotDownload });\r\n return;\r\n } else {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/Document/DownloadDocument/${this.context.user.tenantId}?filename=${agNodeData.filePath}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n );\r\n const blob = await result.blob();\r\n return blob;\r\n }\r\n\r\n };\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n DocumentsService.getDocumentsAsOBS(this.context.user.tenantId, this.props.modalAgNode,),\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 268),\r\n ]).subscribe(\r\n // success\r\n ([_documents, _documentCategoryLov]) => {\r\n this.setState(\r\n {\r\n //data: [..._systemDocuments, ..._complianceDocuments, ..._customDocuments].map(r => (parseInt(r.documentCategoryId) ? { ...r, documentCategoryName: _documentCategoryLov.find(f => f.lovId === r.documentCategoryId).lovKey } : \"\")),\r\n data: _documents || []\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({\r\n modalShow: true,\r\n modalAgNode: node,\r\n inputAction: CrudAction.UPDATE,\r\n });\r\n };\r\n\r\n // render\r\n TAB_PERMISSIONS = RolePermissionService.TRANSACTION_RELATED_DOCUMENTS;\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const cannotDelete = this.props.isReadOnly || this.state.selectedDocuments.length === 0;\r\n if (this.TAB_PERMISSIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n }\r\n else {\r\n const componentType = \"Documents\";\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getIconButton(this.props.isReadOnly || this.TAB_PERMISSIONS.cannotCreate, MatIconService.ADD_CIRCLE_OUTLINE, \"Add New Document\",\r\n () => {\r\n this.setState({ modalShow: true, modalAgNode: {}, inputAction: CrudAction.CREATE, })\r\n }\r\n )}\r\n {LayoutService.getIconButton(cannotDelete, cannotDelete ? MatIconService.DELETE : MatIconService.DELETE_RED, \"Delete\", () => { this.handleDeleteClick()},\"inherit\")}\r\n {/* {LayoutService.getIconButton(this.props.isReadOnly || this.TAB_PERMISSIONS.cannotDelete, MatIconService.DELETE, \"Delete Document\",\r\n () => {\r\n ToastService.showWarning(\"Please Select a document to delete.\")\r\n }\r\n )} */}\r\n \r\n {/* this.setState({ modalShow: true, modalAgNode: {}, inputAction: CrudAction.CREATE, })} /> */}\r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n }}>\r\n
\r\n
\r\n
\r\n {this.state.openDeleteConfirm ?\r\n this.setState({ openDeleteConfirm: false })} aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\">\r\n \r\n \r\n \r\n Delete Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete\", this.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => this.setState({ openDeleteConfirm: false }), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to delete the selected document? This action cannot be reversed.\r\n \r\n \r\n {this.state.selectedDocuments.map(r => ({r.filePath}
))}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n :<>\r\n }\r\n \r\n \r\n this.setState({ modalShow: false })}\r\n modalAgNode={this.state.modalAgNode}\r\n inputAction={this.state.inputAction}\r\n refreshGrid={this.fetchData}\r\n entityType={this.props.entityType}\r\n transactionId={this.props.modalAgNode.transactionid}\r\n />\r\n \r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n }\r\n handleDeleteClick = () => {\r\n this.setState({\r\n openDeleteConfirm: true\r\n });\r\n }\r\n\r\n handleDeleteConfirm = () => {\r\n this.setState({ openDeleteConfirm: false });\r\n let idsToDelete = this.state.selectedDocuments.map(r => r.porzioGSTDocumentID)?.join(\",\");\r\n var pathParams = `/Document/DeleteDocument/${this.context.user.tenantId}/${this.context.user.userId}/${idsToDelete}`;\r\n ApiService.setOBS(\"DELETE\", API_ENDPOINT.CORE, pathParams, JSON.stringify({})).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Delete Document Successful\");\r\n //refreshGrid= false;\r\n this.fetchData();\r\n this.props.onClose();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n \r\n (errorResult) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n this.setState({ selectedDocuments: [] });\r\n }\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n let hasSelected = false;\r\n let selectedDocuments = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedDocuments.push(rowNode.data);\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n selectedDocuments: selectedDocuments,\r\n isReadOnly: !hasSelected,\r\n });\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(DocumentsComponent);\r\n","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class ReportReferencesService {\r\n\r\n static getRuleSummaryAsOBS = (_tenantId, _userId, _modalAgNode) => {\r\n const targetUrl = `/RuleSummary/FetchReportReferncesByEntity/${_tenantId}?entityId=${ENTITY_TYPE.TRANSACTION}&id=${_modalAgNode.transactionid}&pageSize=100&pageNo=1`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"reportDetailID\", \"Report ID\").minAndDefaultWidth(144).cellRenderer(\"vendorLinkRendererComponent\").headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportLibrary\", \"Report Library\").flexWeight(6).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportDetailName\", \"Report Name\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"finalDispositionName\", \"Final Disposition\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportCreatedDate\", \"Report Generation Date\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Typography, AppBar, Toolbar, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ReportReferencesService from \"./reportReferencesService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass ReportReferencesComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n ReportReferencesService.getRuleSummaryAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode,),\r\n ]).subscribe(\r\n // success\r\n ([_data,]) => {\r\n this.setState(\r\n {\r\n data: _data,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showProfileDetailDialog: true });\r\n }\r\n };\r\n\r\n // render\r\n TAB_PERMISSIONS = RolePermissionService.TRANSACTION_REPORT_REFERENCES;\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n\r\n\r\n if (this.TAB_PERMISSIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n }\r\n else {\r\n const componentType = \"Report References\";\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n {\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n
\r\n\r\n
\r\n
\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ReportReferencesComponent);\r\n","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class RelatedTransactionsService {\r\n\r\n static getRelatedTransactionsAsOBS = (_tenantId, _userId, _modalAgNode,) => {\r\n const targetUrl = `/Transactions/RelatedTransactions/${_tenantId}/${_userId}/${_modalAgNode.transactionid}/1/1000`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(!_componentThisRef.props.isReadOnly, \"text\", \"isSelected\", \"Select\").fixedWidth(88).headerClass(\"center-text\").cellRenderer(\"isCheckedCellRenderer\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"CompanyTransactionId\", \"Company Transaction Id\").minAndDefaultWidth(144).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"PorzioTransactionId\", \"GST Transaction Id\").cellRenderer(\"childMessageRendererComponent\").flexWeight(6).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"LastName\", \"Last Name\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"FirstName\", \"First Name\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"OrganizationName\", \"Organization\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"CountryName\", \"Country\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"Total Attendees\", \"Total Number of Recipients\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"Transaction Date\", \"Transaction Date\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"Purpose\", \"Purpose\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"Form\", \"Form\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"Total Amount\", \"Total Amount\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n ];\r\n }\r\n\r\n //---\r\n}","import { AgGridColumnExt } from \"../../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridService } from \"../../../../../shared/services/ag-grid/agGridService\";\r\nimport ApiService from \"../../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../../shared/types/enums\"\r\n\r\nexport default class RelatedTransactionsSearchDialogService {\r\n\r\n static searchOBS = (_tenantId, _searchValue) => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Transactions/FetchTransactionsSearchValue/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\"\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n {\r\n headerName: \"Select\",\r\n field: \"isSelected\",\r\n editable: true,\r\n width: 176,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n cellRenderer: \"isSelectedCellRenderer\",\r\n cellRendererParams: { onChange: (_cellRef, _data) => { _onSelectCallback(_data); } }\r\n },\r\n AgGridService.getColumn(false, \"Company Transaction ID\", \"companyTransactionId\"),\r\n AgGridService.getColumn(false, \"Porzio GST Transaction ID\", \"porzioGstTransactionId\",\"childMessageRendererComponent\"),\r\n AgGridService.getTextColumn(false, \"Last Name\", \"lastName\"),\r\n AgGridService.getTextColumn(false, \"First Name\", \"firstName\"),\r\n AgGridService.getColumn(false, \"Organization Name\", \"organizationName\"),\r\n AgGridColumnExt.GET(false, \"set\", \"Country\", \"country\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"Transaction Status\", \"transactionStatus\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"totalNumberOfRecipients\", \"Total Number of Recipients\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionDate\", \"Transaction Date\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"purpose\", \"Purpose\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"form\", \"Form\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"totalAmount\", \"Total Amount\").flexWeight(4).tooltip().headerClass(\"center-text\").SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { from, BehaviorSubject } from \"rxjs\";\r\nimport { mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, InputBase, Box } from \"@material-ui/core\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction } from \"../../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\n\r\nimport ActionDialog from \"../../../../../shared/components/dialog/actionDialog\";\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../../shared/services/theme/matIconService\";\r\nimport RelatedTransactionsSearchDialogService from \"./realtedTransactionsSearchDialogService\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../../shared/services/ag-grid/agGridUtil\";\r\n\r\nimport TransactionDetailDialogComponent from \"../../../transaction-detail/transactionDetailDialogComponent\";\r\nimport ChildMessageRendererComponent from \"../../../childMessageRendererComponent\";\r\nimport ToastService from \"../../../../../shared/services/toastService\";\r\n\r\n\r\nclass RelatedTransactionsSearchDialogComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n // ept till component's unMount\r\n scopedSubscriptions = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n transactionList: [],\r\n selectedTransaction: null,\r\n lastSearchedValue: '',\r\n errorMessage: null,\r\n showTransactionDetailDialog: false,\r\n showLinkWarningDialog: false,\r\n agGridRecipientUtils: new AgGridUtil(\"lastName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n\r\n componentDidMount() {\r\n var searchOBS = this.searchSubject.pipe(\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((_searchValue) => from(this.searchTransaction(_searchValue)))\r\n );\r\n\r\n this.scopedSubscriptions.add(searchOBS.subscribe());\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n node.transactionid = node.trid;\r\n this.setState({ modalAgNode: { ...node, porziogsttransactionid: node.porzioGstTransactionId, transactionid: node.trid, sourceid: node.sourceId } }, () => {\r\n this.setState({ showTransactionDetailDialog: true });\r\n });\r\n };\r\n\r\n formatDateToYYYYMMDD = (_date) => {\r\n let date = new Date(_date);\r\n return date.getFullYear() + \"-\" + String(date.getMonth() + 1).padStart(2, '0') + \"-\" + String(date.getDate()).padStart(2, '0');\r\n }\r\n\r\n searchTransaction = (_searchValue) => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n if (DataService.stringShouldBe(_searchValue, 3)) {\r\n this.setState({ searchResult: ResultStatus.LOADING, transactionList: [], selectedTransaction: null, lastSearchedValue: _searchValue });\r\n this.apiSubscriptions.add(\r\n RelatedTransactionsSearchDialogService.searchOBS(this.context.user.tenantId, _searchValue).subscribe(\r\n (_transactionListMain) => {\r\n if (DataService.hasElements(_transactionListMain)) {\r\n var _transactionList = _transactionListMain.filter(x => x.porzioGstTransactionId!==this.props.loadedTransaction && x.transactionDate === this.formatDateToYYYYMMDD(this.props.transactionDate));\r\n _transactionList.forEach(x => { x.isSelected = false; });\r\n }\r\n this.setState({\r\n searchResult: DataService.hasElements(_transactionList) ? ResultStatus.SUCCESS : ResultStatus.LOADED,//-> no records\r\n transactionList: _transactionList,\r\n });\r\n },\r\n (err) => { this.setState({ searchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n } else {\r\n this.setState({ searchResult: ResultStatus.NOT_LOADED });\r\n }\r\n return [];\r\n }\r\n\r\n buildSelectedTransactionObj = (_selectedTransaction) => {\r\n let currentLinkedTransactionsIds = this.props.currentLinkedTransactions.map(x => x.PorzioTransactionId);\r\n if (currentLinkedTransactionsIds.includes(_selectedTransaction.porzioGstTransactionId))\r\n ToastService.showError(\"Selected transaction is already linked.\");\r\n else {\r\n _selectedTransaction.CompanyTransactionId = _selectedTransaction.companyTransactionId;\r\n _selectedTransaction.PorzioTransactionId = _selectedTransaction.porzioGstTransactionId;\r\n _selectedTransaction.LastName = _selectedTransaction.lastName;\r\n _selectedTransaction.FirstName = _selectedTransaction.firstName;\r\n _selectedTransaction.OrganizationName = _selectedTransaction.organizationName;\r\n _selectedTransaction.CountryName = _selectedTransaction.country;\r\n _selectedTransaction.isSelected = false;\r\n this.props.onClose(_selectedTransaction);\r\n }\r\n }\r\n\r\n // render\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n Transaction Search\r\n {/* Search */}\r\n
\r\n
{MatIconService.SEARCH}
\r\n { this.searchSubject.next(e.target.value); }} />\r\n
\r\n {LayoutService.getIconButton(DataService.isNullOrUndefined(this.state.selectedTransaction), MatIconService.LINK, \"Link\", () => {\r\n this.props.currentLinkedTransactions.includes(this.state.selectedTransaction.porziogsttransactionid) ?\r\n this.setState({ showLinkWarningDialog: true }) : this.buildSelectedTransactionObj(this.state.selectedTransaction);\r\n }, \"inherit\", \"keyActionSave\")}\r\n {/* {LayoutService.getIconButton(false, MatIconService.OK, \"Submit\", () => { alert(\"Under development\") }, \"inherit\")} */}\r\n {/* {LayoutService.getIconButton(false, MatIconService.IDEA_BULB_32, \"Possible Matches\", () => { alert(\"Under development\") }, \"inherit\")} */}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => { this.props.onClose(\"\", \"\") }, \"secondary\", \"keyActionCancel1\")}\r\n
\r\n
\r\n
\r\n \r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n {!this.state.showTransactionDetailDialog ? null : { this.setState({ showTransactionDetailDialog: false }); /*this.fetchData(true);*/ }} />}\r\n { this.setState({ showLinkWarningDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n
\r\n );\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.searchResult) {\r\n case ResultStatus.SAVING: return ;\r\n case ResultStatus.LOADING: return ;\r\n case ResultStatus.NOT_LOADED: return ;\r\n case ResultStatus.LOADED: return ;\r\n case ResultStatus.SUCCESS:\r\n return (
\r\n
\r\n {\r\n this.setState({ selectedTransaction: _data });\r\n })}\r\n suppressClickEdit={true}\r\n frameworkComponents={this.state.agGridRecipientUtils.frameworkComponents}\r\n onGridReady={(params) => { this.state.agGridRecipientUtils.setGridParams(params, true); }}\r\n gridOptions={{\r\n context: { componentParent: this },\r\n suppressContextMenu: true,\r\n rowHeight: 32,\r\n }}\r\n />\r\n
\r\n
);\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.searchTransaction(this.state.lastSearchedValue); }} />);\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(RelatedTransactionsSearchDialogComponent);","import React from \"react\";\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Grid } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { API_ENDPOINT, CrudAction, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport RelatedTransactionsService from \"./relatedTransactionsService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ChildMessageRendererComponent from \"../../childMessageRendererComponent\";\r\nimport TransactionDetailDialogComponent from \"../transactionDetailDialogComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport ActionDialog from \"../../../../shared/components/dialog/actionDialog\";\r\nimport RelatedTransactionsSearchDialogComponent from \"./realted-transactions-search-dialog/relatedTransactionsSearchDialogComponent\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\n\r\nclass RelatedTransactionsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n porzioSearch: \"\",\r\n selectedTransactions: [],\r\n currentLinkedTransactions: [],\r\n showUnlinkConfirmDialog: false,\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n RelatedTransactionsService.getRelatedTransactionsAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode,),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n // success\r\n ([_data, _countryList]) => {\r\n this.setState(\r\n {\r\n data: _data.map((d) => ({\r\n ...d,\r\n CountryName: d.Country ? [{ id: 0, value: \"All\" }, ..._countryList].find(c => c.id === d.Country).value : \"\",\r\n })),\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ currentLinkedTransactions: this.state.data, fetchResult: ResultStatus.LOADED });\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({\r\n modalAgNode: {\r\n ...node,\r\n sourceid: node.SOURCEID,\r\n transactionid: node.TransactionId\r\n }\r\n });\r\n\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showTransactionDetailDialog: true });\r\n }\r\n }\r\n\r\n getNewlyLinkedTransactions = () => {\r\n let gstIds = this.state.data.map(y => y.PorzioTransactionId);\r\n\r\n let trids = this.state.currentLinkedTransactions.filter(x =>\r\n !gstIds.includes(x.PorzioTransactionId)).map(x => x.trid);\r\n return trids;\r\n }\r\n\r\n linkTransactionsToRelatedTransactions = (_link = true, _trids = []) => {\r\n\r\n let dataToPost = {\r\n tenantId: this.context.user.tenantId,\r\n uid: this.context.user.uid,\r\n userid: this.context.user.userId,\r\n companyEventId: this.props.modalAgNode.companyEventId === undefined ?this.props.modalAgNode.companyeventid:this.props.modalAgNode.companyEventId,\r\n transactionIds: _trids,\r\n link: _link\r\n }\r\n\r\n this.apiSubscriptions.cancelAll();\r\n this.props.setIsSaving(true);\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n `/Transactions/LinkOrUnlinkToRelatedTransactions`,\r\n JSON.stringify(dataToPost)\r\n )\r\n ]).subscribe(\r\n ([_data]) => {\r\n this.fetchData();\r\n this.props.setIsSaving(false);\r\n },\r\n (error) => {\r\n ToastService.showError(\"Error Occured\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n this.props.changeToReadOnlyMode();\r\n }\r\n\r\n render() {\r\n\r\n const { classes } = this.props;\r\n const isReadOnly = this.props.isReadOnly;\r\n this.state.agGridUtils.setEditingMode(isReadOnly);\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Related Transactions\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {\r\n this.setState({ showConfirmDialog: false, showSearchLinkedTransactionsDialog: true });\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n {\r\n this.setState({ showUnlinkConfirmDialog: false }, () => {\r\n var gridData = this.state.agGridUtils.getUpdatedRowData();\r\n var ids = gridData.filter(x => x.isSelected).map(x => x.TransactionId);\r\n this.linkTransactionsToRelatedTransactions(false, ids);\r\n this.props.changeToReadOnlyMode();\r\n });\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showUnlinkConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n { this.setState({ showUnlinkWarningDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n \r\n \r\n \r\n \r\n {LayoutService.getIconButton((this.props.isReadOnly), MatIconService.SEARCH, \"search\", () => {\r\n this.setState({ showSearchLinkedTransactionsDialog: true })\r\n }, \"inherit\")}\r\n {LayoutService.getIconButton((this.props.isReadOnly), MatIconService.UNLINK, \"Unlink\",\r\n () => {\r\n console.log(this.state.agGridUtils.getUpdatedRowData());\r\n var ids = DataService.arrayToString(this.state.agGridUtils.getUpdatedRowData().filter(x => x.isSelected).map(x => x.PorzioTransactionId));\r\n if (ids.length === 0) {\r\n this.setState({ showUnlinkWarningDialog: true, warningDesc: \"Please select at least one transaction to unlink\" });\r\n }\r\n else {\r\n if (this.getNewlyLinkedTransactions().length !== 0) {\r\n this.setState({ showUnlinkWarningDialog: true, warningDesc: \"Please save changes before unlink\" });\r\n } else {\r\n this.setState({ transactionssToBeUnlinked: ids, showUnlinkConfirmDialog: true });\r\n }\r\n }\r\n }, \"primary\")}\r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, false);\r\n this.state.agGridUtils.setEditingMode(isReadOnly);\r\n }}>\r\n
\r\n
\r\n {\r\n if (_selectedTransaction) {\r\n this.setState((_prevState) => ({\r\n showSearchLinkedTransactionsDialog: false,\r\n currentLinkedTransactions: [..._prevState.currentLinkedTransactions, _selectedTransaction]\r\n }));\r\n }\r\n else {\r\n this.setState({ showSearchLinkedTransactionsDialog: false })\r\n }\r\n }}\r\n />\r\n
\r\n { this.setState({ showTransactionDetailDialog: false }); /*this.fetchData(true);*/ }} />\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n //return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n if (this.getNewlyLinkedTransactions().length === 0)\r\n return false;\r\n return true;\r\n }\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n this.setState((_prevState) => ({ currentLinkedTransactions: _prevState.data }));\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n //return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n return this.linkTransactionsToRelatedTransactions(true, this.getNewlyLinkedTransactions());\r\n }\r\n\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(RelatedTransactionsComponent);\r\n","import React from 'react';\r\nimport { AppBar, Box, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\n\r\nclass TransactiondetailDeleteConfirmComponent extends React.Component {\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n Delete Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete\", this.props.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.handleDeleteDismiss, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to delete the selected Transaction?\r\n \r\n \r\n {this.props.porziogsttransactionid}\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 LayoutService.getHocComponenet(TransactiondetailDeleteConfirmComponent);","import React from 'react';\r\nimport { AppBar, Box, Button, Dialog, DialogActions, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\n\r\nclass TransactionDetailEditConfirmComponent extends React.Component {\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n Compliance Report Warning\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Edit\", this.props.handleEditConfirm, \"inherit\", \"keyActionEdit\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.handleEditDismiss, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n This transaction has been included on a report with a final disposition flag. Are you sure you want to edit this transaction? For additional details please check the Report References tab.\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 LayoutService.getHocComponenet(TransactionDetailEditConfirmComponent);","import React, { Component, createRef } from \"react\";\r\nimport { Typography, Grid } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../store/authProvider\";\r\nimport OktaAuthService from \"../../../public/authentication/oktaAuthService\";\r\n\r\nexport default class DownloadFileComponent extends Component {\r\n static contextType = AuthContext;\r\n\r\n linkRef = createRef();\r\n\r\n onDownloadClick = async () => {\r\n if (this.linkRef.current.href) { return }\r\n let blob = await this.fetchDownload();\r\n const href = window.URL.createObjectURL(blob);\r\n this.linkRef.current.download = this.props.fileName;\r\n this.linkRef.current.href = href;\r\n this.linkRef.current.click();\r\n }\r\n\r\n fetchDownload = async () => {\r\n const result = await fetch(\r\n `${this.props.apiServer}${this.props.porzioApiPath}/${this.context.user.tenantId}?blobName=${this.props.blobName}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n );\r\n const blob = await result.blob();\r\n return blob;\r\n };\r\n\r\n render() {\r\n return (\r\n {this.props.fileName}\r\n );\r\n }\r\n}\r\n","import { ReplaySubject } from \"rxjs\";\r\nimport { AgGridService } from \"../../../../shared/services/ag-grid/agGridService\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, } from \"../../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class TaskDetailsService {\r\n /** Step-1/3\r\n * make sure the lookup observable is mentioned here,\r\n * this is used to fetch commonly used observables after the user logs in,\r\n * using the rxJs's combine latest operator\r\n * */\r\n static fetchTaskDetailsLookupsOBS() {\r\n return [\r\n TaskDetailsService.getAssignedToFullUserAsOBS(),\r\n TaskDetailsService.getAllUsersAsOBS(),\r\n ];\r\n }\r\n\r\n /** STEP-2/3\r\n * Clear the cache\r\n * This function should be called after the user Login/Logout,\r\n * The reson for clering the cache on user login is the lookups are populated for context.user.tenantId,\r\n */\r\n static clearAll() {\r\n TaskDetailsService._ASSIGNEDTOFULLUSER = [];\r\n TaskDetailsService._ALLUSERS = [];\r\n TaskDetailsService._TASKBYID = [];\r\n TaskDetailsService._TASKCOMMENTSBYID = [];\r\n }\r\n\r\n /** STEP 3/3\r\n * Define the fetch logic below\r\n */\r\n // _BUSINESSRULE\r\n static _ASSIGNEDTOFULLUSER = [];\r\n static getAssignedToFullUserAsOBS = (_context, assignedToUserId) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(TaskDetailsService._ASSIGNEDTOFULLUSER)) {\r\n oSubject.next(TaskDetailsService._ASSIGNEDTOFULLUSER);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/User/GetFullUser?tenantId=${_context.user.tenantId}&userId=${assignedToUserId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n TaskDetailsService._ASSIGNEDTOFULLUSER = _data;\r\n oSubject.next(TaskDetailsService._ASSIGNEDTOFULLUSER);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _ENTITY\r\n static _ALLUSERS = [];\r\n static getAllUsersAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(TaskDetailsService._ALLUSERS)) {\r\n oSubject.next(TaskDetailsService._ALLUSERS);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT,\r\n `/User/GetAllUsers/${_context.user.tenantId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n TaskDetailsService._ALLUSERS = _data;\r\n oSubject.next(TaskDetailsService._ALLUSERS);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _TASKPRORITY\r\n static _TASKPRORITY = [];\r\n static getTaskPrioritiesAsOBS = (_context, _fieldName) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(TaskDetailsService._TASKPRORITY)) {\r\n oSubject.next(TaskDetailsService._TASKPRORITY);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT,\r\n `/Util/GetFieldLOVByName/${_context.user.tenantId}/${_fieldName}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n TaskDetailsService._TASKPRORITY = _data;\r\n oSubject.next(TaskDetailsService._TASKPRORITY);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n\r\n static _TASKBYID = [];\r\n static getTaskByIdAsOBS = (_context, taskId) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(TaskDetailsService._TASKBYID)) {\r\n oSubject.next(TaskDetailsService._TASKBYID);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Task/FetchTaskById?tenantId=${_context.user.tenantId}&taskId=${taskId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n TaskDetailsService._TASKBYID = _data;\r\n oSubject.next(TaskDetailsService._TASKBYID);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n static _TASKCOMMENTSBYID = [];\r\n static getTaskGetCommentsByIdAsOBS = (_context, taskId) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(TaskDetailsService._TASKCOMMENTSBYID)) {\r\n oSubject.next(TaskDetailsService._TASKCOMMENTSBYID);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Task/FetchComments?tenantId=${_context.user.tenantId}&taskId=${taskId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n TaskDetailsService._TASKCOMMENTSBYID = _data;\r\n oSubject.next(TaskDetailsService._TASKCOMMENTSBYID);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n //#region Address Grid\r\n static validateEntityFieldRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n};\r\n\r\nstatic getColumnDefs = (_componentThisRef, _isReadOnly, _agGridUtils) => {\r\n return [\r\n // edit button column\r\n _agGridUtils.getInlineEditActionColumn(false, this.validateEntityFieldRowEditOBS),\r\n AgGridColumnExt.GET(false, \"text\", \"date\", \"Date\").flexWeight(1).minWidth(90).headerClass(\"center-text\").centerAlignText().tooltip().cellRenderer(\"dateCellRenderer\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"eventType\", \"Event Type\").flexWeight(1).minWidth(110).headerClass(\"center-text\").centerAlignText().tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"user\", \"User\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().tooltip().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"description\", \"Description\").flexWeight(2).minWidth(136).headerClass(\"center-text\").centerAlignText().tooltip().SET(),\r\n ];\r\n };\r\n\r\n}\r\n","import React from \"react\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport { DataService } from \"../../services/dataService\";\r\nimport { AgGridUtil } from \"../../services/ag-grid/agGridUtil\";\r\nimport { Typography } from \"@material-ui/core\";\r\n\r\nexport default class AgGridDatePickerCellRendererComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { selDate: this.props.data[this.props.colDef.field] ? this.props.data[this.props.colDef.field] : null };\r\n }\r\n\r\n render() {\r\n const specialObj = this.props.data[AgGridUtil.specialProperty];\r\n const notHasSpecialProperty = DataService.isNullOrUndefined(specialObj);\r\n const isEditing = notHasSpecialProperty ? true : specialObj[AgGridUtil.editingProperty] === true;\r\n const isReadOnly = notHasSpecialProperty ? false : specialObj[AgGridUtil.readOnlyProperty] === true;\r\n const isDisabled = isReadOnly || !isEditing;\r\n\r\n return (\r\n <>\r\n {/* */}\r\n { this.onStateChangeRequested(e); }}\r\n InputProps={{\r\n className: \"grid-date-picker\",\r\n disableUnderline: true,\r\n }}\r\n />\r\n {/* */}\r\n \r\n );\r\n }\r\n\r\n onStateChangeRequested = (e) => {\r\n\r\n //console.log(e);\r\n this.setState({ selDate: e }, // invert the checked state\r\n () => {\r\n //console.log(this.state.selDate);\r\n var newProps = { ...this.props };\r\n newProps.oldValue = this.props.data[this.props.colDef.field];\r\n newProps.newValue = this.state.selDate;\r\n\r\n // this.props.data[this.props.colDef.field] = newProps.newValue; // update the datasource\r\n this.props.node.setDataValue(this.props.colDef.field, newProps.newValue); // update the datasource\r\n\r\n // call the callback\r\n if (this.props.onChange) {\r\n this.props.onChange(this, this.state.selDate, newProps);\r\n }\r\n }\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { Dialog, DialogTitle, DialogContent, Divider, Grid, Box, Typography, AppBar, Toolbar, TextField, FormHelperText, Input, Chip, LinearProgress } from \"@material-ui/core\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\n\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, TaskLauncher, ENTITY_TYPE, } from \"../../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport DownloadFileComponent from \"../../../../shared/components/download/downloadFileComponent\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport TaskDetailsService from \"./taskDetailsService\";\r\nimport ProfileDetailDialogComponent from \"../../../profile-center/profile-detail/profileDetailDialogComponent\";\r\nimport TransactionDetailDialogComponent from \"../../../transaction-center/transaction-detail/transactionDetailDialogComponent\";\r\nimport AgGridDatePickerCellRendererComponent from \"../../../../shared/components/elements/agGridDatePickerCellRendererComponent\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport OktaAuthService from \"../../../../public/authentication/oktaAuthService\";\r\n\r\nclass TaskDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n taskById: {},\r\n taskCommentsById: [],\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n showProfileDetailDialog: false,\r\n\r\n agGridFieldUtils: new AgGridUtil(\"description\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n isActiveCellRenderer: AgGridCheckboxCellRendererComponent,\r\n isPrimaryCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n dateCellRenderer: AgGridDatePickerCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n TaskDetailsService.clearAll();\r\n\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n (this.props.inputAction === CrudAction.CREATE ? of(null) : TaskDetailsService.getTaskByIdAsOBS(this.context, this.props.updateData.taskId)),\r\n (this.props.inputAction === CrudAction.CREATE ? of(null) : TaskDetailsService.getTaskGetCommentsByIdAsOBS(this.context, this.props.updateData.taskId)),\r\n (this.props.inputAction === CrudAction.CREATE ? of(null) : TaskDetailsService.getAssignedToFullUserAsOBS(this.context, this.props.updateData.taskAssignedTo)),\r\n TaskDetailsService.getAllUsersAsOBS(this.context),\r\n TaskDetailsService.getTaskPrioritiesAsOBS(this.context, \"task priority\"),\r\n ]).subscribe(\r\n ([\r\n _taskById,\r\n _taskCommentsById,\r\n _assignedToFullUser,\r\n _allUsersList,\r\n _taskPriorities\r\n ]) => {\r\n _taskPriorities = DataService.getKeyValueCollection(_taskPriorities, \"lovId\", \"lovKey\");\r\n const _allUsersListSorted = _allUsersList;\r\n\r\n _allUsersListSorted.sort((a, b) => {\r\n const nameA = a.firstName.toUpperCase();\r\n const nameB = b.firstName.toUpperCase();\r\n return nameA.localeCompare(nameB);\r\n });\r\n \r\n let _sourceEntityType = 12;\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n _sourceEntityType = _taskById.sourceEntityID; // get it from the task\r\n } else {\r\n if (this.props.taskLauncher === TaskLauncher.PROFILE_EXPANDED_VIEW || this.props.taskLauncher === TaskLauncher.PROFILE_DETAILS) {\r\n _sourceEntityType = ENTITY_TYPE.PROFILE;\r\n }\r\n else if (this.props.taskLauncher === TaskLauncher.TRANSACTION_EXPANDED_VIEW || this.props.taskLauncher === TaskLauncher.TRANSACTION_DETAILS) {\r\n _sourceEntityType = ENTITY_TYPE.TRANSACTION;\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n taskById: _taskById,\r\n sourceEntityType: _sourceEntityType,\r\n // taskCommentsById: _taskCommentsById ?? [],\r\n taskCommentsById: _taskCommentsById ? _taskCommentsById.map(r => ({\r\n ...r,\r\n date: DataService.getDateStringForDisplay(r.date),\r\n user: _allUsersListSorted.find(u => u.id === r.userId)?.firstName + \" \" + _allUsersListSorted.find(u => u.id === r.userId)?.lastName,\r\n })) : [],\r\n assignedToFullUser: _assignedToFullUser,\r\n allUsersList: _allUsersListSorted.map(o => ({ ...o, fullName: o.firstName + \" \" + o.lastName })).filter(i => [\"porzio@porzio.com\", \"porzio@porziols.com\"].indexOf(i.loginName.toLowerCase()) === -1),\r\n taskPriorities: _taskPriorities\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n taskName: \"\",\r\n taskPriority: \"\",\r\n taskAssignedTo: \"\",\r\n startDate: null,\r\n dueDate: null,\r\n status: \"\",\r\n percentComplete: \"\",\r\n taskDescription: \"\",\r\n porzioGstIds: DataService.hasElements(this.props.porzioGstIds) ? this.props.porzioGstIds : [],\r\n };\r\n } else {\r\n return {\r\n taskName: this.state.taskById.taskName,\r\n taskPriority: this.state.taskById.taskPriorityId,\r\n taskAssignedTo: this.state.taskById.taskAssignedTo,\r\n startDate: DataService.getDateStringForDisplay(this.state.taskById.taskStartDate),\r\n dueDate: DataService.getDateStringForDisplay(this.state.taskById.taskDueDate),\r\n status: this.state.taskById.taskStatusId,// >= 207 ? this.state.taskById.taskStatusId : this.state.taskById.taskStatusId + 206,\r\n percentComplete: this.state.taskById.percentageComplete,\r\n taskDescription: this.state.taskById.taskDescription,\r\n porzioGstIds: DataService.stringToArray(this.state.taskById.sourceGSTID?.replace(\" \", \"\"), \",\"), // DataService.stringToArray(`${this.state.taskById.sourceGSTID},${this.state.taskById.sourceGSTID}`, \",\"),\r\n }\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n taskName: Yup.string().required(\"Required\").min(3, \"Must be atleast 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n taskPriority: Yup.number().required(\"Required\").typeError(\"Required\"),\r\n taskAssignedTo: Yup.number().required(\"Required\").typeError(\"Required\"),\r\n startDate: Yup.date().nullable(true).required(\"Required\"),\r\n dueDate: Yup.date()\r\n .when(\"startDate\",\r\n (startDate, yup) => {\r\n if (startDate) {\r\n var d = startDate;\r\n d.setHours(0, 0, 0, 0);\r\n return yup.nullable(true).required(\"Required\").min(d, \"Due date cannot be before Start date\")\r\n } else {\r\n return yup.nullable(true).required(\"Required\")\r\n }\r\n }),\r\n status: Yup.number().required(\"Required\").typeError(\"Required\"),\r\n percentComplete: Yup.number().min(0, \"Must be above 0\").max(100, \"Must be below 100\").transform((_, val) => val === \"\" ? 0 : Number(val)),\r\n taskDescription: Yup.string(),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n console.log(\"_formikProps\", _formikProps);\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2.1) extract the formik values into an object\r\n let updatedRows = this.state.agGridFieldUtils.getUpdatedRowData();\r\n console.log(\"updatedRows: \", updatedRows);\r\n\r\n const _stringifiedPorzioGstIds = DataService.arrayToString(_formikProps.values[\"porzioGstIds\"], \",\");\r\n const _taskAssignedTo = this.state.allUsersList.find(o => o.id === _formikProps.values.taskAssignedTo);\r\n\r\n // 2.2) extract the formik values into an object\r\n const formData = new FormData();\r\n for (let i = 0; i < updatedRows.length; i++) {\r\n formData.append(`taskComments[${i}][commentId]`, this.props.inputAction === CrudAction.CREATE ? 0 : updatedRows[i].commentId ?? 0);\r\n formData.append(`taskComments[${i}][description]`, updatedRows[i].description);\r\n formData.append(`taskComments[${i}][date]`, DataService.getDateFromDateTimeStamp(updatedRows[i].date));\r\n formData.append(`taskComments[${i}][eventType]`, updatedRows[i].eventType);\r\n formData.append(`taskComments[${i}][userId]`, updatedRows[i].userId ?? this.context.user.userId);\r\n formData.append(`taskComments[${i}][taskId]`, updatedRows[i].taskId ?? this.props.inputAction === CrudAction.CREATE ? 0 : this.props.updateData.taskId);\r\n formData.append(`taskComments[${i}][tenantId]`, updatedRows[i].tenantId ?? this.context.user.tenantId);\r\n formData.append(`taskComments[${i}][rowS_COUNT]`, updatedRows.length);\r\n formData.append(`taskComments[${i}][eventTypeId]`, updatedRows[i].eventTypeId ?? 0);\r\n formData.append(`taskComments[${i}][user]`, updatedRows[i].user);\r\n formData.append(`taskComments[${i}][wfTaskId]`, this.props.inputAction === CrudAction.CREATE ? 0 : this.props.updateData.taskId);\r\n formData.append(`taskComments[${i}][initiatorUserId]`, this.context.user.userId);\r\n formData.append(`taskComments[${i}][firstName]`, _taskAssignedTo?.firstName);\r\n formData.append(`taskComments[${i}][lastName]`, _taskAssignedTo?.lastName);\r\n formData.append(`taskComments[${i}][middleName]`, _taskAssignedTo?.middleName ?? \"\");\r\n formData.append(`taskComments[${i}][sourcePorzioGSTId]`, _stringifiedPorzioGstIds);\r\n }\r\n // let rowsToPost = updatedRows.forEach((u, i) => ({\r\n // commentId: this.props.inputAction === CrudAction.CREATE ? 0 : this.props.updateData.commentId,\r\n // description: u.description,\r\n // date: new Date(),\r\n // eventType: u.eventType,\r\n // userId: this.context.user.userId,\r\n // taskId: this.props.inputAction === CrudAction.CREATE ? 0 : this.props.updateData.taskId,\r\n // tenantId: this.context.user.tenantId,\r\n // rowS_COUNT: 0,\r\n // eventTypeId: 0,\r\n // user: u.user,\r\n // wfTaskId: this.props.inputAction === CrudAction.CREATE ? 0 : this.props.updateData.taskId,\r\n // initiatorUserId: this.context.user.userId,\r\n // firstName: _taskAssignedTo?.firstName,\r\n // lastName: _taskAssignedTo?.lastName,\r\n // middleName: _taskAssignedTo?.middleName,\r\n // sourcePorzioGSTId: _stringifiedPorzioGstIds\r\n // }));\r\n // console.log(\"rowsToPost: \", rowsToPost);\r\n\r\n //var mappedObj = {\r\n formData.append(\"TaskName\", _formikProps.values.taskName);\r\n formData.append(\"taskPriorityId\", _formikProps.values.taskPriority);\r\n formData.append(\"taskPriority\", \"High\");\r\n formData.append(\"taskAssignedTo\", _formikProps.values.taskAssignedTo);\r\n formData.append(\"taskStartDate\", _formikProps.values.startDate.toISOString().substring(0, 10));\r\n formData.append(\"taskStatusId\", _formikProps.values.status);\r\n formData.append(\"taskStatus\", \"High\");\r\n formData.append(\"taskDueDate\", _formikProps.values.dueDate.toISOString().substring(0, 10));\r\n formData.append(\"percentComplete\", _formikProps.values.percentComplete ? Number(_formikProps.values.percentComplete) : 0);\r\n formData.append(\"taskDescription\", _formikProps.values.taskDescription);\r\n formData.append(\"isTaskAssignedToMe\", 0);\r\n formData.append(\"tenantId\", this.context.user.tenantId);\r\n formData.append(\"isActive\", true)\r\n formData.append(\"createdBy\", this.context.user.userId);\r\n formData.append(\"createdDate\", new Date().toISOString().substring(0, 10));\r\n formData.append(\"updatedBy\", this.context.user.userId);\r\n formData.append(\"updatedDate\", new Date().toISOString().substring(0, 10));\r\n formData.append(\"sourceEntityID\", this.state.sourceEntityType)\r\n formData.append(\"sourcePorzioGstid\", _stringifiedPorzioGstIds);\r\n formData.append(\"porzioGSTTaskId\", \"DEVTKB4DD40073\");\r\n formData.append(\"firstName\", this.state.allUsersList.find(o => o.id === _formikProps.values.taskAssignedTo).firstName);\r\n // formData.append(\"middleInitial\", \"\");\r\n formData.append(\"lastName\", this.state.allUsersList.find(o => o.id === _formikProps.values.taskAssignedTo).lastName);\r\n formData.append(\"userName\", this.state.allUsersList.find(o => o.id === _formikProps.values.taskAssignedTo).loginName);\r\n formData.append(\"rows_Count\", 0);\r\n formData.append(\"taskAttachments\", JSON.stringify([\r\n {\r\n attachmentId: 284,\r\n attachmentFileName: \"Netherland-2018-Submitted.xls\",\r\n blobName: \"1140\"\r\n }\r\n ]));\r\n formData.append(\"assignedTo\", [\r\n _formikProps.values.taskAssignedTo\r\n ]);\r\n if (this.state.selectedFileName) {\r\n formData.append(\"attachmentFileName\", this.state.selectedFileName);\r\n } else {\r\n formData.append(\"attachmentFileName\", \"\");\r\n }\r\n if (this.state.selectedFile) {\r\n formData.append(\"efile\", this.state.selectedFile);\r\n } else {\r\n formData.append(\"efile\", \"\");\r\n }\r\n formData.append(\"blobName\", \"\");\r\n formData.append(\"fileName\", \"\");\r\n\r\n // formData.append(\"taskComments\", JSON.stringify([\r\n // {\r\n // commentId: 0,\r\n // description: \"string\",\r\n // date: \"2020-09-25T11:22:48.445Z\",\r\n // eventType: \"New Comment\",\r\n // userId: this.context.user.userId,\r\n // taskId: 0,\r\n // tenantId: this.context.user.tenantId,\r\n // rowS_COUNT: 0,\r\n // eventTypeId: 0,\r\n // user: \"Mustafa Alure\",\r\n // wfTaskId: 782,\r\n // initiatorUserId: this.context.user.userId,\r\n // firstName: \"string\",\r\n // lastName: \"string\",\r\n // middleName: \"M\",\r\n // sourcePorzioGSTId: \"DEVTK21682647B\"\r\n // }\r\n // ]));\r\n //formData.append(\"taskComments\", JSON.stringify(rowsToPost));\r\n\r\n formData.append(\"userId\", _formikProps.values.taskAssignedTo);\r\n formData.append(\"isApproved\", true);\r\n formData.append(\"records\", \"\");\r\n formData.append(\"isWorkFlowTask\", true);\r\n formData.append(\"sourceGSTID\", \"DEVWFAFF475756\");\r\n formData.append(\"customfielddata\", JSON.stringify({}));\r\n formData.append(\"customfieldvalues\", JSON.stringify({}));\r\n formData.append(\"customfields\", \"string\");\r\n\r\n // 3) determine the action and assign the appropriate props\r\n const actionVerb = \"POST\";\r\n let targetUrl = \"\";\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n targetUrl = `/Task/SaveAndEditTask?tenantId=${this.context.user.tenantId}&userId=${this.context.user.userId}&uId=${this.context.user.uid}`;\r\n formData.append(\"taskId\", 0);\r\n } else {\r\n // UPDATE\r\n targetUrl = `/Task/SaveAndEditTask?tenantId=${this.context.user.tenantId}&userId=${this.context.user.userId}&uId=${this.context.user.uid}`;\r\n formData.append(\"taskId\", this.props.updateData.taskId);\r\n }\r\n\r\n const headers = {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n };\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.TENANT, targetUrl, formData, headers).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshTaskList(true, this.context);\r\n this.props.onClose(false);\r\n ToastService.showSuccess(\"Task Saved\");\r\n } else {\r\n console.error(\"Error: falsey successResult while saving Task\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n ToastService.showError(\"An Error occured while saving the Task\");\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Task\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n ToastService.showError(\"An Error occured while saving the Task\");\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(erroObj);\r\n erroObj.inner && erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n showProfileDialog = (_prId) => {\r\n this.setState({\r\n selectedProfileId: _prId, // skip the first 5 chars to get the prid\r\n showProfileDetailDialog: true,\r\n showTransactionDetailDialog: false,\r\n selectedTransactionObj: null\r\n });\r\n }\r\n\r\n showTransactionDialog = (_trId) => {\r\n this.setState({\r\n isLoading: true,\r\n showProfileDetailDialog: false, selectedProfileId: null,\r\n showTransactionDetailDialog: false, selectedTransactionObj: null\r\n });\r\n\r\n LookupService.getTransactionTabDetailsAsOBS(this.context.user.tenantId, _trId)\r\n .subscribe(\r\n (successObj) => {\r\n this.setState({\r\n isLoading: false,\r\n selectedTransactionObj: successObj,\r\n showTransactionDetailDialog: true,\r\n });\r\n },\r\n (errorObj) => {\r\n ToastService.showError(\"An Error Occrred while fetching the Transaction.\");\r\n this.setState({ isLoading: false });\r\n }\r\n );\r\n }\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n this.state.agGridFieldUtils.setReadOnlyMode(this.state.isReadOnly);\r\n\r\n if (RolePermissionService.TASK_DETAIL.cannotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n {(fProps) => (\r\n
\r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n Task Detail\r\n {/* { this.handleSubmit(fProps); }}> {MatIconService.OK} \r\n { this.props.onClose(false); }}> {MatIconService.CANCEL} */}\r\n {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n {this.state.isLoading ? : null}\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"taskPriority\", \"Task Priority *\", this.state.taskPriorities, \"id\", \"text\", \"90%\", true)}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"taskAssignedTo\", \"Task Assigned To *\", this.state.allUsersList, \"id\", \"fullName\", \"90%\", true)}\r\n\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"status\", \"Status *\", LookupService.STATUSES, \"id\", \"name\", \"90%\", true)}\r\n \r\n \r\n\r\n {this.state.sourceEntityType === ENTITY_TYPE.PROFILE || this.state.sourceEntityType === ENTITY_TYPE.TRANSACTION ?\r\n \r\n {this.state.sourceEntityType === ENTITY_TYPE.PROFILE ? \"Profiles\" : \"Transactions\"}\r\n \r\n {fProps.values[\"porzioGstIds\"].map((x, index) => {\r\n return {\r\n const entityId = Number(x.substring(5)); // skip the first 5 chars to get the prid/trid\r\n if (this.state.sourceEntityType === ENTITY_TYPE.TRANSACTION) { // when implemented simply remove this if part ank keep the else part\r\n this.showTransactionDialog(entityId);\r\n } else {\r\n this.showProfileDialog(entityId);\r\n }\r\n }} />\r\n })}\r\n \r\n \r\n : null}\r\n\r\n {this.props.inputAction === CrudAction.CREATE ?\r\n \r\n Attachment\r\n this.setState({ selectedFile: event.target.files[0], selectedFileName: event.target.files[0].name })} fullWidth />\r\n \r\n : null}\r\n {this.state.taskById?.blobName ?\r\n \r\n \r\n \r\n Attached File\r\n \r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n\r\n \r\n \r\n
\r\n \r\n \r\n Comments\r\n \r\n {LayoutService.getIconButton(this.state.isReadOnly ? this.state.isReadOnly : RolePermissionService.TASK_COMMENTS.cannotEdit, MatIconService.ADD_CIRCLE_OUTLINE, \"Add New Comment\",\r\n () => {\r\n if (this.state.agGridFieldUtils.isNotEditing()) {\r\n this.state.agGridFieldUtils.addNewRow({\r\n date: DataService.getDateFromDateTimeStamp(new Date()),\r\n eventType: \"New Comment\", user: this.state.allUsersList.find(o => o.id === this.context.user.userId)?.firstName + \" \" + this.state.allUsersList.find(o => o.id === this.context.user.userId)?.lastName,\r\n });\r\n }\r\n }\r\n )}\r\n \r\n \r\n {RolePermissionService.TASK_COMMENTS.cannotView ? RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }, false)\r\n :\r\n {\r\n this.state.agGridFieldUtils.setGridParams(params, true);\r\n this.state.agGridFieldUtils.setReadOnlyMode(this.state.isReadOnly);\r\n this.setState({ hasAgGrid: 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 {/* Show Profile-Detail Dialog */}\r\n {this.state.showProfileDetailDialog ?\r\n { this.setState({ showProfileDetailDialog: false, showTransactionDetailDialog: false }); }}\r\n />\r\n : <>}\r\n\r\n {/* Show Transaction-Detail Dialog */}\r\n {this.state.showTransactionDetailDialog ?\r\n { this.setState({ showProfileDetailDialog: false, showTransactionDetailDialog: false }); }}\r\n />\r\n : <>}\r\n
\r\n
\r\n )}\r\n
\r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n //this.SERVICE.fetchData(this, true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(TaskDetailsComponent);","import React from 'react';\r\nimport { AppBar, Box, Button, Dialog, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography, Divider, Chip } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport MatThemeService from '../../../../shared/services/theme/matThemeService';\r\n\r\nclass RelatedTransactionEditConfirmationDialog extends React.Component {\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n Group Expenses Confirmation?\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Confirm\", this.props.onConfirm, \"inherit\", \"keyActionOk\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.onClose, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Changes will be applied to all transactions in the group. Please confirm.\r\n \r\n \r\n \r\n \r\n \r\n {(this.props.relatedTransactions || []).map((x, index) => {\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 LayoutService.getHocComponenet(RelatedTransactionEditConfirmationDialog);","import React from \"react\";\r\nimport { AppBar, Box, Dialog, DialogTitle, Divider, LinearProgress, Tab, Tabs, Toolbar, Typography } from \"@material-ui/core\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport TransactionTabComponent from \"./transaction-tab/transactionTabComponent\";\r\nimport RuleSummaryComponent from \"./rule-summary-tab/ruleSummaryComponent\";\r\nimport AgreementsComponent from \"../../../shared/components/agreements/agreementsComponent\";\r\nimport DocumentsComponent from \"./documents-tab/documentsComponent\";\r\nimport ReportReferencesComponent from \"./report-references-tab/reportReferencesComponent\";\r\nimport RelatedTransactionsComponent from \"./related-transactions-tab/relatedTransactionsComponent\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { API_ENDPOINT, CrudAction, ENTITY_TYPE, TaskLauncher } from \"../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport ActionDialog from \"../../../shared/components/dialog/actionDialog\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport TransactiondetailDeleteConfirmComponent from \"./transactiondetailDeleteConfirmComponent\";\r\nimport TransactionDetailEditConfirmComponent from \"./transactionDetailEditConfirmComponent\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport MatThemeService from \"../../../shared/services/theme/matThemeService\";\r\nimport TaskDetailsComponent from \"../../home/task/task-details/taskDetailsComponent\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport RolePermissionInfo from \"../../../shared/role-permissions/rolePermissionInfo\";\r\nimport RelatedTransactionEditConfirmationDialog from \"./transaction-tab/relatedTransactionEditConfirmationDialog\";\r\n\r\nclass TransactionDetailDialogComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.tabIndexMap = new Map();\r\n this.tabIndexMap.set(0, { ref: null });\r\n this.tabIndexMap.set(1, { ref: null });\r\n this.tabIndexMap.set(2, { ref: null });\r\n this.tabIndexMap.set(3, { ref: null });\r\n this.tabIndexMap.set(4, { ref: null });\r\n this.tabIndexMap.set(5, { ref: null });\r\n\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isNew: this.props.inputAction === CrudAction.CREATE,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n\r\n isDialog: this.props.standAloneProps ? false : true,\r\n derivedProps: this.props.standAloneProps ? this.props.standAloneProps : { fullWidth: true, maxWidth: \"lg\" },\r\n\r\n selectedTabIndex: 0,\r\n openDeleteConfirm: false,\r\n porziogsttransactionid: \"\",\r\n transactionTabLoaded: false,\r\n selectedTransaction: null,\r\n\r\n openEditConfirm: false,\r\n showTransactionEditConfirmationDialog: false\r\n };\r\n }\r\n\r\n onClose = (_param) => {\r\n this.setState({ isReadOnly: true }, () => {\r\n this.props.onClose(_param);\r\n });\r\n }\r\n\r\n _changeTab = (_newTabIndex) => {\r\n this.setState({\r\n selectedTabIndex: _newTabIndex,\r\n isReadOnly: true // on tab change make it readonly\r\n });\r\n }\r\n\r\n setReadOnlyMode = (_value) => {\r\n this.setState({\r\n isReadOnly: _value // on tab change make it readonly\r\n });\r\n }\r\n\r\n onTabChange = (event, _newTabIndex) => {\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n if (currentTabRef) {\r\n if (currentTabRef.isDirtyCallback()) {\r\n this.setState({ showConfirmDialog: true, newTabIndex: _newTabIndex });\r\n } else {\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(_newTabIndex);\r\n });\r\n }\r\n } else {\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(_newTabIndex);\r\n });\r\n }\r\n };\r\n\r\n onEdit = () => {\r\n if (this.state.selectedTransaction && this.state.selectedTransaction.hasreportreferences) {\r\n this.setState({ openEditConfirm: true });\r\n }\r\n }\r\n\r\n onSave = () => {\r\n this.oSubscriptions.cancelAll();\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n\r\n if (currentTabRef.postCallbackOBS) {\r\n this.setState({ isSaving: true });\r\n this.oSubscriptions.add(currentTabRef.postCallbackOBS().subscribe(\r\n (_successResult) => {\r\n this.setState({ isSaving: false, saveErrorInfo: null });\r\n if (_successResult === \"validation_error\") {\r\n this.flashError(\"Validation Failed\");\r\n } else if (_successResult === \"save_error\") {\r\n this.flashError(\"Save Failed\");\r\n } else {\r\n if (this.state.isNew) {\r\n this.onClose(_successResult); // close this and pass the successResult to the caller\r\n } else {\r\n // stay on the same screen as per PP2-871\r\n }\r\n this.setReadOnlyMode(true);\r\n currentTabRef.resetCallback(true);\r\n }\r\n },\r\n (_error) => {\r\n this.flashError(\"Error Occured while Saving\");\r\n }\r\n ));\r\n }\r\n }\r\n\r\n onDelete = () => {\r\n this.oSubscriptions.cancelAll();\r\n\r\n if (this.getDeleteOBS) {\r\n this.setState({ isSaving: true });\r\n this.oSubscriptions.add(this.getDeleteOBS().subscribe(\r\n (_successResult) => {\r\n this.setState({ isSaving: false, saveErrorInfo: null });\r\n if (_successResult === \"validation_error\") {\r\n this.flashError(\"Validation Failed\");\r\n } else if (_successResult === \"save_error\") {\r\n this.flashError(\"Delete Failed\");\r\n } else {\r\n this.onClose(true); // close this and reload the TransactionCount\r\n }\r\n },\r\n (_error) => {\r\n this.flashError(\"Error Occured while Deleting\");\r\n }\r\n ));\r\n }\r\n }\r\n\r\n getDeleteOBS = () => {\r\n return ApiService.deleteOBS(API_ENDPOINT.CORE, `/Transactions/DeleteTransaction/${this.context.user.tenantId}/${this.props.modalAgNode.trid}/${this.context.user.userId}?taskId=0`);\r\n }\r\n\r\n flashError = (_error) => {\r\n console.log(\"Error while Saving\", _error);\r\n this.setState({ isSaving: false, saveErrorInfo: _error }, () => {\r\n setTimeout(() => { this.setState({ saveErrorInfo: null }); }, 5000);\r\n });\r\n }\r\n\r\n handleTransactionTabLoaded = (_selectedTransaction, _relatedTransactions) => {\r\n this.setState({\r\n selectedTransaction: _selectedTransaction,\r\n relatedTransactions: _relatedTransactions,\r\n transactionTabLoaded: true\r\n });\r\n }\r\n\r\n beforeSave = () => {\r\n if (this.state.selectedTabIndex === 0 && DataService.hasElements(this.state.relatedTransactions)) {\r\n const transactionTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n const dataToPost = transactionTabRef.getDataToPost();\r\n if (dataToPost.hasRelatedTransactionUpdates) {\r\n this.setState({ showTransactionEditConfirmationDialog: true });\r\n } else {\r\n this.onSave();\r\n }\r\n } else {\r\n this.onSave();\r\n }\r\n\r\n }\r\n\r\n setIsSaving = (_isSaving = false) => {\r\n this.setState({ isSaving: _isSaving });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const TAB_REF = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n const TAB_PERMISSIONS = TAB_REF ? (TAB_REF.TAB_PERMISSIONS ? TAB_REF.TAB_PERMISSIONS : RolePermissionInfo.INIT()) : RolePermissionInfo.INIT();\r\n\r\n return (\r\n <>\r\n {/* tab dialog */}\r\n { this.onClose(false); }} >\r\n\r\n {/* DialogTitle */}\r\n {this.state.isDialog ?\r\n \r\n \r\n \r\n Transaction Details\r\n {LayoutService.getIconButton(false, MatIconService.DELETE_RED, \"Delete\", () => this.setState({ openDeleteConfirm: true, porziogsttransactionid: this.props.modalAgNode.porziogsttransactionid }), \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getReadOnlyActions(this, (this.props.inputAction === CrudAction.CREATE), () => { this.onClose(false) }, () => { this.beforeSave() }, () => { this.onEdit() },)}\r\n \r\n \r\n \r\n :\r\n { this.props.onClose(false); }, title: \"Go back\", iconColor: \"secondary\" },\r\n ]}\r\n rightActions={[\r\n this.state.isEditing ? {\r\n icon: RolePermissionService.TRANSACTION_DETAILS.cannotDelete ? MatIconService.DELETE : MatIconService.DELETE_RED, title: \"Delete\", isReadOnly: RolePermissionService.TRANSACTION_DETAILS.cannotDelete,\r\n onClick: () => { this.setState({ openDeleteConfirm: true, porziogsttransactionid: this.props.modalAgNode.porziogsttransactionid }); },\r\n } : null,\r\n { icon: MatIconService.TASK_ADD, onClick: () => { this.setState({ showCreateTaskDialog: true }); }, title: \"Create Task\", isReadOnly: RolePermissionService.TRANSACTION_TASK.cannotCreate, },\r\n // clone stuff\r\n this.props.onClone ?\r\n {\r\n icon: MatIconService.COPY, isReadOnly: RolePermissionService.TRANSACTION_CLONE_OR_COPY.cannotCreate,\r\n title: \"Clone to New\", onClick: () => { this.props.onClone(this.state.selectedTransaction); },\r\n } : null,\r\n this.state.isReadOnly ?\r\n { icon: MatIconService.EDIT, onClick: () => { this.setState({ isReadOnly: false }); }, title: \"Edit\", isReadOnly: TAB_PERMISSIONS.cannotCreateOrEdit }\r\n : { icon: MatIconService.OK, onClick: () => { this.beforeSave(); }, title: \"Save\", iconColor: \"primary\", isReadOnly: TAB_PERMISSIONS.cannotCreateOrEdit }\r\n ]}\r\n />\r\n }\r\n\r\n
{this.state.isSaving ? : null}
\r\n {this.state.saveErrorInfo ? {this.state.saveErrorInfo} : null}\r\n\r\n\r\n {/* DialogContent */}\r\n \r\n\r\n \r\n \r\n \r\n {this.state.transactionTabLoaded ?\r\n \r\n \r\n \r\n \r\n {this.props.inputAction === CrudAction.UPDATE ?\r\n \r\n : null}\r\n \r\n \r\n : <>}\r\n
\r\n\r\n {/* taskDialog */}\r\n {\r\n this.state.showCreateTaskDialog ?\r\n { }} updateData={null}\r\n onClose={() => this.setState({ showCreateTaskDialog: false })}\r\n porzioGstIds={this.props.modalAgNode ? [this.props.modalAgNode.porziogsttransactionid] : []} />\r\n : null\r\n }\r\n\r\n {/* Delete Confirm Dialog */}\r\n this.setState({ openDeleteConfirm: false })} h\r\n handleDeleteDismiss={() => this.setState({ openDeleteConfirm: false })}\r\n handleDeleteConfirm={() => {\r\n this.setState({ openDeleteConfirm: false });\r\n this.onDelete();\r\n this.onClose(true);\r\n }}\r\n porziogsttransactionid={this.state.porziogsttransactionid} />\r\n\r\n {/* Edit Confirm Dialog */}\r\n this.setState({ openEditConfirm: false })}\r\n handleEditDismiss={() => {\r\n this.setState({\r\n isReadOnly: true,\r\n isEditing: false,\r\n openEditConfirm: false\r\n });\r\n }}\r\n handleEditConfirm={() => {\r\n this.setState({ openEditConfirm: false });\r\n }} />\r\n\r\n {/* Related Transaction Confirm Dialog */}\r\n this.setState({ showTransactionEditConfirmationDialog: false })}\r\n onConfirm={() => { this.setState({ showTransactionEditConfirmationDialog: false }, () => { this.onSave() }); }}\r\n />\r\n\r\n {/* discard action dialog */}\r\n {\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n currentTabRef.resetCallback();\r\n\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(this.state.newTabIndex);\r\n })\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n \r\n );\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(TransactionDetailDialogComponent);","import React from \"react\";\r\nimport { DialogTitle, DialogContent, Box, Divider, Typography, Grid } from \"@material-ui/core\";\r\nimport { from, BehaviorSubject, combineLatest } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport ChildMessageRendererComponent from \"../../../../shared/components/childMessageRendererComponent\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { API_ENDPOINT, CrudAction, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport ProfileTransactionService from \"./profileTransactionService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport TransactionDetailDialogComponent from \"../../../transaction-center/transaction-detail/transactionDetailDialogComponent\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport ProfileDetailCellRendererComponent from \"../profileDetailCellRendererComponent\";\r\nimport ProfileDetailDialogComponent from \"../profileDetailDialogComponent\";\r\n\r\nconst fetchProfilesBySearchBoxText = async (searchBoxParams) => {\r\n const rowData = await fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/Profiles/GetProfileCount`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n sourceid: searchBoxParams.sourceId,\r\n fileid: String(searchBoxParams.fileId),\r\n healthindicator: \"\",\r\n tenantid: searchBoxParams.user.tenantId,\r\n searchvalue: searchBoxParams.newValue,\r\n pageNumber: 1,\r\n rowsperPage: 250,\r\n isActive: 1,\r\n screenId: 0,\r\n userId: searchBoxParams.user.userId,\r\n searchString: \"\",\r\n taskid: 0,\r\n source: \"Profiles\"\r\n }),\r\n }\r\n ).then((result) => result.json());\r\n return rowData;\r\n};\r\nlet searchSubject = new BehaviorSubject(\"\");\r\nlet SearchResultObservable = searchSubject.pipe(\r\n filter((val) => val.hasOwnProperty('newValue')),\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((val) => from(fetchProfilesBySearchBoxText(val)))\r\n);\r\n\r\nclass ProfileTransactionComponent extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n oSubscriptions = new SubscriptionArray();\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n porzioSearch: \"\",\r\n showCreateNewTransactionDialog: false,\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n }),\r\n };\r\n this.fetchData.bind(this);\r\n this.handleFilterChange.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.isEditing) {\r\n this.fetchData();\r\n this.subscription = SearchResultObservable.subscribe((searchResultJson) => {\r\n this.setState({ data: searchResultJson });\r\n });\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n ProfileTransactionService.getProfileTransactionsOBS(this.props.modalAgNode, this.context)\r\n .subscribe(\r\n // success\r\n (_data) => {\r\n //_data = new Array(_data);\r\n this.setState({ data: DataService.hasElements(_data) ? _data : [] },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n ToastService.showError(\"Error Occured\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n methodFromParent = (row_col, node) => {\r\n //TODO : row_col should be passed separately with the values instead of a string to avoid below checks \r\n //as in this instance trid and prid both might be present for a record \r\n const profileIdStr = \"Porzio GST Profile ID\";\r\n const transactionIdStr = \"Porzio GST Transaction ID\";\r\n\r\n this.setState({\r\n modalAgNode: {\r\n ...node,\r\n ...(row_col.includes(transactionIdStr) && { transactionid: node.trid }),\r\n ...(row_col.includes(profileIdStr) && { prid: node.prid }),\r\n }\r\n });\r\n\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n row_col.includes(profileIdStr) ? this.setState({ showProfileDetailDialog: true })\r\n : this.setState({ showTransactionDetailDialog: true });\r\n }\r\n }\r\n\r\n handleFilterChange = () => {\r\n fetch(`${process.env.REACT_APP_BASE_HTTP}/Profiles/${this.context.user.tenantId}/FetchProfiles`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n pageNum: 1,\r\n pageSize: 25,\r\n source: \"Profiles\",\r\n searchBoxText: \"\", //searchBoxText,\r\n recycle: \"1\",\r\n sourceId: 24,\r\n permissions: null,\r\n userType: this.context.user.userTypeId,\r\n fileId: 5069,\r\n healthIndicatorId: null,\r\n SearchString: \"\",\r\n UserId: this.context.user.userId,\r\n ScreenId: 43,\r\n TaskId: 0,\r\n }),\r\n })\r\n .then((result) => result.json())\r\n .then((rowData) => this.setState({ data: rowData }))\r\n // .then((rowData) => console.log(rowData))\r\n .catch((err) => console.log(err));\r\n };\r\n handleSearchChange = (e) => {\r\n const newValue = e.target.value;\r\n this.setState({ porzioSearch: newValue });\r\n searchSubject.next({ newValue, ...this.props.modalAgNode, ...this.context });\r\n };\r\n\r\n TAB_PERMISSIONS = RolePermissionService.PROFILE_TRANSACTIONS;\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n\r\n if (this.TAB_PERMISSIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n }\r\n else {\r\n const isReadOnly = this.props.isReadOnly || this.TAB_PERMISSIONS.cannotEdit;\r\n this.state.agGridUtils.setReadOnlyMode(isReadOnly);\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n\r\n this.setState({ showProfileDetailDialog: false })} />\r\n\r\n {/* View Transaction Contained-Dialog as a Page */}\r\n {!this.state.showTransactionDetailDialog ? null :\r\n hides the clone icon\r\n open={this.state.showTransactionDetailDialog || false} onClose={() => { this.setState({ showTransactionDetailDialog: false }); }} />}\r\n\r\n {/* Add New Transaction Contained-Dialog as a Page */}\r\n {!this.state.showCreateNewTransactionDialog ? null :\r\n hides the clone icon\r\n open={this.state.showCreateNewTransactionDialog || false}\r\n onClose={(_result) => {\r\n this.setState({ showCreateNewTransactionDialog: false });\r\n if (_result && _result !== false && _result.trid > 0) { this.fetchData(); }\r\n else { this.setState({ showCreateNewTransactionDialog: false, }); } // just hide\r\n }}\r\n />\r\n }\r\n\r\n \r\n
\r\n \r\n \r\n {LayoutService.getIconButton((this.props.isReadOnly || this.TAB_PERMISSIONS.cannotCreate), MatIconService.ADD_CIRCLE_OUTLINE,\r\n \"Add\", () => { this.setState({ showCreateNewTransactionDialog: true }) })}\r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, false);\r\n this.state.agGridUtils.setReadOnlyMode(isReadOnly);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(); }} />);\r\n }\r\n\r\n }\r\n }\r\n\r\n /** 2/4 Required */\r\n isDirtyCallback = () => {\r\n // do any additional checkings if needed\r\n return false;\r\n }\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n this.fetchData();\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return null; // not required handled incomponent like below\r\n }\r\n\r\n //---\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ProfileTransactionComponent);","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\n\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, Box, Grid, LinearProgress } from \"@material-ui/core\";\r\nimport { Alert, AlertTitle } from \"@material-ui/lab\";\r\n\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport { API_ENDPOINT, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\n\r\n\r\nclass ProfileStatusOverrideComponenet extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n apiResult: ResultStatus.LOADED,\r\n currentProfileStatusId: this.props.currentValue,\r\n newProfileStausId: this.props.currentValue,\r\n };\r\n }\r\n\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ apiResult: ResultStatus.LOADING });\r\n\r\n this.apiSubscriptions.cancelAll();\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n LookupService.getProfileStatusesAsOBS(this.context)\r\n ]).subscribe(\r\n // success\r\n ([_profileStatuses]) => {\r\n this.setState({\r\n profileStatuses: _profileStatuses.filter(x => x.id === 2 || x.id === 3),\r\n apiResult: ResultStatus.LOADED\r\n });\r\n },\r\n // error\r\n (errorObj) => {\r\n ToastService.showError(\"Error while Loading\");\r\n this.props.onClose(false);\r\n }\r\n )\r\n );\r\n }\r\n\r\n saveProfileStatus = () => {\r\n this.setState({ apiResult: ResultStatus.SAVING });\r\n\r\n this.apiSubscriptions.cancelAll();\r\n let ids = this.props.selectedProfiles !== undefined ? [...this.props.selectedProfiles] : [this.props.id];\r\n let targetUrl = \"\";\r\n ids.forEach((x, idx) => {\r\n targetUrl = `/Profiles/UpdateProfileStatus/${this.context.user.tenantId}/${x}?userId=${this.context.user.userId}&manualEdit=${true}&profileStatusId=${this.state.newProfileStausId}`\r\n ApiService.postOBS(API_ENDPOINT.CORE, targetUrl)\r\n .subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n if (idx === ids.length - 1) {\r\n ToastService.showSuccess(\"Successfully Saved.\");\r\n this.setState({ apiResult: ResultStatus.SUCCESS });\r\n }\r\n this.props.onClose(false);\r\n this.props.refreshTab();\r\n }\r\n else {\r\n this.setState({ apiResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n ToastService.showError(\"Error while saving Transaction status\");\r\n this.setState({ apiResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n }\r\n\r\n\r\n // formik\r\n getInitialValues = () => {\r\n return { profileStatusId: this.state.currentProfileStatusId ? this.state.currentProfileStatusId : \"\" };\r\n }\r\n\r\n validationSchemaObj = Yup.object().shape({});\r\n getValidationSchema = () => {\r\n this.validationSchemaObj = Yup.object().shape({\r\n profileStatusId: LayoutService.getNullableValidation(Yup.number().required(\"Required\"))\r\n });\r\n return this.validationSchemaObj;\r\n }\r\n\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n {/* Title */}\r\n \r\n \r\n \r\n Override Profile Status\r\n {LayoutService.getIconButton((this.state.currentProfileStatusId === this.state.newProfileStausId || this.state.apiResult !== ResultStatus.LOADED),\r\n MatIconService.OK, \"Save\", () => { this.saveProfileStatus() }, \"inherit\", \"keyActionSave\")}\r\n {LayoutService.getIconButton(this.state.apiResult === ResultStatus.SAVING, MatIconService.CANCEL, \"Cancel\", () => { this.props.onClose(false); }, \"secondary\", \"keyActionCancel1\")}\r\n \r\n \r\n \r\n {/* Content */}\r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n );\r\n\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.apiResult) {\r\n case ResultStatus.LOADING:\r\n case ResultStatus.NOT_LOADED:\r\n return ;\r\n case ResultStatus.SAVING:\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (<>\r\n {this.state.apiResult === ResultStatus.SAVING ? : null}\r\n {/* Form */}\r\n \r\n {(fProps) => (\r\n
\r\n \r\n {LayoutService.getDropDown(this.state.apiResult !== ResultStatus.LOADED, classes.dialogControl, classes.menuPaper, fProps, this.validationSchemaObj, \"profileStatusId\", \"Profile Status\",\r\n this.state.profileStatuses, \"id\", \"value\", \"\", false, \"98%\",\r\n (_fProps, _newProfileStatusId) => {\r\n this.setState({ newProfileStausId: _newProfileStatusId })\r\n })\r\n }\r\n \r\n
\r\n )}\r\n
\r\n {/* Alert */}\r\n {/* \r\n \r\n Note: This is only a temporary override of the Profile Status.\r\n Any changes to the profile will Reset this Override and the profile status will be newley set based on the Profile Status matching logic.\r\n \r\n */}\r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.saveProfileStatus(); }} />);\r\n }\r\n\r\n }\r\n\r\n //---\r\n}\r\nexport default LayoutService.getHocComponenet(ProfileStatusOverrideComponenet);","import React, { Component, createRef } from \"react\";\r\nimport { MenuItem, Select } from \"@material-ui/core\";\r\nimport { AgGridUtil } from \"../../services/ag-grid/agGridUtil\";\r\nimport { DataService } from \"../../services/dataService\";\r\n\r\nexport default class AgGridDropdownWithStatusCellRenderer extends Component {\r\n link = createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n\r\n const _disabled = AgGridUtil.isEditingDisabled(this.props);\r\n\r\n return (\r\n
\r\n {\r\n const _value = params.target.value;\r\n this.props.node.setDataValue(this.props.colDef.field, _value);\r\n if (this.props.onChangeCallback) { this.props.onChangeCallback(this, this.props); }\r\n }}\r\n >\r\n {/* show or hide empty */}\r\n {this.props.showEmpty ? (-select-) : null}\r\n\r\n {/* options */}\r\n {this.props.options.map((option) => (\r\n \r\n {option[this.props.optionLabel]}\r\n \r\n ))}\r\n \r\n {/* Status Icon if any */}\r\n {(this.props.showStatusCallBack && this.props.showStatusCallBack(this)) ?
{this.props.statusIcon}
: null}\r\n
\r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { ReplaySubject, combineLatest, of } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n Divider,\r\n Typography,\r\n Grid,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n AppBar,\r\n Toolbar,\r\n} from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\n\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport {\r\n API_ENDPOINT,\r\n CrudAction,\r\n ENTITY_FIELD_TYPE,\r\n ENTITY_TYPE,\r\n ResultStatus,\r\n} from \"../../../../shared/types/enums\";\r\nimport {\r\n DataService,\r\n SubscriptionArray,\r\n} from \"../../../../shared/services/dataService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport DynamicControlService from \"../../../../shared/services/dynamicControlService\";\r\n\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport ProfileTabService from \"./profileTabService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ProfileStatusOverrideComponenet from \"./profileStatusOverrideComponenet\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport AgGridDatePickerCellRendererComponent from \"../../../../shared/components/elements/agGridDatePickerCellRendererComponent\";\r\nimport AgGridDropdownWithStatusCellRenderer from \"../../../../shared/components/ag-grid/agGridDropdownWithStatusCellRenderer\";\r\n\r\nclass ProfileTabComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n // isReadOnly: true, not applicable here since it will be sent as a props by the parent Container\r\n isNew: props.inputAction === CrudAction.CREATE,\r\n selProfileId: !props.modalAgNode ? \"\" : props.modalAgNode.prid,\r\n // 1) source-name\r\n fetchProfileDataResult: ResultStatus.NOT_LOADED,\r\n sourceSystemList: [],\r\n\r\n templateFetchResult: ResultStatus.NOT_LOADED,\r\n allGroupFieldsMap: new Map(),\r\n dynamicInitialValies: {},\r\n dynamicControlsValidationSchema: Yup.object().shape({}),\r\n\r\n agGridAddressUtils: new AgGridUtil(\"addresS1\", {\r\n dropDownRenderer: AgGridDropdownWithStatusCellRenderer,\r\n inlineEditButtonCellRendererComponent:\r\n AgGridEditButtonCellRendererComponent,\r\n isActiveCellRenderer: AgGridCheckboxCellRendererComponent,\r\n isPrimaryCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n }),\r\n agGridContactUtils: new AgGridUtil(\"isactive\", {\r\n dropDownRenderer: AgGridDropdownWithStatusCellRenderer,\r\n inlineEditButtonCellRendererComponent:\r\n AgGridEditButtonCellRendererComponent,\r\n isActiveCellRenderer: AgGridCheckboxCellRendererComponent,\r\n isPreferedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n }),\r\n agGridIdentifierUtils: new AgGridUtil(\"porzioGSTIdentifierTypeId\", {\r\n inlineEditButtonCellRendererComponent:\r\n AgGridEditButtonCellRendererComponent,\r\n }),\r\n agGridConsentUtils: new AgGridUtil(\"profileConsent\", {\r\n inlineEditButtonCellRendererComponent:\r\n AgGridEditButtonCellRendererComponent,\r\n isActiveCellRenderer: AgGridCheckboxCellRendererComponent,\r\n dateCellRenderer: AgGridDatePickerCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {}\r\n componentDidMount() {\r\n LookupService.fetchCommonLookups(this.context);\r\n this.fetchProfileData();\r\n }\r\n\r\n //#region SourceSystem DropDown\r\n\r\n // api\r\n fetchProfileData = () => {\r\n this.oSubscriptions.cancelAll();\r\n\r\n // set the loading state\r\n this.setState({ fetchProfileDataResult: ResultStatus.LOADING });\r\n // fetch-source-list\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n LookupService.getContactTypesAsOBS(this.context), // contactTypes (TODO: HardCoded)\r\n LookupService.getIdentifierTypes(this.context.user.tenantId), //\r\n LookupService.getProfileConsentLovAsOBS(this.context.user.tenantId),\r\n LookupService.getConsentAsOBS(\r\n this.context.user.tenantId,\r\n this.props.modalAgNode.prid\r\n ), //\r\n // get source system list\r\n LookupService.getSourceSystemsByEntityAsOBS(\r\n this.context.user.tenantId,\r\n ENTITY_TYPE.PROFILE\r\n ),\r\n // for new don't get the data, set it null (addressList & contactsList are included)\r\n this.state.isNew\r\n ? of(null)\r\n : LookupService.getProfileTabDetailsWithErrorInfoAsOBS(\r\n this.context.user.tenantId,\r\n this.state.selProfileId,\r\n this.props.from\r\n ),\r\n ]).subscribe(\r\n // success result\r\n ([\r\n _countryList,\r\n _contactTypeList,\r\n _identifierTypeList,\r\n _consentLovList,\r\n _consentList,\r\n _sourceSystemList,\r\n _initialValuesOrNull,\r\n ]) => {\r\n // countries\r\n // _countryList = [{ id: 0, value: \" \" }, ..._countryList];\r\n _identifierTypeList\r\n .slice()\r\n .sort((a, b) =>\r\n a.lovKey > b.lovKey ? 1 : b.lovKey > a.lovKey ? -1 : 0\r\n );\r\n _consentLovList = DataService.arrayToObject(\r\n [{ lovId: 0, lovKey: \" \" }, ..._consentLovList],\r\n \"lovId\",\r\n \"lovKey\"\r\n );\r\n\r\n // 1/2) parse error fileds\r\n _initialValuesOrNull =\r\n DynamicControlService.parseErrorFields(_initialValuesOrNull);\r\n _initialValuesOrNull =\r\n DynamicControlService.parseCustomFields(_initialValuesOrNull);\r\n\r\n this.setState(\r\n {\r\n countryList: _countryList,\r\n countryCellSource: DataService.arrayToObject(\r\n _countryList,\r\n \"id\",\r\n \"value\"\r\n ),\r\n\r\n contactTypeList: _contactTypeList,\r\n contactTypeCellSource: DataService.arrayToObject(\r\n _contactTypeList,\r\n \"lovId\",\r\n \"lovKey\"\r\n ),\r\n\r\n porzioGstIdentifierTypeList: _identifierTypeList,\r\n porzioGstIdentifierTypeCellSource: DataService.arrayToObject(\r\n _identifierTypeList,\r\n \"lovId\",\r\n \"lovKey\"\r\n ),\r\n\r\n consentLovList: _consentLovList,\r\n\r\n sourceSystemList: DataService.getKeyValueCollection(\r\n _sourceSystemList,\r\n \"sourceId\",\r\n \"sourceName\",\r\n false\r\n ),\r\n\r\n initialValuesOrNull: _initialValuesOrNull,\r\n\r\n addressRowData: this.props.recipientProfileInfo?.addresslist\r\n ? this.props.recipientProfileInfo.addresslist\r\n : ProfileTabService.getAddressRows(_initialValuesOrNull),\r\n contactRowData:\r\n ProfileTabService.getContactRows(_initialValuesOrNull),\r\n identifierRowData: this.props.recipientProfileInfo?.identifierlist\r\n ? this.props.recipientProfileInfo.identifierlist\r\n : ProfileTabService.getIdentifierRows(_initialValuesOrNull),\r\n consentRowData: ProfileTabService.getConsentRows(_consentList),\r\n },\r\n () => {\r\n this.onSourceSystemChange(\r\n this.state.isNew ? null : _initialValuesOrNull.sourceid,\r\n true\r\n );\r\n this.setState({ fetchProfileDataResult: ResultStatus.LOADED });\r\n this.props.onProfileTabLoaded(_initialValuesOrNull);\r\n }\r\n );\r\n },\r\n // on error\r\n (err) => {\r\n ToastService.showError(`Error Occured while Loading the Profile`);\r\n this.setState({ fetchProfileDataResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n prePopulateIfAny = () => {};\r\n\r\n // formik\r\n getSourceSystemInitialValues() {\r\n return {\r\n sourceSystemId: this.state.isNew\r\n ? \"\"\r\n : this.state.initialValuesOrNull.sourceid,\r\n fileName: \"\",\r\n };\r\n }\r\n\r\n sourceSystemValidationSchema = Yup.object().shape({});\r\n getSourceSystemValidationSchema() {\r\n this.sourceSystemValidationSchema = Yup.object().shape({\r\n sourceSystemId: LayoutService.getNullableValidation(\r\n Yup.number().required(\"Required\")\r\n ),\r\n });\r\n return this.sourceSystemValidationSchema;\r\n }\r\n\r\n fPropsSourceSystem = null;\r\n setSourceSystemFormikProps = (_fPropsSourceSystem) => {\r\n this.fPropsSourceSystem = _fPropsSourceSystem;\r\n return <>;\r\n };\r\n\r\n // render\r\n TAB_PERMISSIONS = RolePermissionService.PROFILE_DETAILS;\r\n render() {\r\n const { classes } = this.props;\r\n // set the props for parent's validation & post logic\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n this.fPropsDynamic = null;\r\n // trick\r\n this.TAB_PERMISSIONS.cannotCreateOrEdit = this.state.isNew\r\n ? this.TAB_PERMISSIONS.cannotCreate\r\n : this.TAB_PERMISSIONS.cannotEdit;\r\n\r\n switch (this.state.fetchProfileDataResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n {/* SourceSystem Dropdown*/}\r\n \r\n {(fPropsSourceSystem) => (\r\n
\r\n \r\n {this.setSourceSystemFormikProps(fPropsSourceSystem)}\r\n {this.props.inputAction === CrudAction.UPDATE ? (\r\n this.state.initialValuesOrNull\r\n ?.isrecipientmatch ? null : (\r\n \r\n Unmatched Recipient\r\n \r\n )\r\n ) : (\r\n <>\r\n )}\r\n {LayoutService.getDropDown(\r\n this.props.isReadOnly || !this.state.isNew,\r\n classes.dialogControl,\r\n classes.menuPaper,\r\n fPropsSourceSystem,\r\n this.sourceSystemValidationSchema,\r\n \"sourceSystemId\",\r\n \"Source System\",\r\n this.state.sourceSystemList,\r\n \"id\",\r\n \"text\",\r\n null,\r\n true,\r\n \"48%\",\r\n (_formikProps, _newSourceSystemId) => {\r\n this.onSourceSystemChange(_newSourceSystemId, false);\r\n }\r\n )}\r\n {LayoutService.getTextBox(\r\n true,\r\n classes.dialogControl,\r\n fPropsSourceSystem,\r\n this.sourceSystemValidationSchema,\r\n \"fileName\",\r\n \"File Name\",\r\n \"string\",\r\n \"48%\"\r\n )}\r\n \r\n \r\n )}\r\n \r\n {/* Render Dynamic Controls */}\r\n {this.renderDynamicControls(classes)}\r\n {}\r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchProfileData();\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n //#region Dynamic controls\r\n\r\n // api\r\n onSourceSystemChange = (_newSourceSystemId, _force) => {\r\n this.oSubscriptions.cancelAll();\r\n\r\n if (_force || this.state.selSourceSystemId !== _newSourceSystemId) {\r\n if (DataService.hasValidValue(_newSourceSystemId)) {\r\n //CLEAR CAHCE etc,...\r\n ProfileTabService.INIT(this.state.isNew);\r\n DynamicControlService.CLEAR();\r\n this._setTemplateFetchState(\r\n ResultStatus.LOADING,\r\n _newSourceSystemId,\r\n null,\r\n () => {\r\n this.oSubscriptions.add(\r\n LookupService.getTemplateBySourceIdAsOBS(\r\n this.context.user.tenantId,\r\n _newSourceSystemId\r\n ).subscribe(\r\n // success result\r\n (_templateData) => {\r\n // get grouped filed configs\r\n const groupFieldsMap = ProfileTabService.getGroupFieldsMap(\r\n this,\r\n this.state.isNew,\r\n _templateData,\r\n \"grouprenderid\",\r\n \"fieldID\"\r\n );\r\n this._setTemplateFetchState(\r\n ResultStatus.LOADED,\r\n _newSourceSystemId,\r\n groupFieldsMap,\r\n () => {\r\n // ToastService.showInfo(`${this.state.isNew ? \"Template\" : \"Data\"} Loaded`, 1000);\r\n }\r\n );\r\n },\r\n // on error\r\n (err) => {\r\n ToastService.showError(\r\n `Error Occured while Loading the ${\r\n this.state.isNew ? \"Template\" : \"Data\"\r\n }`\r\n );\r\n this._setTemplateFetchState(\r\n ResultStatus.ERROR,\r\n _newSourceSystemId,\r\n null,\r\n () => {}\r\n );\r\n }\r\n )\r\n );\r\n }\r\n );\r\n } else {\r\n this._setTemplateFetchState(ResultStatus.LOADED, null, null, () => {});\r\n } // clear selectedSourceSystemId\r\n }\r\n };\r\n\r\n // render\r\n fPropsDynamic = null;\r\n renderDynamicControls = (_classes) => {\r\n switch (this.state.templateFetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n return <>;\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n // Good to Render the components\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n if (!DataService.hasValidValue(this.state.selSourceSystemId)) {\r\n return (\r\n \r\n );\r\n } else if (DataService.mapHasNoElements(this.state.allGroupFieldsMap)) {\r\n return (\r\n {\r\n this.onSourceSystemChange(this.state.selSourceSystemId, true);\r\n }}\r\n />\r\n );\r\n } else {\r\n return (\r\n \r\n {(_fPropsDynamic) => (\r\n
\r\n \r\n <>\r\n {/* Render Dynamic controls */}\r\n {this.renderData(_classes, _fPropsDynamic)}\r\n\r\n {/* Profile Status Selector Dialog */}\r\n {!this.state.showProfileStatusDialog ? null : (\r\n {\r\n this.setState({ showProfileStatusDialog: false });\r\n }}\r\n refreshTab={() => {\r\n if (this.props.setReadOnlyMode) {\r\n this.props.setReadOnlyMode(true);\r\n }\r\n LookupService.fetchCommonLookups(this.context);\r\n this.fetchProfileData();\r\n }}\r\n />\r\n )}\r\n \r\n \r\n
\r\n )}\r\n \r\n );\r\n }\r\n // Error\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.onSourceSystemChange(this.state.selSourceSystemId, true);\r\n }}\r\n />\r\n );\r\n }\r\n };\r\n //#endregion\r\n\r\n renderData = (_classes, _fPropsDynamic) => {\r\n this.fPropsDynamic = _fPropsDynamic;\r\n\r\n // 2/2) Map Errors\r\n DynamicControlService.setErrors(\r\n _fPropsDynamic,\r\n this.state.initialValuesOrNull\r\n );\r\n\r\n var lastGroupIndex = 0;\r\n // filter, static & dynamic fields\r\n const oRET = DataService.getMapKeys(this.state.dynamicControlFieldsMap)\r\n .filter(\r\n (_mapKey) =>\r\n this.state.dynamicControlFieldsMap.get(_mapKey).fieldConfigs.length >\r\n 0 // empty check\r\n )\r\n .map((_mapKey, _groupIndex) => {\r\n lastGroupIndex = _groupIndex;\r\n const groupInfo = this.state.dynamicControlFieldsMap.get(_mapKey);\r\n return (\r\n \r\n \r\n {DataService.isStringNullOrEmpty(groupInfo.name) ? null : (\r\n \r\n {groupInfo.name}\r\n \r\n )}\r\n {groupInfo.fieldConfigs.map((_fconfig, _fieldIndex) => {\r\n let _control = DynamicControlService.getControl(\r\n this.props.isReadOnly,\r\n _classes,\r\n _fPropsDynamic,\r\n this.state.initialValuesOrNull,\r\n this.state.dynamicControlsValidationSchema,\r\n _fieldIndex,\r\n _fconfig\r\n );\r\n if (_fconfig.secondaryActionIcon) {\r\n _control = (\r\n \r\n {_control}\r\n {LayoutService.getIconButton(\r\n this.props.isReadOnly,\r\n _fconfig.secondaryActionIcon,\r\n _fconfig.secondaryActionTooltip,\r\n _fconfig.onSecondaryActionClick,\r\n \"primary\",\r\n `secondaryAction${_fconfig.fieldID}`\r\n )}\r\n \r\n );\r\n }\r\n return _control;\r\n })}\r\n
\r\n \r\n \r\n );\r\n });\r\n\r\n // Address, Contacts & Identifiers Grid\r\n const gridGroups = [];\r\n\r\n // address grid visiblity\r\n gridGroups.push(\r\n this._getGroup(\r\n RolePermissionService.PROFILE_DETAILS_ADDRESS,\r\n \"Addresses\",\r\n this.state.allGroupFieldsMap.get(\r\n ProfileTabService.addressesFieldGroupKey\r\n ),\r\n this.state.agGridAddressUtils,\r\n this.state.addressRowData,\r\n ProfileTabService.getAddressAgGridColumnDefs,\r\n ProfileTabService.getAddressObject\r\n )\r\n );\r\n\r\n // contacts grid visiblity\r\n if (\r\n this.state.allGroupFieldsMap.get(\r\n ProfileTabService.contactMethodsFieldGroupKey\r\n ).fieldConfigs.length > 0\r\n ) {\r\n gridGroups.push(\r\n this._getGroup(\r\n RolePermissionService.PROFILE_DETAILS_CONTACT_METHOD,\r\n \"Contact Methods\",\r\n this.state.allGroupFieldsMap.get(\r\n ProfileTabService.contactMethodsFieldGroupKey\r\n ),\r\n this.state.agGridContactUtils,\r\n this.state.contactRowData,\r\n ProfileTabService.getContactsAgGridColumnDefs,\r\n ProfileTabService.getContactsObject\r\n )\r\n );\r\n }\r\n\r\n // identifiers grid visiblity\r\n if (\r\n this.state.allGroupFieldsMap.get(\r\n ProfileTabService.identifierFieldGroupKey\r\n ).fieldConfigs.length > 0\r\n ) {\r\n gridGroups.push(\r\n this._getGroup(\r\n RolePermissionService.PROFILE_IDENTITIFERS,\r\n \"Ous Identifiers\",\r\n this.state.allGroupFieldsMap.get(\r\n ProfileTabService.identifierFieldGroupKey\r\n ),\r\n this.state.agGridIdentifierUtils,\r\n this.state.identifierRowData,\r\n ProfileTabService.getIdentifierAgGridColumnDefs,\r\n ProfileTabService.getIdentifierObject\r\n )\r\n );\r\n }\r\n\r\n // Consent grid visiblity\r\n if (\r\n this.state.allGroupFieldsMap.get(ProfileTabService.consentFieldGroupKey)\r\n .fieldConfigs.length > 0\r\n ) {\r\n gridGroups.push(\r\n this._getGroup(\r\n RolePermissionService.PROFILE_CONSENTS,\r\n \"Consents\",\r\n this.state.allGroupFieldsMap.get(\r\n ProfileTabService.consentFieldGroupKey\r\n ),\r\n this.state.agGridConsentUtils,\r\n this.state.consentRowData,\r\n ProfileTabService.getConsentAgGridColumnDefs,\r\n ProfileTabService.getConsentObject\r\n )\r\n );\r\n }\r\n\r\n oRET.push(\r\n gridGroups.map((o, index) => {\r\n const cannotView = o.permissionObj.cannotView;\r\n const cannotEdit = o.permissionObj.cannotEdit || this.props.isReadOnly;\r\n const cannotCreate =\r\n o.permissionObj.cannotCreate || this.props.isReadOnly;\r\n o.gridUtils.setReadOnlyMode(cannotEdit); // 1/2) readonly mode for grid\r\n\r\n return (\r\n \r\n \r\n
\r\n {cannotView ? null : ( // hide\r\n \r\n \r\n {o.header}\r\n \r\n {LayoutService.getIconButton(\r\n cannotCreate,\r\n MatIconService.ADD_CIRCLE_OUTLINE,\r\n \"Add New \" + o.group.name,\r\n () => {\r\n if (o.gridUtils.isNotEditing()) {\r\n o.gridUtils.addNewRow(o.emptyObjectCallback());\r\n }\r\n }\r\n )}\r\n \r\n )}\r\n \r\n {\r\n o.setGridParamsCallback(params, false);\r\n o.gridUtils.setReadOnlyMode(cannotEdit); // 2/2) readonly mode for grid\r\n // sma\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 return oRET;\r\n };\r\n\r\n //#region Utils\r\n _getGroup = (\r\n _permissionObj,\r\n _header,\r\n _group,\r\n _gridUtils,\r\n _rowData,\r\n _columnDefsCallback,\r\n _emptyObjectCallback\r\n ) => {\r\n const cannotDelete =\r\n this.TAB_PERMISSIONS.cannotEdit || _permissionObj.cannotDelete;\r\n const canDelete = !cannotDelete;\r\n return {\r\n header: _header,\r\n group: _group,\r\n gridUtils: _gridUtils,\r\n emptyObjectCallback: _emptyObjectCallback,\r\n rowData: _rowData,\r\n columnDefs: _columnDefsCallback(\r\n this,\r\n this.props.isReadOnly,\r\n canDelete,\r\n _gridUtils,\r\n _group.fieldConfigs\r\n ),\r\n frameworkComponents: _gridUtils.frameworkComponents,\r\n inlineEditEventCallback: _gridUtils.bindInlineEditEvents,\r\n setGridParamsCallback: _gridUtils.setGridParams,\r\n permissionObj: _permissionObj,\r\n };\r\n };\r\n\r\n _setTemplateFetchState = (\r\n _templateFetchResult,\r\n _sourceSystemId,\r\n _groupFieldsMap,\r\n _callback = () => {}\r\n ) => {\r\n const _dynamicControlFieldsMap = DataService.getMapByKeys(_groupFieldsMap, [\r\n ProfileTabService.filterFieldGroupKey,\r\n ProfileTabService.staticFieldGroupKey,\r\n ProfileTabService.otherFieldGroupKey,\r\n ProfileTabService.customFieldGroupKey,\r\n ]);\r\n\r\n // if transaction recipinet info has some data, then prepopulate them, otherwise use the initialValue if edit, or null if new\r\n const initialValues = this.props.recipientProfileInfo\r\n ? this.props.recipientProfileInfo\r\n : this.state.initialValuesOrNull;\r\n if (this.fPropsSourceSystem) {\r\n if (initialValues) {\r\n this.fPropsSourceSystem.setFieldValue(\r\n \"fileName\",\r\n initialValues?.filename\r\n );\r\n } else if (this.state.isNew) {\r\n this.fPropsSourceSystem.setFieldValue(\"fileName\", \"Manual Entry\");\r\n }\r\n }\r\n\r\n this.setState(\r\n {\r\n selSourceSystemId: _sourceSystemId,\r\n templateFetchResult: _templateFetchResult,\r\n allGroupFieldsMap: _groupFieldsMap,\r\n dynamicControlFieldsMap: _dynamicControlFieldsMap,\r\n dynamicControlInitialValues: DynamicControlService.getIntitialValues(\r\n this.state.isNew,\r\n _dynamicControlFieldsMap,\r\n initialValues\r\n ),\r\n dynamicControlsValidationSchema:\r\n DynamicControlService.getValidationSchema(_dynamicControlFieldsMap),\r\n },\r\n _callback\r\n );\r\n };\r\n //#endregion\r\n\r\n /** 1/3 Required */\r\n isDirtyCallback = () => {\r\n // do any additional checkings if needed\r\n if (this.fPropsDynamic) {\r\n return this.fPropsDynamic.dirty;\r\n } else {\r\n return false;\r\n }\r\n };\r\n /** 2/3 Required in Parent */\r\n resetCallback = (_updateFormWithNewValues = false) => {\r\n // modified on 02-03-2022 as per ticket PP2-1241\r\n if (this.fPropsDynamic) {\r\n if (_updateFormWithNewValues) {\r\n this.fPropsDynamic.resetForm({\r\n values: { ...this.fPropsDynamic.values },\r\n });\r\n } else {\r\n this.fPropsDynamic.resetForm();\r\n }\r\n }\r\n // do any additional resetting if needed\r\n };\r\n\r\n /** 3/3 Required in Parent */\r\n postCallbackOBS = () => {\r\n if (\r\n DataService.isNullOrUndefined(this.fPropsDynamic) ||\r\n this.fPropsDynamic.isSubmitting\r\n ) {\r\n return of(null);\r\n } else {\r\n var oReturnSubject = new ReplaySubject(); // 1st\r\n var oValidationSubject = new ReplaySubject(); // 2nd\r\n\r\n this._validate(oValidationSubject);\r\n oValidationSubject.asObservable().subscribe((_dataToPost) => {\r\n if (_dataToPost) {\r\n ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n \"/Profiles/SaveProfile\",\r\n JSON.stringify(_dataToPost)\r\n ).subscribe(\r\n (_successResult) => {\r\n if (_successResult.message == \"Duplicate_Error\") {\r\n oReturnSubject.next(\"duplicate_error\");\r\n } else {\r\n ToastService.showSuccess(\"Profile Saved\");\r\n oReturnSubject.next(_successResult);\r\n }\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while saving\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n );\r\n } else {\r\n ToastService.showWarning(\"Please recheck your Input\");\r\n oReturnSubject.next(\"validation_error\");\r\n }\r\n });\r\n\r\n // return the subject as observable\r\n return oReturnSubject.asObservable(); // 3rd\r\n }\r\n };\r\n\r\n _validate = async (_oSubject) => {\r\n // if (!this.state.isNew) { // no validation for edit\r\n // _oSubject.next(this._getDataToPost());\r\n // } else {\r\n // await this.state.dynamicControlsValidationSchema.validate(this.fPropsDynamic.values, { abortEarly: false })\r\n // .then((x) => {\r\n // _oSubject.next(this._getDataToPost());\r\n // })\r\n // .catch((erroObj) => {\r\n // if (erroObj.inner) { erroObj.inner.forEach(err => { this.fPropsDynamic.setFieldError(err.path, err.message); }); }\r\n // _oSubject.next(null); // error\r\n // });\r\n // }\r\n _oSubject.next(this._getDataToPost());\r\n };\r\n\r\n _getDataToPost = () => {\r\n //---Mandatory-Fields---------------\r\n var dataToPost = {};\r\n\r\n //---Static-Fields---------------\r\n const staticFieldConfigs = [\r\n ...this.state.dynamicControlFieldsMap.get(\r\n ProfileTabService.filterFieldGroupKey\r\n ).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(\r\n ProfileTabService.staticFieldGroupKey\r\n ).fieldConfigs,\r\n ...this.state.dynamicControlFieldsMap.get(\r\n ProfileTabService.otherFieldGroupKey\r\n ).fieldConfigs,\r\n ];\r\n staticFieldConfigs.forEach((fieldConfig) => {\r\n const _mappedFieldName =\r\n DynamicControlService.getMappedFieldName(fieldConfig) + \"\";\r\n var _fieldValue = this.fPropsDynamic.values[_mappedFieldName];\r\n if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.BOOLEAN) {\r\n dataToPost[_mappedFieldName] = DataService.parseBoolean(_fieldValue);\r\n } else if (\r\n fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.NUMERIC ||\r\n fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DECIMAL\r\n ) {\r\n dataToPost[_mappedFieldName] = DataService.getNumberOrDefault(\r\n _fieldValue,\r\n null\r\n );\r\n } else if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.LOV) {\r\n // For Lov both profilestatusId & profilestatus keys should be set\r\n\r\n // (enable this & disable below 1/3)\r\n _fieldValue = _fieldValue > 0 ? _fieldValue : null; // (0 is changed to null -> new impl for PP2-740)\r\n //_fieldValue = _fieldValue > 0 ? _fieldValue : 0; // if null then use the 0 based lovKey\r\n\r\n dataToPost[_mappedFieldName] = _fieldValue; // Id eg: profilestatusId\r\n if (_mappedFieldName.endsWith(\"id\")) {\r\n const _lovStringFieldName = _mappedFieldName.substring(\r\n 0,\r\n _mappedFieldName.length - 2\r\n ); // eg: profilestatus\r\n const lovObj = DataService.getFirstOrDefault(\r\n fieldConfig.customLOVList.filter((x) => x.lovId === _fieldValue)\r\n );\r\n\r\n // (enable this & disable below 2/3)\r\n dataToPost[_lovStringFieldName] = lovObj ? lovObj.lovKey : null; // (\"\" is changed to null -> new impl for PP2-740)\r\n //dataToPost[_lovStringFieldName] = lovObj ? lovObj.lovKey : \"\";\r\n }\r\n }\r\n // enable below 3/3)\r\n else if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.TEXT) {\r\n dataToPost[_mappedFieldName] = DataService.getStringOrDefault(\r\n _fieldValue,\r\n null\r\n ); // (\"\" is changed to null -> new impl for PP2-740)\r\n } else {\r\n dataToPost[_mappedFieldName] = _fieldValue;\r\n }\r\n });\r\n\r\n //---Custom-Fields---------------\r\n dataToPost.customfields = this.state.dynamicControlFieldsMap\r\n .get(ProfileTabService.customFieldGroupKey)\r\n .fieldConfigs.map((fieldConfig) => {\r\n var _fieldValue =\r\n this.fPropsDynamic.values[\r\n DynamicControlService.getMappedFieldName(fieldConfig)\r\n ];\r\n if (fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.LOV) {\r\n _fieldValue = _fieldValue > 0 ? _fieldValue : 0;\r\n const lovObj = DataService.getFirstOrDefault(\r\n fieldConfig.customLOVList.filter((x) => x.lovId === _fieldValue)\r\n );\r\n return {\r\n FIELDID: fieldConfig.fieldID,\r\n FIELDNAME: fieldConfig.fielD_ALIASNAME,\r\n FIELDVALUE: _fieldValue,\r\n FIELDLOVKEY: lovObj ? lovObj.lovKey : \"\",\r\n };\r\n } else if (\r\n fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE_TIME ||\r\n fieldConfig.field_Type_ID === ENTITY_FIELD_TYPE.DATE\r\n ) {\r\n return {\r\n FIELDID: fieldConfig.fieldID,\r\n FIELDNAME: fieldConfig.fielD_ALIASNAME,\r\n FIELDVALUE: _fieldValue\r\n ? DataService.formatDate(new Date(_fieldValue))\r\n : null,\r\n };\r\n } else {\r\n return {\r\n FIELDID: fieldConfig.fieldID,\r\n FIELDNAME: fieldConfig.fielD_ALIASNAME,\r\n FIELDVALUE: _fieldValue,\r\n };\r\n }\r\n });\r\n dataToPost.customfields = DataService.arrayToSingleQuotedJsonString(\r\n dataToPost.customfields,\r\n \"\"\r\n );\r\n\r\n //---Grid---------------\r\n // addresses-grid\r\n dataToPost.addresslist = [];\r\n const updatedAddressList =\r\n this.state.agGridAddressUtils.getUpdatedRowData();\r\n updatedAddressList.forEach((rowData) => {\r\n const lovCountry =\r\n rowData[\"countryId\"] === 0\r\n ? null\r\n : DataService.getFirstOrDefault(\r\n this.state.countryList.filter(\r\n (x) => x.id === rowData[\"countryId\"]\r\n )\r\n );\r\n const objCountry = lovCountry\r\n ? {\r\n CountryId: lovCountry.id,\r\n CountryName: lovCountry.value,\r\n CountryCode: \"\",\r\n }\r\n : { CountryId: null, CountryName: \"\", CountryCode: \"\" };\r\n\r\n const profileAddressModel = ProfileTabService.getAddressObjectForPost(\r\n rowData[\"isprimary\"],\r\n rowData[\"isactive\"],\r\n rowData[\"addressid\"],\r\n rowData[\"addresS1\"],\r\n rowData[\"addresS2\"],\r\n rowData[\"addresS3\"],\r\n rowData[\"addresS4\"],\r\n rowData[\"city\"],\r\n rowData[\"province\"],\r\n rowData[\"postalcode\"],\r\n rowData[\"porziogstaddressid\"],\r\n rowData[\"companyaddressid\"],\r\n objCountry\r\n );\r\n dataToPost.addresslist.push(profileAddressModel);\r\n });\r\n\r\n // contacts-grid\r\n dataToPost.contactlist = []; // Don't use this\r\n dataToPost.contacts = [];\r\n if (\r\n this.state.allGroupFieldsMap.get(\r\n ProfileTabService.contactMethodsFieldGroupKey\r\n ).fieldConfigs.length > 0\r\n ) {\r\n var updatedContactList =\r\n this.state.agGridContactUtils.getUpdatedRowData();\r\n updatedContactList.forEach((rowData) => {\r\n const lovCountry =\r\n rowData[\"countryId\"] === 0\r\n ? null\r\n : DataService.getFirstOrDefault(\r\n this.state.countryList.filter(\r\n (x) => x.id === rowData[\"countryId\"]\r\n )\r\n );\r\n const objCountry = lovCountry\r\n ? { countryId: lovCountry.id, countryName: lovCountry.value }\r\n : { countryId: null, countryName: \"\" };\r\n\r\n const lovContactType = DataService.getFirstOrDefault(\r\n this.state.contactTypeList.filter(\r\n (x) => x.lovId === rowData[\"contacttypeid\"]\r\n )\r\n );\r\n const objContactType = lovContactType\r\n ? {\r\n lovId: lovContactType.lovId,\r\n lovKey: lovContactType.lovKey,\r\n ordinal: lovContactType.ordinal,\r\n }\r\n : { lovId: \"\", lovKey: \"\", ordinal: \"\" };\r\n\r\n const contactObj = ProfileTabService.getContactsObject(\r\n rowData[\"ispreferred\"],\r\n rowData[\"isactive\"],\r\n rowData[\"companycontactid\"],\r\n rowData[\"contactid\"],\r\n rowData[\"contactinformation\"],\r\n rowData[\"porziogstcontactid\"],\r\n objContactType,\r\n objCountry\r\n );\r\n\r\n delete contactObj.conatacttypelist; // remove conatacttypelist key\r\n delete contactObj.countryId; // remove countryId key\r\n delete contactObj.countrylist; // remove countrylist key\r\n dataToPost.contacts.push(contactObj);\r\n });\r\n }\r\n dataToPost.contacts = DataService.arrayToSingleQuotedJsonString(\r\n dataToPost.contacts,\r\n \"\"\r\n );\r\n\r\n // identifiers-grid\r\n dataToPost.identifierlist = [];\r\n if (\r\n this.state.allGroupFieldsMap.get(\r\n ProfileTabService.identifierFieldGroupKey\r\n ).fieldConfigs.length > 0\r\n ) {\r\n const updatedIdentifierlist =\r\n this.state.agGridIdentifierUtils.getUpdatedRowData();\r\n updatedIdentifierlist.forEach((rowData) => {\r\n const lovPorzioGSTIdentifierType = DataService.getFirstOrDefault(\r\n this.state.porzioGstIdentifierTypeList.filter(\r\n (x) => x.lovId === rowData[\"porzioGSTIdentifierTypeId\"]\r\n )\r\n );\r\n const objPorzioGSTIdentifierType = lovPorzioGSTIdentifierType\r\n ? {\r\n lovId: lovPorzioGSTIdentifierType.lovId,\r\n lovKey: lovPorzioGSTIdentifierType.lovKey,\r\n }\r\n : { lovId: 0, lovKey: \"\" };\r\n\r\n const lovCountryInfo = DataService.getFirstOrDefault(\r\n this.state.countryList.filter((x) => x.id === rowData[\"countryId\"])\r\n );\r\n const objCountryInfo = lovCountryInfo\r\n ? { countryId: lovCountryInfo.id, countryName: lovCountryInfo.value }\r\n : { countryId: \"\", countryName: \"\" };\r\n\r\n const objIdentifier = ProfileTabService.getIdentifierObject(\r\n rowData[\"porzioGSTIdentifierTypeId\"],\r\n rowData[\"companyIdentifierID\"],\r\n rowData[\"countryId\"],\r\n objCountryInfo,\r\n rowData[\"identifierDescription\"],\r\n rowData[\"identifierValue\"],\r\n objPorzioGSTIdentifierType,\r\n rowData[\"porzioGSTIdentifierID\"],\r\n rowData[\"profileIdentifierId\"]\r\n );\r\n dataToPost.identifierlist.push(objIdentifier);\r\n });\r\n }\r\n\r\n // consents-grid\r\n dataToPost.consentlist = [];\r\n if (\r\n this.state.allGroupFieldsMap.get(ProfileTabService.consentFieldGroupKey)\r\n .fieldConfigs.length > 0\r\n ) {\r\n const updatedConsentlist =\r\n this.state.agGridConsentUtils.getUpdatedRowData();\r\n updatedConsentlist.forEach((rowData) => {\r\n const objIdentifier = ProfileTabService.getConsentObject(\r\n rowData[\"profileConsentId\"],\r\n rowData[\"profileConsent\"],\r\n rowData[\"profileConsentName\"],\r\n rowData[\"profileConsentStartDate\"],\r\n rowData[\"profileConsentEndDate\"],\r\n rowData[\"profileConsentExecuteDate\"]\r\n );\r\n objIdentifier[\"profileConsentStartDate_Dt\"] =\r\n objIdentifier[\"profileConsentStartDate\"];\r\n objIdentifier[\"profileConsentEndDate_Dt\"] =\r\n objIdentifier[\"profileConsentEndDate\"];\r\n objIdentifier[\"profileConsentExecuteDate_Dt\"] =\r\n objIdentifier[\"profileConsentExecuteDate\"];\r\n\r\n dataToPost.consentlist.push(objIdentifier);\r\n });\r\n }\r\n\r\n //--- ensure mandatory fields\r\n dataToPost.tenantid = this.context.user.tenantId;\r\n dataToPost.userId = this.context.user.userId;\r\n dataToPost.userType = this.context.user.userTypeId;\r\n dataToPost.uid = this.context.user.uid;\r\n dataToPost.profileid = this.state.isNew ? 0 : this.state.selProfileId;\r\n dataToPost.sourceid = this.state.selSourceSystemId;\r\n dataToPost.recordid = this.state.initialValuesOrNull\r\n ? this.state.initialValuesOrNull.recordid\r\n : null;\r\n dataToPost.fileid = this.state.initialValuesOrNull\r\n ? this.state.initialValuesOrNull.fileid\r\n : null;\r\n dataToPost.ismanuallyentered = this.state.initialValuesOrNull\r\n ? this.state.initialValuesOrNull.ismanuallyentered\r\n : 1;\r\n dataToPost.isrecipientmatch = this.state.initialValuesOrNull\r\n ? this.state.initialValuesOrNull.isrecipientmatch\r\n : null;\r\n //---\r\n\r\n // return\r\n return dataToPost;\r\n };\r\n}\r\nexport default LayoutService.getHocComponenet(ProfileTabComponent);\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class ProfileCountCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.profileCountMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\n\r\nexport default class RuleSummaryService {\r\n\r\n static getRuleSummaryAsOBS = (_tenantId, _userId, _modalAgNode) => {\r\n\r\n const targetUrl = `/RuleSummary/FetchRuleSummaryByEntity/${_tenantId}/${ENTITY_TYPE.PROFILE}?id=${_modalAgNode.prid}&pageNumber=1&pageSize=5000`;\r\n\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n static setRuleViolations = (_params) => {\r\n _params.data.ruleviolations = _params.newValue;\r\n return true;\r\n }\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleSeverity\", \"Rule Severity\").minAndDefaultWidth(144).valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleMessage\", \"Rule Message\").flexWeight(6).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fieldValue\", \"Bad Value\").flexWeight(6).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleName\", \"Rule Name\").flexWeight(4).tooltip().valueSetter(this.setRuleViolations).SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ProfileCountCellRendererComponent from \"../../expanded-view/profileCountCellRendererComponent\";\r\nimport ProfileDetailCellRendererComponent from \"../../profile-detail/profileDetailCellRendererComponent\";\r\nimport RuleSummaryService from \"./ruleSummaryService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nclass RuleSummaryComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n profileCountCellRendererComponent: ProfileCountCellRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n if (this.state.isEditing) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n RuleSummaryService.getRuleSummaryAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode),\r\n ]).subscribe(\r\n // success\r\n ([_data]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showProfileDetailDialog: true });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Rule Summary\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(RuleSummaryComponent);\r\n","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class ProfileConsentService {\r\n\r\n static getAgreementConsentAsOBS = (_tenantId, _userId, _modalAgNode) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/GetAgreementConsent/${_tenantId}/${_modalAgNode.prid}/${_userId}?pageNum=1&pageSize=100`,\r\n );\r\n };\r\n static getTransactionConsentAsOBS = (_tenantId, _userId, _modalAgNode, _currencyId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/GetTransactionConsent/${_tenantId}/${_modalAgNode.prid}/${_userId}?userCurrency=${_currencyId}&pageNumber=1&pageSize=100`,\r\n );\r\n };\r\n\r\n static getAgreementColumnDefs = (_componentThisRef, _isReadOnly, _agGridUtils) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"companyAgreementID\", \"Company Agreement Id\").fixedWidth(144).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTAgreementID\", \"Porzio GST Agreement ID\").fixedWidth(144).headerClass(\"center-text\").centerAlignText().cellRenderer(\"agreementDetailCellRendererComponent\").SET(),\r\n\r\n AgGridColumnExt.GET(false, \"text\", \"consentExecutedDate\", \"Executed Date\").flexWeight(1).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"consentStartDate\", \"Start Date\").flexWeight(1).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"consentEndDate\", \"End Date\").flexWeight(1).SET(),\r\n\r\n AgGridColumnExt.GET(false, \"text\", \"consentRevocationExecutedDate\", \"Revocation Executed Date\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"consentRevocationStartDate\", \"Revocation Start Date\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"consentRevocationEndDate\", \"Revocation End Date\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"agreemeentConsentLastModifiedDate\", \"Last Modified Date\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"agreementConsent\", \"Consent\").flexWeight(1).SET(),\r\n ];\r\n };\r\n\r\n static getTransactionColumnDefs = (_componentThisRef, _isReadOnly, _agGridUtils) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"companyTransactionID\", \"Company Transaction Id\").fixedWidth(144).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTTransactionID\", \"Porzio GST Transaction ID\").fixedWidth(144).headerClass(\"center-text\").centerAlignText().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"form\", \"Form\").flexWeight(1).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"purpose\", \"Purpose\").flexWeight(1).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionDate\", \"Transaction Date\").flexWeight(1).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"convertedTotalAmount\", \"Converted Total Amount\").flexWeight(1).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionConsent\", \"Consent\").flexWeight(1).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"consentUpdatedDate\", \"Consent Last Modified Date\").flexWeight(1).SET(),\r\n //AgGridColumnExt.GET(false, \"text\", \"form\", \"Consent\").flexWeight(1).SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { DialogTitle, DialogContent, Box, Typography, Grid, Divider } from \"@material-ui/core\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { API_ENDPOINT, CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport ProfileCountCellRendererComponent from \"../../expanded-view/profileCountCellRendererComponent\";\r\nimport ProfileDetailCellRendererComponent from \"../profileDetailCellRendererComponent\";\r\nimport AgreementDetailCellRendererComponent from \"../../../agreements/agreementDetailCellRendererComponent\";\r\nimport ChildMessageRendererComponent from \"../../../../shared/components/childMessageRendererComponent\";\r\nimport ProfileDetailDialogComponent from \"../profileDetailDialogComponent\";\r\nimport ProfileConsentService from \"./profileConsentService\";\r\nimport SectionComponent from \"../../../../shared/components/sectionComponent\";\r\nimport AgGridDatePickerCellRendererComponent from \"../../../../shared/components/elements/agGridDatePickerCellRendererComponent\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport TransactionDetailDialogComponent from \"../../../transaction-center/transaction-detail/transactionDetailDialogComponent\";\r\nimport AgreementDetailDialogComponent from \"../../../agreements/agreement-detail/agreementDetailDialogComponent\";\r\n\r\nclass ProfileConsentComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n agmtData: [],\r\n transData: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n profileCountCellRendererComponent: ProfileCountCellRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n agreementDetailCellRendererComponent: AgreementDetailCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent\r\n }),\r\n agGridComplianceUtils: new AgGridUtil(\"profileConsent\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n isActiveCellRenderer: AgGridCheckboxCellRendererComponent,\r\n dateCellRenderer: AgGridDatePickerCellRendererComponent,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n if (this.state.isEditing) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ProfileConsentService.getAgreementConsentAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode),\r\n ProfileConsentService.getTransactionConsentAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode, this.context.user.currencyId)\r\n ]).subscribe(\r\n // success\r\n ([_agmtData, _transData]) => {\r\n _agmtData = _agmtData.map((r) => {\r\n return ({\r\n ...r,\r\n consentExecutedDate: r.consentExecutedDate ? new Date(r.consentExecutedDate).toISOString().substring(0, 10) : null,\r\n consentStartDate: r.consentStartDate ? new Date(r.consentStartDate).toISOString().substring(0, 10) : null,\r\n consentEndDate: r.consentEndDate ? new Date(r.consentEndDate).toISOString().substring(0, 10) : null,\r\n });\r\n });\r\n this.setState(\r\n {\r\n agmtData: DataService.hasElements(_agmtData) ? _agmtData : [],\r\n transData: DataService.hasElements(_transData) ? _transData : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({\r\n modalAgNode: {\r\n ...node,\r\n ...(node.trid && { porziogsttransactionid: node.porzioGSTTransactionID }),\r\n ...(node.trid && { transactionid: node.trid }),\r\n ...(node.trid && { sourceid: node.sourceid }),\r\n ...(node.agreementid && { agreementId: node.agreementid }),\r\n }\r\n });\r\n\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n node.prid !== undefined ? this.setState({ showProfileDetailDialog: true })\r\n : node.trid !== undefined ? this.setState({ showTransactionDetailDialog: true })\r\n : this.setState({ showAgreementDetailDialog: true });\r\n }\r\n }\r\n\r\n TAB_PERMISSIONS = RolePermissionService.PROFILE_CONSENTS;\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n\r\n if (this.TAB_PERMISSIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n }\r\n else {\r\n const componentType = \"Consent\";\r\n const isReadOnly = this.props.isReadOnly || this.TAB_PERMISSIONS.cannotEdit;\r\n this.state.agGridComplianceUtils.setReadOnlyMode(isReadOnly);\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n Agreement Consent\r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n }}>\r\n
\r\n
\r\n
\r\n\r\n \r\n
\r\n \r\n Transaction Consent\r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n this.state.agGridComplianceUtils.setReadOnlyMode(this.props.isReadOnly);\r\n }}>\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n { this.setState({ showTransactionDetailDialog: false }); /*this.fetchData(true);*/ }} />\r\n this.setState({ showAgreementDetailDialog: false })} />\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n }\r\n\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ProfileConsentComponent);\r\n","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\n\r\nexport default class LinkedProfilesService {\r\n\r\n static getLinkedProfilesAsOBS = (_tenantId, _userId, _modalAgNode, _parentProfile, _selectedProfile) => {\r\n\r\n const targetUrl = `/Profiles/GetLinkedProfiles`;\r\n var mappedObj = {\r\n searchValues: _selectedProfile.length !== 0 ? \"\" + _modalAgNode.prid + \",\" + _selectedProfile : \"\" + _modalAgNode.prid,\r\n tenantId: _tenantId,\r\n userId: _userId,\r\n parentId: _parentProfile,\r\n page: 1,\r\n pageSize: 100\r\n }\r\n\r\n return ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n JSON.stringify(mappedObj)\r\n );\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef, _onSelectCallback) {\r\n return [\r\n AgGridColumnExt.GET(!_componentThisRef.props.isReadOnly, \"text\", \"isSelected\", \"Select\").fixedWidth(88).headerClass(\"center-text\").cellRenderer(\"isCheckedCellRenderer\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"PORZIOGSTPROFILEID\", \"Porzio GST Profile ID\").fixedWidth(144).cellRenderer(\"childMessageRendererComponent\").headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"RELATIONSHIP\", \"Relationship\").fixedWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n //AgGridColumnExt.GET(false, \"text\", \"SOURCEFROM\", \"Source Form\").minAndDefaultWidth(128).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"LASTNAME\", \"Last Name\").minAndDefaultWidth(128).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"FIRSTNAME\", \"First Name\").minAndDefaultWidth(128).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"ORGANIZATIONNAME\", \"Organization Name\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"COUNTRY\", \"Country\").minAndDefaultWidth(128).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"NUMBEROFTRANSACTIONS\", \"Number of Transactions\").fixedWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"NUMBEROFLINKEDPROFILES\", \"Number Of Linked Profiles\").fixedWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}","import { AgGridService } from \"../../../../../shared/services/ag-grid/agGridService\";\r\nimport ApiService from \"../../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../../shared/types/enums\"\r\n\r\nexport default class LinkedProfilesSearchDialogService {\r\n\r\n static searchOBS = (_tenantId, _searchValue) => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Profiles/FetchProfilesBySearch/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\"\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n {\r\n headerName: \"Select\",\r\n field: \"isSelected\",\r\n editable: true,\r\n width: 176,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n cellRenderer: \"isSelectedCellRenderer\",\r\n cellRendererParams: { onChange: (_cellRef, _data) => { _onSelectCallback(_data); } }\r\n },\r\n AgGridService.getTextColumn(false, \"Company Profile ID\", \"companyProfileId\"),\r\n AgGridService.getColumn(false, \"Porzio GST Profile ID\", \"porziogstprofileid\",\"profileDetailCellRendererComponent\"),\r\n AgGridService.getTextColumn(false, \"Last Name\", \"lastName\"),\r\n AgGridService.getTextColumn(false, \"First Name\", \"firstName\"),\r\n AgGridService.getTextColumn(false, \"Organization Name\", \"organizationName\"),\r\n AgGridService.getTextColumn(false, \"Country\", \"country\"),\r\n AgGridService.getTextColumn(false, \"Profile Status\", \"profileStatus\"),\r\n ];\r\n }\r\n}","import ApiService from \"../../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../../shared/types/enums\"\r\n\r\nexport default class LinkedProfilesConfirmationService {\r\n\r\n static profileConfirmAsOBS = (_tenantId, _linkedProfileConfirmParams) => {\r\n return ApiService.postOBS(API_ENDPOINT.CORE, `/Profiles/LinkProfilesConfirmation/${_tenantId}`, JSON.stringify(_linkedProfileConfirmParams));\r\n }\r\n}","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, InputBase, Box } from \"@material-ui/core\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../../../shared/store/authProvider\";\r\nimport { ResultStatus } from \"../../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\n\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../../shared/services/theme/matIconService\";\r\nimport LinkedProfilesConfirmationService from \"./linkedProfilesConfirmationService\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../../shared/services/ag-grid/agGridUtil\";\r\n\r\nclass LinkedProfilesConfirmComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n // ept till component's unMount\r\n scopedSubscriptions = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n profileList: [],\r\n selectedProfile: null,\r\n lastSearchedValue: '',\r\n errorMessage: null,\r\n data: {},\r\n finalParent: \"\",\r\n finalParentId: \"\",\r\n finalChild: \"\",\r\n swap: false,\r\n showConfirmLinkedProfilesDialog: false,\r\n agGridRecipientUtils: new AgGridUtil(\"lastName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n\r\n componentDidMount() {\r\n // var searchOBS = this.searchSubject.pipe(\r\n // debounceTime(750),\r\n // distinctUntilChanged(),\r\n // mergeMap((_searchValue) => from(this.searchRecipient(_searchValue)))\r\n // );\r\n\r\n // this.scopedSubscriptions.add(searchOBS.subscribe());\r\n this.fetchData();\r\n }\r\n fetchData = () => {\r\n // if(this.props.selectedProfile !== null)\r\n // {\r\n\r\n // }\r\n var linkedProfileConfirmParams = {\r\n parentId: this.props.selectedProfile.porziogstprofileid,\r\n childId: this.props.loadedProfile,\r\n from: \"ProfileSearch\",\r\n selectedPrID: \"\" + this.props.selectedProfile.prid,\r\n hasParent: true,\r\n isFormUnmatched: true,\r\n loadedProfileParent: \"\",\r\n loadedProfileLinks: \"\",\r\n searchedProfileParent: \"\",\r\n searchedProfileLinks: \"\",\r\n finalParent: \"\",\r\n finalChild: \"\",\r\n finalSwapParent: \"\",\r\n finalSwapChild: \"\",\r\n finalParentId: \"\",\r\n finalSwapParentId: \"\"\r\n }\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n LinkedProfilesConfirmationService.profileConfirmAsOBS(this.context.user.tenantId, linkedProfileConfirmParams),\r\n ]).subscribe(\r\n // success\r\n ([_data]) => {\r\n this.setState(\r\n {\r\n data: _data,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({\r\n finalParent: this.state.data.finalParent,\r\n finalParentId: this.state.data.finalParentId,\r\n finalChild: this.state.data.finalChild,\r\n fetchResult: ResultStatus.LOADED\r\n });\r\n console.log(this.state.data);\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n // render\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n Link Confirmation\r\n\r\n {LayoutService.getIconButton(DataService.isNullOrUndefined(this.state.data), MatIconService.SWAP, \"Swap\", () => {\r\n this.setState({ swap: !this.state.swap }, () => {\r\n if (this.state.swap) {\r\n this.setState({\r\n finalParent: this.state.data.finalSwapParent,\r\n finalParentId: this.state.data.finalSwapParentId,\r\n finalChild: this.state.data.finalSwapChild,\r\n });\r\n }\r\n else {\r\n this.setState({\r\n finalParent: this.state.data.finalParent,\r\n finalParentId: this.state.data.finalParentId,\r\n finalChild: this.state.data.finalChild,\r\n });\r\n }\r\n })\r\n }, \"inherit\")}\r\n {LayoutService.getIconButton(DataService.isNullOrUndefined(this.state.data), MatIconService.OK, \"Submit\", () => {\r\n this.props.onClose(this.state.finalParentId);\r\n }, \"inherit\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => { this.props.onClose(null) }, \"secondary\", \"keyActionCancel1\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n Please confirm the following to proceed.\r\n

\r\n Current Links from Profile Tab\r\n Parent Profile:\r\n {this.state.data.loadedProfileParent} \r\n \r\n Linked Profile(s):\r\n {this.state.data.loadedProfileLinks} \r\n \r\n Current Links from Search\r\n Parent Profile:\r\n {this.state.data.searchedProfileParent} \r\n \r\n Linked Profile(s):\r\n {this.state.data.searchedProfileLinks} \r\n \r\n Final result after this Link Confirmation\r\n Parent Profile:\r\n {this.state.finalParent} \r\n \r\n Linked Profile(s):\r\n {this.state.finalChild} \r\n \r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(LinkedProfilesConfirmComponent);","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, InputBase, Box } from \"@material-ui/core\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction } from \"../../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\n\r\nimport ActionDialog from \"../../../../../shared/components/dialog/actionDialog\";\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../../shared/services/theme/matIconService\";\r\nimport LinkedProfilesSearchDialogService from \"./linkedProfilesSearchDialogService\";\r\nimport LinkedProfilesConfirmComponent from \"./linkedProfilesConfirmComponent\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../../shared/services/ag-grid/agGridUtil\";\r\n\r\nimport ProfileDetailDialogComponent from \"../../../profile-detail/profileDetailDialogComponent\";\r\nimport ProfileDetailCellRendererComponent from \"../../../profile-detail/profileDetailCellRendererComponent\";\r\n\r\n\r\nclass LinkedProfilesSearchDialogComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n // ept till component's unMount\r\n scopedSubscriptions = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n profileList: [],\r\n selectedProfile: null,\r\n lastSearchedValue: '',\r\n errorMessage: null,\r\n showConfirmLinkedProfilesDialog: false,\r\n showProfileDetailDialog: false,\r\n showLinkWarningDialog: false,\r\n agGridRecipientUtils: new AgGridUtil(\"lastName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n\r\n componentDidMount() {\r\n var searchOBS = this.searchSubject.pipe(\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((_searchValue) => from(this.searchRecipient(_searchValue)))\r\n );\r\n\r\n this.scopedSubscriptions.add(searchOBS.subscribe());\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n this.setState({ showProfileDetailDialog: true });\r\n };\r\n\r\n searchRecipient = (_searchValue) => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n if (DataService.stringShouldBe(_searchValue, 3)) {\r\n this.setState({ searchResult: ResultStatus.LOADING, profileList: [], selectedProfile: null, lastSearchedValue: _searchValue });\r\n this.apiSubscriptions.add(\r\n LinkedProfilesSearchDialogService.searchOBS(this.context.user.tenantId, _searchValue).subscribe(\r\n (_profileList) => {\r\n if (DataService.hasElements(_profileList)) {\r\n _profileList.forEach(x => { x.isSelected = false; });\r\n }\r\n this.setState({\r\n searchResult: DataService.hasElements(_profileList) ? ResultStatus.SUCCESS : ResultStatus.LOADED,//-> no records\r\n profileList: _profileList,\r\n });\r\n },\r\n (err) => { this.setState({ searchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n } else {\r\n this.setState({ searchResult: ResultStatus.NOT_LOADED });\r\n }\r\n return [];\r\n }\r\n\r\n // render\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n Profile Search\r\n {/* Search */}\r\n
\r\n
{MatIconService.SEARCH}
\r\n { this.searchSubject.next(e.target.value); }} />\r\n
\r\n {LayoutService.getIconButton(DataService.isNullOrUndefined(this.state.selectedProfile), MatIconService.LINK, \"Link\", () => {\r\n this.props.currentLinkedProfiles.includes(this.state.selectedProfile.porziogstprofileid) ?\r\n this.setState({ showLinkWarningDialog: true }) :\r\n this.setState({ showConfirmLinkedProfilesDialog: true });\r\n }, \"inherit\", \"keyActionSave\")}\r\n {/* {LayoutService.getIconButton(false, MatIconService.OK, \"Submit\", () => { alert(\"Under development\") }, \"inherit\")} */}\r\n {/* {LayoutService.getIconButton(false, MatIconService.IDEA_BULB_32, \"Possible Matches\", () => { alert(\"Under development\") }, \"inherit\")} */}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => { this.props.onClose(\"\", \"\") }, \"secondary\", \"keyActionCancel1\")}\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n {this.renderContent(classes)}\r\n \r\n {this.state.showConfirmLinkedProfilesDialog ? {\r\n this.setState({ showConfirmLinkedProfilesDialog: false });\r\n if (parentProfile) {\r\n this.props.onClose(parentProfile, this.state.selectedProfile.prid);\r\n }\r\n }}\r\n selectedProfile={this.state.selectedProfile}\r\n /> : <>}\r\n \r\n this.setState({ showProfileDetailDialog: false })}\r\n />\r\n { this.setState({ showLinkWarningDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n
\r\n );\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.searchResult) {\r\n case ResultStatus.SAVING: return ;\r\n case ResultStatus.LOADING: return ;\r\n case ResultStatus.NOT_LOADED: return ;\r\n case ResultStatus.LOADED: return ;\r\n case ResultStatus.SUCCESS:\r\n return (
\r\n
\r\n {\r\n this.setState({ selectedProfile: _data });\r\n })}\r\n suppressClickEdit={true}\r\n frameworkComponents={this.state.agGridRecipientUtils.frameworkComponents}\r\n onGridReady={(params) => { this.state.agGridRecipientUtils.setGridParams(params, true); }}\r\n gridOptions={{\r\n context: { componentParent: this },\r\n suppressContextMenu: true,\r\n rowHeight: 32,\r\n }}\r\n />\r\n
\r\n
);\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.searchRecipient(this.state.lastSearchedValue); }} />);\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(LinkedProfilesSearchDialogComponent);","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Grid, Dialog } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ResultStatus, API_ENDPOINT, ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ProfileCountCellRendererComponent from \"../../expanded-view/profileCountCellRendererComponent\";\r\nimport ProfileDetailCellRendererComponent from \"../../profile-detail/profileDetailCellRendererComponent\";\r\nimport LinkedProfilesService from \"./linkedProfilesService\";\r\nimport LinkedProfilesSearchDialogComponent from \"./linked-profiles-search-dialog/linkedProfilesSearchDialogComponent\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ActionDialog from \"../../../../shared/components/dialog/actionDialog\";\r\nimport ChildMessageRendererComponent from \"../../../../shared/components/childMessageRendererComponent\";\r\nimport ProfileDetailDialogComponent from \"../profileDetailDialogComponent\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass LinkedProfilesComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n porzioSearch: \"\",\r\n showSearchLinkedProfilesDialog: false,\r\n showConfirmDialog: false,\r\n showUnlinkConfirmDialog: false,\r\n profilesToBeUnlinked: \"\",\r\n parentProfile: \"\",\r\n selectedProfile: \"\",\r\n warningDesc: \"\",\r\n showUnlinkWarningDialog: false,\r\n currentLinkedProfiles: {},\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n profileCountCellRendererComponent: ProfileCountCellRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n if (this.state.isEditing) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n LinkedProfilesService.getLinkedProfilesAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode, this.state.parentProfile, this.state.selectedProfile),\r\n ]).subscribe(\r\n // success\r\n ([_data]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data : [],\r\n currentLinkedProfiles: _data.map((x) => { return x.PORZIOGSTPROFILEID })\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n ToastService.showError(\"Error Occured\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n node = Object.keys(node).reduce((acc, key) => {\r\n acc[key.toLowerCase()] = node[key];\r\n return acc;\r\n }, {});\r\n this.setState({ modalAgNode: node }, () => {\r\n this.setState({ showProfileDetailDialog: true })\r\n });\r\n // if (this.state.agGridUtils.isNotEditing()) {\r\n // this.setState({ showProfileDetailDialog: true });\r\n // }\r\n };\r\n searchClick = () => {\r\n if (this.props.isReadOnly) {\r\n this.setState({ showSearchLinkedProfilesDialog: true });\r\n }\r\n }\r\n unlinkClicked = (_ids, _prid) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ApiService.postOBS(API_ENDPOINT.CORE,\r\n `/Profiles/UnLinkProfiles?tenantId=${this.context.user.tenantId}&userId=${this.context.user.userId}&ids=${_ids}&prid=${_prid}`)\r\n ]).subscribe(\r\n ([_data]) => {\r\n this.fetchData();\r\n },\r\n (error) => {\r\n ToastService.showError(\"Error Occured\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n this.props.changeToReadOnlyMode();\r\n }\r\n\r\n TAB_PERMISSIONS = RolePermissionService.PROFILE_LINKED_PROFILES;\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n\r\n if (this.TAB_PERMISSIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n }\r\n else {\r\n const componentType = \"Linked Profiles\";\r\n const isReadOnly = this.props.isReadOnly || this.TAB_PERMISSIONS.cannotEdit;\r\n this.state.agGridUtils.setEditingMode(isReadOnly);\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {\r\n this.setState({ showConfirmDialog: false, showSearchLinkedProfilesDialog: true });\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n {\r\n this.setState({ showUnlinkConfirmDialog: false }, () => {\r\n var gridData = this.state.agGridUtils.getUpdatedRowData();\r\n var ids = gridData.filter(x => x.isSelected).map(x => x.PRID);\r\n var prid = this.state.data.filter(x => x.RELATIONSHIP === \"Parent\").map(x => x.PRID);\r\n this.unlinkClicked(DataService.arrayToString(ids), ids.includes(prid[0]) ? DataService.arrayToString(prid) : \"\");\r\n });\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showUnlinkConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n { this.setState({ showUnlinkWarningDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n \r\n \r\n \r\n \r\n {LayoutService.getIconButton((this.props.isReadOnly || this.TAB_PERMISSIONS.cannotCreate), MatIconService.SEARCH, \"search\", () => {\r\n this.state.selectedProfile.length !== 0 ? this.setState({ showConfirmDialog: true }) : this.setState({ showSearchLinkedProfilesDialog: true })\r\n }, \"inherit\")}\r\n {LayoutService.getIconButton((this.props.isReadOnly || this.TAB_PERMISSIONS.cannotEdit), MatIconService.SWAP, \"Promote to Parent\", () => {\r\n var parentRowNode = null;\r\n var selRowNode = null;\r\n var selCount = 0;\r\n this.state.agGridUtils.gridParams.api.forEachNode((rowNode) => {\r\n if (rowNode.data[\"RELATIONSHIP\"] === \"Parent\") { parentRowNode = rowNode; }\r\n if (rowNode.data[\"isSelected\"] === true) {\r\n selCount++;\r\n //if (rowNode.data[\"RELATIONSHIP\"] !== \"Parent\") {\r\n selRowNode = rowNode;\r\n //}\r\n }\r\n });\r\n\r\n if (!parentRowNode) { ToastService.showError(\"No Parent Node Exists\"); }\r\n else if (selCount > 1) { ToastService.showWarning(\"Please select only one Profile to promote as Parent\"); }\r\n else if (selCount !== 1) { ToastService.showWarning(\"Please select one child\"); }\r\n else if (selRowNode.data[\"RELATIONSHIP\"] === \"Parent\") { ToastService.showWarning(\"The selected Profile is already a Parent\"); }\r\n else {\r\n parentRowNode.data[\"RELATIONSHIP\"] = selRowNode.data[\"RELATIONSHIP\"];\r\n selRowNode.data[\"RELATIONSHIP\"] = \"Parent\";\r\n selRowNode.data[\"isSelected\"] = false;\r\n this.state.agGridUtils.updateRows([parentRowNode.data, selRowNode.data]);//update rows in aggrid\r\n ToastService.showInfo(\"Promoted to parent\");\r\n this.setState({ parentProfile: selRowNode.data[\"PRID\"] });\r\n }\r\n }, \"inherit\",undefined, \"bottom\", {height:\"48px\"})}\r\n {LayoutService.getIconButton((this.props.isReadOnly || this.TAB_PERMISSIONS.cannotDelete), MatIconService.UNLINK, \"Unlink\", () => {\r\n var ids = DataService.arrayToString(this.state.agGridUtils.getUpdatedRowData().filter(x => x.isSelected).map(x => x.PORZIOGSTPROFILEID));\r\n if (ids.length === 0) {\r\n this.setState({ showUnlinkWarningDialog: true, warningDesc: \"Please select at least one profile to unlink\" });\r\n }\r\n else {\r\n if (this.state.selectedProfile.length !== 0) {\r\n this.setState({ showUnlinkWarningDialog: true, warningDesc: \"Please save changes before unlink\" });\r\n } else {\r\n this.setState({ profilesToBeUnlinked: ids, showUnlinkConfirmDialog: true });\r\n }\r\n }\r\n }, \"primary\")}\r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n this.state.agGridUtils.setEditingMode(isReadOnly);\r\n }}>\r\n
\r\n
\r\n {\r\n if (_selectedProfile.length !== 0) {\r\n this.setState({ showSearchLinkedProfilesDialog: false, parentProfile: _parentProfile, selectedProfile: _selectedProfile }, () => {\r\n this.fetchData();\r\n });\r\n }\r\n else {\r\n this.setState({ showSearchLinkedProfilesDialog: false })\r\n }\r\n }}\r\n />\r\n
\r\n\r\n this.setState({ showProfileDetailDialog: false })} />\r\n\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n linkSelectedProfile = (_selectedProfile) => {\r\n this.setState({ parentProfile: \"\" + _selectedProfile[\"prid\"], selectedProfile: \"\" + _selectedProfile[\"prid\"] });\r\n this.fetchData();\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n //return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n var dataToPost = this.state.data;\r\n\r\n const stringifiedJson = DataService.addEscapeCharactersToJsonString(dataToPost);\r\n return ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n `/Profiles/SaveLinkedProfiles?prid=${this.state.parentProfile}&tenantId=${this.context.user.tenantId}&userId=${this.context.user.userId}`,\r\n stringifiedJson\r\n );\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(LinkedProfilesComponent);\r\n","import { ReplaySubject } from 'rxjs';\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from '../../../../shared/services/ag-grid/agGridColumnExt';\r\n\r\nexport default class IdentifierService {\r\n\r\n static getProfileIdentifierAsOBS = (_tenantId, _userId, _modalAgNode) => {\r\n const targetUrl = `/Profiles/FetchProfileIdentifier?tenantId=${_tenantId}&prid=${_modalAgNode.prid}&pageNumber=1&pageSize=1000`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n static fetchEntityLovDataAsOBS = (_tenantId,) => {\r\n const targetUrl = `/Entity/FetchEntityLOVData?fieldNames=PorzioGSTIdentifierType&tenantId=${_tenantId}&entityId=1&screenName=PorzioFieldsLOV_1376`;\r\n return ApiService.getOBS(API_ENDPOINT.CORE, targetUrl);\r\n };\r\n\r\n //#region Identifiers Grid\r\n\r\n static getIdentifiersRows = (_identifierData) => {\r\n const identifiersRows = DataService.hasValue(_identifierData) ? _identifierData : [];\r\n // identifiersRows.forEach(row => {\r\n // row[\"countryId\"] = row[\"countrylist\"].countryId;\r\n // });\r\n return identifiersRows;\r\n }\r\n\r\n static getIdentifiersObject = (\r\n _porzioGSTIdentifierTypeId = 0,\r\n _companyIdentifierID = \"\",\r\n _countryId = \"\",\r\n _countryInfo = { \"countryId\": \"\", \"countryName\": \"\", \"countryCode\": \"\" },\r\n _identifierDescription = \"\",\r\n _identifierValue = \"\",\r\n _porzioGSTIdentifierType = { \"lovId\": 0, \"lovKey\": \"\", \"ordinal\": 0, \"isdefault\": false, \"fieldName\": \"\", \"localLovKey\": \"\" },\r\n _porzioGSTIdentifierID = \"\",\r\n _profileIdentifierId = 0,\r\n ) => {\r\n return {\r\n \"porzioGSTIdentifierTypeId\": _porzioGSTIdentifierTypeId,\r\n \"companyIdentifierID\": _companyIdentifierID,\r\n \"countryId\": _countryId,\r\n \"countryInfo\": {\r\n \"countryId\": _countryInfo.countryId,\r\n \"countryName\": _countryInfo.countryName,\r\n \"countryCode\": _countryInfo.countryCode\r\n },\r\n \"identifierDescription\": _identifierDescription,\r\n \"identifierValue\": _identifierValue,\r\n \"porzioGSTIdentifierType\": {\r\n \"lovId\": _porzioGSTIdentifierType.lovId,\r\n \"lovKey\": _porzioGSTIdentifierType.lovKey,\r\n \"ordinal\": _porzioGSTIdentifierType.ordinal,\r\n \"isdefault\": _porzioGSTIdentifierType.isdefault,\r\n \"fieldName\": _porzioGSTIdentifierType.fieldName,\r\n \"localLovKey\": _porzioGSTIdentifierType.localLovKey\r\n },\r\n \"porzioGSTIdentifierID\": _porzioGSTIdentifierID,\r\n \"profileIdentifierId\": _profileIdentifierId,\r\n };\r\n }\r\n\r\n static isNewIdentifierRow = (e) => {\r\n return e.data.companyIdentifierID === \"\" || e.data.companyIdentifierID <= 0;\r\n }\r\n\r\n\r\n static validateIdentifiersRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n * @param _identifiersFieldConfigs config Array\r\n */\r\n static getColumnDefs = (_componentThisRef, _isReadOnly, _showDelete, _agGridUtils) => {\r\n const arrSort = _componentThisRef.state.porzioGstIdentifierTypeList.filter(k => k.lovKey.substring(0, 3) !== \"US:\").map(i => i.lovId); // this preserves the alphabetical sort order of the drop down\r\n let oRET = [\r\n // edit button column\r\n _agGridUtils.getInlineEditActionColumn(_showDelete, this.validateIdentifiersRowEditOBS),\r\n\r\n // other columns\r\n // Note this first key must match the default focus key in this Service's corresponding Component: new AgGridUtil()\r\n AgGridColumnExt.GET(true, \"text\", \"porzioGSTIdentifierTypeId\", \"Porzio GST Identifier Type\").minAndDefaultWidth(384).makeDropDown(_componentThisRef.state.porzioGstIdentifierTypeCellSource, {}, \"agSelectCellEditor\", [\"\", ...arrSort]).SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"countryId\", \"Country\").minAndDefaultWidth(192).makeDropDown({ 0: \" \", ..._componentThisRef.state.countryCellSource }).SET(),\r\n\r\n AgGridColumnExt.GET(true, \"text\", \"identifierValue\", \"Identifier Value\").minAndDefaultWidth(192).tooltip().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"identifierDescription\", \"Identifier Description\").minAndDefaultWidth(130).flexWeight(1).tooltip().SET(),\r\n\r\n // AgGridColumnExt.GET(false, \"text\", \"identifierValue\", \"Identitifier Value 1\").minAndDefaultWidth(192).tooltip().SET(),\r\n // AgGridColumnExt.GET(false, \"text\", \"identifierDescription\", \"Identitifier Description\").minAndDefaultWidth(128).tooltip().SET(),\r\n\r\n AgGridColumnExt.GET(false, \"text\", \"companyIdentifierID\", \"Company Identifier Id\").fixedWidth(128).headerClass(\"center-text\").centerAlignText()\r\n .validateEditablity((e) => { return this.isNewIdentifierRow(e) }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTIdentifierID\", \"Porzio GST Identifier Id\").fixedWidth(144).headerClass(\"center-text\").centerAlignText()\r\n .validateEditablity((e) => { return this.isNewIdentifierRow(e) }).SET(),\r\n ];\r\n return oRET;\r\n }\r\n\r\n //#endregion Identifiers Grid\r\n\r\n}","import React from \"react\";\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport { Box, Typography, Grid } from \"@material-ui/core\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\n\r\n\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { API_ENDPOINT, CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\n\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport IdentifierService from \"./identifierService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass IdentifierComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n fetchState: ResultStatus.NOT_LOADED,\r\n // isReadOnly: true, NA since it will be sent as a props by the parent Container\r\n isNew: this.props.inputAction === CrudAction.CREATE,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n selProfileId: !props.modalAgNode ? \"\" : props.modalAgNode.prid,\r\n // 1) source-name\r\n fetchSourceSystemsResult: ResultStatus.NOT_LOADED,\r\n selSourceSystemId: !props.modalAgNode ? \"\" : props.modalAgNode.sourceid,\r\n sourceSystemList: [],\r\n\r\n agGridUtils: new AgGridUtil(\"porzioGSTIdentifierTypeId\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n }),\r\n\r\n\r\n };\r\n }\r\n\r\n componentWillUnmount() { }\r\n componentDidMount() { this.fetchData(); }\r\n\r\n fetchData = () => {\r\n\r\n this.oSubscriptions.cancelAll();\r\n\r\n this._setFetchState(ResultStatus.LOADING, null, null, null, () => {\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n (this.state.isNew ? of(null) : IdentifierService.getProfileIdentifierAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode)),\r\n IdentifierService.fetchEntityLovDataAsOBS(this.context.user.tenantId),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n // success result\r\n ([_identifierData, _porzioGstIdentifierTypeList, _countryList]) => {\r\n this._setFetchState(ResultStatus.LOADED, _identifierData, _countryList,\r\n _porzioGstIdentifierTypeList.slice().sort((a, b) => (a.lovKey > b.lovKey) ? 1 : ((b.lovKey > a.lovKey) ? -1 : 0)),\r\n () => { });\r\n },\r\n // on error\r\n (err) => { this._setFetchState(ResultStatus.ERROR, null, null, null, () => { }); }\r\n )\r\n );\r\n });\r\n }\r\n\r\n _setFetchState = (_fetchState, _identifierData, _countryList, _porzioGstIdentifierTypeList,\r\n _callback = () => { }) => {\r\n\r\n this.setState({\r\n fetchState: _fetchState,\r\n identifiersRowData: _identifierData,\r\n\r\n countryList: _countryList,\r\n countryCellSource: DataService.arrayToObject(_countryList, \"id\", \"value\"),\r\n\r\n porzioGstIdentifierTypeList: _porzioGstIdentifierTypeList,\r\n porzioGstIdentifierTypeCellSource: DataService.arrayToObject(_porzioGstIdentifierTypeList, \"lovId\", \"lovKey\"),\r\n }, _callback);\r\n }\r\n\r\n // render\r\n TAB_PERMISSIONS = RolePermissionService.PROFILE_IDENTITIFERS;\r\n render() {\r\n const { classes } = this.props;\r\n // set the props for parent's validation & post logic\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n\r\n if (this.TAB_PERMISSIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n }\r\n else {\r\n const isReadOnly = this.props.isReadOnly || this.TAB_PERMISSIONS.cannotEdit;\r\n this.state.agGridUtils.setReadOnlyMode(isReadOnly);\r\n\r\n switch (this.state.fetchState) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n
\r\n \r\n \r\n {LayoutService.getIconButton((this.props.isReadOnly || this.TAB_PERMISSIONS.cannotCreate), MatIconService.ADD_CIRCLE_OUTLINE, \"Add New Identifier\", () => {\r\n if (this.state.agGridUtils.isNotEditing()) { this.state.agGridUtils.addNewRow(IdentifierService.getIdentifiersObject()); }\r\n })}\r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, false);\r\n this.state.agGridUtils.setReadOnlyMode(this.props.isReadOnly);\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n
\r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchSourceSystems(); }} />);\r\n }\r\n }\r\n }\r\n\r\n //#endregion\r\n\r\n /** 1/3 Required */\r\n isDirtyCallback = () => {\r\n // do any additional checkings if needed\r\n // TODO: return true if there are any changes to the grid\r\n return false;\r\n }\r\n /** 2/3 Required in Parent */\r\n resetCallback = () => {\r\n // TODO: reset the grid\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 3/3 Required in Parent */\r\n postCallbackOBS = () => {\r\n // loding animation is handled in the parent componenet\r\n // this.setState({ fetchSourceSystemsResult: ResultStatus.SAVING });\r\n\r\n //---Mandatory-Fields---------------\r\n var dataToPost = [];\r\n\r\n //---Grid---------------\r\n // identifiers-grid\r\n const updatedIdentifiersList = this.state.agGridUtils.getUpdatedRowData();\r\n\r\n // Delete Identifiers\r\n let rowIds = updatedIdentifiersList.map(x => x.porzioGSTIdentifierID);\r\n let deletedIdentifierIds = this.state.identifiersRowData.filter((x) => {\r\n if (!rowIds.includes(x.porzioGSTIdentifierID)) {\r\n return x.porzioGSTIdentifierID;\r\n }\r\n });\r\n this.oSubscriptions.cancelAll();\r\n\r\n this.oSubscriptions.add(ApiService.deleteOBS(API_ENDPOINT.CORE, `/Profiles/DeleteIdentifierData/${this.context.user.tenantId}/${this.props.modalAgNode.prid}/${this.context.user.userId}`, `\"${deletedIdentifierIds.map(x => x.porzioGSTIdentifierID).toString()}\"`)\r\n .subscribe(\r\n (_successResult) => {\r\n this.setState({ fetchState: ResultStatus.SAVING });\r\n if (_successResult) {\r\n this.setState({ fetchState: ResultStatus.LOADED });\r\n }\r\n },\r\n (_error) => {\r\n this.setState({ fetchState: ResultStatus.ERROR });\r\n }\r\n ));\r\n\r\n updatedIdentifiersList.forEach(rowData => {\r\n\r\n const lovPorzioGSTIdentifierType = DataService.getFirstOrDefault(this.state.porzioGstIdentifierTypeList.filter(x => x.lovId === rowData[\"porzioGSTIdentifierTypeId\"]));\r\n const objPorzioGSTIdentifierType = lovPorzioGSTIdentifierType ? { \"lovId\": lovPorzioGSTIdentifierType.lovId, \"lovKey\": lovPorzioGSTIdentifierType.lovKey } : { \"lovId\": 0, \"lovKey\": \"\" };\r\n\r\n const lovCountryInfo = DataService.getFirstOrDefault(this.state.countryList.filter(x => x.id === rowData[\"countryId\"]));\r\n const objCountryInfo = lovCountryInfo ? { \"countryId\": lovCountryInfo.id, \"countryName\": lovCountryInfo.value } : { \"countryId\": \"\", \"countryName\": \"\" };\r\n\r\n const objIdentifier = IdentifierService.getIdentifiersObject(\r\n rowData[\"porzioGSTIdentifierTypeId\"],\r\n rowData[\"companyIdentifierID\"],\r\n rowData[\"countryId\"],\r\n objCountryInfo,\r\n rowData[\"identifierDescription\"],\r\n rowData[\"identifierValue\"],\r\n objPorzioGSTIdentifierType,\r\n rowData[\"porzioGSTIdentifierID\"],\r\n rowData[\"profileIdentifierId\"],\r\n );\r\n dataToPost.push(objIdentifier);\r\n });\r\n\r\n //---Post---------------\r\n const stringifiedJson = JSON.stringify(dataToPost);\r\n return ApiService.postOBS(API_ENDPOINT.CORE, `/Profiles/SaveIdentifierData?tenantId=${this.context.user.tenantId}&prid=${this.props.modalAgNode.prid}&userId=${this.context.user.userId}&uId=${\"DEV\"}`, stringifiedJson);\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(IdentifierComponent);","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT,ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class DocumentsService {\r\n\r\n static getDocumentsAsOBS = (_tenantId, _modalAgNode) => {\r\n const targetUrl = `/Document/GetDocumentsByEntity/${_tenantId}/${ENTITY_TYPE.PROFILE}/${_modalAgNode.prid}?page=1&pageSize=100`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n );\r\n };\r\n\r\n _setRuleViolations = (_params) => {\r\n _params.data.ruleviolations = _params.newValue;\r\n return true;\r\n }\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", { onChange: _componentThisRef.toggleSubmitButton }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTDocumentID\", \"Porzio GST Document ID\").headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"documentName\", \"Document Name\").cellRenderer(\"childMessageRendererComponent\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"documentDescription\", \"Description\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"documentType\", \"Category Name\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"filePath\", \"File Name\").cellRenderer(\"downloadFileAgRenderer\").flexWeight(1).tooltip().valueSetter(this._setRuleViolations).SET(),\r\n // AgGridColumnExt.GET(true, \"text\", \"fileType\", \"File Type\").fixedWidth(104).valueSetter(this._setRuleViolations).SET(),\r\n ];\r\n }\r\n\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { Dialog, DialogTitle, DialogContent, DialogContentText, Box, Typography, Grid, AppBar, Toolbar } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport ChildMessageRendererComponent from \"../../../../shared/components/childMessageRendererComponent\";\r\nimport DownloadFileAgRenderer from \"../../../data-center/download-file/downloadFileAgRenderer\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport SectionComponent from \"../../../../shared/components/sectionComponent\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport DocumentDetailsComponent from \"../../../../shared/components/document-details/documentDetailsComponent\"\r\nimport DocumentsService from \"./documentsService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport RolePermissionInfo from \"../../../../shared/role-permissions/rolePermissionInfo\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport OktaAuthService from \"../../../../public/authentication/oktaAuthService\";\r\n\r\nclass DocumentsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n porzioSearch: \"\",\r\n selectedDocuments:[],\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n downloadFileAgRenderer: DownloadFileAgRenderer,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n\r\n handleDownloadAg = async (\r\n cell,\r\n agNodeData,\r\n filename,\r\n linkRefAg,\r\n windowUrl\r\n ) => {\r\n //ToastService.showInfo(\"Under Construction\");\r\n if (this.state.canNotDownload) {\r\n this.setState({ accessDenied: this.state.canNotDownload });\r\n return;\r\n } else {\r\n console.log(\"agNodeData\", JSON.stringify(agNodeData));\r\n const result = await fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/Document/DownloadDocument/${this.context.user.tenantId}?filename=${agNodeData.filePath}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n );\r\n const blob = await result.blob();\r\n return blob;\r\n }\r\n\r\n };\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n DocumentsService.getDocumentsAsOBS(this.context.user.tenantId, this.props.modalAgNode,),\r\n ApiService.getOBS(API_ENDPOINT.CORE, `/Profiles/FetchProfileDocumentTypes/${this.context.user.tenantId}`),\r\n ]).subscribe(\r\n // success\r\n ([_documents, _documentCategoryLov]) => {\r\n this.setState({ data: _documents || [], documentCategoryLov: _documentCategoryLov },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n ToastService.showError(\"Error Occured.\");\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalShow: true, modalAgNode: node, inputAction: CrudAction.UPDATE });\r\n };\r\n\r\n TAB_PERMISSIONS = RolePermissionService.PROFILE_DOCUMENTS;\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n\r\n const cannotDelete = this.props.isReadOnly || this.state.selectedDocuments.length === 0;\r\n if (this.TAB_PERMISSIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n }\r\n else {\r\n // TODO: (delete the below line) implemented now because other features are not available in rolePermission for this\r\n this.TAB_PERMISSIONS = RolePermissionInfo.INIT(true);\r\n\r\n const isReadOnly = this.props.isReadOnly || this.TAB_PERMISSIONS.cannotEdit;\r\n this.state.agGridUtils.setEditingMode(isReadOnly);\r\n\r\n const componentType = \"Documents\";\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* TODO: not avilable -> || this.TAB_PERMISSIONS.cannotCreate */}\r\n {LayoutService.getIconButton(cannotDelete, cannotDelete ? MatIconService.DELETE : MatIconService.DELETE_RED, \"Delete\", () => { this.handleDeleteClick()},\"inherit\")}\r\n {LayoutService.getIconButton((this.props.isReadOnly), MatIconService.ADD_CIRCLE_OUTLINE, \"Add New Document\", () => {\r\n this.setState({ modalShow: true, modalAgNode: {}, inputAction: CrudAction.CREATE, })\r\n })}\r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n this.state.agGridUtils.setEditingMode(isReadOnly);\r\n }}>\r\n
\r\n
\r\n {/* \r\n \r\n \r\n Are you sure you want to delete the documents? This action cannot be reversed.\r\n \r\n \r\n {this.state.selectedDocuments.map(r => r.porzioGSTDocumentID).join(\",\")}\r\n \r\n \r\n */}\r\n
\r\n {this.state.openDeleteConfirm ?\r\n this.setState({ openDeleteConfirm: false })} aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\">\r\n \r\n \r\n \r\n Delete Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete\", this.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => this.setState({ openDeleteConfirm: false }), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to delete the selected document? This action cannot be reversed.\r\n \r\n \r\n {this.state.selectedDocuments.map(r => ({r.filePath}
))}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n :<>\r\n }\r\n \r\n \r\n this.setState({ modalShow: false })} modalAgNode={this.state.modalAgNode}\r\n inputAction={this.state.inputAction} refreshGrid={this.fetchData} documentCategoryLov={this.state.documentCategoryLov} entityType={ENTITY_TYPE.PROFILE} profileId={this.props.modalAgNode.prid} />\r\n \r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n }\r\n handleDeleteClick = () => {\r\n this.setState({\r\n openDeleteConfirm: true\r\n });\r\n }\r\n\r\n handleDeleteConfirm = () => {\r\n this.setState({ openDeleteConfirm: false });\r\n let idsToDelete = this.state.selectedDocuments.map(r => r.porzioGSTDocumentID)?.join(\",\");\r\n var pathParams = `/Document/DeleteDocument/${this.context.user.tenantId}/${this.context.user.userId}/${idsToDelete}`;\r\n ApiService.setOBS(\"DELETE\", API_ENDPOINT.CORE, pathParams, JSON.stringify({})).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Delete Document Successful\");\r\n //refreshGrid= false;\r\n this.fetchData();\r\n this.props.onClose();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n \r\n (errorResult) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n this.setState({ selectedDocuments: [] });\r\n }\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n let hasSelected = false;\r\n let selectedDocuments = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedDocuments.push(rowNode.data);\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n selectedDocuments: selectedDocuments,\r\n isReadOnly: !hasSelected,\r\n });\r\n }\r\n\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(DocumentsComponent);\r\n","import { Observable } from \"rxjs\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { PROFILE_CATEGORY } from \"../../../../shared/types/enums\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nexport default class ReferenceDataService {\r\n static getMatchedReferenceDataForProfile(tenantId, profileid) {\r\n const targetUrl = `/Profiles/GetReferenceDataGetMatchedProfileFromProfileXref?tenantId=${tenantId}&porzioGstProfileId=${profileid}&pageNumber=1&rowsPerPage=5000`;\r\n return ApiService.getOBS(API_ENDPOINT.CORE, targetUrl);\r\n }\r\n\r\n static saveReferenceDataManually = (_tenantId, _isIndividualProfileCategory, _selectedReferenceData, selectedPorzioGSTProfileId) => {\r\n const vPlAndNPPL = \"VPL and NPPL\", teachingHospital = \"TEACHING HOSPITAL\";\r\n let profileXrefType = _isIndividualProfileCategory ? vPlAndNPPL : teachingHospital;\r\n let profileXrefSaveParams = \"\";\r\n\r\n for (const propName in _selectedReferenceData) {\r\n if (propName !== 'isSelected')\r\n profileXrefSaveParams += `${propName}=${_selectedReferenceData[propName]},`;\r\n }\r\n //profileXrefSaveParams = profileXrefSaveParams.replace(/(^,)|(,$)/g, \"\");\r\n\r\n let url = `/Profiles/SaveReferenceDataProfileXrefManual?tenantId=${_tenantId}&profileXrefType=${profileXrefType}&profileXrefSaveParams=${encodeURIComponent(profileXrefSaveParams)}PORZIOGSTPROFILEID=${selectedPorzioGSTProfileId}`;\r\n return ApiService.getOBS(API_ENDPOINT.CORE, url);\r\n }\r\n\r\n static saveNppesReferenceDataManually = (_tenantId, _isIndividualProfileCategory, _selectedReferenceData, selectedPorzioGSTProfileId) => {\r\n const individual = \"Individual\", organization = \"Organization\";\r\n let profileXrefType = _isIndividualProfileCategory ? individual : organization;\r\n let profileXrefSaveParams = \"\";\r\n\r\n for (const propName in _selectedReferenceData) {\r\n if (propName !== 'isSelected')\r\n profileXrefSaveParams += `${propName}=${_selectedReferenceData[propName]},`;\r\n }\r\n //profileXrefSaveParams = profileXrefSaveParams.replace(/(^,)|(,$)/g, \"\");\r\n\r\n let url = `/Profiles/SaveReferenceDataProfileXrefManual_Nppes?tenantId=${_tenantId}&profileXrefType=${profileXrefType}&profileXrefSaveParams=${encodeURIComponent(profileXrefSaveParams)}PORZIOGSTPROFILEID=${selectedPorzioGSTProfileId}`;\r\n return ApiService.postOBS(API_ENDPOINT.CORE, url);\r\n }\r\n\r\n static deleteMatchedProfile = (tenantId, porzioGSTProfileId) => {\r\n return ApiService.deleteOBS(API_ENDPOINT.CORE,\r\n `/Profiles/DeleteMatchedProfiles?tenantId=${tenantId}&porzioGSTProfileId=${porzioGSTProfileId}`);\r\n }\r\n static deleteMatchedProfileNppes = (tenantId, porzioGSTProfileId) => {\r\n return ApiService.deleteOBS(API_ENDPOINT.CORE,\r\n `/Profiles/DeleteMatchedProfilesNppes?tenantId=${tenantId}&porzioGSTProfileId=${porzioGSTProfileId}`);\r\n }\r\n\r\n static changeProfileFromReviewedToUnmatch = (tenantId, porziogstprofileid) => {\r\n return ApiService.postOBS(API_ENDPOINT.CORE,\r\n `/Profiles/ReferenceDataSaveUnmatchedProfiles?tenantId=${tenantId}&porziogstprofileid=${porziogstprofileid}`);\r\n }\r\n\r\n static getNppesColumns = (_isNppes) => {\r\n let nppesArr = [\r\n AgGridColumnExt.GET(false, \"text\", \"credentials\", \"Credentials\").minAndDefaultWidth(128).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"street_address\", \"Address\").minAndDefaultWidth(128).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"city\", \"City\").minAndDefaultWidth(128).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"state\", \"Province / State\").minAndDefaultWidth(112).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"po_box\", \"Postal Code\").minAndDefaultWidth(112).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"country\", \"Country\").minAndDefaultWidth(128).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"state_2\", \"US License State 2\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"license_2\", \"US License Number 2\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"state_3\", \"US License State 3\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"license_3\", \"US License Number 3\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"state_4\", \"US License State 4\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"license_4\", \"US License Number 4\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"state_5\", \"US License State 5\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"license_5\", \"US License Number 5\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n return _isNppes ? nppesArr : [];\r\n }\r\n\r\n static getColumnDefs = (_parentThis, _isNppes) => {\r\n let vPlAndNPPLArr = [\r\n AgGridColumnExt.GET(false, \"text\", \"statelicense\", \"US License State\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"statelicensenum\", \"US License Number\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET()\r\n ];\r\n let checkBoxCellRef = !_isNppes ? AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", {\r\n onChange: _parentThis.toggleSubmitButton, isCellEnabledCallback: (_cellRef) => {\r\n return _cellRef.props.data['isactive'];\r\n }\r\n }).SET() : AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", {\r\n onChange: _parentThis.toggleSubmitButtonForNppes, isCellEnabledCallback: (_cellRef) => {\r\n return _cellRef.props.data['isactive'];\r\n }\r\n }).SET();\r\n const profileCategory = DataService.hasElements(_parentThis.state.profileCategoryList) ? _parentThis.state.profileCategoryList.find(p => p.lovId == _parentThis.props.selectedProfile?.profilecategoryid)?.lovKey : \"\";\r\n \r\n if (profileCategory === PROFILE_CATEGORY.ORGANIZATION) {\r\n return [\r\n checkBoxCellRef,\r\n AgGridColumnExt.GET(false, \"text\", \"isactive\", \"Active\").minAndDefaultWidth(80).headerClass(\"center-text\").centerAlignText().cellRenderer(\"isActiveIconRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"source_file\", \"Source File\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n !_isNppes ? AgGridColumnExt.GET(false, \"text\", \"tin\", \"TIN\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET()\r\n : AgGridColumnExt.GET(false, \"text\", \"npinumber\", \"NPI\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(), ,\r\n AgGridColumnExt.GET(false, \"text\", \"organization_name\", \"Organization Name\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"street_address\", \"Address\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"city\", \"City\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"state\", \"State\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"po_box\", \"Postal Code\").minAndDefaultWidth(112).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"country\", \"Country\").minAndDefaultWidth(128).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"match_date\", \"Last Modified Date\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n } else {\r\n let cols = [\r\n checkBoxCellRef,\r\n AgGridColumnExt.GET(false, \"text\", \"isactive\", \"Active\").minAndDefaultWidth(80).headerClass(\"center-text\").centerAlignText().cellRenderer(\"isActiveIconRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").flexWeight(1).minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"npinumber\", \"NPI Number\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"source_file\", \"Source File\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstname\", \"First Name\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middlename\", \"Middle Name\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastname\", \"Last Name\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"suffix\", \"Suffix\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"prmry_txnmy_code\", \"Taxonomy Code\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"prmry_txnmy_prvdr_type\", \"Taxonomy Name\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"statelicense\", \"US License State\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"statelicensenum\", \"US License Number\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n !_isNppes ? AgGridColumnExt.GET(false, \"text\", \"additional cms licenses\", \"Additional CMS Licenses\").minAndDefaultWidth(128).tooltip().headerClass(\"center-text\").centerAlignText().SET() : \"\",\r\n ...this.getNppesColumns(_isNppes),\r\n AgGridColumnExt.GET(false, \"text\", \"match_date\", \"Last Modified Date\").minAndDefaultWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n \r\n ];\r\n cols = cols.filter(x => x !== \"\");\r\n return cols;\r\n }\r\n \r\n }\r\n}\r\n","import ApiService from \"../../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../../shared/types/enums\"\r\nimport { AgGridColumnExt } from \"../../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class ReferenceDataSearchDialogService {\r\n\r\n static searchReferenceData = (_tenantId, _isIndividualProfileCategory, _formikProps, _isNppes) => {\r\n if (!_isNppes) {\r\n const vPlAndNPPL = \"VPL and NPPL\", teachingHospital = \"TEACHING HOSPITAL\";\r\n let searchOption = _isIndividualProfileCategory ? vPlAndNPPL : teachingHospital;\r\n let parentObjPropName = _isIndividualProfileCategory ? 'vplAndNppl' : 'teachingHospital';\r\n let obj = _formikProps.values; //_formikProps.values[parentObjPropName];\r\n let formFieldParams = \"\";\r\n obj = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));\r\n for (const property in obj) {\r\n formFieldParams += `${property}=${obj[property]},`;\r\n }\r\n formFieldParams = formFieldParams.replace(/(^,)|(,$)/g, \"\");\r\n\r\n let url = `/Profiles/GetReferenceDataGetSearchDataByParam?tenantId=${_tenantId}&searchOption=${searchOption}&searchSequence=${encodeURIComponent(formFieldParams)}&pageNumber=1&rowsPerPage=5000`;\r\n return ApiService.getOBS(API_ENDPOINT.CORE, url);\r\n } else {\r\n const individual = \"Individual\", organization = \"Organization\";\r\n let searchOption = _isIndividualProfileCategory ? individual : organization;\r\n let parentObjPropName = _isIndividualProfileCategory ? 'individual' : 'organization';\r\n let obj = _formikProps.values; //_formikProps.values[parentObjPropName];\r\n let formFieldParams = \"\";\r\n obj = Object.fromEntries(Object.entries(obj).filter(([_, v]) => v != null));\r\n for (const property in obj) {\r\n formFieldParams += `${property}=${obj[property]},`;\r\n }\r\n formFieldParams = formFieldParams.replace(/(^,)|(,$)/g, \"\");\r\n\r\n let url = `/Profiles/GetReferenceDataGetSearchDataByParam_Nppes?tenantId=${_tenantId}&searchOption=${searchOption}&searchSequence=${encodeURIComponent(formFieldParams)}&pageNumber=1&rowsPerPage=5000`;\r\n return ApiService.getOBS(API_ENDPOINT.CORE, url);\r\n }\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, isIndividualProfileCategory, _onSelectCallback, _isNppes) => {\r\n let colDefs = [\r\n {\r\n headerName: \"Select\",\r\n field: \"isSelected\",\r\n editable: true,\r\n width: 176,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n cellRenderer: \"isSelectedCellRenderer\",\r\n cellRendererParams: {\r\n onChange: (_cellRef, _data) => { _onSelectCallback(_data); }\r\n }\r\n }];\r\n if (isIndividualProfileCategory) {\r\n colDefs.push(\r\n AgGridColumnExt.GET(false, \"text\", \"SOURCE_FILE\", \"Source File\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"NPI_ID\", \"NPI ID\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"FIRST_NAME\", \"First Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"MIDDLE_NAME\", \"Middle Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"LAST_NAME\", \"Last Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"SUFFIX\", \"Suffix\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(), \r\n AgGridColumnExt.GET(false, \"text\", \"PRMRY_TXNMY_CODE\", \"Prmry Txnmy Code\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"PRMRY_TXNMY_PRVDR_TYPE\", \"Prmry Txnmy Prvdr type\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n );\r\n \r\n if (!_isNppes) {\r\n colDefs.push(\r\n AgGridColumnExt.GET(false, \"text\", \"STATE_1\", \"State 1\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"LICENSE_1\", \"License 1\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(), \r\n AgGridColumnExt.GET(false, \"text\", \"STATE_2\", \"State 2\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"LICENSE_2\", \"License 2\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(), \r\n AgGridColumnExt.GET(false, \"text\", \"STATE_3\", \"State 3\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"LICENSE_3\", \"License 3\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(), \r\n AgGridColumnExt.GET(false, \"text\", \"STATE_4\", \"State 4\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"LICENSE_4\", \"License 4\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(), \r\n AgGridColumnExt.GET(false, \"text\", \"STATE_5\", \"State 5\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"LICENSE_5\", \"License 5\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(), \r\n );\r\n }\r\n else {\r\n colDefs.push(\r\n AgGridColumnExt.GET(false, \"text\", \"state\", \"State\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"license\", \"License\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n );\r\n }\r\n } else {\r\n if (!_isNppes) {\r\n colDefs.push(\r\n AgGridColumnExt.GET(false, \"text\", \"SOURCE_FILE\", \"Source File\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"TH_YEAR\", \"TH Year\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"TIN\", \"TIN\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"HOSPITAL_NAME\", \"Hospital Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"PECOS_Legal_Business_Name\", \"PECOS Legal Business Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"Street_Address\", \"Street Address\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"PO_Box\", \"PO Box\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"City\", \"City\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"State\", \"State\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"Zip_Code\", \"Zip Code\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET()\r\n );\r\n } else {\r\n colDefs.push(\r\n AgGridColumnExt.GET(false, \"text\", \"SOURCE_FILE\", \"Source File\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"NPI_ID\", \"NPI\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"HOSPITAL_NAME\", \"Organization Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n // Remove below line as per PP2-949\r\n //AgGridColumnExt.GET(false, \"text\", \"PECOS_Legal_Business_Name\", \"PECOS Legal Business Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"Street_Address\", \"Street Address\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"PO_Box\", \"PO Box\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"City\", \"City\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"State\", \"State\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"Zip_Code\", \"Zip Code\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET()\r\n );\r\n }\r\n }\r\n return colDefs;\r\n }\r\n}","import React from \"react\";\r\nimport { Formik } from \"formik\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport { Button, Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, Grid, TextField, Box, FormControl, FormLabel, FormControlLabel, RadioGroup, Radio } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../../../shared/store/authProvider\";\r\nimport { ResultStatus, PROFILE_CATEGORY } from \"../../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../../shared/services/theme/matIconService\";\r\nimport ReferenceDataSearchDialogService from \"./referenceDataSearchDialogService\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../../shared/services/ag-grid/agGridUtil\";\r\nimport MatThemeService from \"../../../../../shared/services/theme/matThemeService\";\r\nimport ToastService from \"../../../../../shared/services/toastService\";\r\nimport { AgGridColumnExt } from \"../../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nclass ReferenceDataSearchDialogComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n getCurrentOrLastYear() {\r\n const today = new Date();\r\n const currentYear = today.getFullYear();\r\n const mayFirst = new Date(`${currentYear}-05-01`);\r\n return today < mayFirst ? currentYear - 1 : currentYear;\r\n }\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n isIndividualProfileCategory: this.props.selectedProfileCategory === PROFILE_CATEGORY.ORGANIZATION ? false : true,\r\n errorMessage: null,\r\n\r\n \r\n vplAndNppl: {\r\n firstName: this.props.selectedProfile.firstname,\r\n middleName: this.props.selectedProfile.middlename,\r\n lastName: this.props.selectedProfile.lastname,\r\n suffix: this.props.selectedProfile.suffix,\r\n npi: this.props.selectedProfile.usnpinumber,\r\n licenseState: this.props.selectedProfile.uslicensestate,\r\n licenseNumber: this.props.selectedProfile.usstatelicensenumber\r\n },\r\n \r\n teachingHospital: {\r\n //year: new Date().getFullYear(),\r\n year: this.getCurrentOrLastYear(),\r\n organizationName: this.props.selectedProfile.organizationname,\r\n tin: this.props.selectedProfile.ustaxidnumber, \r\n city : this.props.selectedProfile.addresslist.length>0 ? (this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift() )!=undefined?this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift().city:[]:[],\r\n state: this.props.selectedProfile.addresslist.length>0 ? (this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift() )!=undefined?this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift().province:[]:[],\r\n },\r\n individual: {\r\n firstName: this.props.selectedProfile.firstname,\r\n middleName: this.props.selectedProfile.middlename,\r\n lastName: this.props.selectedProfile.lastname,\r\n suffix: this.props.selectedProfile.suffix,\r\n npi: this.props.selectedProfile.usnpinumber,\r\n licenseState: this.props.selectedProfile.uslicensestate,\r\n licenseNumber: this.props.selectedProfile.usstatelicensenumber\r\n },\r\n organization: {\r\n organizationName: this.props.selectedProfile.organizationname,\r\n npi: this.props.selectedProfile.usnpinumber,\r\n city : this.props.selectedProfile.addresslist.length>0 ? (this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift() )!=undefined?this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift().city:[]:[],\r\n state: this.props.selectedProfile.addresslist.length>0 ? (this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift() )!=undefined?this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift().province:[]:[],\r\n },\r\n referenceDataList: [],\r\n selectedReferenceData: null,\r\n showSearchResults: false,\r\n selectedPorzioGSTProfileId: this.props.selectedPorzioGSTProfileId,\r\n agGridUtils: new AgGridUtil(\"firstName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n //this.resetFields();\r\n }\r\n\r\n handleGoBack = () => {\r\n this.setState({\r\n searchResult: ResultStatus.NOT_LOADED,\r\n showSearchResults: false,\r\n vplAndNppl: {\r\n firstName: \"\",\r\n middleName: \"\",\r\n lastName: \"\",\r\n suffix: \"\",\r\n npi: \"\",\r\n licenseState: \"\",\r\n licenseNumber: \"\"\r\n },\r\n teachingHospital: {\r\n year: \"\",\r\n organizationName: \"\",\r\n tin: \"\",\r\n city: \"\",\r\n state: \"\"\r\n },\r\n individual: {\r\n firstName: \"\",\r\n middleName: \"\",\r\n lastName: \"\",\r\n suffix: \"\",\r\n npi: \"\",\r\n licenseState: \"\",\r\n licenseNumber: \"\"\r\n },\r\n organization: {\r\n organizationName: \"\",\r\n npi: \"\",\r\n city: \"\",\r\n state: \"\"\r\n },\r\n referenceDataList: [],\r\n selectedReferenceData: null, \r\n selectedPorzioGSTProfileId: this.props.selectedPorzioGSTProfileId,\r\n agGridUtils: new AgGridUtil(\"firstName\", {\r\n isSelectedCellRenderer: AgGridRadioButtonCellRendererComponent\r\n }),\r\n });\r\n }\r\n\r\n searchReferenceData = (_formikProps, _isIndividual) => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n //TODO : check if atleast one search value entered\r\n if (true) {\r\n this.setState({\r\n searchResult: ResultStatus.LOADING,\r\n });\r\n this.apiSubscriptions.add(\r\n ReferenceDataSearchDialogService.searchReferenceData(this.context.user.tenantId, _isIndividual, _formikProps, this.props.isNppes).subscribe(\r\n (_referenceDataList) => {\r\n if (DataService.hasElements(_referenceDataList)) {\r\n _referenceDataList.forEach(x => { x.isSelected = false; });\r\n }\r\n this.setState({\r\n showSearchResults: true,\r\n //searchResult: ResultStatus.LOADED,\r\n searchResult: DataService.hasElements(_referenceDataList) ? ResultStatus.SUCCESS : ResultStatus.LOADED,//-> no records\r\n referenceDataList: _referenceDataList\r\n });\r\n },\r\n (err) => { this.setState({ searchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n } else {\r\n this.setState({ searchResult: ResultStatus.NOT_LOADED });\r\n }\r\n return [];\r\n }\r\n\r\n getInitialValues(isIndividual, isNppes) {\r\n if (!isNppes) {\r\n if (isIndividual) {\r\n return this.state.vplAndNppl;\r\n } else {\r\n return this.state.teachingHospital;\r\n }\r\n } else {\r\n if (isIndividual) {\r\n return this.state.individual;\r\n } else {\r\n return this.state.organization;\r\n }\r\n }\r\n }\r\n\r\n handleSubmit = (_isIndividualProfileCategory, _isNppes) => {\r\n let selectedData = this.state.selectedReferenceData;\r\n this.resetFields(() => {\r\n this.props.onSubmitClick(_isIndividualProfileCategory, selectedData, _isNppes);\r\n })\r\n }\r\n\r\n onClose = (_reloadRequired) => {\r\n this.resetFields(() => this.props.onClose(_reloadRequired));\r\n }\r\n\r\n resetFields(_callback) {\r\n //var activeaddr = this.props.selectedProfile.addresslist.length>0?this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}):[];\r\n this.setState({\r\n referenceDataList: [],\r\n selectedReferenceData: null,\r\n errorMessage: null,\r\n searchResult: ResultStatus.NOT_LOADED,\r\n showSearchResults: false,\r\n vplAndNppl: {\r\n firstName: this.props.selectedProfile.firstname,\r\n middleName: this.props.selectedProfile.middlename,\r\n lastName: this.props.selectedProfile.lastname,\r\n suffix: this.props.selectedProfile.suffix,\r\n npi: this.props.selectedProfile.usnpinumber,\r\n licenseState: this.props.selectedProfile.uslicensestate,\r\n licenseNumber: this.props.selectedProfile.usstatelicensenumber\r\n },\r\n teachingHospital: {\r\n // year: new Date().getFullYear(),\r\n year: this.getCurrentOrLastYear(),\r\n organizationName: this.props.selectedProfile.organizationname,\r\n tin: this.props.selectedProfile.ustaxidnumber,\r\n city : this.props.selectedProfile.addresslist.length>0 ? (this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift() )!=undefined?this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift().city:[]:[],\r\n state: this.props.selectedProfile.addresslist.length>0 ? (this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift() )!=undefined?this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift().province:[]:[],\r\n },\r\n individual: {\r\n firstName: this.props.selectedProfile.firstname,\r\n middleName: this.props.selectedProfile.middlename,\r\n lastName: this.props.selectedProfile.lastname,\r\n suffix: this.props.selectedProfile.suffix,\r\n npi: this.props.selectedProfile.usnpinumber,\r\n licenseState: this.props.selectedProfile.uslicensestate,\r\n licenseNumber: this.props.selectedProfile.usstatelicensenumber\r\n },\r\n organization: {\r\n organizationName: this.props.selectedProfile.organizationname,\r\n npi: this.props.selectedProfile.usnpinumber,\r\n city : this.props.selectedProfile.addresslist.length>0 ? (this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift() )!=undefined?this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift().city:[]:[],\r\n state: this.props.selectedProfile.addresslist.length>0 ? (this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift() )!=undefined?this.props.selectedProfile.addresslist.filter(function (address){ return address.isactive === true}).shift().province:[]:[],\r\n },\r\n }, _callback);\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n //Reevaluating 'isIndividualProfileCategory' here and not taking it from state \r\n //as render function is being called after the Main profile tab is loaded and so state's property is not updated\r\n const profileCategory = DataService.hasElements(this.props.profileCategoryList) ? this.props.profileCategoryList.find(p => p.lovId == this.props.selectedProfile?.profilecategoryid)?.lovKey : \"\";\r\n let isIndividualProfileCategory = profileCategory === PROFILE_CATEGORY.ORGANIZATION ? false : true;\r\n\r\n return (\r\n { this.onClose(false) }}\r\n style={{ maxHeight: \"100vh\", }}>\r\n \r\n {(fProps) => (\r\n
\r\n \r\n \r\n \r\n {this.state.showSearchResults === true ?\r\n \r\n {LayoutService.getIconButton(!this.state.showSearchResults, MatIconService.BACK, \"Go Back\", () => {\r\n this.handleGoBack()\r\n }, \"inherit\")}\r\n \r\n : <>}\r\n Reference Data Search\r\n {LayoutService.getIconButton(!this.state.selectedReferenceData, MatIconService.OK, \"OK\", () => {\r\n this.handleSubmit(isIndividualProfileCategory, this.props.isNppes)\r\n }, \"inherit\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Discard Changes\", () => { this.onClose(false); }, \"inherit\")}\r\n \r\n \r\n \r\n \r\n \r\n {this.renderContent(classes, isIndividualProfileCategory, fProps)}\r\n \r\n \r\n
\r\n )}\r\n
\r\n
\r\n );\r\n }\r\n\r\n renderContent = (classes, isIndividualProfileCategory, fProps) => {\r\n switch (this.state.searchResult) {\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.NOT_LOADED:\r\n return (\r\n {isIndividualProfileCategory ?\r\n //VPL and NPPL\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n !this.props.isNppes ?\r\n //Teaching Hospital\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n :\r\n //Teaching Hospital\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n \r\n \r\n \r\n );\r\n case ResultStatus.LOADED:\r\n return ;\r\n case ResultStatus.SUCCESS:\r\n return (
\r\n {\r\n this.setState({ selectedReferenceData: _data });\r\n }, this.props.isNppes)}\r\n pagination={true}\r\n paginationPageSize={50}\r\n suppressClickEdit={true}\r\n frameworkComponents={this.state.agGridUtils.frameworkComponents}\r\n onGridReady={(params) => {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n }}\r\n gridOptions={{\r\n context: { componentParent: this },\r\n suppressContextMenu: true,\r\n rowHeight: 32,\r\n ...AgGridColumnExt.getGridOptions(56)\r\n }}\r\n >\r\n \r\n
);\r\n case ResultStatus.ERROR:\r\n return ( { this.searchReferenceData(this.state.lastSearchedValue); }} />);\r\n default: return <>;\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(ReferenceDataSearchDialogComponent);","import React, { Component } from \"react\";\r\nimport icon_active from \"../../../public/images/icon_active.png\";\r\nimport icon_inactive from \"../../../public/images/icon_inactive.png\";\r\n\r\nexport default class IsActiveIconRendererComponent extends Component {\r\n\r\n render() {\r\n let active = null;\r\n if (this.props.value) {\r\n active = (\r\n \"acive-icon\"/\r\n );\r\n } else {\r\n active = (\r\n \"inactive-icon\"\r\n );\r\n }\r\n return active;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Dialog, AppBar, Toolbar, DialogContentText, withStyles, DialogTitle, DialogContent, Box, Divider, Typography, Grid } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport { combineLatest, of, ReplaySubject } from \"rxjs\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { CrudAction, ResultStatus, PROFILE_CATEGORY } from \"../../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport ReferenceDataService from \"./referenceDataService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ReferenceDataSearchDialogComponent from \"./reference-data-search-dialog/referenceDataSearchDialogComponent\";\r\nimport ProfileDetailCellRendererComponent from \"../../profile-detail/profileDetailCellRendererComponent\";\r\nimport IsActiveIconRendererComponent from \"../../../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport ProfileDetailDialogComponent from \"../../profile-detail/profileDetailDialogComponent\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { AgGridErroredCheckboxCellRenderer } from \"../../../../shared/components/ag-grid/error-cell-renderers/agGridErroredCheckboxCellRenderer\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport RolePermissionInfo from \"../../../../shared/role-permissions/rolePermissionInfo\";\r\nimport { Refresh } from \"@material-ui/icons\";\r\n\r\nclass ReferenceDataComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n refDataToDelete = [];// this will store saved/unsaved deleted reference data\r\n nppesDataToDelete = [];\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n nppesData: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n selectedPorzioGSTProfileId: this.props.modalAgNode.porziogstprofileid,\r\n showSearchReferenceDataDialog: false,\r\n selectedProfiles: [],\r\n selectedProfilesNppes: [],\r\n updatedRefData: [],\r\n updatedNppesRefData: [],\r\n nppesAction: false,\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"porziogstprofileid\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n erroredCheckboxCellRenderer: AgGridErroredCheckboxCellRenderer,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent\r\n }),\r\n agGridBulkEditUtilNppes: new AgGridBulkEditUtil(),\r\n agGridUtilsNppes: new AgGridUtil(\"porziogstprofileid\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n erroredCheckboxCellRenderer: AgGridErroredCheckboxCellRenderer,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent\r\n }),\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.state.isEditing) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n ReferenceDataService.getMatchedReferenceDataForProfile(this.context.user.tenantId, this.props.modalAgNode.prid),\r\n LookupService.getProfileCategoriesAsOBS(this.context)])\r\n .subscribe(\r\n // success\r\n ([_data, _profileCategoryList]) => {\r\n let convertedData = DataService.convertToLowerCasedKeyObject(_data[0]);\r\n let convertedNppesData = DataService.convertToLowerCasedKeyObject(_data[1]);\r\n this.setState({\r\n data: DataService.hasElements(convertedData) ? convertedData : [],\r\n nppesData: DataService.hasElements(convertedNppesData) ? convertedNppesData : [],\r\n profileCategoryList : _profileCategoryList,\r\n selectedProfileCategory: DataService.hasElements(_profileCategoryList) ? _profileCategoryList.find(p => p.lovId == this.props.selectedProfile?.profilecategoryid)?.lovKey : \"\"\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n });\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n\r\n updateGrid = (selectedReferenceData) => {\r\n let updatedRefData = this.state.updatedRefData;\r\n let newObj = {};\r\n if (this.state.selectedProfileCategory === PROFILE_CATEGORY.ORGANIZATION) {\r\n newObj = {\r\n isactive: null,\r\n porziogstprofileid: this.props.modalAgNode.porziogstprofileid,\r\n source_file: selectedReferenceData.SOURCE_FILE,\r\n th_year: selectedReferenceData.TH_YEAR,\r\n tin: selectedReferenceData.TIN,\r\n organization_name: selectedReferenceData.HOSPITAL_NAME,\r\n street_address: selectedReferenceData.Street_Address,\r\n city: selectedReferenceData.City,\r\n state: selectedReferenceData.State,\r\n match_date: selectedReferenceData.match_date\r\n };\r\n } else {\r\n newObj = {\r\n isactive: null,\r\n porziogstprofileid: this.props.modalAgNode.porziogstprofileid,\r\n npinumber: selectedReferenceData.NPI_ID,\r\n source_file: selectedReferenceData.SOURCE_FILE,\r\n firstname: selectedReferenceData.FIRST_NAME,\r\n middlename: selectedReferenceData.MIDDLE_NAME,\r\n lastname: selectedReferenceData.LAST_NAME,\r\n suffix: selectedReferenceData.SUFFIX,\r\n prmry_txnmy_code: selectedReferenceData.PRMRY_TXNMY_CODE,\r\n prmry_txnmy_prvdr_type: selectedReferenceData.PRMRY_TXNMY_PRVDR_TYPE,\r\n statelicense: selectedReferenceData.STATE_1,\r\n statelicensenum: selectedReferenceData.LICENSE_1,\r\n match_date: selectedReferenceData.match_date\r\n };\r\n }\r\n this.state.agGridUtils.addNewRow(newObj);\r\n updatedRefData.push(newObj);\r\n\r\n this.setState({\r\n updatedRefData: updatedRefData\r\n });\r\n }\r\n\r\n updateNppesGrid = (selectedReferenceData) => {\r\n let updatedNppesRefData = this.state.updatedNppesRefData;\r\n let newObj = {};\r\n if (this.state.selectedProfileCategory === PROFILE_CATEGORY.ORGANIZATION) {\r\n newObj = {\r\n isactive: null,\r\n porziogstprofileid: this.props.modalAgNode.porziogstprofileid,\r\n source_file: selectedReferenceData.SOURCE_FILE,\r\n th_year: selectedReferenceData.TH_YEAR,\r\n npiid: selectedReferenceData.NPI_ID,\r\n organization_name: selectedReferenceData.HOSPITAL_NAME,\r\n street_address: selectedReferenceData.Street_Address,\r\n city: selectedReferenceData.City,\r\n state: selectedReferenceData.State,\r\n match_date: selectedReferenceData.match_date,\r\n PO_BOX: selectedReferenceData.Zip_Code,\r\n country: selectedReferenceData.Provider_Business_Practice_Location_Address_Country_Code_If_outside_US\r\n };\r\n } else {\r\n newObj = {\r\n isactive: null,\r\n porziogstprofileid: this.props.modalAgNode.porziogstprofileid,\r\n npinumber: selectedReferenceData.NPI_ID,\r\n source_file: selectedReferenceData.SOURCE_FILE,\r\n firstname: selectedReferenceData.FIRST_NAME,\r\n middlename: selectedReferenceData.MIDDLE_NAME,\r\n lastname: selectedReferenceData.LAST_NAME,\r\n suffix: selectedReferenceData.SUFFIX,\r\n prmry_txnmy_code: selectedReferenceData.PRMRY_TXNMY_CODE,\r\n prmry_txnmy_prvdr_type: selectedReferenceData.PRMRY_TXNMY_PRVDR_TYPE,\r\n statelicense: selectedReferenceData.STATE_1,\r\n statelicensenum: selectedReferenceData.LICENSE_1,\r\n match_date: selectedReferenceData.match_date,\r\n state_2: selectedReferenceData.Provider_License_Number_State_Code_2,\r\n state_3: selectedReferenceData.Provider_License_Number_State_Code_3,\r\n state_4: selectedReferenceData.Provider_License_Number_State_Code_4,\r\n state_5: selectedReferenceData.Provider_License_Number_State_Code_5,\r\n license_2: selectedReferenceData.Provider_License_Number_2,\r\n license_3: selectedReferenceData.Provider_License_Number_3,\r\n license_4: selectedReferenceData.Provider_License_Number_4,\r\n license_5: selectedReferenceData.Provider_License_Number_5,\r\n credentials: selectedReferenceData.Provider_Credential_Text,\r\n street_address: selectedReferenceData.Provider_First_Line_Business_Practice_Location_Address,\r\n city: selectedReferenceData.Provider_Business_Practice_Location_Address_City_Name,\r\n po_box: selectedReferenceData.Provider_Business_Practice_Location_Address_Postal_Code,\r\n country: selectedReferenceData.Provider_Business_Practice_Location_Address_Country_Code_If_outside_US,\r\n state: selectedReferenceData.state,\r\n };\r\n }\r\n this.state.agGridUtilsNppes.addNewRow(newObj);\r\n updatedNppesRefData.push(newObj);\r\n\r\n this.setState({\r\n updatedNppesRefData: updatedNppesRefData\r\n });\r\n }\r\n\r\n handleSubmitClick = (_isIndividualProfileCategory, selectedReferenceData, _isNppes) => {\r\n this.setState({\r\n showSearchReferenceDataDialog: false,\r\n isIndividualProfileCategory: _isIndividualProfileCategory,\r\n //updatedData: _selectedReferenceData\r\n }, () => {\r\n !_isNppes ? this.updateGrid(selectedReferenceData) : this.updateNppesGrid(selectedReferenceData);\r\n });\r\n }\r\n\r\n handleSearchClick = (_isNppes = false) => {\r\n this.setState({ showSearchReferenceDataDialog: true, isNppes: _isNppes });\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {//TODO : need to check if unsaved\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n this.setState({ searchResult: ResultStatus.SAVING });\r\n let oReturnSubject = new ReplaySubject();\r\n\r\n //Delete ref data\r\n let isDeleted = true;\r\n if (DataService.hasElements(this.refDataToDelete)) {\r\n for (let data of this.refDataToDelete) {\r\n if (data.isactive) {\r\n ReferenceDataService.deleteMatchedProfile(this.context.user.tenantId, data.porziogstprofileid)\r\n .subscribe(\r\n (_successResult) => {\r\n isDeleted = isDeleted && _successResult;\r\n Refresh = this.fetchData();\r\n },\r\n (_errorResult) => {\r\n console.error(_errorResult);\r\n }\r\n );\r\n }\r\n }\r\n if (isDeleted) {\r\n oReturnSubject.next(true);\r\n } else {\r\n oReturnSubject.next(\"delete_error\");\r\n }\r\n }\r\n\r\n //Delete nppes data\r\n let isDeletedNppes = true;\r\n if (DataService.hasElements(this.nppesDataToDelete)) {\r\n for (let data of this.nppesDataToDelete) {\r\n if (data.isactive) {\r\n ReferenceDataService.deleteMatchedProfileNppes(this.context.user.tenantId, data.porziogstprofileid)\r\n .subscribe(\r\n (_successResult) => {\r\n isDeletedNppes = isDeletedNppes && _successResult;\r\n },\r\n (_errorResult) => {\r\n console.error(_errorResult);\r\n }\r\n );\r\n }\r\n }\r\n if (isDeletedNppes) {\r\n oReturnSubject.next(true);\r\n } else {\r\n oReturnSubject.next(\"delete_error\");\r\n }\r\n }\r\n\r\n //Save new row data\r\n let isSaved = true;\r\n this.state.updatedRefData.map(s => {\r\n ReferenceDataService.saveReferenceDataManually(this.context.user.tenantId, this.state.isIndividualProfileCategory,\r\n s, this.state.selectedPorzioGSTProfileId)\r\n .subscribe(\r\n (_successResult) => {\r\n isSaved = isSaved && _successResult;\r\n //Refresh = this.fetchData();\r\n },\r\n (_errorResult) => {\r\n console.error(_errorResult);\r\n }\r\n );\r\n if (isSaved) {\r\n ToastService.showSuccess(\"Reference data saved successfully\");\r\n\r\n //Additional step to delete data from Profie_Xreference table only if previous status 'Reviewed'\r\n if (this.props.profileStatus && this.props.profileStatus === 'REVIEWED') {\r\n ReferenceDataService.changeProfileFromReviewedToUnmatch(this.context.user.tenantId, this.state.selectedPorzioGSTProfileId)\r\n .subscribe(\r\n (_successResult) => {\r\n console.log(_successResult);\r\n },\r\n (_errorResult) => {\r\n console.log(_errorResult);\r\n }\r\n )\r\n }\r\n oReturnSubject.next(true);\r\n } else {\r\n ToastService.showError(\"Error occured while saving\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n });\r\n\r\n //Save new nppes data\r\n let isNppesSaved = true;\r\n this.state.updatedNppesRefData.map(s => {\r\n ReferenceDataService.saveNppesReferenceDataManually(this.context.user.tenantId, this.state.isIndividualProfileCategory,\r\n s, this.state.selectedPorzioGSTProfileId)\r\n .subscribe(\r\n (_successResult) => {\r\n isNppesSaved = isNppesSaved && _successResult;\r\n // Refresh = this.fetchData();\r\n },\r\n (_errorResult) => {\r\n console.error(_errorResult);\r\n }\r\n );\r\n if (isNppesSaved) {\r\n ToastService.showSuccess(\"Reference data saved successfully\");\r\n\r\n //Additional step to delete data from Profie_Xreference table only if previous status 'Reviewed'\r\n if (this.props.profileStatus && this.props.profileStatus === 'REVIEWED') {\r\n ReferenceDataService.changeProfileFromReviewedToUnmatch(this.context.user.tenantId, this.state.selectedPorzioGSTProfileId)\r\n .subscribe(\r\n (_successResult) => {\r\n console.log(_successResult);\r\n },\r\n (_errorResult) => {\r\n console.log(_errorResult);\r\n }\r\n )\r\n }\r\n oReturnSubject.next(true);\r\n\r\n } else {\r\n ToastService.showError(\"Error occured while saving\");\r\n oReturnSubject.next(\"save_error\");\r\n }\r\n });\r\n return oReturnSubject.asObservable();\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node, showProfileDetailDialog: true, inputAction: CrudAction.UPDATE });\r\n }\r\n\r\n handleDeleteClick = (_isNppes) => {\r\n this.setState({\r\n openDeleteConfirm: true,\r\n nppesAction: _isNppes\r\n });\r\n }\r\n\r\n handleDeleteConfirm = (_isNppes) => {\r\n this.setState({ openDeleteConfirm: false, selectedProfiles: [] });\r\n if (!this.state.nppesAction) {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n this.refDataToDelete.push(rowNode.data);\r\n this.state.agGridUtils.gridApi.applyTransaction({ remove: [rowNode.data] });\r\n }\r\n });\r\n } else {\r\n this.state.agGridUtilsNppes.gridApi.forEachNode((rowNode) => {\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n this.nppesDataToDelete.push(rowNode.data);\r\n this.state.agGridUtilsNppes.gridApi.applyTransaction({ remove: [rowNode.data] });\r\n }\r\n });\r\n }\r\n }\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n let hasSelected = false;\r\n let selectedProfiles = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedProfiles.push(rowNode.data);\r\n }\r\n });\r\n }\r\n\r\n\r\n this.setState({\r\n selectedProfiles: selectedProfiles,\r\n isReadOnly: !hasSelected,\r\n nppesAction: false,\r\n });\r\n }\r\n\r\n toggleSubmitButtonForNppes = (_cellRef, _data) => {\r\n let hasSelected = false;\r\n let selectedProfilesNppes = [];\r\n if (this.state.agGridBulkEditUtilNppes.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtilsNppes.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedProfilesNppes.push(rowNode.data);\r\n }\r\n });\r\n }\r\n this.setState({\r\n selectedProfilesNppes: selectedProfilesNppes,\r\n isReadOnly: !hasSelected,\r\n nppesAction: true\r\n });\r\n }\r\n\r\n isEnabled = (_cellRef, data) => {\r\n console.log(data);\r\n }\r\n\r\n TAB_PERMISSIONS = RolePermissionService.PROFILE_REFERENCE_DATA;\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this;\r\n const componentType = \"Reference Data\";\r\n \r\n if (this.TAB_PERMISSIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n } else {\r\n const cannotDelete = this.TAB_PERMISSIONS.cannotDelete || this.props.isReadOnly || this.state.selectedProfiles.length === 0;\r\n const cannotDeleteNppes = this.TAB_PERMISSIONS.cannotDelete || this.props.isReadOnly || this.state.selectedProfilesNppes.length === 0;\r\n this.state.agGridUtils.setEditingMode(this.props.isReadOnly || this.TAB_PERMISSIONS.cannotEdit);\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n \r\n {LayoutService.getIconButton(cannotDelete, cannotDelete ? MatIconService.DELETE : MatIconService.DELETE_RED, \"Delete\", () => {\r\n this.handleDeleteClick(false)\r\n }, \"inherit\")}\r\n {LayoutService.getIconButton(this.props.isReadOnly || this.TAB_PERMISSIONS.cannotCreate, MatIconService.ADD_CIRCLE_OUTLINE, \"Add\", () => {\r\n this.handleSearchClick(false)\r\n }, \"inherit\")}\r\n \r\n
\r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n this.state.agGridUtils.pinColumn(AgGridBulkEditUtil.selectColumnName); // pin the edit column to the left\r\n }}\r\n />\r\n
\r\n \r\n \r\n {LayoutService.getIconButton(cannotDeleteNppes, cannotDeleteNppes ? MatIconService.DELETE : MatIconService.DELETE_RED, \"Delete\", () => {\r\n this.handleDeleteClick(true)\r\n }, \"inherit\")}\r\n {LayoutService.getIconButton(this.props.isReadOnly || this.TAB_PERMISSIONS.cannotCreate, MatIconService.ADD_CIRCLE_OUTLINE, \"Add\", () => {\r\n this.handleSearchClick(true)\r\n }, \"inherit\")}\r\n \r\n
\r\n {\r\n this.state.agGridUtilsNppes.setGridParams(params, true);\r\n this.state.agGridUtilsNppes.pinColumn(AgGridBulkEditUtil.selectColumnName); // pin the edit column to the left\r\n }}\r\n />\r\n
\r\n
\r\n
\r\n \r\n
\r\n {\r\n this.setState({ showSearchReferenceDataDialog: false });\r\n if (_reloadRequired) {\r\n this.fetchData();\r\n }\r\n }}\r\n isNppes={this.state.isNppes}\r\n selectedProfile={this.props.selectedProfile}\r\n selectedProfileCategory={this.state.selectedProfileCategory}\r\n selectedPorzioGSTProfileId={this.state.selectedPorzioGSTProfileId}\r\n profileCategoryList={LookupService._PROFILE_CATEGORIES}\r\n onSubmitClick={(_isIndividualProfileCategory, _selectedReferenceData, _isNppes) => {\r\n this.handleSubmitClick(_isIndividualProfileCategory, _selectedReferenceData, _isNppes);\r\n }}\r\n />\r\n {/* Show Profile-Detail Dialog */}\r\n {\r\n this.setState({ showProfileDetailDialog: false });\r\n this.fetchData(true);\r\n }} />\r\n
\r\n\r\n {/* Delete dialog */}\r\n {this.state.openDeleteConfirm ?\r\n this.setState({ openDeleteConfirm: false })} aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\">\r\n \r\n \r\n \r\n Delete Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete\", this.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => this.setState({ openDeleteConfirm: false }), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to delete the selected reference data for Profile\r\n \r\n \r\n {this.state.selectedPorzioGSTProfileId}?\r\n \r\n \r\n \r\n \r\n \r\n \r\n : <>}\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(ReferenceDataComponent);\r\n","import React from \"react\";\r\nimport { AppBar, Box, Dialog, DialogContent, DialogTitle, Divider, IconButton, LinearProgress, Tab, Tabs, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport ProfileTransactionComponent from \"./profile-transaction/profileTransactionComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport TaskDetailsComponent from \"../../home/task/task-details/taskDetailsComponent\";\r\nimport ProfileTabComponent from \"./tabs/profileTabComponent\";\r\nimport RuleSummaryComponent from \"./rule-summary/ruleSummaryComponent\";\r\nimport AgreementsComponent from \"../../../shared/components/agreements/agreementsComponent\";\r\nimport ProfileConsentComponent from \"./consent/profileConsentComponent\";\r\nimport LinkedProfilesComponent from \"./linked-profiles/linkedProfilesComponent\";\r\nimport IdentifierComponent from \"./identifiers/identifierComponent\";\r\nimport DocumentsComponent from \"./documents/documentsComponent\";\r\nimport ReferenceDataComponent from \"./reference-data/referenceDataComponent\";\r\nimport { CrudAction, TaskLauncher, ENTITY_TYPE, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport ActionDialog from \"../../../shared/components/dialog/actionDialog\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport PossibleMatchesDialogComponent from \"../../../shared/components/possible-matches/possibleMatchesDialogComponent\";\r\nimport MatThemeService from \"../../../shared/services/theme/matThemeService\";\r\nimport LinkedProfilesService from \"./linked-profiles/linkedProfilesService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport RolePermissionInfo from \"../../../shared/role-permissions/rolePermissionInfo\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\n\r\nclass ProfileDetailDialogComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.tabIndexMap = new Map();\r\n this.tabIndexMap.set(0, { ref: null });\r\n this.tabIndexMap.set(1, { ref: null });\r\n this.tabIndexMap.set(2, { ref: null });\r\n this.tabIndexMap.set(3, { ref: null });\r\n this.tabIndexMap.set(4, { ref: null });\r\n this.tabIndexMap.set(5, { ref: null });\r\n this.tabIndexMap.set(6, { ref: null });\r\n this.tabIndexMap.set(7, { ref: null });\r\n\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isNew: this.props.inputAction === CrudAction.CREATE,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n\r\n isDialog: this.props.standAloneProps ? false : true,\r\n derivedProps: this.props.standAloneProps ? this.props.standAloneProps : { fullWidth: true, maxWidth: \"lg\" },\r\n\r\n selectedTabIndex: 0,\r\n showTaskDialog: false,\r\n showPossibleMatchesDialog: false,\r\n profileTabLoaded: false,\r\n selectedProfile: null,\r\n showPossibleMatchesIcon: false,\r\n\r\n parentProfile: \"\",\r\n selectedPossibleMatchProfile: \"\"\r\n };\r\n }\r\n\r\n onClose = (_param) => {\r\n this.setState({ isReadOnly: true, selectedProfile: null }, () => {\r\n this.props.onClose(_param);\r\n });\r\n }\r\n\r\n setReadOnlyMode = (_value) => {\r\n this.setState({\r\n isReadOnly: _value // on tab change make it readonly\r\n });\r\n }\r\n\r\n _changeTab = (_newTabIndex) => {\r\n this.setState({\r\n selectedTabIndex: _newTabIndex,\r\n isReadOnly: true // on tab change make it readonly\r\n });\r\n }\r\n _changeToReadOnlyMode = () => {\r\n this.setState({ isReadOnly: true });\r\n }\r\n\r\n returnToProfileCenter = () => {\r\n this.setState({ isReadOnly: true }, () => {\r\n this.props.closeParentCallback();\r\n });\r\n\r\n }\r\n\r\n onTabChange = (event, _newTabIndex) => {\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n if (currentTabRef) {\r\n if (currentTabRef.isDirtyCallback()) {\r\n this.setState({ showConfirmDialog: true, newTabIndex: _newTabIndex });\r\n } else {\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(_newTabIndex);\r\n });\r\n }\r\n } else {\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(_newTabIndex);\r\n });\r\n }\r\n };\r\n\r\n onSave = () => {\r\n this.oSubscriptions.cancelAll();\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n\r\n if (currentTabRef.postCallbackOBS) {\r\n this.setState({ isSaving: true });\r\n this.oSubscriptions.add(currentTabRef.postCallbackOBS().subscribe(\r\n (_successResult) => {\r\n this.setState({ isSaving: false, saveErrorInfo: null });\r\n if (_successResult === \"validation_error\") {\r\n this.flashError(\"Validation Failed\");\r\n } else if (_successResult === \"save_error\") {\r\n this.flashError(\"Save Failed\");\r\n } else if (_successResult === \"duplicate_error\") {\r\n //this.flashError(\"Profile with this Company Profile ID already exists\");\r\n this.setState({ isReadOnly: false, saveErrorInfo: \"Profile with this Company Profile ID already exists\" });\r\n } else {\r\n if (this.state.isNew) {\r\n this.onClose(_successResult); // close this and pass the successResult to the caller\r\n } else {\r\n // stay on the same screen as per PP2-871\r\n }\r\n currentTabRef.resetCallback(true);\r\n }\r\n },\r\n (_error) => {\r\n this.flashError(\"Error Occured while Saving\");\r\n }\r\n ));\r\n }\r\n this._changeToReadOnlyMode();\r\n }\r\n\r\n linkSelectedProfile = (_selectedProfile) => {\r\n this.setState({ isSaving: true });\r\n this.oSubscriptions.add(\r\n LinkedProfilesService.getLinkedProfilesAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode, this.state.parentProfile, this.state.selectedPossibleMatchProfile)\r\n .subscribe(\r\n (_linkedProfilesSet) => {\r\n this.saveForPossibleMatches(_linkedProfilesSet);\r\n this.markAsPermenant();\r\n }, (_errorResult) => {\r\n this.setState({ isSaving: false });\r\n ToastService.showError(\"Save Failed\");\r\n this.flashError(\"Error Occured while Saving\");\r\n }\r\n )\r\n );\r\n }\r\n\r\n saveForPossibleMatches = (_linkedProfilesSet) => {\r\n let t = this;\r\n let profileJson = _linkedProfilesSet.map(function (entry) {\r\n entry.RECORDID = t.props.modalAgNode.recordid;\r\n return entry;\r\n });\r\n\r\n const stringifiedJson = DataService.addEscapeCharactersToJsonString(profileJson);\r\n return this.oSubscriptions.add(\r\n ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n `/Profiles/SaveLinkedProfiles?prid=${this.state.parentProfile}&tenantId=${this.context.user.tenantId}&userId=${this.context.user.userId}`,\r\n stringifiedJson\r\n ).subscribe(\r\n (_successResult) => {\r\n this.setState({ isSaving: false });\r\n ToastService.showSuccess(\"Saved Successfully\");\r\n this.returnToProfileCenter();\r\n }, (_errorResult) => {\r\n this.setState({ isSaving: false });\r\n ToastService.showError(\"Save Failed\");\r\n this.flashError(\"Error Occured while Saving\");\r\n }\r\n )\r\n );\r\n }\r\n\r\n markAsPermenant = () => {\r\n this.setState({ isSaving: true, showPossibleMatchesDialog: false });\r\n this.oSubscriptions.add(\r\n ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n `/Profiles/UpdateProfileStatus/${this.context.user.tenantId}/${this.props.modalAgNode.prid}?userId=${this.context.user.userId}`)\r\n .subscribe(\r\n (_successResult) => {\r\n this.setState({ isSaving: false, isReadOnly: true });\r\n ToastService.showSuccess(\"Saved Successfully\");\r\n }, (_errorResult) => {\r\n this.setState({ isSaving: false });\r\n ToastService.showError(\"Save Failed\");\r\n this.flashError(\"Error Occured while Saving\");\r\n }\r\n )\r\n );\r\n }\r\n\r\n flashError = (_error) => {\r\n console.log(\"Error while Saving\", _error);\r\n this.setState({ isSaving: false, saveErrorInfo: _error }, () => {\r\n setTimeout(() => { this.setState({ saveErrorInfo: null }); }, 5000);\r\n });\r\n }\r\n\r\n handleProfileTabLoaded = (_selectedProfile) => {\r\n this.setState({\r\n profileTabLoaded: true,\r\n selectedProfile: _selectedProfile,\r\n showPossibleMatchesIcon: this.props.inputAction === CrudAction.UPDATE && _selectedProfile?.isrecipientmatch === false\r\n });\r\n }\r\n\r\n getUnmatchedProfileObj = (_selectedProfile) => {\r\n // this.state.selectedProfile\r\n // const profileType = ProfileTabService.recipinetProfileTypeLovOptions.find(x => x.lovId === this.fPropsDynamic.values[\"profiletypeid\"]);\r\n // const recipientIdentifierType = ProfileTabService.recipinetIdentifierTypeLovOptions.find(x => x.lovId === this.fPropsDynamic.values[\"recipientidentifiertypeid\"]);\r\n\r\n // object for PossibleMatchesDialogService->getAsMatchCenterRow()\r\n if (DataService.isNullOrUndefined(_selectedProfile)) {\r\n return {};\r\n } else {\r\n let primaryAddr = _selectedProfile.addresslist.find(x => x.isprimary);\r\n const countryObj = LookupService._COUNTRIES.find(c => c.id === primaryAddr?.countryId);\r\n let identifierInfo = DataService.hasElements(_selectedProfile.identifierlist) ?\r\n _selectedProfile.identifierlist.reduce((p, c) => (+p.profileIdentifierId > +c.profileIdentifierId) ? p : c) : [];\r\n\r\n return {\r\n \"companyProfileId\": DataService.getStringOrDefault(_selectedProfile.companyprofileid),\r\n \"porziogstprofileid\": DataService.getStringOrDefault(_selectedProfile.porziogstprofileid),\r\n \"prid\": DataService.getStringOrDefault(_selectedProfile.profileid),\r\n \"matchScore\": \"\",\r\n \"matchKey\": \"\",\r\n \"profileType\": DataService.getStringOrDefault(_selectedProfile.profiletype),\r\n \"lastName\": DataService.getStringOrDefault(_selectedProfile.lastname),\r\n \"firstName\": DataService.getStringOrDefault(_selectedProfile.firstname),\r\n \"middleName\": DataService.getStringOrDefault(_selectedProfile.middlename),\r\n \"usnpinumber\": DataService.getStringOrDefault(_selectedProfile.usnpinumber),\r\n \"uslicensestate\": DataService.getStringOrDefault(_selectedProfile.uslicensestate),\r\n \"usstatelicensenumber\": DataService.getStringOrDefault(_selectedProfile.usstatelicensenumber),\r\n \"usTaxIdNumber\": DataService.getStringOrDefault(_selectedProfile.ustaxidnumber),\r\n \"organizationName\": DataService.getStringOrDefault(_selectedProfile.organizationname),\r\n \"city\": DataService.getStringOrDefault(primaryAddr?.city),\r\n \"province\": DataService.getStringOrDefault(primaryAddr?.province),\r\n \"postalCode\": DataService.getStringOrDefault(primaryAddr?.postalcode),\r\n \"countryName\": DataService.getStringOrDefault(countryObj?.value),\r\n \"profileStatusKey\": DataService.getStringOrDefault(_selectedProfile.profilestatus),\r\n \"porzioGstIdentifierType\": DataService.getStringOrDefault(identifierInfo?.porzioGSTIdentifierType?.localLovKey),\r\n \"identifierValue\": DataService.getStringOrDefault(identifierInfo?.identifierValue),\r\n };\r\n }\r\n\r\n }\r\n\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const TAB_REF = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n const TAB_PERMISSIONS = TAB_REF ? (TAB_REF.TAB_PERMISSIONS ? TAB_REF.TAB_PERMISSIONS : RolePermissionInfo.INIT()) : RolePermissionInfo.INIT();\r\n const ref = document.getElementById('drawer-container');\r\n\r\n return (\r\n <>\r\n {/* tab dialog */}\r\n { this.onClose(false) }}>\r\n\r\n {/* DialogTitle */}\r\n {this.state.isDialog ?\r\n \r\n \r\n \r\n Profile Details\r\n {this.state.showPossibleMatchesIcon && this.state.profileTabLoaded ?\r\n LayoutService.getIconButton(this.props.isReadOnly, MatIconService.IDEA_BULB_32, \"Manual Match Center\", () => {\r\n this.setState({ showPossibleMatchesDialog: true })\r\n })\r\n : <>}\r\n { this.setState({ showTaskDialog: true }); }}>{MatIconService.TASK_ADD}\r\n {LayoutService.getReadOnlyActions(this, (this.props.inputAction === CrudAction.CREATE), () => { this.onClose(false) }, () => { this.onSave(); })}\r\n \r\n \r\n \r\n :\r\n { this.props.onClose(false);this.state.selectedProfile=null; }, title: \"Go back\", iconColor: \"secondary\" },\r\n ]}\r\n rightActions={[\r\n this.state.showPossibleMatchesIcon && this.state.profileTabLoaded ?\r\n {\r\n icon: MatIconService.IDEA_BULB_32, title: \"Manual Match Center\", onClick: () => { this.setState({ showPossibleMatchesDialog: true }); },\r\n isReadOnly: RolePermissionService.PROFILE_DETAILS.cannotEdit\r\n } : null,\r\n {\r\n icon: MatIconService.TASK_ADD, title: \"Create Task\", onClick: () => { this.setState({ showTaskDialog: true }); },\r\n isReadOnly: RolePermissionService.PROFILE_TASK.cannotCreate\r\n },\r\n this.state.isReadOnly ?\r\n { icon: MatIconService.EDIT, title: \"Edit\", onClick: () => { this.setState({ isReadOnly: false }); }, isReadOnly: TAB_PERMISSIONS.cannotCreateOrEdit } :\r\n { icon: MatIconService.OK, title: \"Save\", iconColor: \"primary\", onClick: () => { this.onSave(); }, isReadOnly: TAB_PERMISSIONS.cannotCreateOrEdit },\r\n ]}\r\n />\r\n }\r\n\r\n {this.state.isSaving ? : null}\r\n {this.state.saveErrorInfo ? {this.state.saveErrorInfo} : null}\r\n\r\n {/* DialogContent */}\r\n \r\n\r\n \r\n \r\n \r\n {(this.state.isEditing) ?\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {/* Possible Matches Dialog */}\r\n \r\n {\r\n if (DataService.isNullOrUndefined(_selectedProfile)) {\r\n this.setState({ showPossibleMatchesDialog: false });\r\n }\r\n else {\r\n this.setState({\r\n showPossibleMatchesDialog: false, parentProfile: _selectedProfile[\"parentprid\"] === null ?\r\n _selectedProfile[\"prid\"] + \"\" : _selectedProfile[\"parentprid\"] + \"\",\r\n selectedPossibleMatchProfile: \"\" + _selectedProfile[\"prid\"]\r\n }, () => {\r\n this.linkSelectedProfile(_selectedProfile);\r\n });\r\n }\r\n }}\r\n />\r\n \r\n \r\n : <>}\r\n\r\n\r\n \r\n\r\n {/* taskDialog */}\r\n {\r\n this.state.showTaskDialog ?\r\n { }} updateData={null}\r\n onClose={() => this.setState({ showTaskDialog: false })}\r\n porzioGstIds={this.props.modalAgNode ? [this.props.modalAgNode.porziogstprofileid] : []} />\r\n : null\r\n }\r\n\r\n\r\n {/* discard action dialog */}\r\n {\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n \r\n currentTabRef.resetCallback();\r\n\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(this.state.newTabIndex);\r\n })\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n \r\n );\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(ProfileDetailDialogComponent);","import { AgGridService } from \"../../../shared/services/ag-grid/agGridService\";\r\nimport ApiService from \"../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\"\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class ProfileSearchService {\r\n\r\n static searchOBS = (_tenantId, _searchValue = \"\") => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Profiles/FetchProfilesBySearch/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\",\r\n isAdvance: false\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companyProfileId\", \"Company Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"customerMasterId\", \"Customer Master ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileStatus\", \"Profile Status\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileType\", \"Profile Type\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpinumber\", \"US NPI Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"uslicensestate\", \"US License State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usstatelicensenumber\", \"US License Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usTaxIdNumber\", \"US Tax ID Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"city\", \"City\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"province\", \"Province/State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"country\", \"Country\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { useLocation } from 'react-router-dom'\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Grid, Tooltip, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport AgGridEditButtonCellRendererComponent from \"../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport ProfileDetailCellRendererComponent from \"../../profile-center/profile-detail/profileDetailCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../shared/types/enums\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ProfileDetailDialogComponent from \"../../profile-center/profile-detail/profileDetailDialogComponent\";\r\nimport ProfileSearchService from \"./profileSearchService\";\r\n\r\nclass ProfileSearchResultComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: true,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n if (this.state.isEditing) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n getFileName() {\r\n return `Profiles ${new Date().toDateString()}`;\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ProfileSearchService.searchOBS(this.context.user.tenantId, this.props.searchValue),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n // success\r\n ([_data, _countryList]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data.map(r => ({ ...r, countryName: _countryList.find(c => c.id === r.country)?.value, })) : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node, showProfileDetailDialog: true, inputAction: CrudAction.UPDATE });\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n //this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Profiles\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n \r\n
\r\n {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n \r\n
\r\n
\r\n
\r\n {/* Show Profile-Detail Dialog */}\r\n {\r\n this.setState({ showProfileDetailDialog: false });\r\n }}\r\n profileStatus={this.state.unmatchedChecked ? \"UNMATCHED\" : \"REVIEWED\"}\r\n closeParentCallback={() => {\r\n this.setState({ showProfileDetailDialog: false });\r\n }}\r\n />\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ProfileSearchResultComponent);\r\n","import ApiService from \"../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\"\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class TransactionSearchService {\r\n\r\n static searchOBS = (_tenantId, _searchValue = \"\") => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Transactions/FetchTransactionsSearchValue/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\",\r\n isAdvance: false\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"companyTransactionId\", \"Company Transaction ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstTransactionId\", \"Porzio GST Transaction ID\").minAndDefaultWidth(136).flexWeight(1).headerClass(\"center-text\").centerAlignText().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTProfileId\", \"Porzio GST Profile ID\").minAndDefaultWidth(136).flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"customerMasterId\", \"Customer Master ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"sourceName\", \"Source\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"transactionStatus\", \"Transaction Status\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionDate\", \"Transaction Date\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"country\", \"Country\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"totalAmount\", \"Total Amount\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Typography, Tooltip, Grid, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport AgGridEditButtonCellRendererComponent from \"../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport ChildMessageRendererComponent from \"../../transaction-center/childMessageRendererComponent\";\r\nimport { AgGridUtil } from \"../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../shared/types/enums\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\n// import TransactionDetailDialogComponent from \"../transaction-detail/transactionDetailDialogComponent\";\r\nimport TransactionDetailDialogComponent from \"../../transaction-center/transaction-detail/transactionDetailDialogComponent\";\r\nimport TransactionSearchService from \"./transactionSearchService\";\r\n\r\nclass TransactionSearchResultComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: true,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n if (this.state.isEditing) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n TransactionSearchService.searchOBS(this.context.user.tenantId, this.props.searchValue),\r\n LookupService.getSourceSystemsByEntityAsOBS(this.context.user.tenantId, 2),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n // success\r\n ([_data, _sourceList, _countryList]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data.map(r => ({\r\n ...r,\r\n sourceName: _sourceList.find(s => s.sourceId === r.sourceId)?.sourceName,\r\n countryName: _countryList.find(c => c.id === r.country)?.value,\r\n })) : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n getFileName() {\r\n return `Transactions ${new Date().toDateString()}`;\r\n }\r\n\r\n // // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: { ...node, porziogsttransactionid: node.porzioGstTransactionId, transactionid: node.trid, sourceid: node.sourceId } });\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showTransactionDetailDialog: true });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n //this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Transactions\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n \r\n
\r\n {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n \r\n
\r\n
\r\n
\r\n {this.state.showTransactionDetailDialog ?\r\n { this.setState({ showTransactionDetailDialog: false }); /*this.fetchData(true);*/ }} />\r\n : null}\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(TransactionSearchResultComponent);\r\n","import ApiService from \"../../services/apiService\";\r\nimport { API_ENDPOINT } from \"../../types/enums\";\r\n\r\nexport default class FieldConfigurationService {\r\n\r\n static getDataCenterAvailableFieldsAsOBS = (_tenantId, _fileId, _sourceId, _entityId, _userId,_screenId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/AvailableFields/${_tenantId}/${_fileId}/${_sourceId}/${_entityId}/${_userId}/${_screenId}`\r\n );\r\n };\r\n\r\n static getDataCenterDisplayedFieldsAsOBS = (_tenantId, _sourceId, _entityId, _userId,_screenId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/DisplayedFields/${_tenantId}/${_sourceId}/${_entityId}/${_userId}/${_screenId}`\r\n );\r\n };\r\n\r\n}","import React, { Component } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { AppBar, Box, Button, Checkbox, Dialog, DialogContent, DialogTitle, Grid, IconButton, List, ListItem, ListItemText, ListItemIcon, Paper, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../store/authProvider\";\r\nimport { SubscriptionArray } from \"../../services/dataService\";\r\nimport LayoutService from \"../../services/layoutService\";\r\nimport PageLoadingComponent from \"../page/pageLoadingComponent\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport { ResultStatus, CrudAction } from \"../../types/enums\";\r\nimport DialogErrorFragmentComponent from \"../page/dialogErrorFragmentComponent\";\r\nimport FieldConfigurationService from \"./fieldConfigurationService\";\r\nimport ApiService from \"../../services/apiService\";\r\nimport { API_ENDPOINT } from \"../../types/enums\";\r\nimport ToastService from \"../../services/toastService\";\r\n\r\nclass FieldConfigurationComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n left: [],\r\n right: [],\r\n checked: [],\r\n submitCreateWasClicked: false,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n FieldConfigurationService.getDataCenterAvailableFieldsAsOBS(this.context.user.tenantId, this.props.fileId, this.props.sourceId, this.props.entityId, this.context.user.userId, this.props.screenId),\r\n FieldConfigurationService.getDataCenterDisplayedFieldsAsOBS(this.context.user.tenantId, this.props.sourceId, this.props.entityId, this.context.user.userId, this.props.screenId),\r\n ]).subscribe(([_availableColumns, _displayedColumns,]) => {\r\n this.setState(\r\n {\r\n left: _availableColumns.map(el => ({\r\n id: el.fieldId,\r\n text: el.fieldAliasName,\r\n isRequired: false,\r\n })),\r\n right: _displayedColumns.map(el => ({\r\n id: el.fieldId,\r\n text: el.fieldAliasName,\r\n isRequired: el.isExpViewDefault,\r\n })),\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n not = (a, b) => {\r\n return a.filter((value) => b.indexOf(value) === -1);\r\n }\r\n\r\n intersection = (a, b) => {\r\n return a.filter((value) => b.indexOf(value) !== -1);\r\n }\r\n\r\n handleToggle = (value) => () => {\r\n const currentIndex = this.state.checked.indexOf(value);\r\n const newChecked = [...this.state.checked];\r\n\r\n if (value.isRequired === false) {\r\n if (currentIndex === -1) {\r\n newChecked.push(value);\r\n } else {\r\n newChecked.splice(currentIndex, 1);\r\n }\r\n }\r\n\r\n this.setState({ checked: newChecked }, () => {\r\n console.log(this.state.checked)\r\n });\r\n };\r\n\r\n handleCheckedRight = () => {\r\n this.setState({\r\n right: this.state.right.concat(this.intersection(this.state.checked, this.state.left)),\r\n left: this.not(this.state.left, this.intersection(this.state.checked, this.state.left)),\r\n checked: this.not(this.state.checked, this.intersection(this.state.checked, this.state.left)),\r\n });\r\n };\r\n\r\n handleCheckedLeft = () => {\r\n this.setState({\r\n left: this.state.left.concat(this.intersection(this.state.checked, this.state.right)),\r\n right: this.not(this.state.right, this.intersection(this.state.checked, this.state.right)),\r\n checked: this.not(this.state.checked, this.intersection(this.state.checked, this.state.right)),\r\n });\r\n };\r\n\r\n customList = (items, _classes) => (\r\n // \r\n \r\n \r\n {items.map((el) => {\r\n const labelId = `transfer-list-item-${el.id}-label`;\r\n\r\n return (\r\n \r\n \r\n {\r\n el.isRequired ?\r\n \r\n :\r\n { return chel.id }).indexOf(el.id) !== -1} tabIndex={-1} disableRipple inputProps={{ \"aria-labelledby\": labelId }} />\r\n }\r\n \r\n \r\n \r\n );\r\n\r\n })}\r\n \r\n \r\n \r\n );\r\n\r\n handleSubmit = () => {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n var mappedObj = {\r\n selected: this.state.right.map(x => x.id).toString(),\r\n screenId: this.props.screenId,\r\n sourceId: this.props.sourceId,\r\n userId: this.context.user.userId\r\n }\r\n ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/SaveFields/${this.context.user.tenantId}?entityId=${this.props.entityId}`,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshList(true);\r\n this.props.onClose(false);\r\n } else {\r\n ToastService.showError(\"Error: falsey successResult while saving Calender Event.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n ToastService.showError(\"Error while saving Calender Event.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n \r\n \r\n \r\n Configuration\r\n { this.props.onClose() }}>{MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n\r\n \r\n \r\n \r\n Configuration\r\n { this.setState({ submitCreateWasClicked: true }); this.handleSubmit(); }}>{MatIconService.OK}\r\n { this.props.onClose() }}>{MatIconService.CANCEL}\r\n \r\n \r\n \r\n\r\n \r\n \r\n Available Fields{this.customList(this.state.left, classes)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Displayed Fields{this.customList(this.state.right, classes)}\r\n \r\n \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { console.log(\"Retry Clicked\"); }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(FieldConfigurationComponent);\r\n\r\n","import ApiService from \"../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\"\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class AgreementSearchService {\r\n\r\n static searchOBS = (_tenantId, _searchValue = \"\") => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Agreement/SearchAgreements/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\",\r\n isAdvance: false\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstProfileId\", \"Porzio GST Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstAgreementId\", \"Porzio GST Agreement ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"agreementDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companyAgreementId\", \"Company Agreement ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"sourceName\", \"Source\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"country\", \"Country\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"startDate\", \"Start Date\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"endDate\", \"End Date\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Grid, Tooltip, Toolbar, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport FieldConfigurationComponent from \"../../../shared/components/field-configuration/fieldConfigurationComponent\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport AgreementSearchService from \"./agreementSearchService\";\r\nimport AgreementDetailCellRendererComponent from \"../../../private/agreements/agreementDetailCellRendererComponent\";\r\nimport AgreementDetailDialogComponent from \"../../../private/agreements/agreement-detail/agreementDetailDialogComponent\";\r\n\r\nclass AgreementSearchResultComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n isEditing: true,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n agreementDetailCellRendererComponent: AgreementDetailCellRendererComponent\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n if (this.state.isEditing) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n AgreementSearchService.searchOBS(this.context.user.tenantId, this.props.searchValue),\r\n ]).subscribe(\r\n // success\r\n ([_data]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n getFileName() {\r\n return `Agreements ${new Date().toDateString()}`;\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showAgreementDetailDialog: true, inputAction: CrudAction.UPDATE, modalAgNode: node });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n //this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Agreements\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n \r\n
\r\n {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n \r\n
\r\n
\r\n
\r\n {this.state.showAgreementDetailDialog ?\r\n {\r\n this.setState({ showAgreementDetailDialog: false });\r\n }}\r\n /> : null}\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(AgreementSearchResultComponent);\r\n","import React from \"react\";\r\nimport { AppBar, Box, Dialog, DialogContent, DialogTitle, Divider, LinearProgress, Tab, Tabs, TextField, Toolbar, Typography, Accordion, AccordionSummary, AccordionDetails, Select, Grid, Chip, InputBase, makeStyles, Button, Menu, MenuItem, Paper, FormControl, FormHelperText } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport { CrudAction } from \"../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport ActionDialog from \"../../shared/components/dialog/actionDialog\";\r\nimport ProfileSearchResultComponent from \"./profile-search-result/profileSearchResultComponent\";\r\nimport TransactionSearchResultComponent from \"./transaction-search-result/transactionSearchResultComponent\";\r\nimport AgreementSearchResultComponent from \"./agreement-search-result/agreementSearchResultComponent\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\n\r\nclass GlobalSearchContainerComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n selectedTabIndex: 0\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n onClose = (_reloadRequired = false) => {\r\n this.props.close();\r\n }\r\n\r\n _changeTab = (event, _newTabIndex) => {\r\n this.setState({\r\n selectedTabIndex: _newTabIndex,\r\n isReadOnly: true // on tab change make it readonly\r\n });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n <>\r\n {/* discard action dialog */}\r\n {\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(this.state.newTabIndex);\r\n })\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n\r\n {/* tab dialog */}\r\n {/* DialogTitle */}\r\n \r\n \r\n \r\n \r\n Global Search\r\n {/* {LayoutService.getReadOnlyActions(this, false, () => { this.onClose(false) }, () => { this.onSave(); })} */}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Discard Changes\", () => { this.onClose(false) }, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n {/* DialogContent */}\r\n \r\n \r\n \r\n \r\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 LayoutService.getHocComponenet(GlobalSearchContainerComponent);","import { AgGridService } from \"../../../../shared/services/ag-grid/agGridService\";\r\nimport ApiService from \"../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\"\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class ProfileAdvancedSearchService {\r\n\r\n static searchOBS = (_tenantId, _searchValue = \"\") => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Profiles/FetchProfilesBySearch/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\",\r\n isAdvance: true\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"companyProfileId\", \"Company Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"customerMasterId\", \"Customer Master ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"affiliatedCompany\", \"Affiliated Company\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"sourceName\", \"Source\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileStatus\", \"Profile Status\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileCategory\", \"Profile Category\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileType\", \"Profile Type\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"credentials\", \"Credentials\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpinumber\", \"US NPI Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"uslicensestate\", \"US License State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usstatelicensenumber\", \"US License Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usTaxIdNumber\", \"US Tax ID Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileConsent\", \"Profile Consent\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"city\", \"City\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"province\", \"Province/State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"country\", \"Country\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}","import ApiService from \"../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\"\r\nimport { Subject } from 'rxjs';\r\n\r\nexport default class AdvancedSearchContainerService {\r\n static advancedSearchSubject = new Subject();\r\n\r\n static fetchFilterData = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/AdvancedSearch/FetchAdvSearchFilterDetails/${_tenantId}`\r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Grid, Tooltip, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport ProfileDetailCellRendererComponent from \"../../../profile-center/profile-detail/profileDetailCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport MatSpecService from \"../../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ProfileDetailDialogComponent from \"../../../profile-center/profile-detail/profileDetailDialogComponent\";\r\nimport ProfileAdvancedSearchService from \"./profileAdvancedSearchService\";\r\nimport AdvancedSearchContainerService from \"../advancedSearchContainerService\";\r\n\r\nclass ProfileAdvancedSearchComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.LOADED,\r\n isEditing: true,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n // if (this.state.isEditing) {\r\n // this.setState({ fetchResult: ResultStatus.LOADING });\r\n // this.fetchData();\r\n // }\r\n AdvancedSearchContainerService.advancedSearchSubject.subscribe(\r\n (success) => {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n getFileName() {\r\n return `Profiles ${new Date().toDateString()}`;\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ProfileAdvancedSearchService.searchOBS(this.context.user.tenantId, this.props.searchValue),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n // success\r\n ([_data, _countryList]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data.map(r => ({ ...r, countryName: _countryList.find(c => c.id === r.country)?.value, })) : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node, showProfileDetailDialog: true, inputAction: CrudAction.UPDATE });\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n //this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Profiles\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n \r\n
\r\n {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n \r\n
\r\n
\r\n
\r\n {/* Show Profile-Detail Dialog */}\r\n {\r\n this.setState({ showProfileDetailDialog: false });\r\n }}\r\n profileStatus={this.state.unmatchedChecked ? \"UNMATCHED\" : \"REVIEWED\"}\r\n />\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ProfileAdvancedSearchComponent);\r\n","import ApiService from \"../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\"\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class TransactionAdvancedSearchService {\r\n\r\n static searchOBS = (_tenantId, _searchValue = \"\") => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Transactions/FetchTransactionsSearchValue/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\",\r\n isAdvance: true\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"companyTransactionId\", \"Company Transaction ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstTransactionId\", \"Porzio GST Transaction ID\").minAndDefaultWidth(136).flexWeight(1).headerClass(\"center-text\").centerAlignText().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"companyProfileId\", \"Company Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTProfileId\", \"Porzio GST Profile ID\").minAndDefaultWidth(136).flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"customerMasterId\", \"Customer Master ID\").minAndDefaultWidth(136).flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companyEventId\", \"Company Event ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"affiliatedCompany\", \"Affiliated Company\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"customerSourceSystem\", \"Customer Source System\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"sourceName\", \"Source\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"form\", \"Form\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"purpose\", \"Purpose\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"recordStatus\", \"Record Status\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionDate\", \"Transaction Date\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileCategory\", \"Profile Category\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileType\", \"Profile Type\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"credentials\", \"Credentials\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpiNumber\", \"US NPI Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"usLicenseState\", \"US License State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usStateLicenseNumber\", \"US License Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionConsent\", \"Transaction Consent\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"city\", \"City\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"province\", \"Province/State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"country\", \"Country\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"initiatorLastName\", \"Initiator Last Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"initiatorFirstName\", \"Initiator First Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companySalesRepId\", \"Sales Rep ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"totalAmount\", \"Total Amount\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"proRataAmt\", \"Pro Rata\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"product\", \"Product\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companyStudyId\", \"Study ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n\r\n //AgGridColumnExt.GET(false, \"text\", \"\", \"\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Typography, Tooltip, Grid, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport ChildMessageRendererComponent from \"../../../transaction-center/childMessageRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport MatSpecService from \"../../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport TransactionDetailDialogComponent from \"../../../transaction-center/transaction-detail/transactionDetailDialogComponent\";\r\nimport TransactionAdvancedSearchService from \"./transactionAdvancedSearchService\";\r\nimport AdvancedSearchContainerService from \"../advancedSearchContainerService\";\r\n\r\nclass TransactionAdvancedSearchComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.LOADED,\r\n isEditing: true,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n // if (this.state.isEditing) {\r\n // this.setState({ fetchResult: ResultStatus.LOADING });\r\n // this.fetchData();\r\n // }\r\n AdvancedSearchContainerService.advancedSearchSubject.subscribe(\r\n (success) => {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n TransactionAdvancedSearchService.searchOBS(this.context.user.tenantId, this.props.searchValue),\r\n LookupService.getSourceSystemsByEntityAsOBS(this.context.user.tenantId, 2),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n // success\r\n ([_data, _sourceList, _countryList]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data.map(r => ({\r\n ...r,\r\n sourceName: _sourceList.find(s => s.sourceId === r.sourceId)?.sourceName,\r\n countryName: _countryList.find(c => c.id === r.country)?.value,\r\n })) : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n getFileName() {\r\n return `Transactions ${new Date().toDateString()}`;\r\n }\r\n\r\n // // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: { ...node, porziogsttransactionid: node.porzioGstTransactionId, transactionid: node.trid, sourceid: node.sourceId } });\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showTransactionDetailDialog: true });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n //this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Transactions\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n \r\n
\r\n {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n \r\n
\r\n
\r\n
\r\n {this.state.showTransactionDetailDialog ?\r\n { this.setState({ showTransactionDetailDialog: false }); /*this.fetchData(true);*/ }} />\r\n : null}\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(TransactionAdvancedSearchComponent);\r\n","import ApiService from \"../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\"\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class AgreementAdvancedSearchService {\r\n\r\n static searchOBS = (_tenantId, _searchValue = \"\") => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Agreement/SearchAgreements/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\",\r\n isAdvance: true\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstProfileId\", \"Porzio GST Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"companyProfileId\", \"Company Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstAgreementId\", \"Porzio GST Agreement ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"agreementDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companyAgreementId\", \"Company Agreement ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n // AgGridColumnExt.GET(false, \"text\", \"agreementType\", \"Agreement Type\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n // AgGridColumnExt.GET(false, \"text\", \"startDate\", \"Start Date\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n // AgGridColumnExt.GET(false, \"text\", \"endDate\", \"End Date\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"affiliatedCompany\", \"Affiliated Company\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"sourceName\", \"Source\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"agreementStatus\", \"Agreement Status\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileCategory\", \"Profile Category\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileType\", \"Profile Type\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"credentials\", \"Credentials\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpiNumber\", \"US NPI Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"usLicenseState\", \"US License State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usStateLicenseNumber\", \"US License Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"agreementConsent\", \"Agreement Consent\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"city\", \"City\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"province\", \"Province/State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"country\", \"Country\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { DialogTitle, DialogContent, Box, Grid, Tooltip, Toolbar, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport MatSpecService from \"../../../../shared/services/theme/matSpecService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport AgreementAdvancedSearchService from \"./agreementAdvancedSearchService\";\r\nimport AgreementDetailCellRendererComponent from \"../../../../private/agreements/agreementDetailCellRendererComponent\";\r\nimport AgreementDetailDialogComponent from \"../../../../private/agreements/agreement-detail/agreementDetailDialogComponent\";\r\nimport AdvancedSearchContainerService from \"../advancedSearchContainerService\";\r\nclass AgreementAdvancedSearchComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.LOADED,\r\n isEditing: true,\r\n porzioSearch: \"\",\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n agreementDetailCellRendererComponent: AgreementDetailCellRendererComponent\r\n }),\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n // if (this.state.isEditing) {\r\n // this.setState({ fetchResult: ResultStatus.LOADING });\r\n // this.fetchData();\r\n // }\r\n AdvancedSearchContainerService.advancedSearchSubject.subscribe(\r\n (success) => {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n AgreementAdvancedSearchService.searchOBS(this.context.user.tenantId, this.props.searchValue),\r\n ]).subscribe(\r\n // success\r\n ([_data]) => {\r\n this.setState(\r\n {\r\n data: DataService.hasElements(_data) ? _data : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n getFileName() {\r\n return `Agreements ${new Date().toDateString()}`;\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showAgreementDetailDialog: true, inputAction: CrudAction.UPDATE, modalAgNode: node });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n //this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Agreements\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n \r\n
\r\n {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridUtils.setGridParams(params, false);\r\n }}>\r\n \r\n
\r\n
\r\n
\r\n {this.state.showAgreementDetailDialog ?\r\n {\r\n this.setState({ showAgreementDetailDialog: false });\r\n }}\r\n /> : null}\r\n
\r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n\r\n /** 2/4 Required in Parent */\r\n isDirtyCallback = () => {\r\n return false;\r\n // do any additional checkings if needed\r\n // if (this.fPropsDynamic) {\r\n // return this.fPropsDynamic.dirty;\r\n // } else {\r\n // return false;\r\n // }\r\n }\r\n\r\n /** 3/4 Required in Parent */\r\n resetCallback = () => {\r\n // if (this.fPropsDynamic) {\r\n // this.fPropsDynamic.resetForm();\r\n // }\r\n // do any additional resetting if needed\r\n }\r\n\r\n /** 4/4 Required in Parent */\r\n postCallbackOBS = () => {\r\n return of(null);\r\n // if (DataService.isNullOrUndefined(this.fPropsDynamic)) { return of(null); }\r\n // else {\r\n\r\n // }\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(AgreementAdvancedSearchComponent);\r\n","\r\nexport const textFilterCriteria = [\r\n {\r\n lovId: 'equals', lovKey: 'equals'\r\n }, {\r\n lovId: 'notequals', lovKey: 'not equals'\r\n },\r\n {\r\n lovId: 'contains', lovKey: 'contains'\r\n }];\r\n\r\nexport const lovFilterCriteria = [{\r\n lovId: 'equals', lovKey: 'equals'\r\n}, {\r\n lovId: 'notequals', lovKey: 'not equals'\r\n}];\r\n\r\nexport const valueFilterCriteria = [\r\n {\r\n lovId: 'equals', lovKey: 'equals'\r\n },\r\n {\r\n lovId: 'lessthan', lovKey: 'less than'\r\n },\r\n {\r\n lovId: 'greaterthan', lovKey: 'greater than'\r\n }, {\r\n\r\n lovId: 'between', lovKey: 'between'\r\n }];\r\n\r\nexport const dateFilterCriteria = [{\r\n lovId: 'between', lovKey: 'between'\r\n}];\r\n\r\nexport const usMiamiHcpValues = [\r\n {\r\n lovId: 'yes', lovKey: 'Yes'\r\n },\r\n {\r\n lovId: 'no', lovKey: 'No'\r\n }\r\n]","import React from \"react\";\r\nimport { AppBar, Box, Dialog, Tooltip, IconButton, DialogContent, DialogTitle, Divider, LinearProgress, Tab, Tabs, TextField, Toolbar, Typography, Accordion, AccordionSummary, AccordionDetails, Select, Grid, Chip, InputBase, makeStyles, Button, Menu, MenuItem, Paper, FormControl, FormHelperText } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { CrudAction } from \"../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport ProfileAdvancedSearchComponent from \"./profile-advanced-search/profileAdvancedSearchComponent\";\r\nimport TransactionAdvancedSearchComponent from \"./transaction-advanced-search/transactionAdvancedSearchComponent\";\r\nimport AgreementAdvancedSearchComponent from \"./agreement-advanced-search/agreementAdvancedSearchComponent\";\r\n//import AdvancedSearchComponent from \"./advanced-search/advancedSearchComponent\";\r\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\r\nimport { FILTER_TYPE, ResultStatus } from \"../../../shared/types/enums\";\r\nimport { textFilterCriteria, lovFilterCriteria, valueFilterCriteria, dateFilterCriteria } from \"../../../shared/types/constants\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport AdvancedSearchContainerService from \"./advancedSearchContainerService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\n\r\n\r\nclass AdvancedSearchComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.filterWithErrorValue = [5, 11, 118, 35, 36];\r\n\r\n this.state = {\r\n selectedTabIndex: 0,\r\n advancedSearchExpanded: true,\r\n filterCriteria: [],\r\n savedFilterData: [],\r\n searchValue: \"\",\r\n errorInfo: null,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.setState({\r\n advancedSearchExpanded: false\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchFilterData();\r\n }\r\n\r\n fetchFilterData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n AdvancedSearchContainerService.fetchFilterData(this.context.user.tenantId)\r\n .subscribe(\r\n (data) => {\r\n if (data) {\r\n data[\"filterFields\"].forEach(x => { x.isSelected = false; });\r\n let filterFields = data[\"filterFields\"];\r\n\r\n let operators = data[\"operators\"];\r\n\r\n let lovFilters = data[\"lovFilters\"];\r\n this.setState({\r\n fetchResult: ResultStatus.LOADED,\r\n filterFields: filterFields,\r\n operators: operators,\r\n lovFilters: lovFilters,\r\n }, () => {\r\n //this.handleFieldSelectChange(this.state.filterFields[0]?.fieldName);\r\n });\r\n //TODO : add isSelected flag for hiding already selected filters\r\n }\r\n else {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n errorInfo: \"Error occurred while fetching Advanced search filters\"\r\n });\r\n }\r\n },\r\n (error) => {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n errorInfo: \"Error occurred while fetching Advanced search filters. \" + error.message\r\n });\r\n }\r\n )\r\n );\r\n }\r\n\r\n onClose = (_reloadRequired = false) => {\r\n this.setState({\r\n advancedSearchExpanded: false,\r\n savedFilterData: [],\r\n searchValue: \"\"\r\n }, () => this.props.close());\r\n }\r\n\r\n _changeTab = (event, _newTabIndex) => {\r\n this.setState({\r\n selectedTabIndex: _newTabIndex,\r\n isReadOnly: true // on tab change make it readonly\r\n });\r\n }\r\n\r\n handleChange = (panel) => (event, isExpanded) => {\r\n this.setState({\r\n advancedSearchExpanded: isExpanded\r\n });\r\n };\r\n\r\n handleDeleteChip = (chipToDelete) => () => {\r\n this.setState({\r\n savedFilterData: this.state.savedFilterData.filter((filter) => filter.fieldAliasName !== chipToDelete.fieldAliasName)\r\n });\r\n }\r\n\r\n clearAllChips = () => {\r\n this.setState({ savedFilterData: [] });\r\n }\r\n\r\n async handleFieldSelectChange(value) {\r\n let filterType = this.state.filterFields.find(f => f.fieldName == value)?.fieldTypeID;\r\n let filterCriteria;\r\n switch (filterType) {\r\n case FILTER_TYPE.TEXT:\r\n default:\r\n filterCriteria = textFilterCriteria;\r\n break;\r\n case FILTER_TYPE.LOV:\r\n filterCriteria = lovFilterCriteria;\r\n break;\r\n case FILTER_TYPE.NUMERIC:\r\n filterCriteria = valueFilterCriteria;\r\n break;\r\n case FILTER_TYPE.DATE:\r\n filterCriteria = dateFilterCriteria;\r\n break;\r\n }\r\n await this.formikProps.setFieldValue('filterCriteria', filterCriteria[0].lovId, false);\r\n //await this.formikProps.setFieldTouched('filterCriteria', true, false);\r\n //this.formikProps.validateField('filterCriteria');\r\n\r\n this.setState({\r\n filterCriteria: filterCriteria\r\n });\r\n }\r\n\r\n async handleCriteriaSelectChange(value) {\r\n // await this.formikProps.setFieldValue('filterCriteria', value, false);\r\n // await this.formikProps.setFieldTouched('filterCriteria', true, false);\r\n // this.formikProps.validateField('filterCriteria');\r\n }\r\n\r\n handleLOVValueChange(newValues) {\r\n }\r\n\r\n addFilter = async (fieldName, criteria, value) => {//TODO\r\n if (!this.formikProps.isSubmitting && this.formikProps.isValid) {\r\n await this.validationSchema.validate(this.formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n let selectedFilter = this.state.filterFields.find(f => f.fieldName == fieldName);\r\n\r\n let savedFilterData = {\r\n fieldId: selectedFilter?.fieldID,\r\n fieldText: fieldName,\r\n fieldAliasName: selectedFilter?.fieldAliasName,\r\n fieldTypeID: selectedFilter?.fieldTypeID,\r\n criteria: criteria,\r\n value: value,\r\n };\r\n\r\n this.setState({\r\n savedFilterData: this.state.savedFilterData.concat(savedFilterData)\r\n }, () => this.formikProps.resetForm());\r\n })\r\n .catch((errorObj) => {\r\n console.log(errorObj.message);\r\n if (errorObj.inner) {\r\n errorObj.inner.forEach(err => {\r\n this.formikProps.setFieldError(err.path, err.message);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n constructSearchString = () => {\r\n let searchValue = \"\";\r\n\r\n searchValue = this.state.savedFilterData.map(data => {\r\n let operator;\r\n switch (data.criteria) {\r\n case \"equals\":\r\n case \"notequals\":\r\n\r\n //Handle Null and Error filter values\r\n if (data.fieldTypeID == FILTER_TYPE.LOV) {//sample string: @SerachString='Country IN ('Belgium', 'United States') OR Country is NULL' \r\n let selectedValues = data.value.split(\",\");\r\n const nullStr = \"'Null'\";\r\n const errorStr = \"'Error/Warning'\";//sample string: if 'PURPOSE_FLAG='1'\r\n\r\n const hasNullValue = selectedValues.some(x => x == nullStr);\r\n const hasErrorValue = selectedValues.some(x => x == errorStr);\r\n\r\n let clause = '';\r\n if (selectedValues.some(x => x != nullStr && x != errorStr)) {\r\n operator = data.criteria == \"equals\" ? \" IN \" : \" NOT IN \";\r\n clause = `${data.fieldAliasName}${operator}(${selectedValues.filter(x => x != nullStr && x != errorStr).join()})`;\r\n }\r\n if (hasNullValue && hasErrorValue) {\r\n let addClause = `${data.fieldAliasName}_FLAG${(data.criteria == \"equals\") ? \"=\" : \"<>\"}1 OR ${data.fieldAliasName} ${(data.criteria == \"equals\") ? \"IS NULL\" : \"IS NOT NULL\"}`\r\n clause += selectedValues.some(x => x != errorStr && x != nullStr) ? ` OR ${addClause}` : `${addClause}`;\r\n } else if (hasNullValue) {\r\n let addClause = `${data.fieldAliasName} ${(data.criteria == \"equals\") ? \"IS NULL\" : \"IS NOT NULL\"}`;\r\n clause += selectedValues.some(x => x != nullStr) ? ` OR ${addClause}` : `${addClause}`;\r\n } else if (hasErrorValue) {\r\n let addClause = `${data.fieldAliasName}_FLAG${(data.criteria == \"equals\") ? \"=\" : \"<>\"}1`;\r\n clause += selectedValues.some(x => x != errorStr) ? ` OR ${addClause}` : `${addClause}`;\r\n }\r\n return clause;\r\n }\r\n\r\n\r\n if (data.fieldTypeID == FILTER_TYPE.TEXT) {\r\n if (data.value.indexOf(\",\") !== -1) { //Handle comma separated values\r\n operator = data.criteria == \"equals\" ? \" IN \" : \" NOT IN \";\r\n let clause = `${data.fieldAliasName}${operator}(${data.value})`;\r\n return clause;\r\n }\r\n operator = data.criteria == \"equals\" ? \"=\" : \"<>\";\r\n return `${data.fieldAliasName}${operator}N'${data.value}'`;\r\n }\r\n\r\n operator = data.criteria == \"equals\" ? \"=\" : \"<>\";\r\n break;\r\n case \"lessthan\":\r\n operator = \"<\";\r\n break;\r\n case \"greaterthan\":\r\n operator = \">\";\r\n break;\r\n case \"between\":\r\n operator = \" BETWEEN \";\r\n return `${data.fieldAliasName}${operator}${data.value}`;\r\n //break;\r\n case \"contains\":\r\n operator = \" LIKE \";\r\n return `${data.fieldAliasName}${operator}N'%${data.value}%'`;\r\n //break;\r\n default:\r\n operator = \"=\";\r\n }\r\n return `${data.fieldAliasName}${operator}'${data.value}'`;\r\n }).join(\" AND \");\r\n return searchValue;\r\n }\r\n\r\n applyFilter = () => {\r\n let searchedValue = this.constructSearchString();\r\n this.setState({\r\n searchValue: searchedValue\r\n }, () => {\r\n AdvancedSearchContainerService.advancedSearchSubject.next('true');\r\n });\r\n }\r\n\r\n getFilterValueContent(_formikProps, _classes) {\r\n this.formikProps = _formikProps;\r\n let filterType = this.state.filterFields.some(f => f.fieldName == _formikProps.values['filterFieldId']) ?\r\n this.state.filterFields.find(f => f.fieldName == _formikProps.values['filterFieldId']).fieldTypeID : FILTER_TYPE.TEXT;\r\n let selectedCriteriaValue = _formikProps.values['filterCriteria'] ? _formikProps.values['filterCriteria'] :\r\n this.state.filterCriteria[0];\r\n\r\n if (filterType === FILTER_TYPE.DATE) {\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 this.addFilter(_formikProps.values['filterFieldId'], _formikProps.values['filterCriteria'], `'${DataService.getDateFromDateTimeStamp(_formikProps.values['startDate']) + \"' and '\" + DataService.getDateFromDateTimeStamp(_formikProps.values['endDate'])}'`)\r\n }} color=\"primary\">{MatIconService.ADD_CIRCLE_OUTLINE}\r\n \r\n \r\n \r\n );\r\n } else if (filterType === FILTER_TYPE.LOV) {\r\n let selectedFilterFieldID = this.state.filterFields.find(f => f.fieldName == _formikProps.values['filterFieldId'])?.fieldID;\r\n return (<>\r\n {this.filterWithErrorValue.includes(selectedFilterFieldID) ?\r\n \r\n {LayoutService.getChipSelect(false, _classes, _formikProps, \"filterLOVValue\", \"Filter Value\", [{ fieldID: selectedFilterFieldID, lovKey: \"Error/Warning\", lovid: null }, { fieldID: selectedFilterFieldID, lovKey: \"Null\", lovid: 0 }, ...[this.state.lovFilters.filter(f => f.fieldID == selectedFilterFieldID)][0]].sort((a, b) => a.lovKey.localeCompare(b.lovKey)), \"lovid\", \"lovKey\", this.handleLOVValueChange, \"98%\")}\r\n \r\n :\r\n \r\n {LayoutService.getChipSelect(false, _classes, _formikProps, \"filterLOVValue\", \"Filter Value\", [{ fieldID: selectedFilterFieldID, lovKey: \"Null\", lovid: 0 }, ...[this.state.lovFilters.filter(f => f.fieldID == selectedFilterFieldID)][0]].sort((a, b) => a.lovKey.localeCompare(b.lovKey)), \"lovid\", \"lovKey\", this.handleLOVValueChange, \"98%\")}\r\n }\r\n \r\n \r\n {\r\n this.addFilter(_formikProps.values['filterFieldId'], _formikProps.values['filterCriteria'], \"'\" + _formikProps.values[\"filterLOVValue\"].map(lov => lov.lovKey).join(\"','\") + \"'\")\r\n }} color=\"primary\">{MatIconService.ADD_CIRCLE_OUTLINE}\r\n \r\n \r\n );\r\n } else {\r\n if (selectedCriteriaValue == \"between\") {\r\n //value type with range selected\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 this.addFilter(_formikProps.values['filterFieldId'], _formikProps.values['filterCriteria'], `'${_formikProps.values['filterRangeValue1'] + \"' and '\" + _formikProps.values['filterRangeValue2']}'`)\r\n }} color=\"primary\">{MatIconService.ADD_CIRCLE_OUTLINE}\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 let modValues = _formikProps.values['filterValue'];\r\n let selectedValues = _formikProps.values['filterValue'].split(\",\");\r\n if (selectedValues && selectedValues.length > 1) {\r\n modValues = \"'\" + selectedValues.join(\"','\") + \"'\";\r\n }\r\n this.addFilter(_formikProps.values['filterFieldId'], _formikProps.values['filterCriteria'], modValues);\r\n }} color=\"primary\">{MatIconService.ADD_CIRCLE_OUTLINE}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n // formik\r\n getInitialValues() {\r\n return {\r\n filterFieldId: null,\r\n filterCriteria: '',\r\n startDate: new Date(),\r\n endDate: new Date(),\r\n //filterLOVValue: '',\r\n filterValue: '',\r\n filterRangeValue1: '',\r\n filterRangeValue2: ''\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n let filterSchema = Yup.object().shape({\r\n filterFieldId: Yup.string().required(\"Select a Filter Name\").nullable(true).min(1, \"Select a Filter Name\"), //Yup.number().nullable(true)\r\n filterCriteria: Yup.string().required(\"Select a Filter Criteria\").nullable(true).min(1, \"Select a Filter Criteria\"),\r\n // //filterLOVValue: Yup.string().nullable(true).min(1, \"Select a Filter Value\"),\r\n });\r\n\r\n if (this.formikProps && this.formikProps.values['filterFieldId']) {\r\n let filterType = this.state.filterFields.find(f => f.fieldName == this.formikProps.values['filterFieldId']).fieldTypeID;\r\n let filterDynamicSchema = Yup.object().shape({});\r\n if (filterType === FILTER_TYPE.DATE) {\r\n filterDynamicSchema = Yup.object().shape({\r\n startDate: Yup.date().required(\"Select a Start Date\").nullable(true).min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n endDate: Yup.date().required(\"Select an End Date\").nullable(true).min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n });\r\n } else if (filterType === FILTER_TYPE.LOV) {\r\n filterDynamicSchema = Yup.object().shape({\r\n filterLOVValue: Yup.string().required(\"Select a Filter Value\").nullable(true).min(1, \"Select a Filter Value\"),\r\n });\r\n } else {\r\n // if (this.formikProps.values['filterCriteria'] == \"between\") {\r\n // filterDynamicSchema = Yup.object().shape({\r\n // filterRangeValue1: Yup.string().required(\"Enter a Filter Value\").nullable(true).max(256, \"Must be 256 characters or less\"),\r\n // filterRangeValue2: Yup.string().required(\"Enter a Filter Value\").nullable(true).max(256, \"Must be 256 characters or less\")\r\n // });\r\n // } else {\r\n // filterDynamicSchema = Yup.object().shape({\r\n // filterValue: Yup.string().required(\"Enter a Filter Value\").nullable(true).max(256, \"Must be 256 characters or less\")\r\n // });\r\n // }\r\n }\r\n\r\n this.validationSchema = filterSchema.concat(filterDynamicSchema);\r\n } else this.validationSchema = filterSchema;\r\n return this.validationSchema;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n {/* DialogTitle */}\r\n \r\n \r\n \r\n \r\n Advanced Search\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Close\", () => { this.onClose(false) }, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n {/* DialogContent */}\r\n \r\n \r\n {/* }\r\n aria-controls=\"panel-content\"\r\n id=\"panel-header\">\r\n Advanced Search\r\n Add multiple filters to filter further\r\n */}\r\n \r\n \r\n {(fProps) => (\r\n
\r\n \r\n \r\n \r\n {LayoutService.getDropDown(false, classes.dialogControl, classes.menuPaper, fProps, this.validationSchema, \"filterFieldId\", \"Filter Name\",\r\n this.state.filterFields, \"fieldName\", \"fieldName\", null, false, \"98%\", (_formikProps, _newValue) => {\r\n this.handleFieldSelectChange(_newValue);\r\n }\r\n )}\r\n \r\n \r\n {LayoutService.getDropDown(false, classes.dialogControl, classes.menuPaper, fProps, this.validationSchema, \"filterCriteria\", \"Criteria\",\r\n this.state.filterCriteria, \"lovId\", \"lovKey\", null, false, \"98%\", (_formikProps, _newValue) => { this.handleCriteriaSelectChange(_newValue); }\r\n )}\r\n \r\n {this.getFilterValueContent(fProps, classes)}\r\n \r\n \r\n \r\n {this.state.savedFilterData.map((data) => {\r\n return (
  • \r\n \r\n {data.fieldText}\r\n {data.criteria}\r\n {data.value}\r\n } onDelete={this.handleDeleteChip(data)} style={{ margin: '4px' }} />\r\n
  • \r\n );\r\n })}\r\n {this.state.savedFilterData.length > 0 ?\r\n \r\n { this.clearAllChips() }} color=\"inherit\">{MatIconService.CLOSE}\r\n : null}\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n return (\r\n \r\n \r\n { this.fetchFilterData(); }} />\r\n \r\n \r\n );\r\n default:\r\n return <>;\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(AdvancedSearchComponent);","import React, { Component } from \"react\";\r\nimport { fade, withStyles } from \"@material-ui/core/styles\";\r\nimport { Grid } from \"@material-ui/core\";\r\nimport { AppBar } from \"@material-ui/core\";\r\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\r\nimport Dialog from \"@material-ui/core/Dialog\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport InputBase from \"@material-ui/core/InputBase\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport MatThemeService from \"../../shared/services/theme/matThemeService\";\r\nimport MatSpecService from \"../../shared/services/theme/matSpecService\";\r\nimport { Divider, ListItemIcon, Menu, MenuItem, Tooltip } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport { CrudAction, TenantSelectList } from \"../../shared/types/enums\";\r\nimport LogoComponent from \"../../shared/components/logo/logoComponent\";\r\nimport InternationalComponent from \"../tenant/international/internationalComponent\";\r\nimport UserDialogComponent from \"../user-management/users/user-details/userDialogComponent\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { from, BehaviorSubject } from \"rxjs\";\r\nimport { DataService, SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport GlobalSearchContainerComponent from \"./../global-search/globalSearchContainerComponent\";\r\nimport SessionService from \"../../shared/services/sessionService\";\r\nimport { withOktaAuth } from '@okta/okta-react';\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport AdvancedSearchComponent from \"../global-search/advanced-search/advancedSearchComponent\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport MomentService from \"../../shared/services/momentService\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\nimport OktaAuthService from \"../../public/authentication/oktaAuthService\";\r\n\r\n\r\nclass TopBarComponent extends Component {\r\n static contextType = AuthContext;\r\n\r\n scopedSubscriptions = new SubscriptionArray();\r\n state = {\r\n anchorEl: null,\r\n personalSettingsModalShow: false,\r\n openAccountMenu: false,\r\n openLanguageDialog: false,\r\n openCurrencyDialog: false,\r\n openSearchDialog: false,\r\n openAdvancedSearchDialog: false,\r\n searchValue: \"\",\r\n utcTime: \"\" //MomentService.getUtcTime(),\r\n };\r\n\r\n startUtcCountDown = () => {\r\n // setInterval(() => {\r\n // this.setState({ utcTime: MomentService.getUtcTime() })\r\n // }, 1000);\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n // componentWillUnmount() {\r\n // this.scopedSubscriptions.cancelAll();\r\n // }\r\n componentDidMount() {\r\n // this.startUtcCountDown();\r\n var searchOBS = this.searchSubject.pipe(\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((_searchValue) => from(this.searchRecipient(_searchValue)))\r\n );\r\n //this.scopedSubscriptions.add(searchOBS.subscribe());\r\n }\r\n searchRecipient = (_searchValue) => {\r\n this.apiSubscriptions.cancelAll();\r\n if (DataService.stringShouldBe(_searchValue, 3)) {\r\n this.setState({ openSearchDialog: true, searchValue: _searchValue });\r\n }\r\n return [];\r\n }\r\n handleAccountMenuClick = (event) => {\r\n this.setState({\r\n anchorEl: event.currentTarget,\r\n openAccountMenu: true,\r\n });\r\n };\r\n\r\n handleThemeChange = (_closeMenu) => {\r\n MatThemeService.cycleTheme();\r\n this.props.onThemeChange();\r\n if (_closeMenu) {\r\n this.handleAccountMenuClose();\r\n }\r\n };\r\n\r\n handleAccountMenuClose = () => {\r\n this.setState({ anchorEl: null, openAccountMenu: false });\r\n };\r\n\r\n handlePersonalSettingsModalClose = () => {\r\n this.setState({ personalSettingsModalShow: false });\r\n };\r\n\r\n handleLanguageDialogClose = () => {\r\n this.setState({ openLanguageDialog: false });\r\n };\r\n\r\n handleCurrencyDialogClose = () => {\r\n this.setState({ openCurrencyDialog: false });\r\n };\r\n\r\n logout = async () => {\r\n OktaAuthService.cancelSession();\r\n await this.props.oktaAuth.signOut();\r\n await this.props.oktaAuth.tokenManager.clear();\r\n SessionService.clearAll(this.context);\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const { anchorEl, openAccountMenu } = this.state;\r\n\r\n return (\r\n
    \r\n \r\n \r\n \r\n {/* Menu */}\r\n \r\n \r\n {MatIconService.MENU}\r\n \r\n \r\n \r\n {/* Tenant Name */}\r\n \r\n \r\n \r\n {this.context.user.tenantName}\r\n {this.state.utcTime}\r\n \r\n \r\n\r\n {/* Search */}\r\n
    \r\n {\r\n if (e.key === 'Enter' && !DataService.isStringNullOrEmpty(e.target.value)) {\r\n this.setState({ openSearchDialog: true, searchValue: e.target.value });\r\n }\r\n }}\r\n />\r\n
    \r\n\r\n {/* Advanced Search */}\r\n \r\n { this.setState({ openAdvancedSearchDialog: true }); }}>{MatIconService.FIND_IN_PAGE}\r\n \r\n \r\n\r\n
    \r\n\r\n \r\n this.handleAccountMenuClick(event)} color=\"inherit\">\r\n {MatIconService.ACCOUNT}\r\n \r\n \r\n\r\n \r\n\r\n { this.setState({ personalSettingsModalShow: true }); this.handleAccountMenuClose(); }}>\r\n {MatIconService.PERSONAL}\r\n Personal Settings\r\n \r\n\r\n \r\n\r\n { this.setState({ openLanguageDialog: true }); this.handleAccountMenuClose(); }}>\r\n {MatIconService.LANGUAGE}\r\n Languages\r\n \r\n\r\n { this.setState({ openCurrencyDialog: true }); this.handleAccountMenuClose(); }}>\r\n {MatIconService.CURRENCY}\r\n Currency\r\n \r\n\r\n { this.handleAccountMenuClose(); }}>\r\n {MatIconService.SETTINGS}\r\n Configuration\r\n \r\n\r\n \r\n\r\n { this.handleAccountMenuClose(); }}>\r\n {MatIconService.CONTACT_US}\r\n Contact Us\r\n \r\n\r\n \r\n\r\n { this.logout(); this.handleAccountMenuClose(); }}>\r\n {MatIconService.LOGOUT}\r\n Logout\r\n \r\n\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n \r\n { console.log(\"Closed UserDialogComponent\") }}\r\n inputAction={CrudAction.UPDATE}\r\n />\r\n \r\n\r\n {/* Global Search */}\r\n {this.state.openSearchDialog ?\r\n { this.setState({ openSearchDialog: false }) }} >\r\n {\r\n this.setState({ openSearchDialog: false })\r\n }} /> : null}\r\n\r\n {/* Advanced Search */}\r\n {this.state.openAdvancedSearchDialog ?\r\n { this.setState({ openAdvancedSearchDialog: false }) }} >\r\n {\r\n this.setState({ openAdvancedSearchDialog: false })\r\n }} /> : null}\r\n \r\n \r\n
    \r\n );\r\n }\r\n}\r\n\r\nconst styles = (theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n hide: {\r\n display: \"none\",\r\n },\r\n\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n },\r\n appBarShift: {\r\n marginLeft: MatThemeService.drawerWidth,\r\n width: `calc(100% - ${MatThemeService.drawerWidth}px)`,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n title: {\r\n flexGrow: 1,\r\n display: \"none\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"block\",\r\n },\r\n },\r\n\r\n search: {\r\n position: \"relative\",\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.common.white, 0.15),\r\n \"&:hover\": {\r\n backgroundColor: fade(theme.palette.common.white, 0.25),\r\n },\r\n marginLeft: 0,\r\n marginRight: 16,\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n marginLeft: theme.spacing(1),\r\n width: \"auto\",\r\n },\r\n },\r\n searchIcon: {\r\n padding: theme.spacing(0, 2),\r\n height: \"100%\",\r\n //position: \"absolute\",\r\n //pointerEvents: \"none\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n inputRoot: {\r\n color: \"inherit\",\r\n },\r\n inputInput: {\r\n padding: theme.spacing(1, 1, 1, 0),\r\n // vertical padding + font size from searchIcon\r\n paddingLeft: `calc(1em + ${theme.spacing(4)}px)`,\r\n transition: theme.transitions.create(\"width\"),\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n width: \"12ch\",\r\n \"&:focus\": {\r\n width: \"20ch\",\r\n },\r\n },\r\n },\r\n});\r\n\r\nexport default withStyles(styles)(withOktaAuth(TopBarComponent));\r\n","import React, { Component } from \"react\";\r\nimport { withRouter, Link } from \"react-router-dom\";\r\n\r\nimport clsx from \"clsx\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport Drawer from \"@material-ui/core/Drawer\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport List from \"@material-ui/core/List\";\r\nimport Divider from \"@material-ui/core/Divider\";\r\nimport ListItem from \"@material-ui/core/ListItem\";\r\nimport ListItemText from \"@material-ui/core/ListItemText\";\r\nimport ListItemIcon from \"@material-ui/core/ListItemIcon\";\r\nimport { Tooltip } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport MatSpecService from \"../../shared/services/theme/matSpecService\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass SideNavComponent extends Component {\r\n routeConfigs = [\r\n {\r\n icon: MatIconService.NAV_HOME,\r\n text: \"Home\",\r\n target: \"/home\",\r\n hasAccess: !RolePermissionService.hasOnlyPowerBIAccess,\r\n },\r\n {\r\n icon: MatIconService.NAV_DASHBOARD,\r\n text: \"Tenant Config\",\r\n target: \"/tenant-config\",\r\n hasAccess: !RolePermissionService.hasOnlyPowerBIAccess,\r\n },\r\n {\r\n icon: MatIconService.NAV_POWER_BI,\r\n text: \"Analytics\",\r\n target: \"/power-bi\",\r\n hasAccess: RolePermissionService.POWER_BI_REPORT.canView,\r\n },\r\n {\r\n icon: MatIconService.NAV_DATABASE,\r\n text: \"Data Center\",\r\n target: \"/data-center\",\r\n hasAccess: !RolePermissionService.hasOnlyPowerBIAccess,\r\n },\r\n {\r\n icon: MatIconService.NAV_USER,\r\n text: \"Profiles\",\r\n target: \"/profile-center\",\r\n hasAccess: !RolePermissionService.hasOnlyPowerBIAccess && RolePermissionService.PROFILE_CENTER.canView,\r\n },\r\n {\r\n icon: MatIconService.NAV_FILES,\r\n text: \"Transactions\",\r\n target: \"/transaction-center\",\r\n hasAccess: !RolePermissionService.hasOnlyPowerBIAccess && RolePermissionService.TRANSACTION_CENTER.canView,\r\n },\r\n {\r\n icon: MatIconService.NAV_HAND,\r\n text: \"Agreements\",\r\n target: \"/agreements\",\r\n hasAccess: !RolePermissionService.hasOnlyPowerBIAccess && RolePermissionService.AGREEMENTS.canView,\r\n },\r\n {\r\n icon: MatIconService.NAV_DEMO,\r\n text: \"Reports\",\r\n target: \"/reports-center\",\r\n hasAccess: !RolePermissionService.hasOnlyPowerBIAccess,\r\n },\r\n {\r\n icon: MatIconService.NAV_DETAIL,\r\n text: \"Documents\",\r\n target: \"/documents\",\r\n hasAccess: !RolePermissionService.hasOnlyPowerBIAccess,\r\n },\r\n ];\r\n\r\n componentDidMount() {\r\n this.updateNavigation();\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (this.props.location.pathname !== prevProps.location.pathname) {\r\n this.updateNavigation();\r\n }\r\n }\r\n\r\n updateNavigation(dd) {\r\n if (this.props.location.pathname !== this.state.selectedItem) {\r\n var currentPath = this.routeConfigs.find(\r\n (o) => o.target === this.props.location.pathname\r\n );\r\n if (currentPath) {\r\n this.setState({\r\n selectedItem: currentPath.text,\r\n });\r\n }\r\n }\r\n }\r\n\r\n state = {\r\n isExpanded: false,\r\n selectedItem: \"Home\",\r\n };\r\n\r\n handleDrawerOpen = () => {\r\n this.setState({\r\n isExpanded: true,\r\n });\r\n };\r\n\r\n handleDrawerClose = () => {\r\n this.setState({\r\n isExpanded: false,\r\n });\r\n };\r\n\r\n setSelectedItem = (_text) => {\r\n this.setState({\r\n selectedItem: _text,\r\n });\r\n };\r\n\r\n render() {\r\n const { classes, expandSideNav } = this.props;\r\n\r\n return (\r\n \r\n \r\n
    \r\n \r\n {this.routeConfigs.map((o, index) => (\r\n \r\n \r\n \r\n this.setSelectedItem(o.text)}\r\n >\r\n {o.icon}\r\n {expandSideNav ? : null}\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    \r\n \r\n );\r\n }\r\n}\r\n\r\nconst styles = (_theme) => ({\r\n selected: {\r\n color: \"#FFF\",\r\n },\r\n drawer: {\r\n width: MatSpecService.drawerWidth,\r\n flexShrink: 0,\r\n whiteSpace: \"nowrap\",\r\n },\r\n drawerContainer: {\r\n overflow: \"auto\",\r\n },\r\n sideNavExpand: {\r\n width: MatSpecService.drawerWidth,\r\n transition: _theme.transitions.create(\"width\", {\r\n easing: _theme.transitions.easing.sharp,\r\n duration: _theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n sideNavCollapse: {\r\n transition: _theme.transitions.create(\"width\", {\r\n easing: _theme.transitions.easing.sharp,\r\n duration: _theme.transitions.duration.leavingScreen,\r\n }),\r\n overflowX: \"hidden\",\r\n width: _theme.spacing(7) + 1,\r\n [_theme.breakpoints.up(\"sm\")]: {\r\n width: _theme.spacing(9) + 1,\r\n },\r\n },\r\n});\r\n\r\nexport default withStyles(styles)(withRouter(SideNavComponent));\r\n","import React, { Component } from \"react\";\r\nimport { Grid, Paper, Popper, Tooltip, Typography } from \"@material-ui/core\";\r\nimport { withStyles } from \"@material-ui/styles\";\r\nimport MomentService from \"../../shared/services/momentService\";\r\nimport MatThemeService from \"../../shared/services/theme/matThemeService\";\r\nimport ApplicationService from \"../../shared/services/applicationService\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\n\r\nconst footerStyleLight = {\r\n backgroundColor: \"#005589\",\r\n fontSize: \"12px\",\r\n color: \"rgba(255,255,255,.87)\",\r\n // borderTop: \"1px solid #E7E7E7\",\r\n textAlign: \"right\",\r\n padding: \"5px\",\r\n position: \"fixed\",\r\n left: \"0\",\r\n bottom: \"0\",\r\n height: \"30px\",\r\n width: \"100%\",\r\n};\r\nconst footerStyleDark = {\r\n backgroundColor: \"#212121\",\r\n fontSize: \"12px\",\r\n color: \"rgba(255,255,255,.87)\",\r\n // borderTop: \"1px solid #E7E7E7\",\r\n textAlign: \"right\",\r\n padding: \"5px\",\r\n position: \"fixed\",\r\n left: \"0\",\r\n bottom: \"0\",\r\n height: \"30px\",\r\n width: \"100%\",\r\n};\r\n\r\nconst phantomStyle = {\r\n display: \"block\",\r\n padding: \"20px\",\r\n height: \"60px\",\r\n width: \"100%\"\r\n};\r\n\r\n\r\nclass Footer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n utcPopperAnchorEl: null,\r\n utcTime: MomentService.getUtcTime(),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n\r\n }\r\n\r\n utcTimeIntervalRef = null;\r\n startUtcCountDown = () => {\r\n this.setState({ utcTime: MomentService.getUtcTime() });\r\n\r\n this.utcTimeIntervalRef = setInterval(() => {\r\n this.setState({ utcTime: MomentService.getUtcTime() });\r\n }, 60000);\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return
    \r\n \r\n \r\n \r\n UTC Time: {this.state.utcTime}\r\n \r\n \r\n \r\n\r\n {/*
    */}\r\n
    \r\n \r\n {ApplicationService.appVersionString}\r\n {ApplicationService.copyrightRightsReservedString}\r\n {/* Right */}\r\n \r\n \r\n \r\n
    {\r\n const isPopperShowing = this.state.utcPopperAnchorEl ? true : false;\r\n if (isPopperShowing) {\r\n clearInterval(this.utcTimeIntervalRef);\r\n } else {\r\n this.startUtcCountDown();\r\n }\r\n this.setState({ utcPopperAnchorEl: isPopperShowing ? null : e.currentTarget })\r\n }}>\r\n {this.state.utcPopperAnchorEl ? MatIconService.CLOCK_SELECTED : MatIconService.CLOCK}\r\n
    \r\n
    \r\n \r\n
    {\r\n MatThemeService.toggleMode();\r\n this.props.onThemeChange();\r\n }}>\r\n {MatThemeService.isDarkMode() ? MatIconService.SUN : MatIconService.MOON}\r\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 Footer;","import React from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { Typography, Divider, Grid, Tooltip, IconButton, FormControl, FormHelperText, InputLabel, MenuItem, Select } from \"@material-ui/core\";\r\nimport MatSpecService from \"../../services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport LayoutService from \"../../services/layoutService\";\r\n\r\nclass PageHeaderComponent extends React.Component {\r\n render() {\r\n const { small, classes, history, label, back, menu, search, entitySelect, countrySelect, importTemplate, uploadFile, save, edit, add, addCircle, view,\r\n reload, ok, cancel, noDivider, noDividerSpacing, unmatched, download, isDownloadReadOnly } = this.props;\r\n const showButtons = back || menu || search || entitySelect || countrySelect || importTemplate || uploadFile\r\n || save || edit || add || addCircle || view || reload || ok || cancel || unmatched || download;\r\n\r\n return (\r\n \r\n \r\n \r\n {back ? (\r\n \r\n { history.goBack(); }}>{MatIconService.BACK}\r\n \r\n ) : null}\r\n\r\n {menu ? (\r\n \r\n \r\n {MatIconService.MENU}\r\n \r\n \r\n ) : null}\r\n\r\n \r\n {label}\r\n \r\n\r\n {entitySelect ? (\r\n <>\r\n Entity:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.entitySelectData.map((el) => (\r\n \r\n {el.entityname}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {download ? (\r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n ) : null}\r\n\r\n {unmatched ? (\r\n \r\n \r\n {MatIconService.NOT_LISTED}\r\n \r\n \r\n ) : null}\r\n\r\n {search ? (\r\n \r\n \r\n {MatIconService.SEARCH}\r\n \r\n \r\n ) : null}\r\n\r\n {countrySelect ? (\r\n <>\r\n Jurisdiction:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.countrySelectData.map((el) => (\r\n \r\n {el.value}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n {importTemplate ? (\r\n \r\n \r\n {MatIconService.IMPORT_TEMPLATE}\r\n \r\n \r\n ) : null}\r\n\r\n {uploadFile ? (\r\n \r\n \r\n {MatIconService.CLOUD_UPLOAD}\r\n \r\n \r\n ) : null}\r\n\r\n {edit ? (\r\n \r\n \r\n {MatIconService.EDIT}\r\n \r\n \r\n ) : null}\r\n\r\n {add || addCircle ? (\r\n \r\n \r\n {addCircle ? MatIconService.ADD_CIRCLE_OUTLINE : MatIconService.ADD}\r\n \r\n \r\n ) : null}\r\n\r\n {save ? (\r\n \r\n \r\n {MatIconService.SAVE}\r\n \r\n \r\n ) : null}\r\n\r\n {view ? (\r\n \r\n \r\n {MatIconService.VIEW_LIST}\r\n \r\n \r\n ) : null}\r\n\r\n {reload ? (\r\n \r\n \r\n {MatIconService.RELOAD}\r\n \r\n \r\n ) : null}\r\n\r\n {cancel ? (\r\n \r\n \r\n {MatIconService.CANCEL}\r\n \r\n \r\n ) : null}\r\n\r\n {ok ? (\r\n \r\n \r\n {MatIconService.OK}\r\n \r\n \r\n ) : null}\r\n \r\n {noDivider || noDividerSpacing ? (\r\n {!noDivider && MatSpecService.showPageTitleDivider ? : null}\r\n ) : (\r\n {MatSpecService.showPageTitleDivider ? : null}\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(PageHeaderComponent);","import { of } from \"rxjs\";\r\nimport { DataService } from \"../services/dataService\";\r\n\r\nexport default class Cache {\r\n _cachedResult = [];\r\n _oSubscription = null;\r\n _apiFetchObsCallback = null;\r\n _lastSetUtc = null;\r\n _expiryTimeout = 0;\r\n\r\n /** if set this.STORE.CACHE.EXISTS() will return false */\r\n _aboutToExpire = false;\r\n _aboutToExpireTimeout = 500; // give a very small value\r\n\r\n /**\r\n *\r\n * @param { Api fetch observable} apiFetchObs\r\n * @param { milliseconds } expiryTimeout\r\n */\r\n constructor(apiFetchObsCallback = () => {}, expiryTimeout = null) {\r\n this._apiFetchObsCallback = apiFetchObsCallback;\r\n this._aboutToExpire = false;\r\n // if _expiresAfter is set\r\n if (expiryTimeout > this._aboutToExpireTimeout) {\r\n this._expiryTimeout = expiryTimeout;\r\n // start a momentTimer that is (_expiresAfter - _aboutToExpireTimeout)\r\n // -> and set the _aboutToExpire flag\r\n // then start another moment timer and call clearCache on it expiry\r\n }\r\n }\r\n\r\n // can be used to do prefetch during appload\r\n FETCH() {\r\n this._oSubscription = this._apiFetchObsCallback().subscribe((o) => {\r\n this.SET(o);\r\n // TODO: call the below after a timeout\r\n this._unSubscribe();\r\n });\r\n }\r\n\r\n _unSubscribe() {\r\n if (this._oSubscription) {\r\n this._oSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n NOT_EXISTS() {\r\n return !this.EXISTS();\r\n }\r\n\r\n /**\r\n * Will return false if cache is about to expire\r\n * are left for cache Expiry\r\n */\r\n EXISTS() {\r\n if (this._aboutToExpire) {\r\n return false;\r\n } else {\r\n return DataService.hasElements(this._cachedResult);\r\n }\r\n }\r\n\r\n /**\r\n * Clears the cache result\r\n * */\r\n CLEAR() {\r\n this._aboutToExpire = false;\r\n this._cachedResult = [];\r\n this._lastSetUtc = null;\r\n }\r\n\r\n /**\r\n * Sets the cache and sets the time\r\n * @param {} _result\r\n */\r\n SET(_result) {\r\n this.CLEAR();\r\n this._cachedResult = _result;\r\n // TODO cancel the current timeouts\r\n // and restart\r\n }\r\n\r\n /**\r\n * returns the _cached result\r\n */\r\n GET() {\r\n console.log(\"Loaded from Cache\", this._cachedResult);\r\n return this._cachedResult;\r\n }\r\n /**\r\n * returns the _cached result as observable\r\n */\r\n getOBS() {\r\n return of(this.GET());\r\n }\r\n}\r\n","import { ReplaySubject } from \"rxjs\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\nimport { API_ENDPOINT, GST_API } from \"../../../shared/types/enums\";\r\nimport { DataService } from \"../../../shared/services/dataService\";\r\n\r\nexport default class TaskListService {\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n static _ALLUSERS = [];\r\n static getAllUsersAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(TaskListService._ALLUSERS)) {\r\n oSubject.next(TaskListService._ALLUSERS);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(API_ENDPOINT.TENANT,\r\n `/User/GetAllUsers/${_context.user.tenantId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n TaskListService._ALLUSERS = _data;\r\n oSubject.next(TaskListService._ALLUSERS);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n\r\n return ApiService.fetchHTTP_API(GST_API.TenantConfig, `/Task/FetchTasks?tenantId=${clientAuthContext.user.tenantId}`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n orderClause: \"\",\r\n whereClause: \"\",\r\n userId: clientAuthContext.user.userId,\r\n tenantId: clientAuthContext.user.tenantId,\r\n screenId: 0,\r\n rolePermissionId: 0,\r\n isPorzio: true,\r\n pageNumber: 1,\r\n pageSize: 1000\r\n }),\r\n });\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { ResultStatus, CrudAction, TaskLauncher, ENTITY_TYPE } from \"../../../shared/types/enums\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport {\r\n Typography,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n ListItemIcon,\r\n Divider,\r\n} from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageHeaderComponent from \"../../../shared/components/page/pageHeaderComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport TaskDetailsComponent from \"./task-details/taskDetailsComponent\";\r\nimport TaskListService from \"./taskListService\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass TaskListComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n showTaskDialog: false,\r\n inputAction: CrudAction.CREATE,\r\n updateData: null,\r\n }\r\n }\r\n\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n TaskListService.getObs(true, this.context),\r\n TaskListService.getAllUsersAsOBS(this.context),\r\n ]).subscribe(\r\n ([\r\n _data,\r\n _allUsersList,\r\n ]) => {\r\n const _allUsersListSorted = _allUsersList;\r\n _allUsersListSorted.sort((a, b) => (a.firstName > b.firstName) ? 1 : ((b.firstName > a.firstName) ? -1 : 0));\r\n this.setState(\r\n {\r\n data: _data,\r\n allUsersList: _allUsersListSorted.map(o => ({ ...o, fullName: o.firstName + \" \" + o.lastName })).filter(i => [\"porzio@porzio.com\", \"porzio@porziols.com\"].indexOf(i.loginName.toLowerCase()) === -1),\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n handleCreate = () => {\r\n this.setState({\r\n showTaskDialog: true,\r\n inputAction: CrudAction.CREATE,\r\n updateData: null,\r\n });\r\n }\r\n\r\n handleUpdate = (_updateData) => {\r\n this.setState({\r\n inputAction: CrudAction.UPDATE,\r\n updateData: _updateData,\r\n },\r\n () => {\r\n this.setState({ showTaskDialog: true, })\r\n }\r\n );\r\n }\r\n\r\n getFullName = (_allUsersList, _taskAssignedTo) => {\r\n const oFoundUser = _allUsersList.find(u => u.id === _taskAssignedTo);\r\n let oOutName = \"\";\r\n if (oFoundUser) {\r\n if (oFoundUser.hasOwnProperty('firstName')) {\r\n oOutName = oOutName + oFoundUser.firstName;\r\n }\r\n if (oFoundUser.hasOwnProperty('lastName')) {\r\n oOutName = oOutName + \" \" + oFoundUser.lastName;\r\n }\r\n }\r\n return oOutName;\r\n }\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.TASK.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n {/* Header */}\r\n { }, title: \"Menu\", iconColor: \"primary\" },\r\n ]}\r\n rightActions={[\r\n { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"Create\", iconColor: \"secondary\", onClick: this.handleCreate, isReadOnly: RolePermissionService.TASK_DETAIL.cannotCreate },\r\n { icon: MatIconService.RELOAD, title: \"Reload\", iconColor: \"secondary\", onClick: () => { this.fetchData(true); }, },\r\n ]}\r\n />\r\n {/* Grid */}\r\n \r\n {this.state.data.map((o, index, array) => (\r\n \r\n this.handleUpdate(o)} alignItems=\"flex-start\">\r\n {MatIconService.TASK_32}\r\n \r\n \r\n {this.getFullName(this.state.allUsersList, o.taskAssignedTo)}\r\n \r\n
    \r\n \r\n {o.taskDueDate.substring(0, 10)}\r\n \r\n
    \r\n }\r\n />\r\n \r\n \r\n {/* {true && index < array.length - 1 ? : null} */}\r\n \r\n ))}\r\n
    \r\n\r\n {this.state.showTaskDialog ?\r\n this.setState({ showTaskDialog: false })}\r\n />\r\n : null}\r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true, this.context);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(TaskListComponent);\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\nimport { GST_API } from \"../../../shared/types/enums\";\r\n\r\nexport default class NewsFeedService {\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n\r\n return ApiService.fetchHTTP_API(GST_API.TenantConfig, `/Newsfeed/FetchNewsfeeds?tenantId=${clientAuthContext.user.tenantId}`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n orderClause: \"\",\r\n whereClause: \"\",\r\n userId: clientAuthContext.user.userId,\r\n tenantId: clientAuthContext.user.tenantId,\r\n screenId: 0,\r\n rolePermissionId: 0,\r\n isPorzio: clientAuthContext.user.tenantId === 1 ? true : false,\r\n pageNumber: 1,\r\n pageSize: 1000\r\n }),\r\n });\r\n }\r\n}\r\n","import { of, ReplaySubject } from \"rxjs\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, } from \"../../../../shared/types/enums\";\r\n\r\nexport default class NewsFeedDetailsService {\r\n /** Step-1/3\r\n * make sure the lookup observable is mentioned here,\r\n * this is used to fetch commonly used observables after the user logs in,\r\n * using the rxJs's combine latest operator\r\n * */\r\n static fetchNewsFeedDetailsLookupsOBS() {\r\n return [\r\n NewsFeedDetailsService.getNewsFeedByIdAsOBS(),\r\n ];\r\n }\r\n\r\n /** STEP-2/3\r\n * Clear the cache\r\n * This function should be called after the user Login/Logout,\r\n * The reson for clering the cache on user login is the lookups are populated for context.user.tenantId,\r\n */\r\n static clearAll() {\r\n NewsFeedDetailsService._ASSIGNEDTOFULLUSER = [];\r\n }\r\n\r\n /** STEP 3/3\r\n * Define the fetch logic below\r\n */\r\n // _BUSINESSRULE\r\n static _NEWSFEEDBYID = [];\r\n static getNewsFeedByIdAsOBS = (_context, newsfeedId) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(NewsFeedDetailsService._NEWSFEEDBYID)) {\r\n oSubject.next(NewsFeedDetailsService._NEWSFEEDBYID);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Newsfeed/FetchNewsfeedById?tenantId=${_context.user.tenantId}&newsfeedId=${newsfeedId}&isPorzioAdmin=${true}`,\r\n JSON.stringify({\r\n }),\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n NewsFeedDetailsService._NEWSFEEDBYID = _data;\r\n oSubject.next(NewsFeedDetailsService._NEWSFEEDBYID);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n}\r\n","import React, { Component, createRef } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n TextField,\r\n Grid,\r\n FormGroup,\r\n FormHelperText,\r\n Input,\r\n} from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport {\r\n ResultStatus,\r\n CrudAction,\r\n API_ENDPOINT,\r\n} from \"../../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport NewsFeedDetailsService from \"./newsFeedDetailsService\";\r\nimport { Editor } from 'react-draft-wysiwyg';\r\nimport { EditorState, convertToRaw, ContentState } from 'draft-js';\r\nimport draftToHtml from 'draftjs-to-html';\r\nimport htmlToDraft from 'html-to-draftjs';\r\nimport '../../../../../node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport OktaAuthService from \"../../../../public/authentication/oktaAuthService\";\r\n\r\nclass NewsfeedDetailsComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n lastValidatedMaterialName = null;\r\n lastValidatedMaterialResult = false;\r\n link = createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n newsfeedTypeList: [],\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n editorState: EditorState.createEmpty(),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n try {\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getNewsfeedTypesAsOBS(this.context),\r\n LookupService.getActiveTenantsAsObs(true)\r\n ]).subscribe(([_newsfeedTypeList, _companies]) => {\r\n _companies = _companies.filter(x => x.tenantid !== 1);\r\n this.setState({ newsfeedTypeList: _newsfeedTypeList },\r\n () => {\r\n var _companyList = DataService.getKeyValueCollection(_companies, \"tenantid\", \"tenantName\", false);\r\n if (_companyList.length > 0) { _companyList = DataService.addElementAll(_companyList, \"id\"); }\r\n\r\n var _selCompanyList = [];\r\n _selCompanyList = DataService.getKeyValueCollection(_selCompanyList, \"id\", \"name\", false);\r\n // change the state after all the above are assigned\r\n this.setState({\r\n selCompanyList: _selCompanyList,\r\n companyList: _companyList,\r\n fetchResult: ResultStatus.LOADED,\r\n });\r\n }\r\n );\r\n })\r\n );\r\n } catch { this.setState({ fetchResult: ResultStatus.ERROR }); }\r\n } else {\r\n try {\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getNewsfeedTypesAsOBS(this.context),\r\n NewsFeedDetailsService.getNewsFeedByIdAsOBS(this.context, this.props.updateData.newsfeedId),\r\n LookupService.getUserTenantsAsOBS(this.context)\r\n ]).subscribe(([_newsfeedTypeList, _newsFeedById, _companies]) => {\r\n const blocksFromHtml = htmlToDraft(_newsFeedById.newsfeedText);\r\n const { contentBlocks, entityMap } = blocksFromHtml;\r\n const contentState = ContentState.createFromBlockArray(contentBlocks, entityMap);\r\n const newEditorState = EditorState.createWithContent(contentState);\r\n _companies = _companies.filter(x => x.tenantid !== 1);\r\n this.setState(\r\n {\r\n newsfeedTypeList: _newsfeedTypeList,\r\n newsFeedById: _newsFeedById,\r\n editorState: newEditorState\r\n },\r\n () => {\r\n var _companyList = DataService.getKeyValueCollection(_companies, \"tenantid\", \"tenantName\", false);\r\n if (_companyList.length > 0) { _companyList = DataService.addElementAll(_companyList, \"id\"); }\r\n var _selCompanyList = [];\r\n _selCompanyList = DataService.getKeyValueCollection(_selCompanyList, \"id\", \"name\", false);\r\n // change the state after all the above are assigned\r\n this.setState({\r\n selCompanyList: _selCompanyList,\r\n companyList: _companyList,\r\n fetchResult: ResultStatus.LOADED,\r\n });\r\n }\r\n );\r\n })\r\n );\r\n } catch { this.setState({ fetchResult: ResultStatus.ERROR }); }\r\n }\r\n }\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n newsfeedType: \"\",\r\n selCompanyList: [],\r\n newsfeedTitle: \"\",\r\n newsfeedText: \"\",\r\n startDate: null,\r\n endDate: null,\r\n isActive: true,\r\n };\r\n } else {\r\n return {\r\n newsfeedType: this.state.newsFeedById.newsfeedTypeId,\r\n selCompanyList: this.state.newsFeedById.companyList[0] === -1 ? [{ id: 0, text: \"All\" }] :\r\n this.state.companyList.filter(x => this.state.newsFeedById.companyList.includes(x.id)),\r\n newsfeedTitle: this.state.newsFeedById.newsfeedTitle,\r\n newsfeedText: this.state.newsFeedById.newsfeedText,\r\n startDate: new Date(this.state.newsFeedById.newsfeedStartDate),\r\n endDate: new Date(this.state.newsFeedById.newsfeedEndDate),\r\n isActive: true,\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n newsfeedTitle: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 12 characters or less\"),\r\n startDate: Yup.date().nullable(true).required(\"Required\"),\r\n endDate: Yup.date()\r\n .when(\"startDate\",\r\n (startDate, yup) => {\r\n if (startDate) {\r\n var d = startDate;\r\n d.setHours(0, 0, 0, 0);\r\n return yup.nullable(true).required(\"Required\").min(d, \"Due date cannot be before Start date\")\r\n } else {\r\n return yup.nullable(true).required(\"Required\")\r\n }\r\n }),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n const formData = new FormData();\r\n formData.append(\"newsfeedTypeId\", _formikProps.values.newsfeedType);\r\n formData.append(\"createdBy\", this.context.user.userId);\r\n formData.append(\r\n \"newsfeedTypeText\",\r\n this.state.newsfeedTypeList.find(\r\n (x) => x.newsfeedTypeId === _formikProps.values.newsfeedType\r\n ).newsfeedTypeText\r\n );\r\n formData.append(\"newsfeedTypeIcon\", \"\");\r\n if (this.context.user.tenantId === 1) {\r\n let tempCompList = DataService.getScopeKeys(this.state.selCompanyList, this.state.companyList, \"id\");\r\n tempCompList.forEach((item) => formData.append(\"companyList[]\", item));\r\n } else {\r\n formData.append(\"companyList\", [this.context.user.tenantId]);\r\n }\r\n formData.append(\"newsfeedTitle\", _formikProps.values.newsfeedTitle);\r\n formData.append(\"tenantId\", this.context.user.tenantId);\r\n formData.append(\"userId\", this.context.user.userId);\r\n formData.append(\"newsfeedText\", draftToHtml(convertToRaw(this.state.editorState.getCurrentContent())));\r\n formData.append(\"newsfeedStartDate\", this.props.inputAction !== CrudAction.CREATE ? this.state.newsFeedById.newsfeedStartDate !== _formikProps.values.startDate ?\r\n _formikProps.values.startDate.toISOString().substring(0, 10) : this.state.newsFeedById.newsfeedStartDate : _formikProps.values.startDate.toISOString().substring(0, 10));\r\n formData.append(\"newsfeedEndDate\", this.props.inputAction !== CrudAction.CREATE ? this.state.newsFeedById.newsfeedEndDate !== _formikProps.values.endDate ?\r\n _formikProps.values.endDate.toISOString().substring(0, 10) : this.state.newsFeedById.newsfeedEndDate : _formikProps.values.endDate.toISOString().substring(0, 10));\r\n formData.append(\"attachment\", this.state.selectedFileName);\r\n formData.append(\"feedStatus\", true);\r\n formData.append(\"blobName\", \"\");\r\n formData.append(\"isPorzioNewsfeed\", true);\r\n formData.append(\"isNewsFeedTypeViewPermission\", true);\r\n formData.append(\"isNewsFeedTypeEditPermission\", true);\r\n formData.append(\"isNewsFeedTypeDeletePermission\", true);\r\n formData.append(\"isNewsFeedTypeViewDeletePermission\", true);\r\n formData.append(\"fieldLovId\", 0);\r\n formData.append(\"updatedDate\", \"2020-08-19\");\r\n formData.append(\"efile\", this.state.selectedFile);\r\n\r\n // 3) determine the action and assign the appropriate props\r\n const actionVerb = \"POST\";\r\n const targetUrl = `${process.env.REACT_APP_TENANT_HTTP}/Newsfeed/SaveNewsfeed?tenantId=${this.context.user.tenantId}&isPorzioAdmin=true`;\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n // CREATE\r\n formData.append(\"newsfeedId\", 0);\r\n } else {\r\n // UPDATE\r\n formData.append(\"newsfeedId\", this.state.newsFeedById.newsfeedId);\r\n }\r\n\r\n // Do not set the Content-type in the headers below. Let the browser set it. For example\r\n // Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3sy40ozPAfPAnNRy\r\n // The browser handles and controls the random string at the end of the boundary\r\n const headers = {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n };\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.TENANT, targetUrl, formData, headers).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.onRefresh(true);\r\n this.props.onClose(false);\r\n ToastService.showSuccess(\"Newsfeed Saved\");\r\n } else {\r\n console.error(\"Error: falsey successResult while saving Newsfeed\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n ToastService.showError(\"An Error occured while saving the Newsfeed\");\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Newsfeed\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n ToastService.showError(\"An Error occured while saving the Newsfeed\");\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.error(\"Error caught while saving Newsfeed\", erroObj);\r\n erroObj.inner && erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n\r\n onEditorStateChange = (editorState) => {\r\n this.setState({ editorState });\r\n };\r\n\r\n onCompanyChanged = async (_formikProps, _newValues) => {\r\n // 1) set the newely selUsersList\r\n this.setState({ selCompanyList: _newValues }); // this is not formik equivalent, but updating just for reference\r\n // 2) clear others if is selected\r\n if (DataService.hasElements(_newValues)) {\r\n await this._clearOthersIfAllIsSelected(_newValues, _formikProps, \"selCompanyList\");\r\n }\r\n };\r\n\r\n // Utils\r\n _clearOthersIfAllIsSelected = async (_newValues, _formikProps, _propName) => {\r\n // check for Item\r\n const itemAll = DataService.getFirstOrDefault(\r\n _newValues.filter((x) => x.id === LookupService.allElement.id)\r\n );\r\n // if is selected and is not the only selected item, then clear others\r\n if (itemAll) {\r\n // then clear the others except All\r\n await _formikProps.setFieldValue(_propName, [itemAll], true);\r\n this.setState({ [_propName]: [{ id: -1 }] });\r\n }\r\n };\r\n handleDownload = async () => {\r\n ToastService.showInfo(this.state.newsFeedById.blobName);\r\n\r\n if (this.link.current.href) { return }\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Newsfeed/DownloadNewsfeedDocument/${this.context.user.tenantId}?blobName=${this.state.newsFeedById.blobName}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n );\r\n const blob = await result.blob();\r\n const href = window.URL.createObjectURL(blob);\r\n this.link.current.download = this.state.newsFeedById.blobName;\r\n this.link.current.href = href;\r\n this.link.current.click();\r\n return;\r\n };\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.NEWSFEED_DETAIL.cannotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n Newsfeed Details\r\n {this.props.inputAction === CrudAction.UPDATE ? RolePermissionService.NEWSFEED_DETAIL.cannotEdit ? LayoutService.getIconButton(false, MatIconService.CLOSE, \"close\",\r\n () => { this.props.onClose(false) }, \"secondary\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"newsfeedType\", \"Newsfeed Type\", this.state.newsfeedTypeList, \"newsfeedTypeId\", \"newsfeedTypeText\", \"98%\")}\r\n {this.context.user.tenantId === 1 ? {LayoutService.getChipSelect(this.state.isReadOnly, classes, fProps, \"selCompanyList\", \"Company\", this.state.companyList, \"id\", \"text\", this.onCompanyChanged, \"98%\")} : null}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n Attachment\r\n \r\n this.setState({\r\n selectedFile: event.target.files[0],\r\n selectedFileName: event.target.files[0].name,\r\n })\r\n } />\r\n\r\n
    \r\n Attached File:\r\n {this.props.inputAction === CrudAction.UPDATE ? this.state.newsFeedById.attachment : \"\"}\r\n {LayoutService.getIconButton(this.state.isReadOnly, MatIconService.DOWNLOAD, \"Download\", () => { }, \"secondary\", \"keyActionCancel\")}\r\n
    \r\n
    \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isActive\", \"Active\")}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }}\r\n onRetry={() => { }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(NewsfeedDetailsComponent);","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n TextField,\r\n Grid,\r\n FormGroup,\r\n FormHelperText,\r\n Input,\r\n} from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport {\r\n ResultStatus,\r\n CrudAction,\r\n API_ENDPOINT,\r\n} from \"../../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport NewsFeedDetailsService from \"./newsFeedDetailsService\";\r\nimport { Editor } from 'react-draft-wysiwyg';\r\nimport { EditorState, convertToRaw, ContentState } from 'draft-js';\r\nimport draftToHtml from 'draftjs-to-html';\r\nimport htmlToDraft from 'html-to-draftjs';\r\nimport '../../../../../node_modules/react-draft-wysiwyg/dist/react-draft-wysiwyg.css';\r\n\r\nclass NewsfeedSummaryComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n lastValidatedMaterialName = null;\r\n lastValidatedMaterialResult = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n newsfeedTypeList: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n try {\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getNewsfeedTypesAsOBS(this.context),\r\n NewsFeedDetailsService.getNewsFeedByIdAsOBS(this.context, this.props.updateData.newsfeedId),\r\n ]).subscribe(([_newsfeedTypeList, _newsFeedById]) => {\r\n const blocksFromHtml = htmlToDraft(_newsFeedById.newsfeedText);\r\n const { contentBlocks, entityMap } = blocksFromHtml;\r\n const contentState = ContentState.createFromBlockArray(contentBlocks, entityMap);\r\n const newEditorState = EditorState.createWithContent(contentState);\r\n this.setState(\r\n {\r\n newsfeedTypeList: _newsfeedTypeList,\r\n newsFeedById: _newsFeedById,\r\n editorState: newEditorState\r\n },\r\n () => {\r\n this.setState({\r\n fetchResult: ResultStatus.LOADED,\r\n });\r\n }\r\n );\r\n })\r\n );\r\n } catch {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n {this.state.newsfeedTypeList.find(x => x.newsfeedTypeId === this.state.newsFeedById.newsfeedTypeId).newsfeedTypeText}\r\n \r\n {\r\n this.props.onClose(false);\r\n }}\r\n >\r\n {MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.newsFeedById.newsfeedTitle}\r\n \r\n \r\n \r\n \r\n {/* \r\n {this.state.newsFeedById.newsfeedText}\r\n */}\r\n \r\n \r\n \r\n {this.state.newsFeedById.newsfeedStartDate.substring(0, 10)}\r\n \r\n \r\n
    \r\n Attached File:\r\n {this.state.newsFeedById.attachment}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.props.onClose(false);\r\n }}\r\n onRetry={() => {\r\n console.log(\"Retry Clicked\");\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(NewsfeedSummaryComponent);\r\n","import React from \"react\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport { withStyles, Typography, List, ListItem, ListItemText, ListItemIcon, Divider, Dialog, } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport NewsFeedService from \"./newsFeedService\";\r\nimport NewsfeedDetailsComponent from \"./news-feed-details/newsFeedDetailsComponent\";\r\nimport NewsfeedSummaryComponent from \"./news-feed-details/newsFeedSummaryComponent\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass NewsFeedComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = NewsFeedService;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n data: [],\r\n modalShow: false,\r\n summaryModalShow: false,\r\n inputAction: CrudAction.CREATE,\r\n updateData: null,\r\n newsfeedTypeList: [],\r\n };\r\n // bindings\r\n this.fetchData.bind(this);\r\n this.handleHide = this.handleHide.bind(this);\r\n }\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n this.STORE.getObs(_ignoreCache, this.context),\r\n LookupService.getNewsfeedTypesAsOBS(this.context),\r\n ])\r\n .subscribe(\r\n ([o, _newsfeedTypeList]) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.STORE.CACHE.SET(o);\r\n this.setState({\r\n data: o,\r\n newsfeedTypeList: _newsfeedTypeList,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n handleCreateModal = () => {\r\n this.setState({\r\n modalShow: true,\r\n inputAction: CrudAction.CREATE,\r\n updateData: null,\r\n });\r\n };\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n handleUpdate = (_updateData) => {\r\n this.setState({\r\n modalShow: true,\r\n inputAction: CrudAction.UPDATE,\r\n updateData: _updateData,\r\n });\r\n }\r\n handleSummaryShow = (_updateData) => {\r\n this.setState({ summaryModalShow: true, updateData: _updateData })\r\n }\r\n handleSummaryHide = () => {\r\n this.setState({ summaryModalShow: false })\r\n }\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.NEWSFEED.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n { }, title: \"Menu\", iconColor: \"primary\" },\r\n ]}\r\n rightActions={[\r\n { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"Create\", iconColor: \"secondary\", onClick: this.handleCreateModal, isReadOnly: RolePermissionService.NEWSFEED_DETAIL.cannotCreate },\r\n { icon: MatIconService.RELOAD, title: \"Reload\", iconColor: \"secondary\", onClick: () => { this.fetchData(true); }, },\r\n ]}\r\n />\r\n\r\n {/* Component Body */}\r\n \r\n {this.state.data.map((o, index, array) => (\r\n \r\n \r\n this.handleUpdate(o)}>{MatIconService.NEWS_FEED}\r\n this.handleSummaryShow(o)} primary={this.state.newsfeedTypeList.find(x => x.newsfeedTypeId === o.newsfeedTypeId)?.newsfeedTypeText}\r\n secondary={\r\n \r\n {o.newsfeedTitle}
    \r\n {o.newsfeedStartDate.substring(0, 10)}\r\n
    \r\n }\r\n />\r\n
    \r\n \r\n
    \r\n ))}\r\n
    \r\n \r\n { this.fetchData(true); }}\r\n inputAction={this.state.inputAction}\r\n updateData={this.state.updateData}\r\n />\r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.fetchData(true); }} />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default withStyles(MatClassService)(NewsFeedComponent);","import { of, ReplaySubject } from \"rxjs\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, } from \"../../../../shared/types/enums\";\r\n\r\nexport default class EventDetailsService {\r\n /** Step-1/3\r\n * make sure the lookup observable is mentioned here,\r\n * this is used to fetch commonly used observables after the user logs in,\r\n * using the rxJs's combine latest operator\r\n * */\r\n static fetchEventDetailsLookupsOBS() {\r\n return [\r\n EventDetailsService.getEventByIdAsOBS(),\r\n ];\r\n }\r\n\r\n /** STEP-2/3\r\n * Clear the cache\r\n * This function should be called after the user Login/Logout,\r\n * The reson for clering the cache on user login is the lookups are populated for context.user.tenantId,\r\n */\r\n static clearAll() {\r\n EventDetailsService._ASSIGNEDTOFULLUSER = [];\r\n }\r\n\r\n /** STEP 3/3\r\n * Define the fetch logic below\r\n */\r\n // _BUSINESSRULE\r\n static _EVENTBYID = [];\r\n static getEventByIdAsOBS = (_context, eventId) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(EventDetailsService._EVENTBYID)) {\r\n oSubject.next(EventDetailsService._EVENTBYID);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Calendar/GetEventById/${_context.user.tenantId}/${eventId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n EventDetailsService._EVENTBYID = _data;\r\n oSubject.next(EventDetailsService._EVENTBYID);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n}\r\n","import React from \"react\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { AppBar, Box, DialogTitle, DialogContent, FormHelperText, Grid, Input, TextField, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { DatePicker, TimePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, } from \"../../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport EventDetailsService from \"./eventDetailsService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nimport { format } from \"date-fns\";\r\nimport OktaAuthService from \"../../../../public/authentication/oktaAuthService\";\r\n\r\nclass EventDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n eventById: {},\r\n userTenantList: [],\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n fetchResult: ResultStatus.LOADED,\r\n isEdit: this.props.inputAction !== CrudAction.CREATE\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n // this.setState({ fetchResult: ResultStatus.LOADED });\r\n console.log(this.props);\r\n this.context.user.tenantId === 1 ? this.setState({ isPorzio: true }) : this.setState({ isPorzio: false });\r\n if (this.state.isEdit) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchEventDetailsById();\r\n }\r\n this.fetchTenants();\r\n\r\n }\r\n\r\n fetchTenants = async () => {\r\n if (this.context.user.tenantId === 1) {\r\n const getUserTenantsResult = await fetch(`${process.env.REACT_APP_IDENTITY_HTTP}/User/GetUserTenants?userId=${this.context.user.userId}`);\r\n var getUserTenantsJson = await getUserTenantsResult.json();\r\n getUserTenantsJson = DataService.getKeyValueCollection(getUserTenantsJson, \"tenantid\", \"tenantName\", true);\r\n this.setState({ userTenantList: getUserTenantsJson }, () => {\r\n console.log(this.state.userTenantList);\r\n });\r\n }\r\n else {\r\n this.setState({ selEventVisibilityList: [this.context.user.tenantId] });\r\n }\r\n }\r\n\r\n fetchEventDetailsById = async () => {\r\n try {\r\n this.oSubscriptions.add(\r\n EventDetailsService.getEventByIdAsOBS(this.context, this.props.updateData.eventId)\r\n .subscribe((_eventById) => {\r\n _eventById.eventStartTime = format(new Date(_eventById.eventStartDate.substring(0, 4), _eventById.eventStartDate.substring(5, 7), _eventById.eventStartDate.substring(8, 10), _eventById.eventStartTime.hours, _eventById.eventStartTime.minutes, _eventById.eventStartTime.seconds), \"yyyy-MM-dd HH:mm:ss\");\r\n _eventById.eventEndTime = format(new Date(_eventById.eventEndDate.substring(0, 4), _eventById.eventEndDate.substring(5, 7), _eventById.eventEndDate.substring(8, 10), _eventById.eventEndTime.hours, _eventById.eventEndTime.minutes, _eventById.eventEndTime.seconds), \"yyyy-MM-dd HH:mm:ss\");\r\n this.setState(\r\n {\r\n eventById: _eventById,\r\n },\r\n () => {\r\n console.log(this.state.eventById);\r\n var now = new Date();\r\n console.log(now);\r\n console.log();\r\n\r\n this.setState({\r\n fetchResult: ResultStatus.LOADED,\r\n });\r\n }\r\n );\r\n })\r\n );\r\n } catch {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n }\r\n getInitialValues() {\r\n const dt = new Date();\r\n dt.setHours(0, 0, 0, 0);\r\n return {\r\n selEventVisibilityList: this.state.isEdit ? [] : [],//TODO\r\n eventTypeId: this.state.isEdit ? this.state.eventById.eventTypeId : 365,\r\n eventTitle: this.state.isEdit ? this.state.eventById.eventTitle : \"\",\r\n eventStartDate: this.state.isEdit ? new Date(this.state.eventById.eventStartDate) : null,\r\n eventEndDate: this.state.isEdit ? new Date(this.state.eventById.eventEndDate) : null,\r\n eventStartTime: this.state.isEdit ? this.state.eventById.eventStartTime : null,\r\n eventEndTime: this.state.isEdit ? this.state.eventById.eventEndTime : null,\r\n alldayevent: this.state.isEdit ? this.state.eventById.alldayevent : false,\r\n eventBody: this.state.isEdit ? this.state.eventById.eventBody : \"\",\r\n attachmentName: this.state.isEdit ? this.state.eventById.attachmentName : \"\",\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n //selEventVisibilityList: Yup.array(),\r\n eventTypeId: Yup.number().required(\"Required\").typeError(\"Required\"),\r\n eventTitle: Yup.string().required(\"Required\").max(256, \"Must be 256 characters or less\"),\r\n eventStartDate: Yup.date().nullable(true).required(\"Required\"),\r\n eventEndDate: Yup.date()\r\n .when(\"eventStartDate\",\r\n (startDate, yup) => {\r\n if (startDate) {\r\n var d = startDate;\r\n d.setHours(0, 0, 0, 0);\r\n return yup.nullable(true).required(\"Required\").min(d, \"Due date cannot be before Start date\")\r\n } else {\r\n return yup.nullable(true).required(\"Required\")\r\n }\r\n }),\r\n eventStartTime: Yup.string().nullable(true).required(\"Required\"),\r\n eventEndTime: Yup.string().nullable(true).required(\"Required\"),\r\n //alldayevent: Yup.boolean().required(\"Required\"),\r\n eventBody: Yup.string(),\r\n attachmentName: Yup.string(),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n console.log(\"_formikProps\", _formikProps);\r\n\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING, });\r\n\r\n var selEventVisibilityListIds = [];\r\n\r\n const itemAll = DataService.getFirstOrDefault(_formikProps.values.selEventVisibilityList.filter((x) => x.id === LookupService.allElement.id));\r\n if (itemAll) {\r\n selEventVisibilityListIds = DataService.removeElementAll(this.state.userTenantList, \"id\").map((x) => x.id);\r\n } else {\r\n selEventVisibilityListIds = _formikProps.values.selEventVisibilityList.map(x => x.id);\r\n }\r\n\r\n console.log(selEventVisibilityListIds.join());\r\n //console.log(this.state.eventById);\r\n console.log(_formikProps.values.eventEndTime);\r\n // 2) extract the formik values into a FormData object\r\n const formData = new FormData();\r\n formData.append(\"EventVisibilityId\", this.state.isPorzio ? selEventVisibilityListIds.join() : this.context.user.tenantId);\r\n formData.append(\"EventTypeId\", _formikProps.values.eventTypeId);\r\n formData.append(\"EventTitle\", _formikProps.values.eventTitle);\r\n formData.append(\"EventStartDate\", this.state.eventById.eventStartDate !== _formikProps.values.eventStartDate ?\r\n _formikProps.values.eventStartDate.toISOString().substring(0, 10) : this.state.eventById.eventStartDate);\r\n formData.append(\"EventEndDate\", this.state.eventById.eventEndDate !== _formikProps.values.eventEndDate ?\r\n _formikProps.values.eventEndDate.toISOString().substring(0, 10) : this.state.eventById.eventEndDate);\r\n\r\n formData.append(\"EventStartTime\", new Date(_formikProps.values.eventStartTime).toTimeString().substring(0, 8));\r\n formData.append(\"EventEndTime\", new Date(_formikProps.values.eventEndTime).toTimeString().substring(0, 8));\r\n\r\n formData.append(\"ALLDAYEVENT\", _formikProps.values.alldayevent);\r\n formData.append(\"EventBody\", _formikProps.values.eventBody);\r\n formData.append(\"CreateBy\", this.context.user.userId);\r\n formData.append(\"IsActive\", true);\r\n\r\n formData.append(\"AttachmentName\", this.state.selectedFileName ? this.state.selectedFileName : \"\");\r\n formData.append(\"BlobName\", \"\");\r\n //formData.append(\"efile\", this.state.selectedFile ? this.state.selectedFile : null);\r\n if (this.state.selectedFile) {\r\n //formData.append(\"AttachmentName\", this.state.selectedFileName);\r\n formData.append(\"efile\", this.state.selectedFile);\r\n }\r\n\r\n // 3) determine the action and assign the appropriate props\r\n const actionVerb = \"POST\";\r\n const targetUrl = `${process.env.REACT_APP_TENANT_HTTP}/Calendar/CreateOrUpdateEvent/${this.context.user.tenantId}`;\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n // CREATE\r\n formData.append(\"EventId\", 0);\r\n } else {\r\n // UPDATE\r\n formData.append(\"EventId\", this.props.updateData.eventId);\r\n }\r\n\r\n // Do not set the Content-type in the headers below. Let the browser set it. For example\r\n // Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3sy40ozPAfPAnNRy\r\n // The browser handles and controls the random string at the end of the boundary\r\n const headers = {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n };\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n formData,\r\n headers\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshEventList(true,\r\n this.state.eventById.eventStartDate !== _formikProps.values.eventStartDate ?\r\n new Date(_formikProps.values.eventStartDate) : new Date(this.state.eventById.eventStartDate)\r\n );\r\n this.props.onClose(false);\r\n ToastService.showSuccess(\"Event Saved\");\r\n } else {\r\n console.error(\"Error: falsey successResult while saving Calender Event\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n ToastService.showError(\"An Error occured while saving the Event\");\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Calender Event\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n ToastService.showError(\"An Error occured while saving the Event\");\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(\"erroObj\", erroObj);\r\n erroObj.inner && erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n onEventVisibilityChange = async (_formikProps, _newValues) => {\r\n //console.log(_newValues);\r\n // check for Item\r\n const itemAll = DataService.getFirstOrDefault(_newValues.filter((x) => x.id === LookupService.allElement.id));\r\n // if is selected and is not the only selected item, then clear others\r\n if (itemAll && _newValues.length !== 1) {\r\n // then clear the others except All\r\n await _formikProps.setFieldValue(\"selEventVisibilityList\", [itemAll], true);\r\n this.setState({ selEventVisibilityList: [itemAll] }, () => {\r\n console.log(this.state.selEventVisibilityList)\r\n });\r\n }\r\n }\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.EVENT_DETAIL.cannotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n Event Detail\r\n {/* { this.handleSubmit(fProps); }}> {MatIconService.OK} \r\n { this.props.onClose(false); }}> {MatIconService.CANCEL} */}\r\n {this.props.inputAction === CrudAction.UPDATE ? RolePermissionService.EVENT_DETAIL.cannotEdit ? LayoutService.getIconButton(false, MatIconService.CLOSE, \"close\",\r\n () => { this.props.onClose(false) }, \"secondary\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n {this.state.isPorzio ? {LayoutService.getChipSelect(this.state.isReadOnly, classes, fProps, \"selEventVisibilityList\", \"Event Visibility\", this.state.userTenantList, \"id\", \"text\", this.onEventVisibilityChange, \"90%\", true)} : <>}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"eventTypeId\", \"Event Type\", LookupService.EVENTTYPES, \"id\", \"name\", \"90%\", false)}\r\n\r\n \r\n\r\n\r\n \r\n \r\n\r\n \r\n \r\n\r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"alldayevent\", \"All Day Event\", false)} \r\n\r\n \r\n\r\n \r\n Attachment\r\n this.setState({ selectedFile: event.target.files[0], selectedFileName: event.target.files[0].name })} fullWidth />\r\n
    \r\n Attached File:\r\n {this.props.inputAction === CrudAction.UPDATE ? this.state.eventById.attachmentName : \"\"}\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n //this.SERVICE.fetchData(this, true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(EventDetailsComponent);","import ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\nimport { GST_API } from \"../../../shared/types/enums\";\r\n\r\nexport default class EventCalendarStore {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext, date) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext, date);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n // static fetchFromApiObsOld(clientAuthContext) {\r\n // // clear the cache before returning the actual subscription\r\n // this.CACHE.CLEAR();\r\n // // replace this._jsonData with reacl ApiCall\r\n // return ApiService.fetchObs(`/Calendar/GetCalendarToolTipDetails?tenantId=${clientAuthContext.user.tenantId}&eventVisiblityId=${clientAuthContext.user.tenantId}&id=82`);\r\n // }\r\n\r\n static fetchFromApiObs(clientAuthContext, oDate) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n return ApiService.fetchHTTP_API(GST_API.TenantConfig, `/Calendar/GetCalendar/${clientAuthContext.user.tenantId}?date=${oDate.toISOString().substring(0, 10)}`);\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport { withStyles } from \"@material-ui/core\";\r\nimport { Grid, Dialog, Typography, List, ListItem, ListItemText, ListItemIcon, Divider } from \"@material-ui/core\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageHeaderComponent from \"../../../shared/components/page/pageHeaderComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport EventDetailsComponent from \"./event-details/eventDetailsComponent\";\r\nimport EventCalendarStore from \"./eventCalendarStore\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass EventCalendarComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = EventCalendarStore;\r\n\r\n state = {\r\n data: [],\r\n dataToDisplay: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n selectedDate: new Date(),\r\n showDetailsDialog: false,\r\n inputAction: CrudAction.CREATE,\r\n updateData: null,\r\n };\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false, oDate) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n if (oDate === undefined) {\r\n oDate = new Date();\r\n }\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context, oDate).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.STORE.CACHE.SET(o);\r\n this.setState({\r\n data: o,\r\n dataToDisplay: o,\r\n selectedDate: oDate,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n handleDetailsDialogClose = (_result) => {\r\n if (_result) {\r\n // relod the componenet if needed\r\n }\r\n this.setState({\r\n showDetailsDialog: false,\r\n });\r\n };\r\n\r\n handleCreate = () => {\r\n this.setState({\r\n showDetailsDialog: true,\r\n inputAction: CrudAction.CREATE,\r\n updateData: null,\r\n });\r\n }\r\n\r\n handleUpdate = (_updateData) => {\r\n this.setState({\r\n showDetailsDialog: true,\r\n inputAction: CrudAction.UPDATE,\r\n updateData: _updateData,\r\n });\r\n }\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.EVENT.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n { }, title: \"Menu\", iconColor: \"primary\" },\r\n ]}\r\n rightActions={[\r\n { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"Create\", iconColor: \"secondary\", onClick: this.handleCreate, isReadOnly: RolePermissionService.EVENT_DETAIL.cannotCreate },\r\n { icon: MatIconService.RELOAD, title: \"Reload\", iconColor: \"secondary\", onClick: () => { this.fetchData(true); }, },\r\n ]}\r\n />\r\n \r\n \r\n \r\n {\r\n this.setState({\r\n selectedDate: oDate\r\n },\r\n () => {\r\n this.fetchData(true, oDate);\r\n });\r\n }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n {this.state.dataToDisplay.map((o, index, array) => (\r\n \r\n this.handleUpdate(o)} alignItems=\"flex-start\">\r\n {MatIconService.EVENT_ALARM}\r\n \r\n \r\n {o.eventStartDate.substring(0, 10)}\r\n \r\n
    \r\n \r\n {o.eventStartTime}\r\n \r\n
    \r\n }\r\n />\r\n \r\n \r\n\r\n {/* {true && index < array.length - 1 ? : null} */}\r\n
    \r\n ))}\r\n \r\n \r\n {/* Details-Modal */}\r\n \r\n \r\n \r\n\r\n \r\n );\r\n\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(false);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(EventCalendarComponent);\r\n","import React from \"react\";\r\nimport { withStyles, Grid } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport TaskListComponent from \"./task/tasksListComponent\";\r\nimport NewsFeedComponent from \"./news-feed/newsFeedComponent\";\r\nimport EventCalendarComponent from \"./event-calendar/eventCalendarComponent\";\r\n\r\nclass HomeComponent extends React.Component {\r\n static contextType = AuthContext;\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.context.user.tenantId === 1 ? <> : }\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(HomeComponent);\r\n","import React, { Component } from \"react\";\r\nimport { Chip, IconButton, ListItemIcon, Menu, MenuItem, Typography, } from \"@material-ui/core\";\r\nimport { DataService } from \"../../services/dataService\";\r\n\r\nexport default class AgGridActionCellRendererComponent extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = { anchorElement: null };\r\n }\r\n\r\n handleMenuClose = () => {\r\n this.setState({ anchorElement: null });\r\n };\r\n handleMenuClick = (_event) => {\r\n this.setState({ anchorElement: _event.currentTarget });\r\n }\r\n\r\n /**\r\n * menuOptions: [ \r\n * { text: \"text1\", icon: MatIconService.EDIT, onClickCallback: ()=>{} }, \r\n * { text: \"text2\", icon: MatIconService.SAVE, onClickCallback: ()=>{} }, \r\n * ]\r\n */\r\n render() {\r\n const { menuIcon, menuMaxHeight, menuOptions } = this.props;\r\n const _maxHeight = DataService.isValidNumber(menuMaxHeight) ? menuMaxHeight : 45;\r\n const _isOpen = Boolean(this.state.anchorElement); // only if exists\r\n\r\n return (\r\n <>\r\n {menuIcon}\r\n \r\n\r\n {(menuOptions || []).map((_menuOption, index) => (\r\n\r\n {\r\n if (_menuOption.onClickCallback) {\r\n // Note, the this is passed to the caller method\r\n _menuOption.onClickCallback(this);\r\n }\r\n this.handleMenuClose();\r\n }}>\r\n {_menuOption.icon}\r\n {_menuOption.text}\r\n \r\n\r\n // {\r\n // if (_menuOption.onClickCallback) {\r\n // _menuOption.onClickCallback();\r\n // }\r\n // this.handleMenuClose()\r\n // }}>\r\n // {_menuOption.text}\r\n // \r\n ))}\r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport icon_bad from \"../../public/images/icon_bad.png\";\r\nimport icon_process from \"../../public/images/icon_process.png\";\r\nimport icon_verygood from \"../../public/images/icon_verygood.png\";\r\nimport icon_good from \"../../public/images/icon_good.png\";\r\nimport icon_blank from \"../../public/images/icon_blank.png\";\r\nimport icon_delete_black from \"../../public/images/icon_delete_black.gif\";\r\n\r\nexport default class DataCenterFileStatusImageRenderer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.fileStatusMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n switch (this.props.value) {\r\n case \"icon_bad.png\":\r\n return (\r\n \r\n );\r\n case \"icon_process.png\":\r\n return (\r\n \r\n );\r\n case \"icon_verygood.png\":\r\n return (\r\n \r\n );\r\n case \"icon_good.png\":\r\n return (\r\n \r\n );\r\n case \"icon_blank.png\":\r\n return (\r\n \r\n );\r\n case \"icon_delete_black.gif\":\r\n return (\r\n \r\n );\r\n default:\r\n return \"n/a\";\r\n }\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { CircleComponent } from \"../circleComponent/circleComponent.jsx\"\r\n\r\nexport default class healthIndicatorCellRendererComponent extends Component {\r\n STYLES = [\r\n \"circle-error\",\r\n \"circle-warning\",\r\n \"circle-unmatched\",\r\n \"circle-approval\"\r\n ]\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class DataDetailCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.dataDetailMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class DataCountCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.dataCountMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import ApiService from \"../../../../shared/services/apiService\";\r\nimport Cache from \"../../../../shared/store/cache\";\r\nimport { GST_API } from \"../../../../shared/types/enums\";\r\n\r\nexport default class DataTransactionService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, modalAgNode, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(modalAgNode, clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(modalAgNode, clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n\r\n return ApiService.fetchHTTP_API(GST_API.Core, `/Profiles/GetProfileTransactions?tenantId=${clientAuthContext.user.tenantId}&userId=${clientAuthContext.user.userId}&profileId=${modalAgNode.prid}&pageNumber=1&pageSize=500`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n }\r\n\r\n static getColumnDefs(parentThis) {\r\n let arrOut = [];\r\n for (const [key, value] of Object.entries(parentThis.columnMap)) {\r\n arrOut.push({\r\n headerName: value,\r\n field: key,\r\n resizable: true,\r\n width: 125,\r\n });\r\n }\r\n return (arrOut);\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport {\r\n withStyles,\r\n DialogTitle,\r\n DialogContent,\r\n Box,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n InputBase,\r\n} from \"@material-ui/core\";\r\nimport { from, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\n\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { ResultStatus } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\n\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport DataTransactionService from \"./dataTransactionService\";\r\n\r\nconst fetchProfilesBySearchBoxText = async (searchBoxParams) => {\r\n const rowData = await fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/Profiles/GetProfileCount`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n sourceid: searchBoxParams.sourceId,\r\n fileid: String(searchBoxParams.fileId),\r\n healthindicator: \"\",\r\n tenantid: searchBoxParams.user.tenantId,\r\n searchvalue: searchBoxParams.newValue,\r\n pageNumber: 1,\r\n rowsperPage: 250,\r\n isActive: 1,\r\n screenId: 0,\r\n userId: searchBoxParams.user.userId,\r\n searchString: \"\",\r\n taskid: 0,\r\n source: \"Profiles\"\r\n }),\r\n }\r\n ).then((result) => result.json());\r\n return rowData;\r\n};\r\nlet searchSubject = new BehaviorSubject(\"\");\r\nlet SearchResultObservable = searchSubject.pipe(\r\n filter((val) => val.hasOwnProperty('newValue')),\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((val) => from(fetchProfilesBySearchBoxText(val)))\r\n);\r\n\r\nclass DataTransactionComponent extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = DataTransactionService;\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n porzioSearch: \"\",\r\n // frameworkComponents: {\r\n // // dataCountCellRendererComponent: DataCountCellRendererComponent,\r\n // },\r\n };\r\n this.fetchData.bind(this);\r\n this.handleFilterChange.bind(this);\r\n this.columnMap = {\r\n trid: \"Company Transaction ID\",\r\n porziogsttransactionid: \"Porzio GST Transaction ID\",\r\n form: \"Form\",\r\n purpose: \"Purpose\",\r\n transactiondate: \"Transaction Date\",\r\n convertedtotalamount: \"Converted Total Amount\",\r\n transactionconsent: \"Transaction Consent\",\r\n transactiondocuments: \"Transaction Documents\",\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n this.subscription = SearchResultObservable.subscribe((searchResultJson) => {\r\n this.setState({ data: searchResultJson });\r\n });\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.props.modalAgNode, this.context).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n handleFilterChange = () => {\r\n fetch(`${process.env.REACT_APP_BASE_HTTP}/Profiles/${this.context.user.tenantId}/FetchProfiles`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n pageNum: 1,\r\n pageSize: 25,\r\n source: \"Profiles\",\r\n searchBoxText: \"\", //searchBoxText,\r\n recycle: \"1\",\r\n sourceId: 24,\r\n permissions: null,\r\n userType: 3,\r\n fileId: 5069,\r\n healthIndicatorId: null,\r\n SearchString: \"\",\r\n UserId: this.context.user.userId,\r\n ScreenId: 43,\r\n TaskId: 0,\r\n }),\r\n })\r\n .then((result) => result.json())\r\n .then((rowData) => this.setState({ data: rowData }))\r\n .then((rowData) => console.log(rowData))\r\n .catch((err) => console.log(err));\r\n };\r\n handleSearchChange = (e) => {\r\n const newValue = e.target.value;\r\n this.setState({ porzioSearch: newValue });\r\n searchSubject.next({ newValue, ...this.props.modalAgNode, ...this.context });\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n console.log(\"render\", this.state.data);\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n {/* \r\n \r\n \r\n Profile Transaction Details\r\n \r\n
    \r\n
    {MatIconService.SEARCH}
    \r\n \r\n
    \r\n {\r\n this.props.onClose(true);\r\n }}\r\n >\r\n {MatIconService.OK}\r\n \r\n {\r\n this.props.onClose(false);\r\n }}\r\n >\r\n {MatIconService.CANCEL}\r\n \r\n
    \r\n
    */}\r\n
    \r\n \r\n \r\n
    \r\n { event.api.sizeColumnsToFit() }}\r\n >\r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(DataTransactionComponent);\r\n","import React from \"react\";\r\nimport { withStyles, AppBar, Box, Dialog, DialogContent, DialogTitle, Divider, IconButton, Tab, Tabs, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport SectionComponent from \"../../../shared/components/sectionComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ProfileTabComponent from \"../../profile-center/profile-detail/tabs/profileTabComponent\";\r\nimport TransactionTabComponent from \"../../transaction-center/transaction-detail/transaction-tab/transactionTabComponent\";\r\nimport { CrudAction, ENTITY_TYPE } from \"../../../shared/types/enums\";\r\nimport DataTransactionComponent from \"./data-transaction/dataTransactionComponent\";\r\n\r\nclass DataDetailDialogComponent extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedTabIndex: 0,\r\n };\r\n\r\n this.tabIndexMap = new Map();\r\n this.tabIndexMap.set(0, { ref: null });\r\n }\r\n\r\n onTabChange = (event, newValue) => {\r\n this.setState({\r\n selectedTabIndex: newValue,\r\n });\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {this.props.entityId === ENTITY_TYPE.PROFILE ? \"Profile\" : \"Transaction\"} Details\r\n \r\n {\r\n this.props.onClose(false);\r\n }}\r\n >\r\n {MatIconService.CANCEL}\r\n \r\n\r\n \r\n \r\n \r\n \r\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 LayoutService.getHocComponenet(DataDetailDialogComponent);\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { DataService } from \"../../../shared/services/dataService\";\r\nimport { AgGridService } from \"../../../shared/services/ag-grid/agGridService\";\r\n\r\nexport default class DataExpandedViewService {\r\n\r\n static postDataCenterExpandedViewAsOBS = (_tenantId, _userId, _modalAgNode, _healthIndicator, _screenId) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/ExpandedView`,\r\n JSON.stringify({\r\n sourceId: _modalAgNode.sourceId,\r\n entityId: _modalAgNode.sourceTypeId,\r\n fileId: _modalAgNode.fileId,\r\n healthIndicator: _healthIndicator,\r\n tenantId: _tenantId,\r\n isActive: true,\r\n isDeleted: false,\r\n searchValue: \"\",\r\n filterQuery: \"\",\r\n screenId: _screenId,\r\n userId: _userId,\r\n taskId: 0,\r\n rowsPerPage: 100000,\r\n pageNumber: 1,\r\n }),\r\n );\r\n };\r\n\r\n static getDataCenterDisplayedFieldsAsOBS = (_tenantId, _sourceId, _entityId, _userId,_screenId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/DisplayedFields/${_tenantId}/${_sourceId}/${_entityId}/${_userId}/${_screenId}`\r\n );\r\n };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n {\r\n headerName: \"Health Indicator\",\r\n field: \"healthindicator\",\r\n editable: false,\r\n resizable: true,\r\n valueSetter: (params) => {\r\n params.data.healthindicator = Number(params.newValue);\r\n return true;\r\n },\r\n cellRenderer: \"healthIndicatorCellRendererComponent\",\r\n },\r\n {\r\n headerName: \"Rule Violations\",\r\n field: \"ruleviolations\",\r\n editable: false,\r\n valueSetter: (params) => {\r\n params.data.ruleviolations = params.newValue;\r\n return true;\r\n },\r\n resizable: true,\r\n filter: \"text\",\r\n },\r\n // dynamic column from the Api\r\n ...AgGridService.getDynamicColumns(_componentThisRef.state.agGridColumns, true, [\"porziogstprofileid\", \"porziogsttransactionid\"], [{ crId: \"porziogstprofileid\", crVal: \"dataDetailCellRendererComponent\" },{ crId: \"porziogsttransactionid\", crVal: \"dataDetailCellRendererComponent\" }]),\r\n // dropdown column\"\r\n //{ ...AgGridService.getDropdownColumn(\"Country\", \"country\", DataService.arrayToObject(_componentThisRef.state.countryList, \"id\", \"value\")) }\r\n ];\r\n }\r\n\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport {\r\n withStyles,\r\n DialogTitle,\r\n DialogContent,\r\n Box,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n InputBase,\r\n} from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AgGridUtil } from \"../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport { ResultStatus } from \"../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport HealthIndicatorCellRendererComponent from \"../../../shared/components/elements/healthIndicator/healthIndicatorCellRendererComponent\";\r\nimport FieldConfigurationComponent from \"../../../shared/components/field-configuration/fieldConfigurationComponent\";\r\nimport DataDetailCellRendererComponent from \"../data-detail/dataDetailCellRendererComponent\";\r\nimport DataCountCellRendererComponent from \"./dataExpandedViewCellRendererComponent\";\r\nimport DataDetailDialogComponent from \"../data-detail/dataDetailDialogComponent\";\r\nimport DataExpandedViewService from \"./dataExpandedViewService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nconst fetchProfilesBySearchBoxText = async (searchBoxParams) => {\r\n const rowData = await fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/DataCenter/ExpandedView`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n sourceId: searchBoxParams.sourceId,\r\n entityId: searchBoxParams.sourceTypeId,\r\n fileId: Number(searchBoxParams.fileId),\r\n healthIndicator: searchBoxParams.healthIndicator,\r\n tenantId: searchBoxParams.user.tenantId,\r\n isActive: true,\r\n isDeleted: false,\r\n searchValue: searchBoxParams.newValue,\r\n filterQuery: \"\",\r\n screenId: 0,\r\n userId: searchBoxParams.user.userId,\r\n taskId: 0,\r\n rowsPerPage: 25000,\r\n pageNumber: 1,\r\n }),\r\n }\r\n ).then((result) => result.json());\r\n return rowData.map(obj => Object.entries(obj).reduce((a, [key, value]) => {\r\n a[key.toLowerCase()] = value;\r\n return a;\r\n }, {}));\r\n};\r\nlet searchSubject = new BehaviorSubject(\"\");\r\nlet SearchResultObservable = searchSubject.pipe(\r\n filter((val) => val.hasOwnProperty('newValue')),\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((val) => from(fetchProfilesBySearchBoxText(val)))\r\n);\r\n\r\nclass DataExpandedViewComponent extends React.Component {\r\n static contextType = AuthContext;\r\n scopedSubscriptions = new SubscriptionArray();\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n porzioSearch: \"\",\r\n modalAgNode: {},\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n dataCountCellRendererComponent: DataCountCellRendererComponent,\r\n dataDetailCellRendererComponent: DataDetailCellRendererComponent,\r\n healthIndicatorCellRendererComponent: HealthIndicatorCellRendererComponent,\r\n }),\r\n canViewExpandedView: this.props.modalAgNode.sourceTypeId === 1\r\n ? RolePermissionService.PROFILE_EXPANDED_VIEW_DATACENTER.canView\r\n : RolePermissionService.TRANSACTION_EXPANDED_VIEW_DATACENTER.canView\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n\r\n fetchData = () => {\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n DataExpandedViewService.postDataCenterExpandedViewAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode, this.props.healthIndicator, this.props.screenId),\r\n DataExpandedViewService.getDataCenterDisplayedFieldsAsOBS(this.context.user.tenantId, this.props.modalAgNode.sourceId, this.props.modalAgNode.sourceTypeId, this.context.user.userId, this.props.screenId),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n ([_agGridData, _agGridColumns, _countryList,]) => {\r\n this.setState(\r\n {\r\n agGridData: _agGridData.map(obj => Object.entries(obj).reduce((a, [key, value]) => {\r\n a[key.toLowerCase()] = value;\r\n return a;\r\n }, {})),\r\n agGridColumns: _agGridColumns,\r\n countryList: _countryList,\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n (_exception) => {\r\n console.log(_exception);\r\n }\r\n )\r\n );\r\n }\r\n\r\n // handleFilterChange = () => {\r\n // fetch(`${process.env.REACT_APP_BASE_HTTP}/Profiles/${this.context.user.tenantId}/FetchProfiles`, {\r\n // method: \"POST\",\r\n // headers: {\r\n // \"Content-Type\": \"application/json\",\r\n // },\r\n // body: JSON.stringify({\r\n // pageNum: 1,\r\n // pageSize: 25,\r\n // source: \"Profiles\",\r\n // searchBoxText: \"\",\r\n // recycle: \"1\",\r\n // sourceId: 24,\r\n // permissions: null,\r\n // userType: 3,\r\n // fileId: 5069,\r\n // healthIndicatorId: null,\r\n // SearchString: \"\",\r\n // UserId: this.context.user.userId,\r\n // ScreenId: 43,\r\n // TaskId: 0,\r\n // }),\r\n // })\r\n // .then((result) => result.json())\r\n // .then((rowData) => this.setState({ data: rowData }))\r\n // .then((rowData) => console.log(rowData))\r\n // .catch((err) => console.log(err));\r\n // };\r\n\r\n handleSearchChange = (e) => {\r\n const newValue = e.target.value;\r\n this.setState({ porzioSearch: newValue });\r\n\r\n if (!this.state.searchSubscriptionAdded) {\r\n this.setState(\r\n { searchSubscriptionAdded: true },\r\n () => {\r\n this.scopedSubscriptions.add(\r\n SearchResultObservable.subscribe((searchResultJson) => {\r\n this.setState({ agGridData: searchResultJson });\r\n })\r\n );\r\n }\r\n );\r\n } else {\r\n searchSubject.next({ newValue, ...this.props.modalAgNode, ...this.context, healthIndicator: this.props.healthIndicator });\r\n }\r\n }\r\n\r\n clearSearch = () => {\r\n searchSubject.next({ newValue: \"\", ...this.props.modalAgNode, ...this.context, healthIndicator: this.props.healthIndicator });\r\n }\r\n\r\n dataDetailMethodFromParent = (cell, node) => {\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showDataDetailDialog: true });\r\n this.setState({ modalAgNode: node });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (!this.state.canViewExpandedView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n Data Count\r\n \r\n
    \r\n
    {MatIconService.SEARCH}
    \r\n \r\n
    \r\n {\r\n this.setState({ showFieldConfigurationDialog: true });\r\n }}>\r\n {MatIconService.MENU}\r\n \r\n {\r\n this.clearSearch();\r\n this.props.onClose(false);\r\n }}\r\n >\r\n {MatIconService.CANCEL}\r\n \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n {\r\n //params.api.setDomLayout(\"autoHeight\");\r\n this.state.agGridUtils.setGridParams(params, true);\r\n }}\r\n >\r\n
    \r\n
    \r\n this.setState({ showDataDetailDialog: false })}\r\n modalAgNode={this.state.modalAgNode} entityId={this.props.modalAgNode.sourceTypeId} />\r\n {this.state.showFieldConfigurationDialog ?\r\n this.setState({ showFieldConfigurationDialog: false })}\r\n entityId={this.props.modalAgNode.sourceTypeId}\r\n modalAgNode={this.props.modalAgNode}\r\n fileId={this.props.modalAgNode.fileId}\r\n sourceId={this.props.modalAgNode.sourceId}\r\n screenId={this.props.screenId}\r\n refreshList={this.fetchData} />\r\n : null}\r\n
    \r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(DataExpandedViewComponent);\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class DataCountCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.dataCountMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n let isCellDisabled = false;\r\n if (this.props.isCellEnabledCallback && !this.props.isCellEnabledCallback(this)) {\r\n isCellDisabled = true;\r\n }\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { CircleComponent } from \"../../../shared/components/elements/circleComponent/circleComponent.jsx\"\r\n\r\nexport default class DataErrorCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.dataErrorMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n let isCellDisabled = false;\r\n if (this.props.isCellEnabledCallback && !this.props.isCellEnabledCallback(this)) {\r\n isCellDisabled = true;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { CircleComponent } from \"../../../shared/components/elements/circleComponent/circleComponent.jsx\"\r\n\r\nexport default class DataWarningCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.dataWarningMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n let isCellDisabled = false;\r\n if (this.props.isCellEnabledCallback && !this.props.isCellEnabledCallback(this)) {\r\n isCellDisabled = true;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { CircleComponent } from \"../../../shared/components/elements/circleComponent/circleComponent.jsx\"\r\n\r\nexport default class DataUnmatchedCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.dataUnmatchedMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n let isCellDisabled = false;\r\n if (this.props.isCellEnabledCallback && !this.props.isCellEnabledCallback(this)) {\r\n isCellDisabled = true;\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport icon_docdownload from \"../../public/images/icon_docdownload.png\";\r\n\r\nexport default class DataCenterImportSummaryRenderer extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.dataImportSummaryMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return \"Icon\r\n }\r\n}\r\n","import React from 'react';\r\nimport { AppBar, Box, CircularProgress, TextField, Dialog, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../store/authProvider\";\r\nimport LayoutService from \"../../services/layoutService\";\r\nimport ApiService from \"../../services/apiService\";\r\nimport ToastService from \"../../services/toastService\";\r\nimport PageErrorComponent from \"../page/pageErrorComponent\";\r\nimport PageLoadingComponent from \"../page/pageLoadingComponent\";\r\nimport { ResultStatus, API_ENDPOINT, ENTITY_TYPE, CrudAction } from \"../../types/enums\";\r\nimport { Formik } from \"formik\";\r\nimport { SubscriptionArray } from \"../../services/dataService\";\r\nimport OktaAuthService from '../../../public/authentication/oktaAuthService';\r\n\r\nclass AddEditCommentComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n state = {\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n comment: \"\",\r\n isReadOnly : true,\r\n isEditing: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.fetchComments = this.fetchComments.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchComments();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n fetchComments = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n // save the subscription object\r\n let targetUrl = `/DataCenter/FileDetailsById/${this.context.user.tenantId}/`;\r\n\r\n switch (this.props.entityType) {\r\n case ENTITY_TYPE.PROFILE:\r\n targetUrl += `${this.props.agCellData.fileId}`;\r\n break;\r\n case ENTITY_TYPE.TRANSACTION:\r\n targetUrl += `${this.props.agCellData.fileID}`;\r\n break;\r\n case ENTITY_TYPE.DATA:\r\n targetUrl += `${this.props.agCellData.fileId}`;\r\n break;\r\n default:\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n break;\r\n }\r\n\r\n this.oSubscriptions.add(ApiService.getOBS(API_ENDPOINT.CORE, targetUrl)\r\n .subscribe((successResult) => {\r\n this.setState({\r\n comment: successResult && successResult.comment ? successResult.comment : \"\"\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n });\r\n },\r\n (error) => {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n handleAddEditComment = async (fProps) => {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n let actionVerb = \"POST\";\r\n let fileId = this.props.agCellData.fileId ?? this.props.agCellData.fileID;\r\n let pathParams = `/DataCenter/SaveComments`;\r\n\r\n const headers = {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n 'Content-Type': 'application/json; charset=utf-8'\r\n };\r\n\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.CORE, pathParams, JSON.stringify({\r\n tenantId: this.context.user.tenantId,\r\n fileId: fileId,\r\n comments: fProps.values.comment\r\n }), headers)\r\n .subscribe((successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Comments saved successfully\");\r\n this.props.handleClose(true);\r\n } else { this.setState({ fetchResult: ResultStatus.ERROR }); }\r\n },\r\n (errorResult) => { this.setState({ fetchResult: ResultStatus.ERROR }); }\r\n );\r\n }\r\n\r\n getInitialValues = () => {\r\n return {\r\n comment: this.state.comment,\r\n };\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n Add/Edit Comment\r\n {LayoutService.getReadOnlyActions(this, this.state.isEditing,\r\n () => { this.props.handleClose(false) },\r\n () => { this.handleAddEditComment(fProps) })}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n
    \r\n )}\r\n \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ();\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(AddEditCommentComponent);","import { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\nimport Cache from \"../../shared/store/cache\";\r\nimport { ENTITY_TYPE, GST_API } from \"../../shared/types/enums\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport { DataService } from \"../../shared/services/dataService\";\r\n\r\nexport default class dateCenterService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n let url = `/DataCenter/FileHistory/${clientAuthContext.user.tenantId}/${clientAuthContext.user.userId}?pageNo=1&pageSize=5000`;\r\n return ApiService.fetchHTTP_API(GST_API.Core, url);\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getActionMenuParams = (_componentThisRef) => {\r\n return {\r\n menuIcon: MatIconService.MORE_VERT_16,\r\n menuMaxHeight: 60,\r\n\r\n menuOptions: [\r\n {\r\n text: \"Add/Edit a File Comment\", icon: MatIconService.FILE_COMMENT, onClickCallback: (_cellRef) => {\r\n _componentThisRef.handleAddEditCommentFile(_cellRef);\r\n }\r\n },\r\n // {\r\n // text: \"Re-run Matching\", icon: MatIconService.RERUN_MATCHING, onClickCallback: (_cellRef) => {\r\n // ToastService.showInfo(\"Under Construction\");\r\n // }\r\n // },\r\n // {\r\n // text: \"Run Health Reports\", icon: MatIconService.RUN_REPORTS, onClickCallback: (_cellRef) => {\r\n // ToastService.showInfo(\"Under Construction\");\r\n // }\r\n // },\r\n ]\r\n }\r\n }\r\n\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, null, null, \"\").fixedWidth(48).headerClass(\"center-text\").cellRenderer(\"actionCellRendererComponent\", this.getActionMenuParams(_componentThisRef)).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"dates\", \"Processed Date\").comparator(DataService.dateComparator).fixedWidth(160).headerClass(\"center-text\").tooltip().centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"sourceName\", \"Source\").flexWeight(1).minWidth(160).headerClass(\"center-text\").tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(6).minWidth(162).cellRenderer(\"downloadFileAgRenderer\").tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"url\", \"File Status\").fixedWidth(96).headerClass(\"center-text\").cellRenderer(\"dataCenterFileStatusImageRenderer\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"totalCount\", \"Total Rows\").fixedWidth(96).headerClass(\"center-text\").centerAlignText().cellRenderer(\"dataCountCellRendererComponent\", {\r\n isCellEnabledCallback: (_cellRef) => {\r\n return _cellRef.props.data.sourceTypeId != ENTITY_TYPE.SALES_REP;\r\n }\r\n }).SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"errorCount\", \"Errors\").fixedWidth(96).headerClass(\"center-text\").cellRenderer(\"dataErrorCellRendererComponent\", {\r\n isCellEnabledCallback: (_cellRef) => {\r\n return _cellRef.props.data.sourceTypeId != ENTITY_TYPE.SALES_REP;\r\n }\r\n }).SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"warningCount\", \"Warnings\").fixedWidth(112).headerClass(\"center-text\").cellRenderer(\"dataWarningCellRendererComponent\", {\r\n isCellEnabledCallback: (_cellRef) => {\r\n return _cellRef.props.data.sourceTypeId != ENTITY_TYPE.SALES_REP;\r\n }\r\n }).SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"unmatchedCount\", \"Unmatched\").fixedWidth(136).headerClass(\"center-text\").cellRenderer(\"dataUnmatchedCellRendererComponent\", {\r\n isCellEnabledCallback: (_cellRef) => {\r\n return _cellRef.props.data.sourceTypeId != ENTITY_TYPE.SALES_REP;\r\n }\r\n }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastLogin\", \"Import Summary\").fixedWidth(128).headerClass(\"center-text\").cellRenderer(\"dataCenterImportSummaryRenderer\").SET(),\r\n ];\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\nimport { GST_API } from \"../../../shared/types/enums\";\r\n\r\nexport default class ImportTemplateService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, modalAgNode, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(modalAgNode, clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(modalAgNode, clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n\r\n return ApiService.fetchHTTP_API(GST_API.TenantConfig, `/ImportTemplate/GetTemplates/${clientAuthContext.user.tenantId}`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n }\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Template Icon\",\r\n field: \"templateTypeId\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 75 ,\r\n cellRenderer: \"importTemplateImageRenderer\",\r\n },\r\n {\r\n headerName: \"Template Name\",\r\n field: \"templateName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n // width: 455,\r\n cellRenderer: \"importTemplateCellRendererComponent\",\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component, createRef } from \"react\";\r\nimport excel_icon from \"../../../public/images/xls-import-icon.png\";\r\nimport unknown_file from \"../../../public/images/UnknownFile.png\";\r\n\r\nexport default class DownloadFileAgRenderer extends Component {\r\n link = createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod = async () => {\r\n\r\n console.log(\"RowCol\", `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,);\r\n console.log(\"this.props.node.data\", this.props.node.data,);\r\n console.log(\"this.props.value\", this.props.value,);\r\n console.log(\"this.link\", this.link,);\r\n console.log(\"window.URL\", window.URL);\r\n\r\n if (this.link.current.href) { return }\r\n let blob = await this.props.context.componentParent.handleDownloadAg(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data, this.props.value, this.link, window.URL);\r\n const href = window.URL.createObjectURL(blob);\r\n this.link.current.download = this.props.node.data.filePath;\r\n this.link.current.href = href;\r\n this.link.current.click();\r\n }\r\n\r\n render() {\r\n let imageSrc = excel_icon;\r\n let imageAlt = \"Excel Icon\";\r\n\r\n switch (this.props.value) {\r\n case 248:\r\n imageSrc = excel_icon;\r\n imageAlt = \"Excel Icon\";\r\n break;\r\n case 249:\r\n imageSrc = unknown_file;\r\n imageAlt = \"Unknown File Icon\";\r\n break;\r\n default:\r\n imageSrc = excel_icon;\r\n imageAlt = \"Excel Icon\";\r\n }\r\n\r\n return (\r\n // eslint-disable-next-line\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class ProfileCountCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.handleUpdateFromAgCellRenderer(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\n\r\nexport default class ComplianceReportMappingService {\r\n\r\n static fetchTemplateTypeDataAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/Entity/${_tenantId}`);\r\n };\r\n\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { DialogTitle, DialogContent, FormGroup, FormHelperText, Grid, Input, Typography, AppBar, Toolbar, IconButton, TextField, } from \"@material-ui/core\";\r\nimport { KeyboardDatePicker, DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport ImportTemplateCreateService from \"./importTemplateCreateService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport OktaAuthService from \"../../../../public/authentication/oktaAuthService\";\r\n\r\nclass ImportTemplateCreateComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n openDeleteConfirm: false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = async () => {\r\n\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n ImportTemplateCreateService.fetchTemplateTypeDataAsOBS(this.context.user.tenantId),\r\n ]).subscribe(\r\n // success\r\n ([_templateTypeData]) => {\r\n _templateTypeData = (_templateTypeData || []).filter(x => x.entityid === ENTITY_TYPE.PROFILE || x.entityid === ENTITY_TYPE.TRANSACTION || x.entityid === ENTITY_TYPE.SALES_REP);\r\n\r\n this.setState({ templateTypeData: _templateTypeData },\r\n // change the state after all the above are assigned\r\n () => { this.setState({ fetchResult: ResultStatus.LOADED }); }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n return {\r\n templateId: this.props.modalAgNode.templateId,\r\n templateName: this.props.modalAgNode.templateName,\r\n templateDescription: this.props.modalAgNode.templateDescription,\r\n templateTypeId: this.props.modalAgNode.templateTypeId,\r\n startDate: this.props.modalAgNode.startDate !== undefined ? new Date(this.props.modalAgNode.startDate) : null,\r\n isActive: this.props.modalAgNode.isActive,\r\n endDate: this.props.modalAgNode.endDate !== undefined ? new Date(this.props.modalAgNode.endDate) : null,\r\n filePath: this.props.modalAgNode.filePath\r\n };\r\n } else {\r\n return {\r\n templateId: 0,\r\n templateName: \"\",\r\n templateDescription: \"\",\r\n templateTypeId: 2,\r\n startDate: new Date(),\r\n endDate: null,\r\n isActive: true,\r\n filePath: \"\",\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n templateName: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n templateDescription: Yup.string().min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n startDate: Yup.date().nullable().min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n endDate: Yup.date().nullable().min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING, });\r\n\r\n // 2) extract the formik values into a FormData object\r\n const formData = new FormData();\r\n formData.append(\"tenantId\", this.context.user.tenantId);\r\n formData.append(\"templateName\", _formikProps.values.templateName);\r\n formData.append(\"templateDescription\", _formikProps.values.templateDescription);\r\n formData.append(\"templateTypeId\", _formikProps.values.templateTypeId);\r\n formData.append(\"startDate\", _formikProps.values.startDate !== null ? _formikProps.values.startDate.toJSON().slice(0, 10) : \"\");\r\n formData.append(\"endDate\", _formikProps.values.endDate !== null ? _formikProps.values.endDate.toJSON().slice(0, 10) : \"\");\r\n formData.append(\"isActive\", _formikProps.values.isActive);\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let actionVerb = \"\";\r\n let targetUrl = \"\";\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n // CREATE\r\n formData.append(\"filePath\", this.state.selectedFileName);\r\n formData.append(\"efile\", this.state.selectedFile);\r\n formData.append(\"templateId\", 0);\r\n actionVerb = \"POST\";\r\n targetUrl = `${process.env.REACT_APP_TENANT_HTTP}/ImportTemplate/CreateTemplate?userId=${this.context.user.userId}`;\r\n } else {\r\n // UPDATE\r\n if (this.state.selectedFileName) {\r\n formData.append(\"filePath\", this.state.selectedFileName);\r\n formData.append(\"efile\", this.state.selectedFile);\r\n } else {\r\n formData.append(\"filePath\", \"\");\r\n formData.append(\"efile\", \"\");\r\n }\r\n formData.append(\"templateId\", this.props.modalAgNode.templateId);\r\n actionVerb = \"POST\";\r\n targetUrl = `${process.env.REACT_APP_TENANT_HTTP}/ImportTemplate?userId=${this.context.user.userId}`;\r\n }\r\n\r\n // Do not set the Content-type in the headers below. Let the browser set it. For example\r\n // Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3sy40ozPAfPAnNRy\r\n // The browser handles and controls the random string at the end of the boundary\r\n const headers = {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n };\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.TENANT, targetUrl, formData, headers)\r\n .subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshImportTemplateList(true);\r\n this.props.onClose(false);\r\n } else {\r\n console.error(\"Error: falsey successResult while saving Import Template\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Import Template\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.IMPORT_TEMPLATE_DETAIL.cannotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.SUCCESS:\r\n case ResultStatus.LOADED:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n \r\n Import Template Details\r\n {this.props.inputAction === CrudAction.UPDATE ? RolePermissionService.IMPORT_TEMPLATE_DETAIL.cannotEdit ? LayoutService.getIconButton(false, MatIconService.CLOSE, \"close\",\r\n () => { this.props.onClose(false) }, \"secondary\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"templateTypeId\", \"Template Type *\", this.state.templateTypeData, \"entityid\", \"entityname\", \"100%\")}\r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isActive\", \"Active\")}\r\n \r\n \r\n \r\n Attachment\r\n this.setState({ selectedFile: event.target.files[0], selectedFileName: event.target.files[0].name })} fullWidth />\r\n {this.props.inputAction === CrudAction.UPDATE ?\r\n
    \r\n Attached File:\r\n {this.props.modalAgNode.filePath}\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 case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.fetchData(); }} onClose={() => this.props.onClose(false)} />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ImportTemplateCreateComponent);","import React from \"react\";\r\nimport {\r\n withStyles,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n Box,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n\r\n} from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport PageHeaderComponent from \"../../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport ImportTemplateService from \"./importTemplateService\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\n\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport ImportTemplateImageRenderer from \"./importTemplateImageRenderer\";\r\nimport ImportTemplateCellRendererComponent from \"./importTemplateCellRendererComponent\";\r\nimport ImportTemplateCreateComponent from \"./import-create/importTemplateCreateComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport OktaAuthService from \"../../../public/authentication/oktaAuthService\";\r\n\r\nclass ImportTemplateComponent extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = ImportTemplateService;\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n importTemplateCellRendererComponent: ImportTemplateCellRendererComponent,\r\n importTemplateImageRenderer: ImportTemplateImageRenderer,\r\n },\r\n showCrudDialog: false,\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n this.checkPermissionsForFileDownload();\r\n }\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n\r\n importTemplateIconMethodFromParent() {\r\n alert(\"Under Construction\");\r\n // this.setState({ showProfileExpandedDialog: true });\r\n }\r\n\r\n checkPermissionsForFileDownload = () => {\r\n this.setState({ canNotDownload: RolePermissionService.DOWNLOAD_TEMPLATE.cannotView });\r\n }\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.props.modalAgNode, this.context).subscribe(\r\n (o) => {\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n handleCreate = (cell) => {\r\n this.setState({ showCrudDialog: true });\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n };\r\n\r\n handleUpdateFromAgCellRenderer = (cell, node) => {\r\n this.setState({ showCrudDialog: true });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node });\r\n };\r\n\r\n handleDownloadAg = async (\r\n cell,\r\n agNodeData,\r\n filename,\r\n linkRefAg,\r\n windowUrl\r\n ) => {\r\n if (this.state.canNotDownload) {\r\n this.setState({ openAccessDenied: true });\r\n return;\r\n }\r\n else {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/ImportTemplate/Download/${this.context.user.tenantId}/${agNodeData.filePath}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n );\r\n const blob = await result.blob();\r\n return blob;\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.IMPORT_TEMPLATE.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.handleImportTemplateDialogClose() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n\r\n \r\n \r\n \r\n Import Template\r\n { this.props.handleImportTemplateDialogClose(); }}>{MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n { { this.fetchData(true); }, },\r\n ]}\r\n />}\r\n
    \r\n {\r\n event.api.sizeColumnsToFit();\r\n }}\r\n >\r\n
    \r\n
    \r\n \r\n this.setState({ showCrudDialog: false })} modalAgNode={this.state.modalAgNode} inputAction={this.state.inputAction}\r\n refreshImportTemplateList={this.fetchData}\r\n />\r\n \r\n \r\n {RolePermissionService.getAccessDeniedComponent(classes, () => {\r\n this.setState({ openAccessDenied: false });\r\n })}\r\n \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(ImportTemplateComponent);","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class UploadFileService {\r\n\r\n static getSourceSystemsAsOBS = (_tenantId,) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems?tenantId=${_tenantId}`\r\n );\r\n };\r\n\r\n}","import React from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n AppBar,\r\n Button,\r\n Dialog,\r\n DialogTitle,\r\n DialogContent,\r\n FormHelperText,\r\n Grid,\r\n IconButton,\r\n Input,\r\n Toolbar,\r\n Typography,\r\n FormControl,\r\n Divider,\r\n} from \"@material-ui/core\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\"\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, API_ENDPOINT, } from \"../../../shared/types/enums\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport UploadFileService from \"./uploadFileService\";\r\nimport OktaAuthService from \"../../../public/authentication/oktaAuthService\";\r\n\r\nclass UploadFileComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n UploadFileService.getSourceSystemsAsOBS(this.context.user.tenantId),\r\n ]).subscribe(([_sourceData,]) => {\r\n this.setState(\r\n {\r\n sourceData: _sourceData.filter(o => o.active === true && o.sourceTypeId != 3),\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n getInitialValues() {\r\n return {\r\n sourceSystemId: null,\r\n selectedFile: null,\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n const MAX_FILE_SIZE = 27 * 1024 * 1024; //// 28 MB in bytes calculated as 28 * 1024 * 1024\r\n this.validationSchema = Yup.object().shape({\r\n sourceSystemId: Yup.number().required(\"Required\").typeError('Must select a Source System ID'),\r\n selectedFile: Yup.mixed().required(\"Must select an Upload File under 27MB\")\r\n // .test(\r\n // \"fileFormat\",\r\n // \"File rejected. Please submit a .csv file.\",\r\n // value => value && [\"text/csv\"].includes(value.type)\r\n // )\r\n .test(\r\n \"fileFormat\",\r\n \"File rejected. Please submit a .csv file.\",\r\n value => value && value.name.toUpperCase().endsWith(\".CSV\")\r\n )\r\n .test(\r\n \"fileSize\",\r\n \"Error - File size exceeds 27 MB.\",\r\n value => value && value.size <= MAX_FILE_SIZE\r\n )\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleClose = () => {\r\n this.props.handleUploadDialogClose();\r\n };\r\n\r\n handleSubmit = async (_formikProps) => {\r\n console.log(\"_formikProps\", _formikProps);\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING, });\r\n\r\n // 2) extract the formik values into a FormData object\r\n const formData = new FormData();\r\n formData.append('tenantId', this.context.user.tenantId);\r\n formData.append('sourceId', _formikProps.values.sourceSystemId);\r\n formData.append('userId', this.context.user.userId);\r\n formData.append('userName', this.context.user.username);\r\n formData.append('efile', _formikProps.values.selectedFile);\r\n\r\n // 3) determine the action and assign the appropriate props\r\n const actionVerb = \"POST\";\r\n const targetUrl = `/File/Upload`;\r\n const headers = {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n };\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n formData,\r\n headers\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n ToastService.showSuccess(\"File submitted successfully. System will begin to process file now.\");\r\n this.props.handleUploadDialogClose();\r\n } else {\r\n ToastService.showError(\"An Error occured while Uploading the File\");\r\n console.error(\"Error: falsey successResult while saving File Upload\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n ToastService.showError(\"An Error occured while Uploading the File\");\r\n console.error(\"Error while saving File Upload\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return ( \r\n \r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n \r\n Upload File\r\n \r\n {\r\n this.handleSubmit(fProps);\r\n }}\r\n >\r\n {MatIconService.OK}\r\n \r\n \r\n {MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"sourceSystemId\",\r\n \"Source System\",\r\n this.state.sourceData,\r\n \"systemId\",\r\n \"sourceLabel\",\r\n \"90%\"\r\n )\r\n }\r\n \r\n \r\n \r\n Source Container\r\n {\r\n fProps.setFieldValue(\"selectedFile\", event.currentTarget.files[0]);\r\n }}\r\n />\r\n \r\n {fProps.errors[\"selectedFile\"]}\r\n \r\n \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(UploadFileComponent);","import ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\nimport { GST_API } from \"../../../shared/types/enums\";\r\n\r\nexport default class FileStatusService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, modalAgNode, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(modalAgNode, clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(modalAgNode, clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n\r\n return ApiService.fetchHTTP_API(\r\n GST_API.Core,\r\n `/DataCenter/FileStatusDetails/${clientAuthContext.user.tenantId}/${modalAgNode.fileId}`,\r\n {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n );\r\n }\r\n}\r\n","export default class RecordValidationSummaryService {\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Rule Severity\",\r\n field: \"businessRuleSeverity\",\r\n sortable: true,\r\n filter: \"boolean\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Rule Name\",\r\n field: \"businessRuleName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"No of Rule Violations\",\r\n field: \"numberOfBusinessRuleViolations\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport RecordValidationSummaryService from \"./recordValidationSummaryService\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport { ResultStatus } from \"../../../../shared/types/enums\";\r\nimport SectionComponent from \"../../../../shared/components/sectionComponent\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport { withStyles } from \"@material-ui/core\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nclass RecordValidationSummaryComponent extends Component {\r\n SERVICE = RecordValidationSummaryService;\r\n state = {\r\n addressData: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n agGridUtils: new AgGridUtil(),\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.sizeColumnsToFit();\r\n };\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.setState({\r\n fetchResult: ResultStatus.LOADING,\r\n recordValidationSummary: this.props.fileStatus.recordValidationSummary,\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n this.fetchData(this);\r\n }\r\n render() {\r\n console.log(\"Data\", this.state.addressData);\r\n const { classes } = this.props;\r\n return (\r\n
    \r\n \r\n\r\n \r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n }}\r\n >\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\nexport default withStyles(MatClassService)(RecordValidationSummaryComponent);\r\n","import React, { Component } from \"react\";\r\nimport {\r\n withStyles,\r\n DialogTitle,\r\n AppBar,\r\n Toolbar,\r\n Typography,\r\n IconButton,\r\n DialogContent,\r\n Box,\r\n Grid,\r\n} from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport FileStatusService from \"./fileStatusService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport icon_bad from \"../../../public/images/icon_bad.png\";\r\nimport icon_process from \"../../../public/images/icon_process.png\";\r\nimport icon_verygood from \"../../../public/images/icon_verygood.png\";\r\nimport icon_good from \"../../../public/images/icon_good.png\";\r\nimport icon_blank from \"../../../public/images/icon_blank.png\";\r\nimport icon_delete_black from \"../../../public/images/icon_delete_black.gif\";\r\nimport RecordValidationSummaryComponent from \"./record-validation-summary/recordValidationSummaryComponent\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass FileStatusComponent extends Component {\r\n static contextType = AuthContext;\r\n\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = FileStatusService;\r\n state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n console.log(\"inside did mount \", this.props.modalAgNode.fileId);\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(\r\n _ignoreCache,\r\n this.props.modalAgNode,\r\n this.context\r\n ).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n\r\n this.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onDelete = (_fileId) => {\r\n this.setState({\r\n fetchResult: ResultStatus.LOADING,\r\n });\r\n try {\r\n console.log(\"DELETE request started for Delete Role\");\r\n //const roleId = this.props.modalAgNode.roleId;\r\n //const url = `${process.env.REACT_APP_TENANT_HTTP}/Role/EditRole/${this.context.user.tenantId}/${roleId}`;\r\n const result = fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/DataCenter/DeleteFile/${this.context.user.tenantId}/${_fileId}`,\r\n {\r\n method: \"DELETE\",\r\n headers: { accept: \"*/*\" },\r\n }\r\n );\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.onClose(false);\r\n this.props.refreshGrid(true);\r\n } catch (error) {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n };\r\n\r\n handleUpdateRecordStatus = (_recordIdStatus) => {\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n \"POST\",\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/UpdateRecStatus/${this.context.user.tenantId}/${this.props.modalAgNode.fileId}/${this.context.user.uid}/${_recordIdStatus}/${this.context.user.userId}`,\r\n JSON.stringify({})\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.onClose(false);\r\n this.props.refreshGrid(true);\r\n } else {\r\n console.error(\"Error: falsey successResult while updating Record Status\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while updating Record Status\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n //console.log(\"render\", this.state.data);\r\n let content;\r\n if (this.state.data.length !== 0) {\r\n switch (this.props.modalAgNode.url) {\r\n case \"icon_bad.png\":\r\n case \"icon_blank.png\":\r\n let errImage =\r\n this.props.modalAgNode.url === \"icon_bad.png\"\r\n ? icon_bad\r\n : icon_blank;\r\n content = (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n File import failed due to the following violations\r\n \r\n \r\n \r\n {this.state.data[0].fileViolationSummary ? (\r\n this.state.data[0].fileViolationSummary.map((recipient) => {\r\n return (\r\n <>\r\n \r\n \r\n {recipient.key}\r\n \r\n \r\n \r\n \r\n {recipient.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 break;\r\n case \"icon_process.png\":\r\n content = (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n File validation is currently in progress\r\n \r\n \r\n \r\n
    \r\n );\r\n break;\r\n case \"icon_verygood.png\":\r\n case \"icon_good.png\":\r\n //console.log(\"in switch.......\");\r\n let image =\r\n this.props.modalAgNode.url === \"icon_verygood.png\"\r\n ? icon_verygood\r\n : icon_good;\r\n content = (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n File validation was successful\r\n \r\n \r\n Record validation\r\n \r\n \r\n \"Very\r\n \r\n \r\n Record validation was {image === icon_good ? \"not\" : \"\"}{\" \"}successful\r\n \r\n \r\n Record metrics:\r\n \r\n \r\n Total Number of Records in File:{\" \"}{this.state.data[0].totalRecords}\r\n \r\n \r\n Records without Violations:{\" \"}{this.state.data[0].recordsWithoutViolation}\r\n \r\n \r\n Percent of Total Records:{\" \"}{this.state.data[0].withoutViolationPercent}%\r\n \r\n \r\n \r\n \r\n \r\n Records with Rule Violations:{\" \"}{this.state.data[0].recordsWithViolation}\r\n \r\n \r\n Percent of Total Records:{\" \"}{this.state.data[0].violationPercent}%\r\n \r\n \r\n Business Rule Threshold(%):{\" \"}{this.state.data[0].violationsSourceThreshold === null ? \"N/A\"\r\n : this.state.data[0].violationsSourceThreshold + \"%\"}\r\n \r\n \r\n Records with Errors: {this.state.data[0].recordsWithErrors}\r\n \r\n \r\n Percent of Total Records:{\" \"}{this.state.data[0].errorPercent}%\r\n \r\n \r\n \r\n \r\n \r\n Records with Warnings: {this.state.data[0].warningRecords}\r\n \r\n \r\n Percent of Total Records:{\" \"}{this.state.data[0].warningPercent}%\r\n \r\n \r\n \r\n \r\n \r\n Records with Unmatched Recipients:{\" \"}{this.state.data[0].unMatchedRecipients}\r\n \r\n \r\n Percent of Total Records:{\" \"}{this.state.data[0].percentofUnmatched}%\r\n \r\n\r\n \r\n Unmatched Recipient Threshold(%):{\" \"}{this.state.data[0].unMatchedSourceThreshold === null ? \"N/A\"\r\n : this.state.data[0].unMatchedSourceThreshold + \"%\"}\r\n \r\n \r\n Unmatched Recipients by Type\r\n \r\n \r\n \r\n \r\n {this.state.data[0].recipientDetails ? (\r\n this.state.data[0].recipientDetails.map((recipient) => {\r\n return (\r\n <>\r\n \r\n {recipient.recipientType} {recipient.recipientCount}\r\n \r\n \r\n Percent of Unmatched Records:{\" \"}{recipient.unmatchedRecordsPercentage}%\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.data[0].recordValidationSummary?.length !== 0 ? (\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n {this.props.modalAgNode.url === \"icon_good.png\" ?\r\n \r\n \r\n \r\n Record Validation Summary\r\n {LayoutService.getIconButton(false, MatIconService.NAV_HAND, \"Accept File\", () => this.handleUpdateRecordStatus(5), \"inherit\", \"keyAcceptFile\")}\r\n {LayoutService.getIconButton(false, MatIconService.NAV_THUMB_DOWN, \"Reject File\", () => this.handleUpdateRecordStatus(4), \"secondary\", \"keyRejectFile\")}\r\n \r\n \r\n \r\n : null}\r\n \r\n
    \r\n );\r\n break;\r\n default:\r\n content = \"n/a\";\r\n }\r\n }\r\n if (RolePermissionService.FILE_STATUS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n File Status\r\n \r\n {this.props.modalAgNode.url === \"icon_bad.png\" ? (\r\n {\r\n this.onDelete(this.props.modalAgNode.fileId);\r\n }}\r\n disabled={!RolePermissionService.FILE_STATUS.canDelete}\r\n >\r\n {MatIconService.DELETE}\r\n \r\n ) : (\r\n <>\r\n )}\r\n\r\n {\r\n this.props.onClose(false);\r\n }}\r\n >\r\n {MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n File validation\r\n \r\n {content}\r\n
    \r\n \r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default withStyles(MatClassService)(FileStatusComponent);\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\nimport { GST_API } from \"../../../shared/types/enums\";\r\n\r\nexport default class FileSummaryService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, modalAgNode, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(modalAgNode, clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(modalAgNode, clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n\r\n return ApiService.fetchHTTP_API(\r\n GST_API.Reports,\r\n `/Reports/FetchDataCentreFileSummary?tenantId=${clientAuthContext.user.tenantId}&fileId=${modalAgNode.fileId}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport {\r\n withStyles,\r\n DialogTitle,\r\n AppBar,\r\n Toolbar,\r\n Typography,\r\n IconButton,\r\n DialogContent,\r\n Box,\r\n Grid,\r\n} from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus } from \"../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport FileSummaryService from \"../file-summary/fileSummaryService\";\r\nimport porzio_gst_icon from \"../../../public/images/porzio_global_spend_transparency_logo.png\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nconst tableColPadStyle = {\r\n paddingLeft: \"10px\",\r\n paddingRight: \"10px\"\r\n}\r\nclass FileSummaryComponent extends Component {\r\n static contextType = AuthContext;\r\n\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = FileSummaryService;\r\n state = {\r\n data: {},\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n console.log(\"inside did mount \", this.props.modalAgNode.fileId);\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(\r\n _ignoreCache,\r\n this.props.modalAgNode,\r\n this.context\r\n ).subscribe(\r\n (o) => {\r\n this.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n\r\n\r\n renderFileSummary = () => {\r\n return <>\r\n \r\n Tenant Name\r\n {this.state.data.summary[0][\"TENANTNAME\"]}\r\n Number of Records\r\n {this.state.data.summary[0][\"Number of Records\"]}\r\n \r\n \r\n Data Type\r\n {this.state.data.summary[0][\"Type\"]}\r\n Records with Errors\r\n {this.state.data.summary[0][\"ERROCOUNT\"]}\r\n \r\n \r\n Import Status\r\n {this.state.data.summary[0][\"Import Status\"]}\r\n Records with Warnings\r\n {this.state.data.summary[0][\"Warningcount\"]}\r\n \r\n \r\n Source Name\r\n {this.state.data.summary[0][\"Source Name\"]}\r\n Number of Matched Records to Profile Database\r\n {this.state.data.summary[0][\"Matchedcount\"]}\r\n \r\n \r\n Customer Source System\r\n {this.state.data.summary[0][\"Customer Source System\"]}\r\n Number of Unmatched Records to Profile Database\r\n {this.state.data.summary[0][\"Unmatchedcount\"]}\r\n \r\n \r\n Received Date\r\n {this.state.data.summary[0][\"Received Date\"]}\r\n Expense Count\r\n {this.state.data.summary[0][\"Expensecount\"]}\r\n \r\n \r\n Transaction Date Range\r\n {this.state.data.summary[0][\"TransactionDateRange\"]}\r\n \r\n \r\n \r\n \r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.IMPORT_SUMMARY_REPORT.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n Import Summary Report\r\n {\r\n this.props.onClose(false);\r\n }}>\r\n {MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n < div style={{ background: \"#ffffff\", textAlign: \"center\" }}>\r\n \"Porzio\r\n

    \r\n {this.state.data.summary[0][\"TENANTNAME\"]} Import Summary Report\r\n {this.state.data.summary[0][\"Received Date\"]}\r\n
    \r\n {this.state.data.summary[0][\"File Name\"]}\r\n \r\n
    \r\n File Summary\r\n
    \r\n \r\n \r\n {this.renderFileSummary()}\r\n \r\n
    \r\n

    \r\n Rule Summary\r\n Errors\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.data.rulesSummaryErrors?.map(x => {\r\n if (!(x[\"FIELDNAME\"] || x[\"ERRORCOUNT\"] || x[\"PROVIDEDVALUE\"] || x[\"RULE\"] || x[\"ERRORLANGUAGE\"])) {\r\n return <>\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
    Field NameError CountProvided ValueRuleError Language
    {x[\"FIELDNAME\"]}{x[\"ERRORCOUNT\"]}{x[\"PROVIDEDVALUE\"]}{x[\"RULE\"]}{x[\"ERRORLANGUAGE\"]}
    \r\n
    \r\n Warnings\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.data.rulesSummaryWarnings?.map(x => {\r\n if (!(x[\"FIELDNAME\"] || x[\"ERRORCOUNT\"] || x[\"PROVIDEDVALUE\"] || x[\"RULE\"] || x[\"ERRORLANGUAGE\"])) {\r\n return <>\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
    Field NameWarning CountProvided ValueRuleWarning Language
    {x[\"FIELDNAME\"]}{x[\"ERRORCOUNT\"]}{x[\"PROVIDEDVALUE\"]}{x[\"RULE\"]}{x[\"ERRORLANGUAGE\"]}
    \r\n
    \r\n
    \r\n Profile Database Matching Summary\r\n Profiles\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.data.recipientUnmatchDetailsProfile?.map(x => {\r\n if (!(x[\"PROFILETYPE\"] || x[\"RECORDSCOUNTINFILE\"] || x[\"INSERTEDPROFILES\"] || x[\"UpdatedPROFILES\"] || x[\"UNMATCHEDProfiles\"])) {\r\n return <>\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
    Profile TypeNumber of Profiles in FileNumber of New Profiles Inserted in the Profile DatabaseNumber of Profiles Updated in the Profile DatabaseNumber of Profiles Unmatched to the Profile Database
    {x[\"PROFILETYPE\"]}{x[\"RECORDSCOUNTINFILE\"]}{x[\"INSERTEDPROFILES\"]}{x[\"UpdatedPROFILES\"]}{x[\"UNMATCHEDProfiles\"]}
    \r\n
    \r\n Transactions\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.data.recipientUnmatchDetailsTransaction?.map(x => {\r\n if (!(x[\"PROFILETYPE\"] || x[\"RECORDSCOUNTINFILE\"] || x[\"RULE\"] || x[\"ERRORLANGUAGE\"] || x[\"UNMATCHEDCOUNT\"])) {\r\n return <>\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
    Profile TypeNumber of Records in FileNumber of Records Matched to the Profile DatabaseNumber of Records Unmatched to the Profile Database
    {x[\"PROFILETYPE\"]}{x[\"RECORDSCOUNTINFILE\"]}{x[\"MATCHEDCOUNT\"]}{x[\"UNMATCHEDCOUNT\"]}
    \r\n

    \r\n Record Type Summary\r\n This table identifies the records where the action performed during file load (I=Insert, U=Update, D=Delete) does not match Record Type in file.\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.data.recordTypeSummary?.map(x => {\r\n if (!(x[\"ROW_ID\"] || x[\"COMPANYTRANSACTIONID\"] || x[\"RECORDTYPEINFILE\"] || x[\"ACTIONPERFORMED\"])) {\r\n return <>\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
    Row IDCompany Profile ID or Company Transaction IDRecord Type in FileAction Performed
    {x[\"ROW_ID\"]}{x[\"COMPANYTRANSACTIONID\"]}{x[\"RECORDTYPEINFILE\"]}{x[\"ACTIONPERFORMED\"]}
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default withStyles(MatClassService)(FileSummaryComponent);\r\n\r\n/* Backup-Reusable code for table rendering\r\nrenderDynamicFileSummary = () => {\r\n let fileSummaryContent;\r\n let summaryObj = Object.keys(this.state.data.summary[0]);\r\n let temp = [];\r\n for (let i = 0; i < summaryObj.length; i += 2) {\r\n temp.push(\r\n \r\n {summaryObj[i]}\r\n {this.state.data.summary[0][summaryObj[i]]}\r\n {summaryObj[i + 1]}\r\n {this.state.data.summary[0][summaryObj[i + 1]]}\r\n \r\n );\r\n }\r\n fileSummaryContent = (\r\n <>\r\n {temp.map(x => {\r\n return x;\r\n })}\r\n \r\n )\r\n return fileSummaryContent;\r\n}\r\n*/\r\n\r\n","import React, { Component } from \"react\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport AgGridActionCellRendererComponent from \"../../shared/components/ag-grid/agGridActionCellRendererComponent\";\r\nimport DownloadFileAgRenderer from \"./download-file/downloadFileAgRenderer\";\r\nimport DataCenterFileStatusImageRenderer from \"./dataCenterFileStatusImageRenderer\";\r\nimport DataExpandedViewComponent from \"./expanded-view/dataExpandedViewComponent\";\r\nimport DataCountCellRendererComponent from \"./expanded-view/dataCountCellRendererComponent\";\r\nimport DataErrorCellRendererComponent from \"./expanded-view/dataErrorCellRendererComponent\";\r\nimport DataWarningCellRendererComponent from \"./expanded-view/dataWarningCellRendererComponent\";\r\nimport DataUnmatchedCellRendererComponent from \"./expanded-view/dataUnmatchedCellRendererComponent\";\r\nimport DataCenterImportSummaryRenderer from \"./dataCenterImportSummaryRenderer\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { ResultStatus, ENTITY_TYPE } from \"../../shared/types/enums\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport AddEditCommentComponent from \"../../shared/components/add-edit-comments/addEditCommentComponent\";\r\nimport DataCenterService from \"./dataCenterService\";\r\nimport ImportTemplateComponent from \"./import-template/importTemplateComponent\";\r\nimport UploadFileComponent from \"./upload-file/uploadFileComponent\";\r\nimport FileStatusComponent from \"./file-status/fileStatusComponent\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport FileSummaryComponent from \"../data-center/file-summary/fileSummaryComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport OktaAuthService from \"../../public/authentication/oktaAuthService\";\r\n\r\nclass dataCenterComponent extends Component {\r\n static contextType = AuthContext;\r\n\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = DataCenterService;\r\n state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n actionCellRendererComponent: AgGridActionCellRendererComponent,\r\n downloadFileAgRenderer: DownloadFileAgRenderer,\r\n dataCenterFileStatusImageRenderer: DataCenterFileStatusImageRenderer,\r\n dataCountCellRendererComponent: DataCountCellRendererComponent,\r\n dataErrorCellRendererComponent: DataErrorCellRendererComponent,\r\n dataWarningCellRendererComponent: DataWarningCellRendererComponent,\r\n dataUnmatchedCellRendererComponent: DataUnmatchedCellRendererComponent,\r\n dataCenterImportSummaryRenderer: DataCenterImportSummaryRenderer,\r\n },\r\n createUsermodalShow: false,\r\n personalSettingsModalShow: false,\r\n showDialog: false,\r\n openImportTemplateDialog: false,\r\n openUploadDialog: false,\r\n openDeleteFile: false,\r\n openCommentFile: false,\r\n agCellData: null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.handleCreateUserModal = this.handleCreateUserModal.bind(this);\r\n this.handleHideCreateUserModal = this.handleHideCreateUserModal.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n handleImportTemplateDialogOpen(event) {\r\n this.setState({ openImportTemplateDialog: true });\r\n }\r\n handleImportTemplateDialogClose = (event) => {\r\n this.setState({ openImportTemplateDialog: false });\r\n };\r\n\r\n handleUploadDialogOpen(event) {\r\n this.setState({ openUploadDialog: true });\r\n }\r\n handleUploadDialogClose = (event) => {\r\n this.setState({ openUploadDialog: false });\r\n };\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n var o2 = o.map((r) => {\r\n return ({\r\n ...r,\r\n errorCount: r.errorCount ?? 0,\r\n warningCount: r.warningCount ?? 0,\r\n unmatchedCount: r.unmatchedCount ?? 0,\r\n });\r\n });\r\n\r\n this.STORE.CACHE.SET(o2, 0);\r\n this.setState({\r\n data: o2,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n methodFromParent = (cell, data) => {\r\n this.setState({ personalSettingsModalShow: true, userId: data.userId });\r\n };\r\n\r\n // these are called by the triple-dot Action Menu\r\n handleDeleteFile = (_cellRef) => {\r\n this.setState({\r\n openDeleteFile: true,\r\n agCellData: _cellRef.props.data,\r\n });\r\n }\r\n handleAddEditCommentFile = (_cellRef) => {\r\n this.setState({\r\n openCommentFile: true,\r\n agCellData: _cellRef.props.data,\r\n });\r\n }\r\n\r\n handleCreateUserModal() {\r\n console.log(\"handling modal\");\r\n console.log(this.state.createUsermodalShow);\r\n this.setState({ createUsermodalShow: true }, () => {\r\n console.log(this.state.createUsermodalShow);\r\n });\r\n }\r\n handleHideCreateUserModal() {\r\n this.setState({ createUsermodalShow: false });\r\n }\r\n\r\n handleHide() {\r\n this.setState({ personalSettingsModalShow: false });\r\n }\r\n\r\n handleDownloadAg = async (cell, agNodeData, filename, linkRefAg, windowUrl) => {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/File/Download/${this.context.user.tenantId}/${agNodeData.sourceId}/${agNodeData.fileId}/${encodeURIComponent(filename)}`,\r\n {\r\n method: \"GET\",\r\n headers: { \r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n );\r\n const blob = await result.blob();\r\n return blob;\r\n };\r\n canNotDownloadFile = (_download) => {\r\n this.setState({ download: _download });\r\n }\r\n\r\n dataFileStatusMethodFromParent(cell, node) {\r\n ToastService.showWarning(\"Under Contruction\");\r\n }\r\n\r\n dataImportSummaryMethodFromParent(cell, node) {\r\n //ToastService.showWarning(\"Under Contruction\");\r\n this.setState({ showSummaryDialog: true });\r\n this.setState({ modalAgNode: node });\r\n }\r\n\r\n dataCountMethodFromParent(cell, node) {\r\n this.setState({ healthIndicator: \"\" });\r\n this.setState({ showDataExpandedViewDialog: true });\r\n this.setState({ modalAgNode: node });\r\n }\r\n\r\n handleDataExpandedViewHide = () => {\r\n this.setState({ showDataExpandedViewDialog: false });\r\n };\r\n\r\n dataErrorMethodFromParent(cell, node) {\r\n this.setState({ healthIndicator: \"1\" });\r\n this.setState({ showDataExpandedViewDialog: true });\r\n this.setState({ modalAgNode: node });\r\n }\r\n\r\n dataWarningMethodFromParent(cell, node) {\r\n this.setState({ healthIndicator: \"2\" });\r\n this.setState({ showDataExpandedViewDialog: true });\r\n this.setState({ modalAgNode: node });\r\n }\r\n\r\n dataUnmatchedMethodFromParent(cell, node) {\r\n this.setState({ healthIndicator: \"3\" });\r\n this.setState({ showDataExpandedViewDialog: true });\r\n this.setState({ modalAgNode: node });\r\n }\r\n\r\n fileStatusMethodFromParent(cell, node) {\r\n this.setState({ showStatusDialog: true });\r\n this.setState({ modalAgNode: node });\r\n }\r\n\r\n handleFileStatusHide = () => {\r\n this.setState({ showStatusDialog: false });\r\n };\r\n\r\n handleFileSummaryHide = () => {\r\n this.setState({ showSummaryDialog: false });\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.DATA_CENTER.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {/* Header Componenet */}\r\n { this.fetchData(true); }, title: \"Reload\", iconColor: \"secondary\" },\r\n ]}\r\n rightActions={[\r\n { icon: MatIconService.IMPORT_TEMPLATE, onClick: (e) => { this.handleImportTemplateDialogOpen(e); }, title: \"Import Template\", iconColor: \"primary\" },\r\n { icon: MatIconService.CLOUD_UPLOAD, onClick: (e) => { this.handleUploadDialogOpen(e); }, isReadOnly: RolePermissionService.UPLOAD_FILE_DATACENTER.cannotCreate, title: \"Upload File\", iconColor: \"primary\" },\r\n ]}\r\n />\r\n\r\n
    \r\n { }}\r\n >\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n {RolePermissionService.getAccessDeniedComponent(classes, () => { this.setState({ download: false }) })}\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n\r\n {/* Action Menu Items */}\r\n {this.state.openCommentFile && this.state.agCellData ?\r\n {\r\n this.setState({ openCommentFile: false });\r\n if (_reloadRequired) { this.fetchData(true); }\r\n }}\r\n />\r\n : null}\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(true); }} />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default withStyles(MatClassService)(dataCenterComponent);\r\n","import { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridService } from \"../../shared/services/ag-grid/agGridService\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport Cache from \"../../shared/store/cache\";\r\nimport { ALIGNMENT, GST_API } from \"../../shared/types/enums\";\r\n\r\n\r\nexport default class ProfileCenterService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static parentRef = null;\r\n static INIT = (_parentRef) => {\r\n ProfileCenterService.parentRef = _parentRef;\r\n }\r\n\r\n static profileDetailParams = null;\r\n static showProfileDetailDialogIfExists = () => {\r\n if (ProfileCenterService.profileDetailParams) {\r\n // for some reason not showing imediately, so shwoing after a timeout\r\n setTimeout(() => { this.parentRef.setState({ showProfileDetailDialog: true }) }, 100);\r\n }\r\n }\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n\r\n return ApiService.postOBS(GST_API.Core, \"/Profiles/FetchProfileCenterDetails\", \r\n \r\n JSON.stringify({\r\n tenantId: clientAuthContext.user.tenantId,\r\n pageNumber: 1,\r\n pageSize: 5000,\r\n whereClause: \"\",\r\n sortClause: \"\",\r\n permissions: [\r\n {\r\n permissionId: 0,\r\n permissionName: \"string\",\r\n parentId: 0,\r\n fieldId: 0,\r\n fieldLovId: 0,\r\n isActive: true,\r\n canCreate: true,\r\n canEdit: true,\r\n canDelete: true,\r\n canViewDelete: true,\r\n canView: true,\r\n canConfigure: true,\r\n },\r\n ],\r\n userType: 0,\r\n }),\r\n );\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getActionMenuParams = (_componentThisRef) => {\r\n return {\r\n menuIcon: MatIconService.MORE_VERT_16,\r\n menuMaxHeight: 60,\r\n\r\n menuOptions: [\r\n {\r\n text: \"Add/Edit a File Comment\", icon: MatIconService.FILE_COMMENT, onClickCallback: (_cellRef) => {\r\n _componentThisRef.handleAddEditCommentFile(_cellRef);\r\n }\r\n },\r\n {\r\n text: \"Re-run File Validation\", icon: MatIconService.RERUN_VALIDATION, onClickCallback: (_cellRef) => {\r\n _componentThisRef.handleRerunValidationConfirm(_cellRef);\r\n }\r\n },\r\n // {\r\n // text: \"Re-run Matching\", icon: MatIconService.RERUN_MATCHING, onClickCallback: (_cellRef) => {\r\n // ToastService.showInfo(\"Under Construction\");\r\n // }\r\n // },\r\n // {\r\n // text: \"Run Health Reports\", icon: MatIconService.RUN_REPORTS, onClickCallback: (_cellRef) => {\r\n // ToastService.showInfo(\"Under Construction\");\r\n // }\r\n // },\r\n ]\r\n }\r\n }\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, null, null, \"\").fixedWidth(48).headerClass(\"center-text\").cellRenderer(\"actionCellRendererComponent\", this.getActionMenuParams(_componentThisRef)).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"receivedDate\", \"Processed Date\").fixedWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"sourceName\", \"Source\").flexWeight(1).minWidth(112).headerClass(\"center-text\").pivot().groupDefaultExpanded(3).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(6).minWidth(162).tooltip().cellRenderer(\"agGridAppendCommentIconCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"profileCount\", \"Profile Count\").fixedWidth(104).headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileCountCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"errorCount\", \"Errors\").fixedWidth(96).headerClass(\"center-text\").cellRenderer(\"profileErrorCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"warningCount\", \"Warnings\").fixedWidth(112).headerClass(\"center-text\").cellRenderer(\"profileWarningCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"unmatchedCount\", \"Unmatched\").fixedWidth(136).headerClass(\"center-text\").cellRenderer(\"profileUnmatchedCellRendererComponent\").SET(),\r\n ];\r\n }\r\n}","import { ReplaySubject } from \"rxjs\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ENTITY_TYPE } from \"../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridBulkEditUtil } from \"../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport DynamicControlService from \"../../../shared/services/dynamicControlService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport ProfileTabService from \"../profile-detail/tabs/profileTabService\";\r\n\r\nexport default class ProfileExpandedViewService {\r\n\r\n static postProfileCenterExpandedViewAsOBS = (_tenantId, _userId, _modalAgNode, _healthIndicator, _searchvalue = \"\") => {\r\n\r\n let targetUrl = \"/Profiles/\";\r\n switch (_healthIndicator) {\r\n case \"1\": targetUrl += `GetProfilesErrorCount`; break;\r\n case \"2\": targetUrl += `GetProfilesWarningCount`; break;\r\n case \"3\": targetUrl += `GetProfilesUnmatchedCount`; break;\r\n default: targetUrl += `GetProfileCount`;\r\n }\r\n\r\n return ApiService.postOBS(API_ENDPOINT.CORE, targetUrl,\r\n JSON.stringify({\r\n sourceid: _modalAgNode.sourceId,\r\n fileid: String(_modalAgNode.fileId),\r\n healthindicator: _healthIndicator,\r\n tenantid: _tenantId,\r\n searchvalue: _searchvalue,\r\n pageNumber: 1,\r\n rowsperPage: 100000,\r\n isActive: 1,\r\n screenId: 43,\r\n userId: _userId,\r\n searchString: \"\",\r\n taskid: 0,\r\n source: \"Profiles\",\r\n }),\r\n );\r\n };\r\n\r\n\r\n static getDataCenterDisplayedFieldsAsOBS = (_tenantId, _sourceId, _entityId, _userId, _screenId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/DisplayedFields/${_tenantId}/${_sourceId}/${_entityId}/${_userId}/${_screenId}`\r\n );\r\n };\r\n\r\n static getProfileRuleSummaryAsOBS = (_tenantId, _fileId) => {\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/RuleSummary/FetchRuleSummaryByEntity/${_tenantId}/${ENTITY_TYPE.PROFILE}?id=0&fileId=${_fileId}&pageNumber=1&pageSize=5000`);\r\n }\r\n\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef, _isParentReadOnly) {\r\n\r\n let dynamicColumns = [];\r\n\r\n // edit button column\r\n if (RolePermissionService.PROFILE_EXPANDED_VIEW.canEdit) {\r\n dynamicColumns.push(AgGridBulkEditUtil.getSelectColumn(RolePermissionService.PROFILE_EXPANDED_VIEW.canEdit, _componentThisRef.toggleSubmitButton));\r\n }\r\n\r\n // other columns\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"text\", \"healthindicator\", \"Health Indicator\", false).fixedWidth(104).headerClass(\"center-text\")\r\n .cellRenderer(\"healthIndicatorCellRenderer\", {\r\n hasApprovalFlag: (_props) => {\r\n return _props.data.profilestatusid === 4; // 4 -> Pending Approval\r\n }\r\n }).SET());\r\n\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"text\", \"ruleviolations\", \"Rule Violations\").minWidth(122).valueSetter((params) => { params.data.ruleviolations = params.newValue; return true; }).SET());\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"set\", \"sourcesystem\", \"Source System\").minWidth(136).flexWeight(1).tooltip().SET());\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"text\", \"filename\", \"File Name\").minWidth(136).flexWeight(1).tooltip().SET());\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"text\", \"profilestatus\", \"Profile Status\").minWidth(122).flexWeight(1).tooltip().SET());\r\n\r\n // dynamic columns\r\n (_componentThisRef.state.displayedColumnConfigs || []).forEach(colFieldConfig => {\r\n\r\n // make address & contact fields not editable\r\n if (ProfileTabService.addressFieldNamesInLowerCase.includes(colFieldConfig.mappedFieldNameLower)\r\n || ProfileTabService.contactsFieldNamesInLowerCase.includes(colFieldConfig.mappedFieldNameLower)) {\r\n colFieldConfig.isReadOnly = true;\r\n }\r\n\r\n // common configurations\r\n var colProps = DynamicControlService.getAgGridColumn(_componentThisRef, _isParentReadOnly, colFieldConfig, _componentThisRef.state.profileRuleSummaries);\r\n\r\n // field specific configurations\r\n switch (colFieldConfig.mappedFieldNameLower) {\r\n case \"porziogstprofileid\": colProps.editable(false).minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileDetailCellRendererComponent\"); break;\r\n case \"country\": colProps.minWidth(136); break;\r\n // case \"addresss1\": colProps.setFieldName(\"addresS1\"); break;\r\n // case \"address1\": colProps.setFieldName(\"addresS1\"); break;\r\n }\r\n\r\n // finalize and push to the array\r\n dynamicColumns.push(colProps.SET());\r\n });\r\n\r\n // RETURN\r\n return dynamicColumns;\r\n }\r\n\r\n\r\n static postRowDataAsOBS = (_cellRef) => {\r\n var postSubject = new ReplaySubject(); // 1st\r\n\r\n // subscribe to the validationOBS\r\n this._validateRowEditOBS(_cellRef).subscribe(\r\n (_validationResult) => {\r\n if (_validationResult.isSuccess) {\r\n\r\n // make the api call to post, handle the below accordingly on success or failure\r\n postSubject.next({ isSuccess: true });\r\n\r\n } else {\r\n postSubject.next({ ..._validationResult });\r\n }\r\n },\r\n (_validationException) => {\r\n console.log(\"Validaiton Exception\", _validationException);\r\n postSubject.next({ isSuccess: false, invalidCellRef: _cellRef, invalidMessage: \"Validaiton Exception Occured\" });\r\n },\r\n );\r\n\r\n // return the subject as observable\r\n return postSubject.asObservable(); // 3rd\r\n }\r\n\r\n\r\n static _validateRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n //---\r\n}","import React, { Component } from \"react\";\r\nimport { Select, MenuItem } from \"@material-ui/core\";\r\nimport { DataService } from \"../../../services/dataService\";\r\nimport { AgGridBulkEditUtil } from \"../bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class AgGridErroredDropdownCellRenderer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const _errorOrWarningConfig = this.props.getErrorOrWarningInfoCallback(this);\r\n this.state = {\r\n //|---> Mandatory Fields\r\n isEditing: false,\r\n isParentReadOnly: this.props.isParentReadOnly,\r\n isColumnReadOnly: this.props.isColumnReadOnly,\r\n value: this.props.node.data[this.props.column.colDef.field],\r\n parentRef: this.props.componentThisRef,\r\n errorOrWarningConfig: _errorOrWarningConfig,\r\n hasErrorOrWarning: AgGridBulkEditUtil.hasErrorOrWarning(this.props.componentThisRef.state.agGridBulkEditUtil, this.props, _errorOrWarningConfig),\r\n //<---|\r\n\r\n // should be passed through cellRendererParams\r\n dataSource: this.props.dataSource || [],\r\n valueProp: this.props.valueProp,\r\n displayProp: this.props.displayProp,\r\n\r\n };\r\n }\r\n\r\n render() {\r\n\r\n return AgGridBulkEditUtil.getRenderer(this,\r\n // formattedValue callback\r\n () => {\r\n const selectedObj = DataService.getFirstOrDefault(this.state.dataSource.filter(x => x[this.state.valueProp] === this.state.value));\r\n return (selectedObj ? selectedObj[this.state.displayProp] : \"\");\r\n },\r\n // editor callback\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}","import React, { Component } from \"react\";\r\nimport { Input } from \"@material-ui/core\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { format } from \"date-fns/esm\";\r\nimport MatThemeService from \"../../../services/theme/matThemeService\";\r\nimport { AgGridBulkEditUtil } from \"../bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class AgGridErroredDatePickerCellRenderer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n const _errorOrWarningConfig = this.props.getErrorOrWarningInfoCallback(this);\r\n this.state = {\r\n //|---> Mandatory Fields\r\n isEditing: false,\r\n isParentReadOnly: this.props.isParentReadOnly,\r\n isColumnReadOnly: this.props.isColumnReadOnly,\r\n value: this.props.node.data[this.props.column.colDef.field],\r\n parentRef: this.props.componentThisRef,\r\n errorOrWarningConfig: _errorOrWarningConfig,\r\n hasErrorOrWarning: AgGridBulkEditUtil.hasErrorOrWarning(this.props.componentThisRef.state.agGridBulkEditUtil, this.props, _errorOrWarningConfig),\r\n //<---|\r\n\r\n format: this.props.format || \"yyyy-MM-dd\",\r\n };\r\n }\r\n\r\n render() {\r\n\r\n return AgGridBulkEditUtil.getRenderer(this,\r\n // formattedValue callback\r\n () => { return this.state.value ? format(new Date(this.state.value), this.state.format) : \"\"; },\r\n // editor callback\r\n () => {\r\n return (\r\n \r\n { AgGridBulkEditUtil.applyChange(this, e); }} value={this.state.value}\r\n open={this.state.isEditing} onClose={() => { AgGridBulkEditUtil.handleClose(this); }}\r\n autoOk={true} format={this.state.format} size=\"small\" variant=\"dialog\" inputVariant={MatThemeService.inputVariant} clearable={false}\r\n TextFieldComponent={(iProps) => {\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}","import React, { Component } from \"react\";\r\nimport { TextField } from \"@material-ui/core\";\r\nimport MatThemeService from \"../../../services/theme/matThemeService\";\r\nimport { AgGridBulkEditUtil } from \"../bluk-edit/agGridBulkEditUtil\";\r\nimport { DataService } from \"../../../services/dataService\";\r\n\r\nexport class AgGridErroredTextCellRenderer extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n if (DataService.isNullOrUndefined(this.props.node.data[this.props.column.colDef.field])) {\r\n // if null or undefined is passed then the textcontrol becomes uncontrolled,\r\n // to avoid that we are updating the underlying datasource's value to empty string \r\n this.props.node.data[this.props.column.colDef.field] = \"\";\r\n }\r\n\r\n const _errorOrWarningConfig = this.props.getErrorOrWarningInfoCallback(this);\r\n this.state = {\r\n //|---> Mandatory Fields\r\n isEditing: false,\r\n isParentReadOnly: this.props.isParentReadOnly,\r\n isColumnReadOnly: this.props.isColumnReadOnly,\r\n value: this.props.node.data[this.props.column.colDef.field],\r\n parentRef: this.props.componentThisRef,\r\n errorOrWarningConfig: _errorOrWarningConfig,\r\n hasErrorOrWarning: AgGridBulkEditUtil.hasErrorOrWarning(this.props.componentThisRef.state.agGridBulkEditUtil, this.props, _errorOrWarningConfig),\r\n //<---|\r\n onBlurHandled: true // onblur is handled for text fields\r\n\r\n };\r\n }\r\n\r\n\r\n isValidValue = () => {\r\n return this.state.value !== this.props.node.data[this.props.column.colDef.field];\r\n }\r\n\r\n render() {\r\n\r\n return AgGridBulkEditUtil.getRenderer(this,\r\n // formattedValue callback\r\n () => { return this.state.value; },\r\n // editor callback\r\n () => {\r\n return (\r\n { this.setState({ value: e.target.value }); }}\r\n // handles tab/Enter key and other navigations\r\n onBlur={(e) => { // onNavigation out,\r\n // if the newValue is different than the orignalValue, then apply the changes\r\n if (this.isValidValue()) {\r\n AgGridBulkEditUtil.applyChange(this, e.target.value); // commit value\r\n } else { // else if same, the hide the editor\r\n AgGridBulkEditUtil.handleClose(this);\r\n }\r\n }}\r\n onKeyDown={(e) => {\r\n // Enter || Tab key\r\n if (e.which === 13 || e.which === 9) {\r\n // If the newValue is different than the orignalValue, then apply the changes\r\n if (this.isValidValue()) {\r\n AgGridBulkEditUtil.applyChange(this, e.target.value); // commit value\r\n } else { // same, then hide the editor\r\n AgGridBulkEditUtil.handleClose(this);\r\n }\r\n e.stopPropagation();\r\n } else if (e.which === 27) { // Escape Key\r\n // revert back last committed value\r\n this.setState({ value: this.props.node.data[this.props.column.colDef.field] });\r\n // hide the editor\r\n AgGridBulkEditUtil.handleClose(this);\r\n } else {\r\n\r\n }\r\n }}\r\n />\r\n );\r\n }\r\n\r\n );\r\n }\r\n\r\n //---\r\n}","import React, { Component } from \"react\";\r\nimport { DataService } from \"../../../services/dataService\"\r\n\r\nexport default class HealthIndicatorCellRenderer extends Component {\r\n\r\n render() {\r\n let style = undefined;\r\n // 1 -> error, 2 -> warning, 3 -> UnMatched\r\n if (this.props.data.healthindicator === 1) { style = \"circle-error\"; }\r\n else if (this.props.data.healthindicator === 2) { style = \"circle-warning\"; }\r\n else if (this.props.data.healthindicator === 3) { style = \"circle-unmatched\"; }\r\n // status check\r\n else if (this.props.hasApprovalFlag(this.props)) { style = \"circle-approval\"; }\r\n\r\n //---\r\n return (DataService.isStringNullOrEmpty(style) ? null :
    {\"\"}
    );\r\n\r\n //---\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { Typography, ListItemIcon, MenuItem, Divider, Menu } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../services/theme/matIconService\";\r\nimport { SELECT_MODE } from \"../types/enums\";\r\nimport { DataService } from \"../services/dataService\";\r\n\r\nexport default class AgGridSelectMenuComponent extends React.Component {\r\n\r\n applySelection = (_selectMode) => {\r\n let rowNodesToRefresh = [];\r\n \r\n this.props.agGridUtils.gridApi.forEachNodeAfterFilter((node) => {\r\n switch (_selectMode) {\r\n case SELECT_MODE.INVERT:\r\n node.data[this.props.selectionColumnName] = !node.data[this.props.selectionColumnName];\r\n rowNodesToRefresh.push(node);\r\n break;\r\n case SELECT_MODE.ALL:\r\n if (node.data[this.props.selectionColumnName] !== true) {\r\n node.data[this.props.selectionColumnName] = true;\r\n rowNodesToRefresh.push(node);\r\n }\r\n break;\r\n case SELECT_MODE.PAGE: \r\n let api = this.props.agGridUtils.gridApi;\r\n const pageSize = api.paginationGetPageSize();\r\n const currentPage = api.paginationGetCurrentPage();\r\n const startRow = (currentPage ) * pageSize;\r\n const endRow = Math.min((currentPage +1) * pageSize, api.paginationGetRowCount());\r\n if (node.rowIndex >= startRow && node.rowIndex < endRow) {\r\n node.data[this.props.selectionColumnName] = true;\r\n rowNodesToRefresh.push(node);\r\n }\r\n break;\r\n case SELECT_MODE.NONE:\r\n default:\r\n if (node.data[this.props.selectionColumnName] !== false) {\r\n node.data[this.props.selectionColumnName] = false;\r\n rowNodesToRefresh.push(node);\r\n }\r\n break;\r\n }\r\n });\r\n if (DataService.hasElements(rowNodesToRefresh)) {\r\n this.props.agGridUtils.refreshCells(this.props.agGridUtils.gridApi, rowNodesToRefresh, [this.props.selectionColumnName]);\r\n if (this.props.onSelectionChange) { this.props.onSelectionChange(); }\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n { this.props.onClose(); }}\r\n >\r\n { this.applySelection(SELECT_MODE.ALL); this.props.onClose(); }}>\r\n {MatIconService.SELECT_ALL}\r\n Select All\r\n \r\n { this.applySelection(SELECT_MODE.PAGE); this.props.onClose(); }}>\r\n {MatIconService.SELECT_PAGE}\r\n Select Page\r\n \r\n { this.applySelection(SELECT_MODE.NONE); this.props.onClose(); }}>\r\n {MatIconService.SELECT_NONE}\r\n Clear Selection\r\n \r\n \r\n { this.applySelection(SELECT_MODE.INVERT); this.props.onClose(); }}>\r\n {MatIconService.SELECT_PARTIAL}\r\n Invert Selection\r\n \r\n \r\n );\r\n }\r\n}","import React from \"react\";\r\nimport { combineLatest, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged } from \"rxjs/operators\";\r\nimport { Box, LinearProgress } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AgGridUtil } from \"../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { API_ENDPOINT, CrudAction, ENTITY_TYPE, HEALTH_INDICATOR, ResultStatus, SELECT_MODE, TaskLauncher } from \"../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport FieldConfigurationComponent from \"../../../shared/components/field-configuration/fieldConfigurationComponent\";\r\nimport TaskDetailsComponent from \"../../home/task/task-details/taskDetailsComponent\";\r\nimport ProfileCountCellRendererComponent from \"./profileCountCellRendererComponent\";\r\nimport ProfileDetailCellRendererComponent from \"../profile-detail/profileDetailCellRendererComponent\";\r\nimport ProfileDetailDialogComponent from \"../profile-detail/profileDetailDialogComponent\";\r\nimport ProfileExpandedViewService from \"./profileExpandedViewService\";\r\nimport { AgGridBulkEditUtil } from \"../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport ProfileTabService from \"../profile-detail/tabs/profileTabService\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\n\r\nimport AgGridErroredDropdownCellRenderer from \"../../../shared/components/ag-grid/error-cell-renderers/agGridErroredDropdownCellRenderer\";\r\nimport AgGridErroredDatePickerCellRenderer from \"../../../shared/components/ag-grid/error-cell-renderers/agGridErroredDatePickerCellRenderer\";\r\nimport { AgGridErroredTextCellRenderer } from \"../../../shared/components/ag-grid/error-cell-renderers/agGridErroredTextCellRenderer\";\r\nimport { AgGridErroredCheckboxCellRenderer } from \"../../../shared/components/ag-grid/error-cell-renderers/agGridErroredCheckboxCellRenderer\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport HealthIndicatorCellRenderer from \"../../../shared/components/elements/healthIndicator/healthIndicatorCellRenderer\";\r\nimport ProfileStatusOverrideComponenet from \"../profile-detail/tabs/profileStatusOverrideComponenet\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport AgGridSelectMenuComponent from \"../../../shared/components/agGridSelectMenuComponent\";\r\n\r\nlet searchSubject = new BehaviorSubject(\"\");\r\nlet SearchResultObservable = searchSubject.pipe(\r\n filter((val) => val.hasOwnProperty(\"newValue\")),\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((val) =>\r\n ProfileExpandedViewService.postProfileCenterExpandedViewAsOBS(val.user.tenantId, val.user.userId,\r\n { sourceId: val.sourceId, fileId: val.fileId }, val.healthIndicator, val.newValue))\r\n);\r\n\r\nclass ProfileExpandedViewComponent extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n // cancelled during component's unMount\r\n scopedSubscriptions = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n // - others\r\n data: [],\r\n isInit: true, // true for the first time\r\n isReadOnly: false,\r\n selectedProfiles: [],\r\n\r\n profileStatusList: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n porzioSearch: \"\",\r\n showCreateTaskDialog: false,\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n // checked or radio button based on permissions\r\n isCheckedCellRenderer: RolePermissionService.PROFILE_EXPANDED_BULK_EDIT.canEdit ? AgGridCheckboxCellRendererComponent : AgGridRadioButtonCellRendererComponent,\r\n\r\n erroredDropdownCellRenderer: AgGridErroredDropdownCellRenderer,\r\n erroredDatePickerCellRenderer: AgGridErroredDatePickerCellRenderer,\r\n erroredTextCellRenderer: AgGridErroredTextCellRenderer,\r\n erroredCheckboxCellRenderer: AgGridErroredCheckboxCellRenderer,\r\n\r\n profileCountCellRendererComponent: ProfileCountCellRendererComponent,\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n healthIndicatorCellRenderer: HealthIndicatorCellRenderer,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n LookupService.fetchCommonLookups(this.context);\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ isGridReady: false, fetchResult: ResultStatus.LOADING, data: [], isInit: true });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ProfileExpandedViewService.postProfileCenterExpandedViewAsOBS(this.context.user.tenantId, this.context.user.userId, this.props.modalAgNode, this.props.healthIndicator),\r\n ProfileExpandedViewService.getDataCenterDisplayedFieldsAsOBS(this.context.user.tenantId, this.props.modalAgNode.sourceId, 1, this.context.user.userId, this.props.screenId),\r\n ProfileExpandedViewService.getProfileRuleSummaryAsOBS(this.context.user.tenantId, this.props.modalAgNode.fileId)\r\n ]).subscribe(\r\n // success\r\n ([_countryList, _data, _agGridColumns, _profileRuleSummaries]) => {\r\n // hardocde\r\n _agGridColumns = ProfileTabService.hardCodeColumns(_agGridColumns);\r\n\r\n // adds the selected prop to each element and converts the all keys to lowecase\r\n _data = (_data || []).map(obj => { obj[AgGridBulkEditUtil.selectColumnName] = false; return obj; });\r\n _data = _data.map(obj => Object.entries(obj).reduce((a, [key, value]) => {\r\n a[key.toLowerCase()] = value;\r\n return a;\r\n }, {}));\r\n\r\n if (DataService.hasElements(_data)) {\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n LookupService.getTemplateBySourceIdAsOBS(this.context.user.tenantId, _data[0].sourceid)\r\n ]).subscribe(\r\n ([_templateData]) => {\r\n var _displayedColumnConfigs = [];\r\n const _dynamicControlFieldsMap = ProfileTabService.getGroupFieldsMap(this, false, _templateData, \"grouprenderid\", \"ordinal\", true);\r\n const _displayedFieldIds = _agGridColumns.map(x => { return x.fieldId; });\r\n\r\n // adding in same order as _agGridColumns\r\n _displayedFieldIds.forEach(_displayedFieldId => {\r\n _dynamicControlFieldsMap.forEach(_value => {\r\n _value.fieldConfigs.forEach(_fieldConfig => {\r\n if (_displayedFieldId === _fieldConfig.fieldID) {\r\n _displayedColumnConfigs.push(_fieldConfig);\r\n }\r\n });\r\n });\r\n });\r\n\r\n this.setState(\r\n {\r\n data: _data,\r\n displayedColumnConfigs: _displayedColumnConfigs,\r\n profileRuleSummaries: _profileRuleSummaries,\r\n agGridColumns: _agGridColumns,\r\n countryList: _countryList,\r\n },\r\n // change the state after all the above are assigned\r\n () => { this.setState({ fetchResult: ResultStatus.LOADED }); }\r\n );\r\n },\r\n (_errorObj) => {\r\n ToastService.showError(\"Error while loading template.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n } else {\r\n ToastService.showError(\"No Data.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n // onError\r\n (error) => {\r\n ToastService.showError(\"Error while Fetching.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n handleSearchChange = (e) => {\r\n const newValue = e.target.value;\r\n this.setState({ porzioSearch: newValue, isProcessing: true });\r\n\r\n if (!this.state.searchSubscriptionAdded) {\r\n this.setState(\r\n { searchSubscriptionAdded: true },\r\n () => {\r\n this.scopedSubscriptions.add(\r\n SearchResultObservable.subscribe((searchResultJson) => {\r\n this.setState({ data: searchResultJson, isProcessing: false });\r\n })\r\n );\r\n }\r\n );\r\n } else {\r\n this.setState({ isProcessing: true });\r\n searchSubject.next({ newValue, ...this.props.modalAgNode, ...this.context, healthIndicator: this.props.healthIndicator });\r\n }\r\n }\r\n\r\n clearSearch = () => {\r\n searchSubject.next({ newValue: \"\", ...this.props.modalAgNode, ...this.context, healthIndicator: this.props.healthIndicator });\r\n this.setState({ isProcessing: false });\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n onProcessCellCallback = (params) => {\r\n switch (params.column.colId) {\r\n case 'healthindicator':\r\n return HEALTH_INDICATOR[params.node.data.healthindicator];\r\n case 'country':\r\n return params.node.data.countryname;\r\n case 'profiletypeid':\r\n case 'profilecategoryid':\r\n case 'credentialsid':\r\n case 'specialtyid':\r\n case 'affiliatedcompanyid':\r\n let colName = params.column.colId;\r\n return params.node.data[colName.substring(0, colName.length - 2)];\r\n default:\r\n return params.value;\r\n }\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\" && c.colDef.headerName !== \"Edit\"),\r\n fileName: `Profile_Expanded_View ${new Date().toDateString()}`,\r\n processCellCallback: this.onProcessCellCallback\r\n };\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n if (RolePermissionService.PROFILE_DETAILS.cannotView) {\r\n RolePermissionService.showAccessDeniedToast();\r\n } else {\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showProfileDetailDialog: true });\r\n }\r\n }\r\n };\r\n\r\n handleCreateTaskDialogClick = () => {\r\n let _selectedGstIds = [];\r\n this.state.agGridUtils.getSelectedRows(AgGridBulkEditUtil.selectColumnName).forEach((rowNode) => {\r\n _selectedGstIds.push(rowNode.data[\"porziogstprofileid\"]);\r\n })\r\n\r\n if (DataService.hasNoElements(_selectedGstIds)) {\r\n ToastService.showWarning(\"Please select one or more Profiles\");\r\n } else {\r\n this.setState({\r\n selectedGstIds: _selectedGstIds,\r\n showCreateTaskDialog: true\r\n });\r\n }\r\n }\r\n\r\n\r\n getSelectionIcon = () => {\r\n return RolePermissionService.PROFILE_EXPANDED_BULK_EDIT.cannotEdit ? null\r\n : { title: \"select\", icon: MatIconService.MENU, onClick: (e) => { this.setState({ anchorEl: e.currentTarget, openSelectMenu: true }); }, isReadOnly: !this.state.isGridReady };\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.PROFILE_EXPANDED_VIEW.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n } else {\r\n\r\n let componentType = \"\";\r\n switch (this.props.healthIndicator) {\r\n case \"1\": componentType = `Profile Error`; break;\r\n case \"2\": componentType = `Profile Warning`; break;\r\n case \"3\": componentType = `Profile Unmatched`; break;\r\n case \"\":\r\n default: componentType = `Profile Count`; break;\r\n }\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n { this.props.onClose(false); }, title: \"Cancel\" }]}\r\n />\r\n ;\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {/* Header Componenet */}\r\n { this.setState({ anchorEl: null, openSelectMenu: false }); }}\r\n onSelectionChange={() => { this.toggleSubmitButton(); }}\r\n />\r\n { this.props.onClose(false); }, title: \"GoTo Profiles\" },\r\n { icon: MatIconService.RELOAD, iconColor: \"secondary\", onClick: () => { this.fetchData(); }, title: \"Reload\" },\r\n { ...this.getSelectionIcon() }\r\n ]}\r\n rightActions={[\r\n { jsxElement: LayoutService.getSearchText(classes, \"search\", this.state.porzioSearch, this.handleSearchChange) },\r\n {\r\n icon: MatIconService.OVERRIDE_28, onClick: () => { this.setState({ showProfileStatusOverrideDialog: true }); }, title: \"Override Profile Status\",\r\n isReadOnly: this.state.isReadOnly || this.state.isInit || RolePermissionService.PROFILE_EXPANDED_BULK_STATUS_FIELD.cannotEdit,\r\n },\r\n { icon: MatIconService.COLUMNS_24, onClick: () => { this.setState({ showFieldConfigurationDialog: true }); }, title: \"Field Configurations\", isReadOnly: RolePermissionService.PROFILE_EXPANDED_VIEW.cannotConfigure },\r\n { icon: MatIconService.TASK_ADD, onClick: this.handleCreateTaskDialogClick, title: \"Create Task\", isReadOnly: RolePermissionService.PROFILE_EXPANDED_VIEW_TASK.cannotCreate },\r\n { icon: MatIconService.DOWNLOAD, onClick: () => { this.onDownloadClick(); }, title: \"Export\", isReadOnly: RolePermissionService.PROFILE_EXPANDED_VIEW_EXPORT.cannotView },\r\n { icon: MatIconService.OK, iconColor: \"primary\", onClick: () => { this.clearSearch(); this.handleSubmit(); }, isReadOnly: (this.state.isInit || this.state.isReadOnly), title: \"Save\" },\r\n ]}\r\n />\r\n\r\n {/* Content */}\r\n \r\n {/* Processing Progress */}\r\n {this.state.isProcessing ? : null}\r\n\r\n {/* AgGrid */}\r\n
    \r\n {\r\n this.setState({ isGridReady: true });\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridUtils.setGridParams(params, false);\r\n this.state.agGridUtils.pinColumn(AgGridBulkEditUtil.selectColumnName); // pin the edit column to the left\r\n }}\r\n\r\n gridOptions={{\r\n context: { componentParent: this },\r\n ...AgGridColumnExt.getGridOptions(40),\r\n cellFlashDelay: 1000,\r\n cellFadeDelay: 750,\r\n }}\r\n >\r\n
    \r\n
    \r\n\r\n {/* Show Field-Configuration Dialog */}\r\n {this.state.showFieldConfigurationDialog ?\r\n this.setState({ showFieldConfigurationDialog: false })}\r\n refreshList={this.fetchData} />\r\n : null}\r\n\r\n {/* Show Profile-Detail Dialog as a Page */}\r\n this.setState({ showProfileDetailDialog: false }, () => {\r\n if (_params !== false) {\r\n this.props.onClose(true);\r\n }\r\n })}\r\n closeParentCallback={() => {\r\n this.props.onClose(true);\r\n }}\r\n />\r\n\r\n {/* Create new Task for selected Profiles */}\r\n {this.state.showCreateTaskDialog ?\r\n this.setState({ showCreateTaskDialog: false })} inputAction={CrudAction.CREATE} refreshTaskList={() => { }} updateData={null}\r\n porzioGstIds={this.state.selectedGstIds}\r\n />\r\n : null}\r\n\r\n {/* Profile Status Selector Dialog */}\r\n {!this.state.showProfileStatusOverrideDialog ? null : x.prid)}\r\n onClose={(_reload) => {\r\n this.setState({ showProfileStatusOverrideDialog: false });\r\n }} />}\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }}\r\n onRetry={() => { this.fetchData(); }}\r\n />\r\n );\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n var hasUpdates = false;\r\n var hasSelected = false;\r\n let selectedProfiles = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasUpdates = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n if (!hasSelected) { hasSelected = rowNode.data[AgGridBulkEditUtil.selectColumnName] === true; }\r\n hasUpdates = hasUpdates || hasSelected;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedProfiles.push(rowNode.data);\r\n }\r\n });\r\n }\r\n // set the state\r\n this.setState({\r\n isReadOnly: !hasUpdates,\r\n hasSelected: hasSelected,\r\n selectedProfiles: selectedProfiles,\r\n isInit: false // only true for the first time \r\n });\r\n }\r\n\r\n handleSubmit = () => {\r\n this.setState({ isProcessing: true });\r\n var arrayToPost = [];\r\n // var rowDataKeys = [];\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode, rowIndex) => {\r\n // TODO: rowIndex will not be correct if sorted, so search this app for sortAndFilterAwareRowNode and see the impl\r\n if (this.state.agGridBulkEditUtil.updatedRowIdsCoumnNamesMap.has(rowNode.id)) {\r\n var modelObj = {};\r\n\r\n // update the modelobject with poulated values\r\n const rowColumnNames = this.state.agGridBulkEditUtil.updatedRowIdsCoumnNamesMap.get(rowNode.id);\r\n rowColumnNames.forEach(rowDataKey => {\r\n modelObj[rowDataKey] = rowNode.data[rowDataKey];\r\n });\r\n\r\n //--- ensure mandatory fields\r\n modelObj.tenantid = this.context.user.tenantId;\r\n modelObj.userId = this.context.user.userId;\r\n modelObj.userType = this.context.user.userTypeId;\r\n modelObj.uid = this.context.user.uid;\r\n modelObj.profileid = rowNode.data.prid;\r\n modelObj.prid = rowNode.data.prid;\r\n modelObj.sourceid = rowNode.data.sourceid;\r\n modelObj.recordid = rowNode.data.recordid;\r\n modelObj.fileid = rowNode.data.fileid;\r\n modelObj.ismanuallyentered = rowNode.data.ismanuallyentered;\r\n //---\r\n\r\n arrayToPost.push(modelObj);\r\n }\r\n });\r\n\r\n ApiService.postOBS(API_ENDPOINT.CORE, \"/Profiles/SaveProfiles\", JSON.stringify(arrayToPost))\r\n .subscribe(\r\n (successObj) => {\r\n this.state.agGridBulkEditUtil.clearUpdateTrackers();\r\n ToastService.showSuccess(\"Successfully saved.\");\r\n this.setState({ isProcessing: false });\r\n // this.props.onClose(true); as per PP2-871\r\n },\r\n (errorObj) => {\r\n ToastService.showError(\"Error while saving.\");\r\n this.setState({ isProcessing: false });\r\n }\r\n );\r\n }\r\n\r\n\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ProfileExpandedViewComponent);\r\n","import React, { Component } from \"react\";\r\nimport { CircleComponent} from \"../../../shared/components/elements/circleComponent/circleComponent.jsx\"\r\n\r\nexport default class ProfileErrorCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.profileErrorMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport {CircleComponent} from \"../../../shared/components/elements/circleComponent/circleComponent.jsx\"\r\n\r\nexport default class ProfileWarningCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.profileWarningMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport {CircleComponent} from \"../../../shared/components/elements/circleComponent/circleComponent.jsx\"\r\n\r\nexport default class ProfileUnmatchedCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.profileUnmatchedMethodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n}\r\n","import React from 'react';\r\nimport { AppBar, Box, CircularProgress, Dialog, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { ResultStatus, API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nclass RerunValidationProfileComponent extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n state = {\r\n fetchResult: ResultStatus.SUCCESS,\r\n };\r\n\r\n handleRerunValidation = () => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Profiles/RevalidateFile?tenantId=${this.context.user.tenantId}&fileId=${this.props.agCellData.fileId}&userId=${this.context.user.userId}`, JSON.stringify({})).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Re-run Validation Successful\");\r\n this.props.handleClose();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.SUCCESS:\r\n case ResultStatus.SAVING:\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n Petite Validation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Petite Validation\", this.handleRerunValidation, \"inherit\", \"keyActionRerunValidation\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.handleClose, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {this.state.fetchResult === ResultStatus.SAVING ?\r\n \r\n Re-running File Validation for file:\r\n \r\n :\r\n \r\n Are you sure you want to Re-run File Validation? For file:\r\n \r\n }\r\n \r\n {this.props.agCellData.fileName}\r\n \r\n {this.state.fetchResult !== ResultStatus.SAVING ?\r\n \r\n This action cannot be reversed\r\n \r\n : null}\r\n {this.state.fetchResult === ResultStatus.SAVING ?\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ();\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(RerunValidationProfileComponent);","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class UnmatchedProfileService {\r\n\r\n static getProfileByStatus(tenantId, profileStatus) {\r\n let targetUrl;\r\n if (profileStatus) {\r\n targetUrl = `/Profiles/GetReferenceDataGetUnMatchedProfiles?tenantId=${tenantId}&pageNumber=1&rowsPerPage=100000`;\r\n } else {\r\n targetUrl = `/Profiles/GetReferenceDataGetReviewedProfiles?tenantId=${tenantId}&pageNumber=1&rowsPerPage=100000`;\r\n }\r\n return ApiService.getOBS(API_ENDPOINT.CORE, targetUrl);\r\n }\r\n\r\n static getColumnDefs = (_parentThis) => {\r\n return [\r\n AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", { onChange: _parentThis.toggleSubmitButton }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").flexWeight(1).minAndDefaultWidth(140).headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companyprofileid\", \"Company Profile ID\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profile_type\", \"Profile Type\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpinumber\", \"NPI Number\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastname\", \"Last Name\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstname\", \"First Name\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"uslicensestate\", \"US License State\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"ustaxidnumber\", \"US Tax ID Number\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationname\", \"Organization Name\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usstatelicensenumber\", \"US License Number\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"countryname\", \"Country\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"vpl_or_nppl\", \"VPL/NPPL\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"nppes\", \"NPPES\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"teaching_hospital_list\", \"Teaching Hospital List\").flexWeight(1).minAndDefaultWidth(120).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n\r\n static saveReviewedProfiles = (tenantId, idsToSave) => {\r\n return ApiService.postOBS(API_ENDPOINT.CORE,\r\n `/Profiles/ReferenceDataSaveReviewedProfiles?tenantId=${tenantId}`, JSON.stringify(idsToSave));\r\n }\r\n static saveUnmatchedProfiles = (tenantId, porziogstprofileid) => {\r\n return ApiService.postOBS(API_ENDPOINT.CORE,\r\n `/Profiles/ReferenceDataSaveUnmatchedProfiles?tenantId=${tenantId}`, JSON.stringify(porziogstprofileid));\r\n }\r\n}","import React from \"react\";\r\nimport { Dialog, AppBar, IconButton, Toolbar, FormGroup, Switch, withStyles, DialogTitle, DialogContent, Box, Divider, Typography, Grid, Tooltip, LinearProgress } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction } from \"../../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport UnmatchedProfileService from \"./unmatchedProfileService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport ProfileDetailCellRendererComponent from \"../../profile-detail/profileDetailCellRendererComponent\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport ProfileDetailDialogComponent from \"../../profile-detail/profileDetailDialogComponent\";\r\nimport { AgGridErroredCheckboxCellRenderer } from \"../../../../shared/components/ag-grid/error-cell-renderers/agGridErroredCheckboxCellRenderer\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport AgGridSelectMenuComponent from \"../../../../shared/components/agGridSelectMenuComponent\";\r\n\r\nclass UnmatchedProfileComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: true,\r\n profileData: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"porziogstprofileid\", {\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n erroredCheckboxCellRenderer: AgGridErroredCheckboxCellRenderer,\r\n }),\r\n selectedProfiles: [],\r\n unmatchedChecked: true,\r\n isSaving: false\r\n };\r\n\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.fetchData();\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node, showProfileDetailDialog: true, inputAction: CrudAction.UPDATE });\r\n };\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n var hasSelected = false;\r\n let selectedProfiles = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedProfiles.push(rowNode.data);\r\n }\r\n });\r\n }\r\n // set the state\r\n this.setState({\r\n selectedProfiles: selectedProfiles,\r\n isReadOnly: !hasSelected,\r\n //isInit: false // only true for the first time \r\n });\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, profileData: [] });\r\n\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n //LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 6),\r\n UnmatchedProfileService.getProfileByStatus(this.context.user.tenantId, this.state.unmatchedChecked)\r\n ]).subscribe(\r\n // success\r\n ([_countryList, _unmatchedReferenceData]) => {\r\n let convertedUnmatchedData = DataService.convertToLowerCasedKeyObject(_unmatchedReferenceData);\r\n let data = DataService.hasElements(convertedUnmatchedData) ? convertedUnmatchedData.map(r => ({\r\n ...r,\r\n countryname: _countryList.find(c => c.id === r.country)?.value,\r\n //profilecategoryname: _profileCategoryList.find(f => f.lovId === r.profilecategoryid) ?\r\n // _profileCategoryList.find(f => f.lovId === r.profilecategoryid).lovKey : null\r\n })) : [];\r\n this.setState({\r\n profileData: data\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n handleReviewedClick = () => {\r\n if (this.state.selectedProfiles.length > 5000) {\r\n ToastService.showInfo(\"Select up to 5000 records each occurrence\");\r\n this.setState({ isReadOnly: true });\r\n }\r\n else {\r\n this.setState({ isSaving: true, isReadOnly: true }, () => {\r\n let selectedProfileIds = this.state.selectedProfiles.map(p => p.porziogstprofileid).join(\",\");\r\n UnmatchedProfileService.saveReviewedProfiles(this.context.user.tenantId, selectedProfileIds).subscribe(\r\n (_successResult) => {\r\n if (_successResult) {\r\n ToastService.showSuccess(\"Profile(s) marked as Reviewed successfully\");\r\n this.setState({ isReadOnly: true, isSaving: false });\r\n this.fetchData(false);\r\n }\r\n\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while reviewing Profile(s)\");\r\n this.setState({ isReadOnly: true, isSaving: false });\r\n console.log(_errorResult);\r\n }\r\n );\r\n });\r\n\r\n }\r\n }\r\n\r\n handleUnmatchedClick = () => {\r\n if (this.state.selectedProfiles.length > 5000) {\r\n ToastService.showInfo(\"Select up to 5000 records each occurrence\");\r\n this.setState({ isReadOnly: true });\r\n }\r\n else {\r\n this.setState({ isSaving: true, isReadOnly: true }, () => {\r\n let selectedProfileIds = this.state.selectedProfiles.map(p => p.porziogstprofileid).join(\",\");\r\n UnmatchedProfileService.saveUnmatchedProfiles(this.context.user.tenantId, selectedProfileIds).subscribe(\r\n (_successResult) => {\r\n ToastService.showSuccess(\"Profile(s) marked as Unmatched successfully\");\r\n this.setState({ isReadOnly: true, isSaving: false });\r\n this.fetchData(false);\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while saving Profile(s)\");\r\n this.setState({ isReadOnly: true, isSaving: false });\r\n console.log(_errorResult);\r\n }\r\n );\r\n });\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n handleSwitchChange = (event) => {\r\n this.setState({\r\n unmatchedChecked: event.target.checked\r\n }, () => {\r\n this.fetchData(true);\r\n });\r\n }\r\n\r\n onClose = () => {\r\n this.setState({\r\n unmatchedChecked: this.state.unmatchedChecked,\r\n }, () => {\r\n this.props.onClose();\r\n });\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"Select\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n getFileName() {\r\n return this.state.unmatchedChecked ? `Unmatched_Profiles ${new Date().toDateString()}` : `Reviewed_Profiles ${new Date().toDateString()}`;\r\n }\r\n\r\n\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n { this.onClose() }} >\r\n \r\n \r\n \r\n Unmatched to Reference Data\r\n {this.state.unmatchedChecked ?\r\n \r\n {LayoutService.getIconButton(this.state.isReadOnly, MatIconService.REVIEWED, \"Reviewed\", () => {\r\n this.handleReviewedClick()\r\n }, \"inherit\")}\r\n \r\n :\r\n \r\n {LayoutService.getIconButton(this.state.isReadOnly, MatIconService.NOT_LISTED, \"Unmatched\", () => {\r\n this.handleUnmatchedClick()\r\n }, \"inherit\")}\r\n \r\n }\r\n {/* {LayoutService.getReadOnlyActions(this, true, () => { this.onClose() }, () => { this.onSave(); },\r\n () => { this.handleEdit(); })} */}\r\n { this.onClose() }}>{MatIconService.CANCEL}\r\n \r\n \r\n \r\n {this.state.isSaving ? : null}\r\n \r\n \r\n \r\n \r\n { this.setState({ anchorEl: null, openSelectMenu: false }); }}\r\n onSelectionChange={() => { this.toggleSubmitButton(); }}\r\n />\r\n \r\n \r\n \r\n \r\n { this.setState({ anchorEl: e.currentTarget, openSelectMenu: true }); }}>{MatIconService.MENU}\r\n \r\n \r\n \r\n \r\n Reviewed\r\n \r\n \r\n \r\n Unmatched\r\n \r\n \r\n {LayoutService.getIconButton(false, MatIconService.DOWNLOAD, \"Download to Excel\", () => { this.onDownloadClick() }, \"primary\")}\r\n \r\n \r\n \r\n\r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n {/* Show Profile-Detail Dialog */}\r\n {\r\n this.setState({ showProfileDetailDialog: false });\r\n this.fetchData(true);\r\n }}\r\n profileStatus={this.state.unmatchedChecked ? \"UNMATCHED\" : \"REVIEWED\"}\r\n />\r\n \r\n );\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n {\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n this.state.agGridUtils.setGridParams(event, false);\r\n this.state.agGridUtils.pinColumn(AgGridBulkEditUtil.selectColumnName); // pin the edit column to the left\r\n event.api.closeToolPanel();\r\n }}\r\n />\r\n
    \r\n
    );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( this.fetchData(true)} />);\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(UnmatchedProfileComponent);\r\n","import React, { Component } from \"react\";\r\nimport { Typography } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\n\r\nexport default class agGridAppendCommentIconCellRendererComponent extends Component {\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.props.value}\r\n {this.props.node.data?.hasComments ?
    {MatIconService.FILE_COMMENT_ON}
    : null }\r\n
    \r\n );\r\n }\r\n\r\n //---\r\n}","import { AgGridService } from \"../../../../shared/services/ag-grid/agGridService\";\r\nimport ApiService from \"../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\"\r\n\r\nexport default class LinkedProfilesSearchDialogService {\r\n\r\n static searchOBS = (_tenantId, _searchValue) => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Profiles/FetchProfilesBySearch/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\"\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n AgGridService.getTextColumn(false, \"Company Profile ID\", \"companyProfileId\"),\r\n AgGridService.getColumn(false, \"Porzio GST Profile ID\", \"porziogstprofileid\",\"profileDetailCellRendererComponent\"),\r\n AgGridService.getTextColumn(false, \"Last Name\", \"lastName\"),\r\n AgGridService.getTextColumn(false, \"First Name\", \"firstName\"),\r\n AgGridService.getTextColumn(false, \"Organization Name\", \"organizationName\"),\r\n AgGridService.getTextColumn(false, \"Country\", \"country\"),\r\n AgGridService.getTextColumn(false, \"Profile Status\", \"profileStatus\"),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { from, BehaviorSubject } from \"rxjs\";\r\nimport { mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, InputBase, Box } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction } from \"../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport ActionDialog from \"../../../../shared/components/dialog/actionDialog\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport ProfilesSearchDialogService from \"./profilesSearchDialogService\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport ProfileDetailDialogComponent from \"../..//profile-detail/profileDetailDialogComponent\";\r\nimport ProfileDetailCellRendererComponent from \"../../profile-detail/profileDetailCellRendererComponent\";\r\n\r\n\r\nclass ProfilesSearchDialogComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n // ept till component's unMount\r\n scopedSubscriptions = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n profileList: [],\r\n lastSearchedValue: '',\r\n errorMessage: null,\r\n showProfileDetailDialog: false,\r\n agGridRecipientUtils: new AgGridUtil(\"lastName\", {\r\n profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n\r\n componentDidMount() {\r\n var searchOBS = this.searchSubject.pipe(\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((_searchValue) => from(this.searchRecipient(_searchValue)))\r\n );\r\n\r\n this.scopedSubscriptions.add(searchOBS.subscribe());\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n this.setState({ showProfileDetailDialog: true });\r\n };\r\n\r\n searchRecipient = (_searchValue) => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n if (DataService.stringShouldBe(_searchValue, 3)) {\r\n this.setState({ searchResult: ResultStatus.LOADING, profileList: [], lastSearchedValue: _searchValue });\r\n this.apiSubscriptions.add(\r\n ProfilesSearchDialogService.searchOBS(this.context.user.tenantId, _searchValue).subscribe(\r\n (_profileList) => {\r\n this.setState({\r\n searchResult: DataService.hasElements(_profileList) ? ResultStatus.SUCCESS : ResultStatus.LOADED,//-> no records\r\n profileList: _profileList,\r\n });\r\n },\r\n (err) => { this.setState({ searchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n } else {\r\n this.setState({ searchResult: ResultStatus.NOT_LOADED });\r\n }\r\n return [];\r\n }\r\n\r\n // render\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n Profile Search\r\n {/* Search */}\r\n
    \r\n
    {MatIconService.SEARCH}
    \r\n { this.searchSubject.next(e.target.value); }} />\r\n
    \r\n {/* {LayoutService.getIconButton(false, MatIconService.OK, \"Submit\", () => { alert(\"Under development\") }, \"inherit\")} */}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => {\r\n this.setState({\r\n profileList: [],\r\n lastSearchedValue: '',\r\n searchResult: ResultStatus.NOT_LOADED,\r\n });\r\n this.props.onClose();\r\n }, \"secondary\", \"keyActionCancel1\")}\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n this.setState({ showProfileDetailDialog: false })}\r\n />\r\n
    \r\n );\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.searchResult) {\r\n case ResultStatus.SAVING: return ;\r\n case ResultStatus.LOADING: return ;\r\n case ResultStatus.NOT_LOADED: return ;\r\n case ResultStatus.LOADED: return ;\r\n case ResultStatus.SUCCESS:\r\n return (
    \r\n
    \r\n { this.state.agGridRecipientUtils.setGridParams(params, true); }}\r\n gridOptions={{\r\n context: { componentParent: this },\r\n suppressContextMenu: true,\r\n rowHeight: 32,\r\n }}\r\n />\r\n
    \r\n
    );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.searchRecipient(this.state.lastSearchedValue); }} />);\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(ProfilesSearchDialogComponent);","import React, { Component } from \"react\";\r\nimport { Dialog } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { CrudAction, ResultStatus, ENTITY_TYPE } from \"../../shared/types/enums\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport ProfileCenterService from \"./profileCenterService\";\r\nimport ProfileExpandedViewComponent from \"./expanded-view/profileExpandedViewComponent\";\r\nimport ProfileCountCellRendererComponent from \"./expanded-view/profileCountCellRendererComponent\";\r\nimport ProfileErrorCellRendererComponent from \"./expanded-view/profileErrorCellRendererComponent\";\r\nimport ProfileWarningCellRendererComponent from \"./expanded-view/profileWarningCellRendererComponent\";\r\nimport ProfileUnmatchedCellRendererComponent from \"./expanded-view/profileUnmatchedCellRendererComponent\";\r\nimport DialogErrorFragmentComponent from \"../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport ProfileDetailDialogComponent from \"./profile-detail/profileDetailDialogComponent\";\r\nimport AgGridActionCellRendererComponent from \"../../shared/components/ag-grid/agGridActionCellRendererComponent\";\r\nimport RerunValidationProfileComponent from \"./action-menu/rerunValidationProfileComponent\";\r\nimport AddEditCommentComponent from \"../../shared/components/add-edit-comments/addEditCommentComponent\";\r\nimport UnmatchedProfileComponent from \"./header-menu/unmatched-profiles-list/unmatchedProfileComponent\";\r\nimport AgGridAppendCommentIconCellRendererComponent from \"../../shared/components/ag-grid/agGridAppendCommentIconCellRendererComponent\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport ProfilesSearchDialogComponent from \"./header-menu/profile-search/profilesSearchDialogComponent\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\n\r\nclass ProfileCenterComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = ProfileCenterService;\r\n\r\n state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n showProfileDetailDialog: false,\r\n showUnMatchedProfileDialog: false,\r\n showProfileSearchDialog: false,\r\n frameworkComponents: {\r\n actionCellRendererComponent: AgGridActionCellRendererComponent,\r\n agGridAppendCommentIconCellRendererComponent: AgGridAppendCommentIconCellRendererComponent,\r\n profileCountCellRendererComponent: ProfileCountCellRendererComponent,\r\n profileErrorCellRendererComponent: ProfileErrorCellRendererComponent,\r\n profileWarningCellRendererComponent: ProfileWarningCellRendererComponent,\r\n profileUnmatchedCellRendererComponent: ProfileUnmatchedCellRendererComponent,\r\n },\r\n modalAgNode: null,\r\n openCommentFile: false,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n // bindings\r\n ProfileCenterService.INIT(this);\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() { this.oSubscriptions.cancelAll(); }\r\n componentDidMount() { this.fetchData(); }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (successResult) => { // onResultStatus.SUCCESS\r\n if (!Array.isArray(successResult)) { successResult = new Array(successResult); }\r\n this.STORE.CACHE.SET(successResult, 0);\r\n this.setState({\r\n data: successResult.map(obj => (obj.profileCount === 0 ? { ...obj, errorCount: 0, warningCount: 0, unmatchedCount: 0 } : obj)),\r\n fetchResult: ResultStatus.SUCCESS,\r\n }, () => { ProfileCenterService.showProfileDetailDialogIfExists(); });\r\n },\r\n (errorResult) => { // onResultStatus.ERROR\r\n ToastService.showError(\"Error while fetching Profiles.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR }, () => {\r\n ProfileCenterService.showProfileDetailDialogIfExists();\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n handleRerunValidationConfirm = (_cellRef) => {\r\n this.setState({\r\n openRerunConfirm: true,\r\n agCellData: _cellRef.props.data,\r\n });\r\n }\r\n\r\n loadProfileExpandedViewComponent = (_healthIndicator, _modalAgNode) => {\r\n if (RolePermissionService.PROFILE_EXPANDED_VIEW.cannotView) {\r\n RolePermissionService.showAccessDeniedToast();\r\n }\r\n else if (\r\n (_healthIndicator === '1' && _modalAgNode['error'] === '0') ||\r\n (_healthIndicator === '2' && _modalAgNode['warning'] === '0') ||\r\n (_healthIndicator === '3' && _modalAgNode['unmatched'] === '0')\r\n ) {\r\n ToastService.showWarning('No data found.!');\r\n return;\r\n } else {\r\n this.closeAllDialogs(\r\n () => {\r\n this.setState({\r\n modalAgNode: _modalAgNode,\r\n healthIndicator: _healthIndicator,\r\n showProfileExpandedDialog: true\r\n })\r\n }\r\n );\r\n }\r\n }\r\n\r\n closeAllDialogs = (_afterCallback) => {\r\n this.setState({\r\n showProfileDetailDialog: false,\r\n showUnMatchedProfileDialog: false,\r\n showProfileSearchDialog: false,\r\n showProfileCountDialog: false,\r\n showProfileErrorDialog: false,\r\n showProfileWarningDialog: false,\r\n showProfileUnmatchedDialog: false,\r\n showProfileExpandedDialog: false\r\n }, _afterCallback);\r\n }\r\n\r\n profileCountMethodFromParent(cell, node) { this.loadProfileExpandedViewComponent(\"\", node); }\r\n handleProfileCountHide = () => { this.closeAllDialogs(); }\r\n\r\n profileErrorMethodFromParent(cell, node) { this.loadProfileExpandedViewComponent(\"1\", node); }\r\n handleProfileErrorHide = () => { this.closeAllDialogs(); }\r\n\r\n profileWarningMethodFromParent(cell, node) { this.loadProfileExpandedViewComponent(\"2\", node); }\r\n handleProfileWarningHide = () => { this.closeAllDialogs(); }\r\n\r\n profileUnmatchedMethodFromParent(cell, node) { this.loadProfileExpandedViewComponent(\"3\", node); }\r\n handleProfileUnmatchedHide = () => { this.closeAllDialogs(); }\r\n\r\n handleProfileExpandedHide = (_params) => {\r\n this.closeAllDialogs();\r\n if (_params !== false) {\r\n this.fetchData(true);\r\n }\r\n }\r\n\r\n handleAddEditCommentFile = (_cellRef) => {\r\n this.setState({\r\n openCommentFile: true,\r\n agCellData: _cellRef.props.data,\r\n });\r\n }\r\n\r\n onAddClick = () => {\r\n this.setState({ showProfileDetailDialog: true });\r\n }\r\n\r\n onUnMatchedClick = () => {\r\n this.setState({ showUnMatchedProfileDialog: true });\r\n }\r\n\r\n onSearchClick = () => {\r\n this.setState({ showProfileSearchDialog: true });\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: `Profiles ${new Date().toDateString()}`\r\n };\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.PROFILE_CENTER.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n
    \r\n\r\n {/* Header Componenet */}\r\n { { this.props.history.goBack() } },\r\n { icon: MatIconService.RELOAD, title: \"Reload\", iconColor: \"secondary\", onClick: () => { this.fetchData(true); }, },\r\n ]}\r\n rightActions={[\r\n { icon: MatIconService.DOWNLOAD, title: \"Download to Excel\", iconColor: \"primary\", onClick: this.onDownloadClick, },\r\n { icon: MatIconService.NOT_LISTED, title: \"Unmatched to Reference Data\", iconColor: \"primary\", onClick: this.onUnMatchedClick, },\r\n { icon: MatIconService.SEARCH, title: \"Search\", iconColor: \"primary\", onClick: this.onSearchClick, },\r\n { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"Add New\", iconColor: \"secondary\", onClick: this.onAddClick, isReadOnly: RolePermissionService.PROFILE_DETAILS.cannotCreate },\r\n ]}\r\n />}\r\n\r\n {/* Grid Component */}\r\n
    \r\n {/* Grid Componenet */}\r\n {\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n event.api.closeToolPanel();\r\n }}\r\n >\r\n
    \r\n
    \r\n\r\n {/* ExpandedView Dialog rendered as Page */}\r\n \r\n \r\n \r\n\r\n {\r\n this.state.openRerunConfirm && this.state.agCellData ?\r\n this.setState({ openRerunConfirm: false })}\r\n agCellData={this.state.agCellData}\r\n />\r\n : null\r\n }\r\n\r\n {/* Show Profile-Detail Dialog as a Page */}\r\n {this.state.showProfileDetailDialog ?\r\n {\r\n ProfileCenterService.profileDetailParams = null; // cleanup resedue params\r\n this.setState({ showProfileDetailDialog: false });\r\n }} />\r\n : <>}\r\n\r\n this.setState({ showProfileSearchDialog: false })}\r\n />\r\n\r\n this.setState({ showUnMatchedProfileDialog: false })} />\r\n\r\n {/* Action Menu Items */}\r\n {\r\n this.state.openCommentFile && this.state.agCellData ?\r\n {\r\n this.setState({ openCommentFile: false });\r\n if (_reloadRequired) {\r\n this.fetchData(true);\r\n }\r\n }}\r\n agCellData={this.state.agCellData}\r\n />\r\n : null\r\n }\r\n
    \r\n\r\n );\r\n\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.fetchData(true); }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(ProfileCenterComponent);\r\n","import { of } from \"rxjs\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport Cache from \"../../shared/store/cache\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport { DataService } from \"../../shared/services/dataService\";\r\n\r\nexport default class TenantConfigurationService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs();\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs() {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n return of(this.getJsonData()); //.pipe(delay(500));\r\n }\r\n\r\n static getGridNames(_tenanatConfigs) {\r\n /** using 'Set' since grid names are present for each control & we need to ignore duplicates */\r\n return [...new Set(_tenanatConfigs.filter(x => !x.isHidden).map((o) => o.gridName))];\r\n }\r\n static getGridGroupNames(_tenanatConfigs, _gridName) {\r\n /** using 'Set' since group names are present for each control & we need to ignore duplicates */\r\n return [\r\n ...new Set(\r\n _tenanatConfigs\r\n .filter((o) => o.gridName === _gridName && !o.isHidden)\r\n .map((o) => o.gridGroupName)\r\n ),\r\n ];\r\n }\r\n static getGridGroupControls(_tenanatConfigs, _gridName, _groupName) {\r\n /** not-using 'Set' since controls are unique */\r\n return [\r\n ..._tenanatConfigs.filter(\r\n (o) => !o.isHidden && o.gridName === _gridName && o.gridGroupName === _groupName\r\n ),\r\n ];\r\n }\r\n\r\n static getJsonData = () => {\r\n\r\n const isPorzioUser = RolePermissionService.isTenantReportSubscriptionsAllowed();\r\n const isTenantUser = !isPorzioUser;\r\n\r\n let oRET = [\r\n {\r\n id: 1,\r\n iconJsx: MatIconService.COMPANY,\r\n target: \"/company-profile\",\r\n label: \"Tenant Profile\",\r\n gridGroupName: \"Tenant Profile Setup\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.TENANT_DETAIL.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 2,\r\n iconJsx: MatIconService.AFFILIATE,\r\n target: \"/affiliate-companies\",\r\n label: \"Affiliate Companies\",\r\n gridGroupName: \"Tenant Profile Setup\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 3,\r\n iconJsx: MatIconService.STORE,\r\n target: \"/vendor-setup\",\r\n label: \"Vendor Setup\",\r\n gridGroupName: \"Tenant Profile Setup\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isPorzioUser,\r\n },\r\n // GRID-1 : Field Management\r\n {\r\n id: 4,\r\n iconJsx: MatIconService.PORZIO_FILEDS,\r\n target: \"/porzio-fields\",\r\n label: \"Porzio Fields\",\r\n gridGroupName: \"Field Management\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.PORZIO_FIELD_LIST.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 5,\r\n iconJsx: MatIconService.CUSTOM_FIELDS,\r\n target: \"/custom-fields\",\r\n label: \"Custom Fields\",\r\n gridGroupName: \"Field Management\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.CUSTOMER_FIELD_LIST.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 6,\r\n iconJsx: MatIconService.NDC_PRODUCT,\r\n target: \"/product-master\",\r\n label: \"Product\",\r\n gridGroupName: \"Master Data\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.PRODUCT.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 7,\r\n iconJsx: MatIconService.NDC_PRODUCT,\r\n target: \"/sales-rep\",\r\n label: \"SalesRep\",\r\n gridGroupName: \"Master Data\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.SALESREP.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 8,\r\n iconJsx: MatIconService.NDC_PRODUCT,\r\n target: \"/materials\",\r\n label: \"Materials Info\",\r\n gridGroupName: \"Master Data\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.MATERIAL.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 9,\r\n iconJsx: MatIconService.NDC_PRODUCT,\r\n target: \"/studies\",\r\n label: \"Study Master\",\r\n gridGroupName: \"Master Data\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.STUDY.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 52, //TODO : id is not in current sequence.For now have put it as 52 to avoid messing up other lists\r\n iconJsx: MatIconService.NDC_PRODUCT,\r\n target: \"/hcp-master\",\r\n label: \"US Miami HCP\",\r\n gridGroupName: \"Master Data\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.HCP.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 53, //TODO : id is not in current sequence.For now have put it as 53 to avoid messing up other lists\r\n iconJsx: MatIconService.NDC_PRODUCT,\r\n target: \"/nonentity-master\",\r\n label: \"NonEntity\",\r\n gridGroupName: \"Master Data\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.HCP.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n\r\n // GRID-2 : Source Management\r\n {\r\n id: 10,\r\n iconJsx: MatIconService.SOURCE,\r\n target: \"/source-files\",\r\n label: \"Source Map\",\r\n gridGroupName: \"Source Management\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.SOURCE_FILE_LIST.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n // GRID-2 : Business Rules\r\n {\r\n id: 11,\r\n iconJsx: MatIconService.PORZIO_RULES,\r\n target: \"/porzio-rules\",\r\n label: \"Porzio Rules\",\r\n gridGroupName: \"Business Rules\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.BUSINESS_RULE_LIST.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 12,\r\n iconJsx: MatIconService.DEFAULT_MAPPING,\r\n target: \"/default-mapping\",\r\n label: \"Default Mapping\",\r\n gridGroupName: \"Compliance Report Mapping\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.DEFAULT_MAPPING_LIST.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 13,\r\n iconJsx: MatIconService.REPORT_MAPPING,\r\n target: \"/report-mapping\",\r\n label: \"Report Mapping\",\r\n gridGroupName: \"Compliance Report Mapping\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.COMPLIANCE_REPORT_MAPPING_LIST.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 19,\r\n iconJsx: MatIconService.CONSENT_MAPPING,\r\n target: \"/consent-mapping\",\r\n label: \"Consent Mapping\",\r\n gridGroupName: \"Compliance Report Mapping\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.CONSENT_MAPPING_LIST.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n\r\n // GRID-2 : User Management\r\n {\r\n id: 14,\r\n iconJsx: MatIconService.USERS,\r\n target: \"/users\",\r\n label: \"Users\",\r\n gridGroupName: \"User Management\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.USER_LIST.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 15,\r\n iconJsx: MatIconService.ROLE,\r\n target: \"/role-management\",\r\n label: \"Role Management\",\r\n gridGroupName: \"User Management\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.ROLE_LIST.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 16,\r\n iconJsx: MatIconService.PERMISSION,\r\n target: \"/role-permissions\",\r\n label: \"Role Permissions\",\r\n gridGroupName: \"User Management\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.ROLE_PERMISSIONS.cannotView,\r\n isHidden: isPorzioUser,\r\n },\r\n // GRID-2 : Workflow Template and Tasks\r\n {\r\n id: 17,\r\n iconJsx: MatIconService.SOURCE,\r\n target: \"/workflow-template\",\r\n label: \"Workflow Templates\",\r\n gridGroupName: \"Workflows and Tasks\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isPorzioUser,\r\n },\r\n\r\n // GRID-3 : Reports\r\n {\r\n id: 50,\r\n iconJsx: MatIconService.NAV_DEMO,\r\n target: \"/tenant-report-template-subscriptions\",\r\n label: \"Report Template Subscriptions\",\r\n gridGroupName: \"Reports\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isTenantUser,\r\n },\r\n {\r\n id: 56, //TODO : id is not in current sequence.For now have put it as 53 to avoid messing up other lists\r\n iconJsx: MatIconService.ROLE,\r\n target: \"/admin-report-task-details\",\r\n label: \"Report Center Status\",\r\n gridGroupName: \"Reports\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isTenantUser,\r\n },\r\n\r\n // Grid-4: Izenda Reporting\r\n {\r\n id: 23,\r\n iconJsx: MatIconService.REPORT_MAPPING,\r\n target: \"/reporting\",\r\n label: \"Izenda 7 Reporting\",\r\n gridGroupName: \"Reports\",\r\n gridName: \"Grid1\",\r\n isReadOnly: RolePermissionService.isIzendaReportsNotAllowed(),\r\n isHidden: RolePermissionService.isIzendaReportsNotAllowed(),\r\n },\r\n {\r\n id: 18,\r\n iconJsx: MatIconService.EMAIL,\r\n target: \"/email\",\r\n label: \"E-mail Setup\",\r\n gridGroupName: \"Security\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 22,\r\n iconJsx: MatIconService.FTP,\r\n target: \"/ftp-folders\",\r\n label: \"FTP Folders\",\r\n gridGroupName: \"Security\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isPorzioUser,\r\n },\r\n {\r\n id: 20,\r\n iconJsx: MatIconService.ROLE,\r\n target: \"/tenant-status\",\r\n label: \"Tenant Creation\",\r\n gridGroupName: \"Administration\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isTenantUser,\r\n },\r\n {\r\n id: 21,\r\n iconJsx: MatIconService.ROLE,\r\n target: \"/user-mappings\",\r\n label: \"User Mappings\",\r\n gridGroupName: \"Administration\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isTenantUser,\r\n },\r\n {\r\n id: 55, //TODO : id is not in current sequence.For now have put it as 53 to avoid messing up other lists\r\n iconJsx: MatIconService.ROLE,\r\n target: \"/admin-task-details\",\r\n label: \"File Import Status\",\r\n gridGroupName: \"Administration\",\r\n gridName: \"Grid1\",\r\n isReadOnly: false,\r\n isHidden: isTenantUser,\r\n },\r\n \r\n ];\r\n\r\n // //---cleanup-------------------------------------------------------------\r\n // // - verify access to izenda reports\r\n // if (RolePermissionService.isIzendaReportsNotAllowed()) {\r\n // let indexToRemove = oRET.findIndex(x => x.id === izendaReportingId);\r\n // DataService.removeFromArray(oRET, indexToRemove);\r\n // }\r\n\r\n // // - verify access to report template subscriptions\r\n // if (RolePermissionService.isTenantReportSubscriptionsNotAllowed()) {\r\n // let indexToRemove = oRET.findIndex(x => x.id === reportSubscriptionId);\r\n // DataService.removeFromArray(oRET, indexToRemove);\r\n // }\r\n\r\n // return\r\n return oRET;\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\nimport { GST_API } from \"../../../shared/types/enums\";\r\n\r\nexport default class TenantProfileSetupService {\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n // replace this._jsonData with reacl ApiCall\r\n return ApiService.fetchHTTP_API(GST_API.TenantConfig, `/CompanyProfile/CompanyProfile/${clientAuthContext.user.tenantId}`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n }\r\n\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Formik } from \"formik\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n withStyles, AppBar, DialogContent, DialogTitle, FormControl, Grid,\r\n InputLabel, MenuItem, Select, TextField, Toolbar, Typography,\r\n} from \"@material-ui/core\";\r\n\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, TenantSelectList } from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport TenantProfileSetupService from \"./tenantProfileSetupService\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\n\r\nclass TenantProfileSetupDialogComponent extends Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = TenantProfileSetupService;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n countryData: [],\r\n isLoadingCountryData: false,\r\n countryId: \"\",\r\n languageData: [],\r\n isLoadingLanguageData: false,\r\n languageId: \"\",\r\n timeZoneData: [],\r\n isLoadingTimeZoneData: false,\r\n timeZoneId: \"\",\r\n currencyData: [],\r\n isLoadingCurrencyData: false,\r\n currencyId: \"\",\r\n isReadOnly: true,\r\n isEditing: true,\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData(this);\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n LookupService.getLanguagesAsOBS(this.context),\r\n LookupService.getFormattedCurrenciesAsOBS(this.context, null),\r\n LookupService.getTimezonesAsOBS(this.context)\r\n ]).subscribe(([_countryData, _languageData, _currencyData, _timeZoneData]) => {\r\n this.setState(\r\n {\r\n countryData: _countryData,\r\n languageData: _languageData,\r\n currencyData: _currencyData,\r\n timeZoneData: _timeZoneData,\r\n });\r\n }\r\n ),\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n );\r\n }\r\n\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (o) => {\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n countryId: o[0].country,\r\n languageId: o[0].language,\r\n timeZoneId: o[0].timeZone,\r\n currencyId: o[0].currency,\r\n });\r\n },\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n ));\r\n }\r\n\r\n getInitialValues() {\r\n return {\r\n companyName: this.state.data[0].companyName,\r\n description: this.state.data[0].description,\r\n address1: this.state.data[0].address1,\r\n address2: this.state.data[0].address2,\r\n address3: this.state.data[0].address3,\r\n address4: this.state.data[0].address4,\r\n city: this.state.data[0].city,\r\n province: this.state.data[0].province,\r\n country: this.state.data[0].country,\r\n postalCode: this.state.data[0].postalCode,\r\n language: this.state.data[0].language,\r\n timeZone: this.state.data[0].timeZone,\r\n currency: this.state.data[0].currency,\r\n };\r\n }\r\n getValidationSchema() {\r\n return Yup.object({\r\n companyName: Yup.string().min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n description: Yup.string().min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n address1: Yup.string().min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n address2: Yup.string(),\r\n address3: Yup.string(),\r\n address4: Yup.string(),\r\n city: Yup.string().min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n province: Yup.string().min(2, \"Must be at least 2 characters long\").max(50, \"Must be 50 characters or less\").required(\"Required\"),\r\n postalCode: Yup.string().min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n });\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (_formikProps.isSubmitting) {\r\n return;\r\n } else {\r\n if (_formikProps.isValid) {\r\n this.setState({\r\n fetchResult: ResultStatus.LOADING,\r\n });\r\n try {\r\n console.log(\"Product Update PUT fetch request started\");\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/CompanyProfile/${this.context.user.tenantId}`,\r\n {\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify({\r\n id: this.context.user.tenantId,\r\n companyName: _formikProps.values.companyName,\r\n description: _formikProps.values.description,\r\n address1: _formikProps.values.address1,\r\n address2: _formikProps.values.address2,\r\n address3: _formikProps.values.address3,\r\n address4: _formikProps.values.address4,\r\n city: _formikProps.values.city,\r\n province: _formikProps.values.province,\r\n country: String(this.state.countryId),\r\n postalCode: _formikProps.values.postalCode,\r\n language: this.state.languageId,\r\n timeZone: this.state.timeZoneId,\r\n currency: this.state.currencyId,\r\n createdBy: this.state.data.createdBy,\r\n createdDate: this.state.data.createdDate,\r\n updatedBy: this.context.user.userId,\r\n updatedDate: new Date()\r\n }),\r\n }\r\n );\r\n if (result.status === 204) {\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n this.fetchData(this);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n } catch (error) {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n } else {\r\n alert(\"Invalid values\");\r\n }\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.TENANT_DETAIL.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n {/* Header */}\r\n \r\n \r\n \r\n Tenant Profile Setup\r\n {RolePermissionService.TENANT_DETAIL.cannotEdit ? LayoutService.getIconButton(false, MatIconService.CLOSE, \"close\",\r\n () => { this.props.onClose(false) }, \"secondary\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n Country\r\n \r\n {!this.state.isLoadingCountryData ? (\r\n \r\n this.setState({ countryId: event.target.value })\r\n }\r\n fullWidth\r\n >\r\n {this.state.countryData.map((el, index) => (\r\n {el.value}\r\n ))}\r\n \r\n ) : null}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Language\r\n \r\n {!this.state.isLoadingLanguageData ? (\r\n \r\n this.setState({ languageId: event.target.value })\r\n }\r\n fullWidth\r\n >\r\n English\r\n {this.state.languageData.map((el, index) => (\r\n el.id !== 1 ? {el.value} : null\r\n ))}\r\n \r\n ) : null}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Time Zone\r\n \r\n {!this.state.isLoadingTimeZoneData ? (\r\n \r\n this.setState({ timeZoneId: event.target.value })\r\n }\r\n fullWidth\r\n >\r\n {this.state.timeZoneData.map((el) => (\r\n {el.value}\r\n ))}\r\n \r\n ) : null}\r\n \r\n \r\n\r\n \r\n \r\n \r\n Currency\r\n \r\n {!this.state.isLoadingCurrencyData ? (\r\n \r\n this.setState({ currencyId: event.target.value })\r\n }\r\n fullWidth\r\n >\r\n {this.state.currencyData.map((el) => (\r\n {el.value}\r\n ))}\r\n \r\n ) : null}\r\n \r\n \r\n \r\n {/* */}\r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(this, true); }} />);\r\n }\r\n }\r\n }\r\n}\r\nexport default withStyles(MatClassService)(TenantProfileSetupDialogComponent);","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class EmailService {\r\n static getEmailSetupAsOBS = (_tenantId, _emailId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Email/GetEmailSetUp/${_tenantId}/${_emailId}`\r\n );\r\n };\r\n\r\n static getEmailSetupTypes = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Email/GetEmailSetUpTypes/${_tenantId}`\r\n );\r\n };\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { AppBar, DialogContent, DialogTitle, Grid, TextField, Toolbar, Typography, } from \"@material-ui/core\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport EmailService from \"./emailService\";\r\n\r\nclass EmailComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isReadOnly: true,\r\n isEditing: true,\r\n typeOfEmail: [],\r\n selType: null,\r\n emailData: {},\r\n fetchResult: ResultStatus.NOT_LOADED\r\n };\r\n }\r\n\r\n setConfigs = (_selType) => {\r\n if (this.state.typeOfEmail.some(t => t.id == _selType)) {\r\n this.setState({\r\n selType: _selType,\r\n fetchResult: ResultStatus.LOADING,\r\n }, () => {\r\n this.fetchData();\r\n });\r\n } else {\r\n this.setState({\r\n selType: _selType,\r\n emailData: {\r\n type: 0,\r\n to: \"\",\r\n cc: \"\",\r\n bcc: \"\",\r\n subject: \"\",\r\n body: \"\",\r\n },\r\n });\r\n }\r\n };\r\n\r\n componentDidMount() {\r\n this.fetchEmailSetupTypes();\r\n }\r\n\r\n fetchEmailSetupTypes = () => {\r\n this.oSubscriptions.add(\r\n EmailService.getEmailSetupTypes(this.context.user.tenantId)\r\n .subscribe(\r\n (_typeOfEmail) => {\r\n this.setState({\r\n typeOfEmail: _typeOfEmail,\r\n selType: _typeOfEmail[0].id\r\n }, () => {\r\n this.fetchData();\r\n });\r\n },\r\n (error) => {\r\n console.log(error);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n ));\r\n }\r\n\r\n fetchData = async () => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, emailData: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n EmailService.getEmailSetupAsOBS(this.context.user.tenantId, this.state.selType),\r\n ]).subscribe(\r\n // success\r\n ([_emailData,]) => {\r\n this.setState(\r\n {\r\n emailData: _emailData,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n getInitialValues() {\r\n return {\r\n type: this.state.selType,\r\n to: this.state.emailData?.to,\r\n cc: this.state.emailData?.cc,\r\n bcc: this.state.emailData?.bcc,\r\n subject: this.state.emailData?.subject,\r\n body: this.state.emailData?.body,\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n type: Yup.string().required(\"Required\"),\r\n to: Yup.array()\r\n .transform(function (value, originalValue) {\r\n if (this.isType(value) && value !== null) {\r\n return value;\r\n }\r\n return originalValue ? originalValue.split(/[\\s,]+/) : [];\r\n })\r\n .of(Yup.string().email(({ value }) => `${value} is not a valid email, separate multiple emails by comma`)),\r\n cc: Yup.array()\r\n .transform(function (value, originalValue) {\r\n if (this.isType(value) && value !== null) {\r\n return value;\r\n }\r\n return originalValue ? originalValue.split(/[\\s,]+/) : [];\r\n })\r\n .of(Yup.string().email(({ value }) => `${value} is not a valid email, separate multiple emails by comma`)),\r\n bcc: Yup.array()\r\n .transform(function (value, originalValue) {\r\n if (this.isType(value) && value !== null) {\r\n return value;\r\n }\r\n return originalValue ? originalValue.split(/[\\s,]+/) : [];\r\n })\r\n .of(Yup.string().email(({ value }) => `${value} is not a valid email, separate multiple emails by comma`)),\r\n subject: Yup.string()\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .required(\"Required\"),\r\n body: Yup.string()\r\n //.min(3, \"Must be at least 3 characters long\")\r\n .max(4000, \"Must be 4000 characters or less\")\r\n //.required(\"Required\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {//TODO\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema\r\n .validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n to: _formikProps.values.to,\r\n cc: _formikProps.values.cc,\r\n bcc: _formikProps.values.bcc,\r\n subject: _formikProps.values.subject,\r\n body: _formikProps.values.body,\r\n createdBy: this.state.emailData.createdBy,\r\n contentType: this.state.emailData?.contentType,\r\n emailType: this.state.emailData?.emailType,\r\n isActive: this.state.emailData?.isActive\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let apiUrl = \"\";\r\n var actionVerb = \"\";\r\n // UPDATE\r\n actionVerb = \"POST\";\r\n apiUrl = `/Email/SaveEmailSetUp/${this.context.user.tenantId}`;\r\n mappedObj.emailId = this.state.emailData.emailId;\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n apiUrl,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Email Details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(erroObj);\r\n if (erroObj.inner) {\r\n erroObj.inner.forEach((err) => {\r\n _formikProps.setFieldError(err.path, err.message);\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes, history } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n Email Setup\r\n {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })}\r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n {LayoutService.getDropDown(this.state.isReadOnly, classes.dialogControl, classes.menuPaper, fProps, this.validationSchema, \"type\", \"Type Of Email\",\r\n this.state.typeOfEmail, \"id\", \"id\", null, true, \"80%\", (_formikProps, _newType) => { this.setConfigs(_newType); }\r\n )}\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n To Login:\r\n 1) Go to https://www{\"\"}\r\n \r\n 2) Use the following credentials to sign in:\r\n
    \r\n User ID: {\"\"}\r\n
    \r\n Password: {\"\"}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n //this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(EmailComponent);\r\n","import React from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport { withStyles } from \"@material-ui/core\";\r\nimport { Dialog, Grid, Typography, List, ListItem, ListItemText, ListItemIcon, Paper, Divider, } from \"@material-ui/core\";\r\n\r\nimport MatSpecService from \"../../shared/services/theme/matSpecService\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport TenantConfigurationService from \"./tenantConfigurationService\";\r\nimport TenantProfileSetupDialogComponent from \"../tenant-profile-setup/tenant-profile/tenantProfileSetupDialogComponent\";\r\nimport EmailComponent from \"../security/email/emailComponent\";\r\n\r\n\r\nclass TenantConfigurationComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = TenantConfigurationService;\r\n state = { fetchResult: ResultStatus.NOT_LOADED, data: [] };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n openCompanyProfileDialog: false,\r\n openEmailSetupDialog: false,\r\n }\r\n this.fetchData.bind(this);\r\n }\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_considerCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // If cach exists, then\r\n if (_considerCache && this.STORE.CACHE.EXISTS()) {\r\n // load from cache\r\n this.setState({\r\n data: this.STORE.CACHE.GET(),\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n } else {\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.fetchFromApiObs().subscribe(\r\n // onResultStatus.SUCCESS\r\n (o) => {\r\n this.STORE.CACHE.SET(o);\r\n this.setState({ data: o, fetchResult: ResultStatus.SUCCESS });\r\n },\r\n // onResultStatus.ERROR\r\n (o) => { this.setState({ fetchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n }\r\n };\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n {this.STORE.getGridNames(this.state.data).map(\r\n (oGridName, oGridIndex) => (\r\n \r\n \r\n {this.STORE.getGridGroupNames(this.state.data, oGridName).map((oGroupName, oGroupIndex) => (\r\n \r\n {this.context.user.tenantId !== 1 && oGroupName === \"Administration\" ? <> : {oGroupName}}\r\n {MatSpecService.showGroupNameDivider ? () : null}\r\n \r\n \r\n {this.STORE.getGridGroupControls(this.state.data, oGridName, oGroupName).map((o, index, array) => (\r\n \r\n {o.id === 1 ?\r\n (\r\n this.setState({ openCompanyProfileDialog: true })}>\r\n {o.iconJsx}\r\n \r\n \r\n )\r\n : o.id === 18 ?\r\n (\r\n this.setState({ openEmailSetupDialog: true })}>\r\n {o.iconJsx}\r\n \r\n \r\n )\r\n : o.id === 20 ?\r\n (\r\n this.context.user.tenantId === 1 ?\r\n \r\n {o.iconJsx}\r\n \r\n : <>\r\n )\r\n :\r\n (\r\n \r\n {o.iconJsx}\r\n \r\n \r\n )\r\n }\r\n {MatSpecService.showListItemDivider && index < array.length - 1 ? () : null}\r\n \r\n ))}\r\n \r\n \r\n \r\n ))}\r\n \r\n {MatSpecService.showGridDivider ? () : null}\r\n \r\n )\r\n )}\r\n \r\n this.setState({ openCompanyProfileDialog: false })} />\r\n \r\n \r\n this.setState({ openEmailSetupDialog: false })} />\r\n \r\n \r\n );\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(false); }} />);\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default withStyles(MatClassService)((TenantConfigurationComponent));","import React, { Component } from \"react\";\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { TextField, Grid } from \"@material-ui/core\";\r\n\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, ENTITY_TYPE } from \"../../../shared/types/enums\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { SubscriptionArray, DataService } from \"../../../shared/services/dataService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\n\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport SectionComponent from \"../../../shared/components/sectionComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\n\r\nclass SourceDetailsComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n\r\n // Lookups\r\n sourceTypeList: [],\r\n\r\n // source-permission - lookups\r\n // affiliates\r\n isAffiliatesLoading: true,\r\n scopeAffiliationsList: [], // holds all\r\n selAffiliationsList: [], // holds chip selected\r\n // affiliate-vendors\r\n isVendorsLoading: true,\r\n scopeVendorsList: [], // filtered by affiliates\r\n selVendorsList: [], // holds chip selected\r\n // vendor-users\r\n isUsersLoading: true,\r\n scopeUsersList: [], // filtered by affiliates & vendors\r\n selUsersList: [], // holds chip selected\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getSourceTypesAsOBS(this.context),\r\n LookupService.getAffiliationsAsOBS(this.context),\r\n LookupService.getAffiliationsBySystemAsOBS(this.context.user.tenantId, this.props.systemId),\r\n LookupService.getVendorsBySystemAsOBS(this.context.user.tenantId, this.props.systemId),\r\n LookupService.getUsersBySystemAsOBS(this.context.user.tenantId, this.props.systemId),\r\n ]).subscribe(([_sourceTypeList, _scopeAffiliationsList, _selAffiliationsList, _selVendorsList, _selUsersList]) => {\r\n\r\n // remove from SCOPE affiliationList & transform its elemts into {id: 1, text: \"affialite 1\"}\r\n _scopeAffiliationsList = DataService.getKeyValueCollection(_scopeAffiliationsList, \"companyAffiliateId\", \"affiliateName\", false); // no All\r\n\r\n // remove all from selection\r\n _selAffiliationsList = DataService.removeElementAll(_selAffiliationsList, \"id\");\r\n _selVendorsList = DataService.removeElementAll(_selVendorsList, \"id\");\r\n _selUsersList = DataService.removeElementAll(_selUsersList, \"id\");\r\n\r\n this.oSubscriptions.add(\r\n LookupService.getVendorsByAffiliationsAsOBS(this.context.user.tenantId, _selAffiliationsList).subscribe((_scopeVendorsList) => {\r\n // remove from SCOPE vendorList\r\n _scopeVendorsList = DataService.removeElementAll(_scopeVendorsList, \"id\"); // remove before passing\r\n\r\n this.oSubscriptions.add(\r\n LookupService.getUsersByVendorsAsOBS(this.context.user.tenantId, _selAffiliationsList, _selVendorsList).subscribe((_scopeUsersList) => {\r\n // remove from SCOPE userList\r\n _scopeUsersList = DataService.removeElementAll(_scopeUsersList, \"id\"); // remove before passing\r\n\r\n _sourceTypeList = _sourceTypeList.filter(x => {\r\n if (x.isPorzioEntity)\r\n return x;\r\n });\r\n // then set the state\r\n this.setState(\r\n {\r\n sourceTypeList: _sourceTypeList,\r\n // source-permissions\r\n scopeAffiliationsList: _scopeAffiliationsList.length > 0 ? DataService.addElementAll(_scopeAffiliationsList, \"id\") : [], // adds element\r\n scopeVendorsList: _scopeVendorsList.length > 0 ? DataService.addElementAll(_scopeVendorsList, \"id\") : [], // adds element\r\n scopeUsersList: _scopeUsersList.length > 0 ? DataService.addElementAll(_scopeUsersList, \"id\") : [], // adds element\r\n\r\n // if both the scope and the selected length are equal then select only All\r\n // items that are already selected if any\r\n selAffiliationsList: _selAffiliationsList.length > 0 && _scopeAffiliationsList.length === _selAffiliationsList.length ? [LookupService.allElement] : _selAffiliationsList,\r\n selVendorsList: _selVendorsList.length > 0 && _scopeVendorsList.length === _selVendorsList.length ? [LookupService.allElement] : _selVendorsList,\r\n selUsersList: _selUsersList.length > 0 && _scopeUsersList.length === _selUsersList.length ? [LookupService.allElement] : _selUsersList,\r\n\r\n isAffiliatesLoading: false,\r\n isVendorsLoading: false,\r\n isUsersLoading: false,\r\n },\r\n // change the state after all the above are assigned\r\n () => { this.setState({ fetchResult: ResultStatus.LOADED }); }\r\n );\r\n })\r\n );\r\n })\r\n );\r\n })\r\n );\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n console.log(_formikProps.values);\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n sourceLabel: _formikProps.values.sourceLabel,\r\n toolTip: _formikProps.values.sourceLabel,\r\n sourceFileDescription: _formikProps.values.sourceFileDescription,\r\n sourceTypeId: _formikProps.values.sourceTypeId,\r\n emailTO: _formikProps.values.emailTO,\r\n\r\n isBusinessThreshold: _formikProps.values.isBusinessThreshold,\r\n businessRuleThresholdPercentage: Number(_formikProps.values.businessRuleThresholdPercentage),\r\n isBussinessRuleThresholdNotImport: _formikProps.values.isBussinessRuleThresholdNotImport ? _formikProps.values.isBussinessRuleThresholdNotImport : false,\r\n\r\n isUnmatchedRecipientThreshold: _formikProps.values.isUnmatchedRecipientThreshold,\r\n unmatchedRecipientThresholdPercentage: Number(_formikProps.values.unmatchedRecipientThresholdPercentage),\r\n isUnmatchedRecipientThresholdNotImport: _formikProps.values.isUnmatchedRecipientThresholdNotImport ? _formikProps.values.isUnmatchedRecipientThresholdNotImport : false,\r\n\r\n isOverwriteRecordStatus: false, // _formikProps.values.isOverwriteRecordStatus,\r\n isAutoProcessTransaction: _formikProps.values.isAutoProcessTransaction,\r\n isAutoProcessProfile: _formikProps.values.isAutoProcessProfile,\r\n isAutoProcessTransactionToNewProfiles: _formikProps.values.isAutoProcessTransactionToNewProfiles,\r\n isAutoProcess: _formikProps.values.isAutoProcess,\r\n autoMatchingScore: Number(_formikProps.values.autoMatchingScore),\r\n\r\n createdBy: this.context.user.userId,\r\n tenantId: this.context.user.tenantId,\r\n statusId: 1,\r\n active: _formikProps.values.active\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n const actionVerb = \"POST\";\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n mappedObj.systemId = 0;\r\n } else {\r\n mappedObj.systemId = this.props.systemId;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n this.oSubscriptions.add(\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.CORE, `/SourceSystems`, JSON.stringify(mappedObj)).subscribe(\r\n (successResult) => {\r\n if (successResult) { this._updateSourcePermissions(successResult.value); }\r\n else {\r\n console.error(\"Error while saving vendor details\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving vendor details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n })\r\n .catch((erroObj) => {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n _updateSourcePermissions(sourceSystemId) {\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n ApiService.setOBS(\"POST\", API_ENDPOINT.CORE,\r\n `/SourceSystems/UpdateAffiliations/${this.context.user.tenantId}/${sourceSystemId}`, JSON.stringify(DataService.getScopeKeys(this.state.selAffiliationsList, this.state.scopeAffiliationsList, \"id\"))),\r\n ApiService.setOBS(\"POST\", API_ENDPOINT.CORE,\r\n `/SourceSystems/UpdateVendors/${this.context.user.tenantId}/${sourceSystemId}`, JSON.stringify(DataService.getScopeKeys(this.state.selVendorsList, this.state.scopeVendorsList, \"id\"))),\r\n ApiService.setOBS(\"POST\", API_ENDPOINT.CORE,\r\n `/SourceSystems/UpdateUsers/${this.context.user.tenantId}/${sourceSystemId}`, JSON.stringify(DataService.getScopeKeys(this.state.selUsersList, this.state.scopeUsersList, \"id\"))),\r\n ]).subscribe(\r\n // success\r\n ([updateAffialitionsResult, updateVendorsResult, updateUsersResult]) => {\r\n if (updateAffialitionsResult.status === 200) { console.log(\"Affiliate Chips Updated\"); }\r\n if (updateVendorsResult.status === 200) { console.log(\"Vendor Chips Updated\"); }\r\n if (updateUsersResult.status === 200) { console.log(\"User Chips Updated\"); }\r\n\r\n this.setState({ fetchResult: ResultStatus.SUCCESS, });\r\n this.props.refreshSourceGrid(true);\r\n this.props.onClose(false);\r\n },\r\n // error\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n // TODO: update the retry callback as in the setState\r\n })\r\n );\r\n }\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n sourceLabel: \"\",\r\n sourceFileDescription: \"\",\r\n sourceTypeId: \"\",\r\n emailTO: \"\",\r\n\r\n isBusinessThreshold: false,\r\n businessRuleThresholdPercentage: \"\",\r\n isBussinessRuleThresholdNotImport: false,\r\n\r\n isUnmatchedRecipientThreshold: false,\r\n unmatchedRecipientThresholdPercentage: \"\",\r\n isUnmatchedRecipientThresholdNotImport: false,\r\n active: true,\r\n\r\n isOverwriteRecordStatus: false,\r\n isAutoProcessTransaction: false,\r\n isAutoProcessProfile: false,\r\n isAutoProcessTransactionToNewProfiles: false,\r\n isAutoProcess: false,\r\n autoMatchingScore: 0,\r\n\r\n // Source Permissions : selected values should only be assigned here\r\n selAffiliationsList: [],\r\n selVendorsList: [],\r\n selUsersList: [],\r\n };\r\n } else {\r\n return {\r\n sourceLabel: this.props.modalAgNode.sourceLabel,\r\n sourceFileDescription: this.props.modalAgNode.sourceFileDescription,\r\n sourceTypeId: Number.isInteger(this.props.modalAgNode.sourceTypeId) ? this.props.modalAgNode.sourceTypeId : 1,\r\n emailTO: this.props.modalAgNode.emailTO,\r\n\r\n isBusinessThreshold: this.props.modalAgNode.isBusinessThreshold,\r\n businessRuleThresholdPercentage: this.props.modalAgNode.businessRuleThresholdPercentage,\r\n isBussinessRuleThresholdNotImport: this.props.modalAgNode.businessThreshold === \"Enabled\", // string\r\n\r\n isUnmatchedRecipientThreshold: this.props.modalAgNode.isUnmatchedRecipientThreshold,\r\n unmatchedRecipientThresholdPercentage: this.props.modalAgNode.unmatchedRecipientThresholdPercentage,\r\n isUnmatchedRecipientThresholdNotImport: this.props.modalAgNode.unmatchedRecipientThreshold === \"Enabled\", // string\r\n active: this.props.modalAgNode.active,\r\n\r\n isOverwriteRecordStatus: false, //this.props.modalAgNode.isOverwriteRecordStatus,\r\n isAutoProcessTransaction: this.props.modalAgNode.isAutoProcessTransaction,\r\n isAutoProcessProfile: this.props.modalAgNode.isAutoProcessProfile,\r\n isAutoProcessTransactionToNewProfiles: this.props.modalAgNode.isAutoProcessTransactionToNewProfiles,\r\n isAutoProcess: this.props.modalAgNode.isAutoProcess,\r\n autoMatchingScore: this.props.modalAgNode.autoMatchingScore,\r\n\r\n // Source Permissions : selected values should only be assigned here\r\n selAffiliationsList: this.state.selAffiliationsList,\r\n selVendorsList: this.state.selVendorsList,\r\n selUsersList: this.state.selUsersList,\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n\r\n sourceLabel: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n sourceFileDescription: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n sourceTypeId: Yup.string().required(\"Required\"),\r\n emailTO: Yup.array()\r\n .transform(function (value, originalValue) {\r\n if (this.isType(value) && value !== null) {\r\n return value;\r\n }\r\n return originalValue ? originalValue.split(/[\\s,]+/) : [];\r\n })\r\n .of(Yup.string().email(({ value }) => `${value} is not a valid email, separate multiple emails by comma`)),\r\n isBusinessThreshold: Yup.boolean().required(\"Required\"),\r\n businessRuleThresholdPercentage: Yup.number()\r\n .when('isBusinessThreshold', {\r\n is: true,\r\n then: Yup.number().required(\"Required\").min(0, \"Must be above 0\").max(100, \"Must be below 100\"),\r\n otherwise: Yup.number().min(0, \"Must be above 0\").max(100, \"Must be below 100\").transform((_, val) => val === \"\" ? 0 : Number(val)),\r\n }),\r\n isBussinessRuleThresholdNotImport: Yup.boolean(),\r\n\r\n isUnmatchedRecipientThreshold: Yup.boolean().required(\"Required\"),\r\n unmatchedRecipientThresholdPercentage: Yup.number()\r\n .when('isUnmatchedRecipientThreshold', {\r\n is: true,\r\n then: Yup.number().required(\"Required\").min(0, \"Must be above 0\").max(100, \"Must be below 100\"),\r\n otherwise: Yup.number().min(0, \"Must be above 0\").max(100, \"Must be below 100\").transform((_, val) => val === \"\" ? 0 : Number(val)),\r\n }),\r\n isUnmatchedRecipientThresholdNotImport: Yup.boolean(),\r\n\r\n active: Yup.boolean(),\r\n\r\n autoMatchingScore: Yup.number().required(\"Required\").min(0, \"Must be above 0\").max(100, \"Must be below 100\"),\r\n\r\n // Source Permissions\r\n selAffiliationsList: DataService.hasElements(this.state.scopeAffiliationsList) ? Yup.array().required(\"Required\") : Yup.array(),\r\n selVendorsList: DataService.hasElements(this.state.scopeVendorsList) ? Yup.array().required(\"Required\") : Yup.array(),\r\n selUsersList: DataService.hasElements(this.state.scopeUsersList) ? Yup.array().required(\"Required\") : Yup.array(),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n const canAndForCreate = RolePermissionService.SOURCE_FILE_DETAIL.canCreate && this.props.inputAction === CrudAction.CREATE;\r\n const canAndForEdit = RolePermissionService.SOURCE_FILE_DETAIL.canEdit && this.props.inputAction === CrudAction.UPDATE;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n { this.handleSubmit(fProps) }, () => { })\r\n : canAndForEdit ? LayoutService.getReadOnlyActionsSolo(this, false, () => { this.handleSubmit(fProps) })\r\n : <>\r\n } />\r\n\r\n \r\n \r\n \r\n {LayoutService.getSelectControl((this.state.isReadOnly && this.props.inputAction === CrudAction.UPDATE), classes, fProps, \"sourceTypeId\", \"Source Type\", this.state.sourceTypeList, \"entityid\", \"entityname\", \"90%\", false)} \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"active\", \"Active\")} \r\n \r\n \r\n\r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isBusinessThreshold\", \"Business Threshold\")} \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isBussinessRuleThresholdNotImport\", \"Automatic Not Import File (If Business Rule Threshold Exceeded)\", false)} \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isUnmatchedRecipientThreshold\", \"Unmatched Recipient Threshold\", false)} \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isUnmatchedRecipientThresholdNotImport\", \"Automatic Not Import File (If Unmatched Recipient Threshold Exceeded)\")} \r\n \r\n\r\n \r\n \r\n {/* {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isOverwriteRecordStatus\", \"Overwrite Record Status During Import Process\")} */}\r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isAutoProcessTransaction\", \"Require Eligibility Confirmation for New Transactions\")} \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isAutoProcessProfile\", \"Require Approval for New Profiles\")} \r\n {fProps.values.sourceTypeId == ENTITY_TYPE.TRANSACTION && {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isAutoProcessTransactionToNewProfiles\", \"Auto Matching Transactions to New Profiles\")} }\r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isAutoProcess\", \"Auto Matching\")} \r\n \r\n \r\n\r\n \r\n \r\n {this.state.isAffiliatesLoading ? null : LayoutService.getChipSelect(this.state.isReadOnly, classes, fProps, \"selAffiliationsList\", \"Affiliated Companies\", this.state.scopeAffiliationsList, \"id\", \"text\", this.onAffiliatesChange, \"80%\", \"\")}\r\n {this.state.isVendorsLoading || DataService.hasNoElements(this.state.selAffiliationsList) ? null : LayoutService.getChipSelect(this.state.isReadOnly, classes, fProps, \"selVendorsList\", \"Vendors\", this.state.scopeVendorsList, \"id\", \"text\", this.onVendorsChange, \"80%\", \"\")}\r\n {this.state.isUsersLoading || DataService.hasNoElements(this.state.selVendorsList) ? null : LayoutService.getChipSelect(this.state.isReadOnly, classes, fProps, \"selUsersList\", \"Users\", this.state.scopeUsersList, \"id\", \"text\", this.onUsersChange, \"80%\", \"\")}\r\n \r\n \r\n )}\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { console.log('Retry not defined!'); }} />\r\n );\r\n }\r\n }\r\n\r\n onAffiliatesChange = async (_formikProps, _newValues) => {\r\n // 1) clear the selected userList & its datasource\r\n await this._clearLookupStuff(_formikProps, \"isUsersLoading\", \"selUsersList\", \"scopeUsersList\");\r\n // 2) clear the selected vendorList & its datasource\r\n await this._clearLookupStuff(_formikProps, \"isVendorsLoading\", \"selVendorsList\", \"scopeVendorsList\");\r\n // 3) set the newely selectedAffiliations\r\n this.setState({ selAffiliationsList: _newValues }); // this is not formik equivalent, but updating just for reference\r\n // 4) filterFetch the vendorsList and set it as the datasource\r\n if (DataService.hasElements(_newValues)) {\r\n // clear others if is selected\r\n await this._clearOthersIfAllIsSelected(_newValues, _formikProps, \"selAffiliationsList\");\r\n // fetch and assign\r\n LookupService.getVendorsByAffiliationsAsOBS(this.context.user.tenantId, _newValues).subscribe(\r\n (successResult) => { // load datasource for vendors-ChipSelect\r\n this.setState({\r\n scopeVendorsList: successResult.length > 0 ? DataService.addElementAll(successResult, \"id\") : [],\r\n isVendorsLoading: false\r\n });\r\n },\r\n (errorResult) => { console.log(\"Error loading Affiliate-Vendors\", errorResult); }\r\n );\r\n }\r\n }\r\n\r\n onVendorsChange = async (_formikProps, _newValues) => {\r\n // 1) clear the selected userList & its datasource\r\n await this._clearLookupStuff(_formikProps, \"isUsersLoading\", \"selUsersList\", \"scopeUsersList\");\r\n // 2) set the newely selVendorsList\r\n this.setState({ selVendorsList: _newValues }); // this is not formik equivalent, but updating just for reference\r\n // 3) filterFetch the vendorsList and set it as the datasource\r\n if (DataService.hasElements(_newValues)) {\r\n // clear others if is selected\r\n await this._clearOthersIfAllIsSelected(_newValues, _formikProps, \"selVendorsList\");\r\n // fetch and assign\r\n LookupService.getUsersByVendorsAsOBS(this.context.user.tenantId, this.state.selAffiliationsList, _newValues).subscribe(\r\n (successResult) => { // load datasource for users-ChipSelect\r\n this.setState({\r\n scopeUsersList: successResult.length > 0 ? DataService.addElementAll(successResult, \"id\") : [],\r\n isUsersLoading: false\r\n });\r\n },\r\n (errorResult) => { console.log(\"Error loading Vendor-Users\", errorResult); }\r\n );\r\n }\r\n }\r\n\r\n onUsersChange = async (_formikProps, _newValues) => {\r\n // 1) set the newely selUsersList\r\n this.setState({ selUsersList: _newValues }); // this is not formik equivalent, but updating just for reference\r\n // 2) clear others if is selected\r\n if (DataService.hasElements(_newValues)) {\r\n await this._clearOthersIfAllIsSelected(_newValues, _formikProps, \"selUsersList\");\r\n }\r\n\r\n }\r\n\r\n // Utils\r\n _clearOthersIfAllIsSelected = async (_newValues, _formikProps, _propName) => {\r\n // check for Item\r\n const itemAll = DataService.getFirstOrDefault(_newValues.filter((x) => x.id === LookupService.allElement.id));\r\n // if is selected and is not the only selected item, then clear others\r\n if (itemAll && _newValues.length !== 1) {\r\n // then clear the others except All\r\n await _formikProps.setFieldValue(_propName, [itemAll], true);\r\n this.setState({ [_propName]: [itemAll] });\r\n }\r\n }\r\n\r\n _clearLookupStuff = async (_formikProps, _loadingKey, _selectionKey, _scopeKey) => {\r\n this.setState({ [_loadingKey]: true }); // set the vendors loading as true\r\n await _formikProps.setFieldValue(_selectionKey, [], true);\r\n await _formikProps.setFieldTouched(_selectionKey, true, false);\r\n this.setState({ [_selectionKey]: [], [_scopeKey]: [] }); // clear the user datasource\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(SourceDetailsComponent);","import ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\nimport { GST_API, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nexport default class BusinessRulesListService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, _sourceid, _typeOfRules, _authContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(_sourceid, _typeOfRules, _authContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(_sourceid, _typeOfRules, _authContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n let url =\r\n _typeOfRules === 1\r\n ? `/SourceSystems/GetRuleDetailsBySource/${_sourceid}?tenantid=${_authContext.user.tenantId}`\r\n : `/SourceSystems/GetUnassignedRuleDetailsBySource/${_sourceid}?tenantid=${_authContext.user.tenantId}`;\r\n // return ApiService.fetchHTTP_API(GST_API.Core, url);\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n url\r\n );\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"isChecked\", \"Select\").fixedWidth(88)\r\n .cellRenderer(\"checkBoxCellRendererComponent\", {\r\n checkDisabled: (_cellProps) => { return RolePermissionService.SOURCE_FILE_DETAIL.cannotEdit || _cellProps.data[\"categoryName\"] === \"File Validation\"; }\r\n }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"ruleName\", \"Rule App Name\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"ruleDescription\", \"Rule Description\").flexWeight(2).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"categoryName\", \"Rule Category\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"errorOrWarn\", \"Warning/ Error\").cellRenderer(\"agGridChipCellRendererComponent\").fixedWidth(112).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"isFileImport\", \"File Import\").cellRenderer(\"isActiveIconRendererComponent\").fixedWidth(112).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"isFileRevalidate\", \"File Revalidate\").cellRenderer(\"isActiveIconRendererComponent\").fixedWidth(112).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"isManualEntry\", \"Manual Entry\").cellRenderer(\"isActiveIconRendererComponent\").fixedWidth(96).SET(),\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Chip, } from \"@material-ui/core\";\r\n\r\nexport default class AgGridChipCellRendererComponent extends Component {\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.props.value === \"isWarning\" ?\r\n \r\n : this.props.value === \"isError\" ?\r\n \r\n :\r\n \r\n }
    \r\n )\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport Checkbox from \"@material-ui/core/Checkbox\";\r\n\r\nexport default class CheckBoxCellRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n this.state = { isChecked: false };\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,\r\n this.props.node.data\r\n );\r\n console.log(this.props.node.data.isChecked);\r\n }\r\n\r\n render() {\r\n return (\r\n {\r\n this.setState({ isChecked: !this.state.isChecked });\r\n this.props.node.data.isChecked = !this.props.node.data.isChecked;\r\n this.invokeParentMethod();\r\n }}\r\n />\r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { API_ENDPOINT, CrudAction, ResultStatus } from \"../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport SectionComponent from \"../../../shared/components/sectionComponent\";\r\nimport { withStyles, Grid, Button } from \"@material-ui/core\";\r\nimport BusinessRulesListService from \"./businessRulesListService\";\r\nimport IsActiveIconRendererComponent from \"../../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport AgGridChipCellRendererComponent from \"../../../shared/components/ag-grid/agGridChipCellRendererComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport CheckBoxCellRendererComponent from \"./checkBoxCellRenderer\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport SessionService from \"../../../shared/services/sessionService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass BusinessRulesListComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = BusinessRulesListService;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n frameworkComponents: {\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n checkBoxCellRendererComponent: CheckBoxCellRendererComponent,\r\n agGridChipCellRendererComponent: AgGridChipCellRendererComponent,\r\n },\r\n data: [],\r\n unassignedData: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n selAssigned: [],\r\n selUnassigned: [],\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n _ignoreCache = true;\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n this.STORE.getObs(_ignoreCache, this.props.systemId, 1, this.context),\r\n this.STORE.getObs(_ignoreCache, this.props.systemId, 2, this.context),\r\n ]).subscribe(\r\n ([_assigned, _unassigned]) => {\r\n if (_assigned) {\r\n if (!Array.isArray(_assigned)) {\r\n _assigned = new Array(_assigned);\r\n }\r\n _assigned.map((x) => {\r\n x.isAssigned = true;\r\n x.isChecked = false;\r\n return x;\r\n });\r\n }\r\n if (_unassigned) {\r\n if (!Array.isArray(_unassigned)) {\r\n _unassigned = new Array(_unassigned);\r\n }\r\n // _unassigned.map((x) => (x.isAssigned = false));\r\n _unassigned.map((x) => {\r\n x.isAssigned = false;\r\n x.isChecked = false;\r\n return x;\r\n });\r\n }\r\n this.STORE.CACHE.SET(_assigned, 0);\r\n this.STORE.CACHE.SET(_unassigned, 0);\r\n const leftOver = _unassigned.filter(u => !_assigned.some(a => u.businessRuleId === a.businessRuleId));\r\n this.setState(\r\n {\r\n data: _assigned.map(o => ({ ...o, errorOrWarn: o.categoryName === \"Data Processing\" ? \"notApplicable\" : o.isWarning ? \"isWarning\" : \"isError\" })),\r\n unassignedData: leftOver.map(o => ({ ...o, errorOrWarn: o.categoryName === \"Data Processing\" ? \"notApplicable\" : o.isWarning ? \"isWarning\" : \"isError\" })),\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n if (_assigned === null || _unassigned === null) {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n }\r\n );\r\n },\r\n ([_assigned, _unassigned]) => {\r\n //console.log(\"Error:\", _assigned);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n //this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n methodFromParent = (cell, data) => {\r\n if (data.isAssigned) {\r\n let prev = this.state.selAssigned;\r\n data.isChecked\r\n ? prev.push(data)\r\n : prev.filter((x) => x.businessRuleId !== data.businessRuleId);\r\n this.setState({ selAssigned: prev });\r\n } else {\r\n let prev = this.state.selUnassigned;\r\n data.isChecked\r\n ? prev.push(data)\r\n : prev.filter((x) => x.businessRuleId !== data.businessRuleId);\r\n this.setState({ selUnassigned: prev });\r\n }\r\n };\r\n\r\n moveToAssigned = () => {\r\n let currAssigned = this.state.data;\r\n let currUnassigned = this.state.unassignedData;\r\n currUnassigned = currUnassigned.filter(\r\n (x) => !this.state.selUnassigned.includes(x)\r\n );\r\n currAssigned = [...currAssigned, ...this.state.selUnassigned];\r\n currAssigned.forEach((x) => {\r\n x.isChecked = false;\r\n x.isAssigned = true;\r\n return x;\r\n });\r\n this.setState(\r\n {\r\n data: currAssigned,\r\n selUnassigned: [],\r\n unassignedData: currUnassigned,\r\n });\r\n };\r\n moveToUnassigned = () => {\r\n let currAssigned = this.state.data;\r\n let currUnassigned = this.state.unassignedData;\r\n currAssigned = currAssigned.filter(\r\n (x) => !this.state.selAssigned.includes(x)\r\n );\r\n currUnassigned = [...currUnassigned, ...this.state.selAssigned];\r\n currUnassigned.forEach((x) => {\r\n x.isChecked = false;\r\n x.isAssigned = false;\r\n return x;\r\n });\r\n this.setState(\r\n {\r\n data: currAssigned,\r\n selAssigned: [],\r\n unassignedData: currUnassigned,\r\n });\r\n };\r\n\r\n getKeyValueCollection = (_objectArray, _keyProp, _valueProp) => {\r\n if (_objectArray.length !== 0) {\r\n var _newAssigned = _objectArray\r\n .filter((x) => x[_keyProp] !== 0)\r\n .map((el) => ({\r\n businessRuleId: \"\" + el[_keyProp],\r\n versionId: \"\" + el[_valueProp],\r\n }));\r\n }\r\n // return\r\n return _newAssigned;\r\n };\r\n handleSubmit = () => {\r\n let newAssigned = this.getKeyValueCollection(\r\n this.state.data,\r\n \"businessRuleId\",\r\n \"versionNumber\"\r\n );\r\n newAssigned = newAssigned ?? [];\r\n // const _usermodel = SessionService.getUserModelFromStorage();\r\n this.oSubscriptions.add(\r\n ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems/SaveBusinessRuleDetailsBySourceId/${this.context.user.tenantId}/${this.props.systemId}`,\r\n JSON.stringify(newAssigned)\r\n ).subscribe(\r\n (status) => {\r\n this.setState({\r\n fetchResult: ResultStatus.LOADING,\r\n });\r\n this.fetchData();\r\n },\r\n (status) => {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n\r\n { this.handleSubmit() }) : <>}\r\n />\r\n\r\n \r\n
    \r\n {\r\n // event.api.sizeColumnsToFit();\r\n }}\r\n >\r\n
    \r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n
    \r\n {\r\n // event.api.sizeColumnsToFit();\r\n }}\r\n >\r\n
    \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.fetchData(true); }} onClose={this.props.onClose} />\r\n );\r\n }\r\n }\r\n}\r\nexport default withStyles(MatClassService)(BusinessRulesListComponent);\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport Grid from \"@material-ui/core/Grid\";\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 Checkbox from \"@material-ui/core/Checkbox\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Paper from \"@material-ui/core/Paper\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\nimport SectionComponent from \"../../../shared/components/sectionComponent\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n margin: \"auto\",\r\n },\r\n paper: {\r\n width: 250,\r\n height: 500,\r\n overflow: \"auto\",\r\n border: \"0.5px solid black\",\r\n margin: \"30px\",\r\n },\r\n button: {\r\n margin: theme.spacing(0.5, 0),\r\n },\r\n}));\r\n\r\nfunction not(a, b) {\r\n return a.filter((value) => b.indexOf(value) === -1);\r\n}\r\n\r\nfunction intersection(a, b) {\r\n return a.filter((value) => b.indexOf(value) !== -1);\r\n}\r\n\r\nexport default function FieldConfigurationComponent(props) {\r\n const authConsumer = useContext(AuthContext);\r\n const classes = useStyles();\r\n const [checked, setChecked] = React.useState([]);\r\n const [left, setLeft] = React.useState([]);\r\n const [right, setRight] = React.useState([]);\r\n const [isSaveClicked, setIsSaveClicked] = React.useState(false);\r\n\r\n const leftChecked = intersection(checked, left);\r\n const rightChecked = intersection(checked, right);\r\n\r\n const handleToggle = (value) => () => {\r\n const currentIndex = checked.indexOf(value);\r\n const newChecked = [...checked];\r\n\r\n if (value.isRequired === false) {\r\n if (currentIndex === -1) {\r\n newChecked.push(value);\r\n } else {\r\n newChecked.splice(currentIndex, 1);\r\n }\r\n setChecked(newChecked);\r\n };\r\n }\r\n\r\n const handleCheckedRight = () => {\r\n setRight(right.concat(leftChecked));\r\n setLeft(not(left, leftChecked));\r\n setChecked(not(checked, leftChecked));\r\n };\r\n\r\n const handleCheckedLeft = () => {\r\n setLeft(left.concat(rightChecked));\r\n setRight(not(right, rightChecked));\r\n setChecked(not(checked, rightChecked));\r\n };\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const result = await fetch(`${process.env.REACT_APP_CORE_HTTP}/SourceSystems/GetAvailableFieldsByEntity/${authConsumer.user.tenantId}/${props.modalAgNode.sourceTypeId}/${props.modalAgNode.systemId}`);\r\n const json = await result.json();\r\n setLeft(json.map(el => ({\r\n id: el.fieldid,\r\n text: el.fielD_NAME,\r\n isRequired: el.iS_PLSREQUIRED,\r\n })));\r\n } catch {\r\n console.log(\"fetch /SourceSystems/GetAvailableFieldsByEntity/ failed\");\r\n }\r\n };\r\n fetchData();\r\n }, [authConsumer.user.tenantId, props.modalAgNode.sourceTypeId, props.modalAgNode.systemId]);\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n try {\r\n const result = await fetch(`${process.env.REACT_APP_CORE_HTTP}/SourceSystems/GetSourceFieldsByEntity/${authConsumer.user.tenantId}/${props.modalAgNode.sourceTypeId}/${props.modalAgNode.systemId}`);\r\n const json = await result.json();\r\n setRight(json.map(el => ({\r\n id: el.fieldid,\r\n text: el.fielD_NAME,\r\n isRequired: el.iS_PLSREQUIRED,\r\n })));\r\n } catch {\r\n console.log(\"fetch /SourceSystems/GetSourceFieldsByEntity/ failed\");\r\n }\r\n };\r\n fetchData();\r\n }, [authConsumer.user.tenantId, props.modalAgNode.sourceTypeId, props.modalAgNode.systemId]);\r\n\r\n\r\n useEffect(() => {\r\n const fetchData = async () => {\r\n\r\n let strFieldValues = JSON.stringify(right.map(el => el.id));\r\n strFieldValues = strFieldValues.substring(1, strFieldValues.length - 1);\r\n console.log(strFieldValues);\r\n\r\n const result = await fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/SourceSystems/SaveSourceFields/`,\r\n {\r\n method: \"PUT\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n sourceId: props.modalAgNode.systemId,\r\n //fieldValues: \"5,15,1,17\",\r\n fieldValues: strFieldValues,\r\n tenantId: authConsumer.user.tenantId,\r\n createdBy: authConsumer.user.userId\r\n }),\r\n });\r\n //const json = await result.json();\r\n };\r\n if (isSaveClicked) {\r\n fetchData();\r\n props.onClose(false);\r\n }\r\n }, [isSaveClicked, right, props, authConsumer.user.tenantId, props.modalAgNode.sourceTypeId, props.modalAgNode.systemId]);\r\n\r\n const handleFieldConfigSaveSubmit = () => {\r\n setIsSaveClicked(true);\r\n }\r\n\r\n const customList = (items) => (\r\n // \r\n \r\n \r\n {items.map((el) => {\r\n const labelId = `transfer-list-item-${el.id}-label`;\r\n\r\n return (\r\n \r\n \r\n {\r\n el.isRequired ?\r\n \r\n :\r\n { return chel.id }).indexOf(el.id) !== -1} tabIndex={-1} disableRipple inputProps={{ \"aria-labelledby\": labelId }} />\r\n }\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 getProps = () => {\r\n return props.isReadOnly ? {} : {\r\n save: true,\r\n onSaveClick: () => { handleFieldConfigSaveSubmit(); }\r\n }\r\n }\r\n return (\r\n <>\r\n \r\n\r\n \r\n Available Fields{customList(left)}\r\n \r\n \r\n \r\n \r\n \r\n \r\n Displayed Fields{customList(right)}\r\n \r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport { DialogContent, Tabs, Tab, Box, TextField, Divider } from \"@material-ui/core\";\r\n\r\nimport SourceDetailsComponent from \"../source-details/sourceDetailsComponent\";\r\nimport BusinessRulesListComponent from \"../business-rules/businessRulesListComponent\";\r\nimport FieldConfigurationComponent from \"../field-configuration/fieldConfigurationComponent\";\r\n\r\nimport { CrudAction, ResultStatus } from \"../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport SectionComponent from \"../../../shared/components/sectionComponent\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport MatThemeService from \"../../../shared/services/theme/matThemeService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass SourceDialogComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n // bind\r\n this.onValueChange = this.onValueChange.bind(this);\r\n\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n selectedTabIndex: 0,\r\n // build the state with the error model\r\n model: LayoutService.buildWithErrorModel({\r\n taskName: \"\",\r\n taskPriority: \"\",\r\n taskAssignedTo: \"\",\r\n startDate: \"\",\r\n dueDate: \"\",\r\n status: \"\",\r\n }),\r\n };\r\n }\r\n componentWillUnmount() { }\r\n componentDidMount() { this.setState({ fetchResult: ResultStatus.SUCCESS }); }\r\n\r\n onTabChange = (event, newValue) => {\r\n this.setState({ selectedTabIndex: newValue });\r\n };\r\n\r\n onValueChange(_event) {\r\n const key = _event.target.id;\r\n const value = _event.target.value;\r\n\r\n // set value\r\n this.setState({\r\n model: {\r\n [key]: value,\r\n }\r\n });\r\n\r\n // set validation message\r\n switch (key) {\r\n case \"taskName\": this.setModelError(key, value === \"\", \"Task Name is required\"); break;\r\n case \"taskPriority\": this.setModelError(key, value === \"\", \"Task Priority is required\"); break;\r\n case \"taskAssignedTo\": this.setModelError(key, value === \"\", \"Assigned To is required\"); break;\r\n case \"startDate\": this.setModelError(key, value === \"\", \"Start Date is required\"); break;\r\n case \"dueDate\": this.setModelError(key, value === \"\", \"Due Date is required\"); break;\r\n case \"status\": this.setModelError(key, value === \"\", \"Status is required\"); break;\r\n default: console.log(\"Source Dialog Component Default\");\r\n }\r\n }\r\n\r\n setModelError(_key, _hasError, _errorMsg) {\r\n this.setState({\r\n model: {\r\n [_key + \"_error\"]: _hasError ? _errorMsg : null\r\n }\r\n });\r\n }\r\n\r\n buildProps(_key, _label) {\r\n return {\r\n label: _label,\r\n id: _key,\r\n name: _key,\r\n defaultValue: this.state.model[_key],\r\n error: this.state.model[_key + \"_error\"] !== null,\r\n helperText: this.state.model[_key + \"_error\"],\r\n onChange: this.onValueChange,\r\n };\r\n }\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n if ((this.props.inputAction === CrudAction.CREATE && RolePermissionService.SOURCE_FILE_DETAIL.cannotCreate) // applies for create\r\n || (this.props.inputAction === CrudAction.UPDATE && RolePermissionService.SOURCE_FILE_DETAIL.cannotView)) { // applies for both view and edit\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose(false) });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n\r\n {/* Header */}\r\n { this.props.onClose(false); }, title: \"Go back\", iconColor: \"secondary\" },\r\n ]}\r\n />\r\n\r\n {/* constent */}\r\n \r\n\r\n {this.props.inputAction === CrudAction.UPDATE ?\r\n \r\n \r\n \r\n \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.props.inputAction === CrudAction.UPDATE ?\r\n \r\n : null}\r\n \r\n\r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { }} />);\r\n }\r\n }\r\n\r\n }\r\n\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(SourceDialogComponent);","import { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\nimport Cache from \"../../shared/store/cache\";\r\nimport { GST_API } from \"../../shared/types/enums\";\r\n\r\nexport default class SourceService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n\r\n return ApiService.fetchHTTP_API(GST_API.Core, `/SourceSystems?tenantId=${clientAuthContext.user.tenantId}&pageNumber=1&rowsPerPage=250`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"sourceLabel\", \"Source\").flexWeight(2).minWidth(112).tooltip().headerClass(\"center-text\").cellRenderer(\"childMessageRenderer\").SET(),\r\n AgGridColumnExt.GET(false, true, \"sourceTypeName\", \"Source Type\").flexWeight(1).minWidth(112).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"businessThreshold\", \"Business Threshold\").fixedWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n\r\n AgGridColumnExt.GET(false, \"text\", \"businessRuleThresholdPercentage\", \"Business Rule Threshold Percentage\").fixedWidth(192).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"unmatchedRecipientThreshold\", \"Unmatched Recipient Threshold\").fixedWidth(176).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"unmatchedRecipientThresholdPercentage\", \"Unmatched Recipient Threshold Percentage\").fixedWidth(192).headerClass(\"center-text\").centerAlignText().SET(),\r\n \r\n AgGridColumnExt.GET(false, \"text\", \"active\", \"Active?\").fixedWidth(96).cellRenderer(\"isActiveIconRendererComponent\").SET(),\r\n ];\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport { Dialog } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport ChildMessageRendererComponent from \"./childMessageRendererComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport SourceDialogComponent from \"./source-dialog/sourceDialogComponent\";\r\nimport SourceService from \"./sourceService\";\r\nimport { CrudAction } from \"../../shared/types/enums\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport IsActiveIconRendererComponent from \"../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\n\r\nclass SourceComponent extends Component {\r\n static contextType = AuthContext;\r\n\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = SourceService;\r\n state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n childMessageRenderer: ChildMessageRendererComponent,\r\n },\r\n modalShow: false,\r\n showDetailsDialog: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.fetchData.bind(this);\r\n }\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) { o = new Array(o); }\r\n this.setState({ data: o, fetchResult: ResultStatus.SUCCESS });\r\n },\r\n (o) => {\r\n ToastService.showError(\"Error occured\");\r\n this.setState({ data: [], fetchResult: ResultStatus.ERROR, });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n\r\n handleDetailsDialogClose = (_result) => {\r\n if (_result) {\r\n // relod the componenet if needed\r\n }\r\n this.setState({ showDetailsDialog: false });\r\n };\r\n\r\n methodFromParent = (cell, node) => {\r\n this.setState({\r\n modalShow: true,\r\n showDetailsDialog: true,\r\n inputAction: CrudAction.UPDATE,\r\n systemId: node.systemId,\r\n modalAgNode: node,\r\n });\r\n };\r\n\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n\r\n handleCreateSourceModal = () => {\r\n this.setState({\r\n inputAction: CrudAction.CREATE,\r\n showDetailsDialog: true,\r\n systemId: 1\r\n });\r\n this.setState({ modalAgNode: { systemId: 1 } });\r\n };\r\n\r\n render() {\r\n const { classes, history } = this.props;\r\n\r\n if (RolePermissionService.SOURCE_FILE_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {/* Header Componenet */}\r\n { this.props.history.goBack() } },\r\n { icon: MatIconService.RELOAD, title: \"Reload\", iconColor: \"secondary\", onClick: () => { this.fetchData(true); }, },\r\n ]}\r\n rightActions={[\r\n { icon: MatIconService.DOWNLOAD, title: \"Export to Excel\", iconColor: \"primary\", onClick: () => { }, isReadOnly: RolePermissionService.SOURCE_FILE_LIST_EXPORT.cannotView },\r\n { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"Add New\", iconColor: \"secondary\", onClick: this.handleCreateSourceModal, isReadOnly: RolePermissionService.SOURCE_FILE_DETAIL.cannotCreate },\r\n ]}\r\n />\r\n\r\n
    \r\n
    \r\n { }}\r\n >\r\n
    \r\n {/* Details-Modal */}\r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(true); }} />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(SourceComponent);\r\n","import React from \"react\";\r\nimport { withStyles, IconButton } from \"@material-ui/core\";\r\nimport { Typography, Button, Grid } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\n\r\nclass UnderConstructionComponent extends React.Component {\r\n static PATH = \"under-construction\";\r\n homeLink = (props) => ;\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n {MatIconService.WARNING}\r\n \r\n Page Under Construction\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n/** HOC */\r\nexport default withStyles(MatClassService)(UnderConstructionComponent);\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\n\r\nexport default class UserListStore {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n return ApiService.fetchObsTenant(`/User/GetAllUsers/${clientAuthContext.user.tenantId}`);\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"User Name\",\r\n field: \"loginName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"First Name\",\r\n field: \"firstName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Last Name\",\r\n field: \"lastName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Title\",\r\n field: \"title\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Country\",\r\n field: \"countryName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Role\",\r\n field: \"roles\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Active\",\r\n field: \"isActive\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n cellRenderer: \"userActiveRendererComponent\",\r\n },\r\n {\r\n headerName: \"Last Login\",\r\n field: \"lastLogin\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport ChildMessageRendererComponent from \"../childMessageRendererComponent\";\r\nimport UserDialogComponent from \"./user-details/userDialogComponent\";\r\nimport UserActiveRendererComponent from \"../../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { Dialog } from \"@material-ui/core\";\r\nimport UserListStore from \"./userListStore\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass UserListComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = UserListStore;\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.handleCreateUserModal = this.handleCreateUserModal.bind(this);\r\n this.handleHideCreateUserModal = this.handleHideCreateUserModal.bind(this);\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n userActiveRendererComponent: UserActiveRendererComponent,\r\n },\r\n personalSettingsModalShow: false,\r\n inputAction: CrudAction.NONE,\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) { o = new Array(o); }\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({ data: o, fetchResult: ResultStatus.SUCCESS });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n ToastService.showError(\"Error while fetching users.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n //this.gridApi.setDomLayout(\"autoHeight\");\r\n this.gridApi.sizeColumnsToFit();\r\n };\r\n\r\n methodFromParent = (cell, data) => {\r\n if (RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION.cannotView) {\r\n RolePermissionService.showAccessDeniedToast();\r\n } else {\r\n this.setState({\r\n personalSettingsModalShow: true,\r\n userId: data.id,\r\n inputAction: CrudAction.UPDATE,\r\n });\r\n }\r\n };\r\n\r\n handleCreateUserModal() {\r\n if (RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION.cannotCreate) {\r\n RolePermissionService.showAccessDeniedToast();\r\n } else {\r\n this.setState({ personalSettingsModalShow: true, inputAction: CrudAction.CREATE });\r\n }\r\n }\r\n handleHideCreateUserModal() {\r\n this.setState({ personalSettingsModalShow: false });\r\n }\r\n\r\n handleHide() {\r\n this.setState({ personalSettingsModalShow: false });\r\n }\r\n\r\n render() {\r\n const { classes, history } = this.props;\r\n if (RolePermissionService.USER_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack(); });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n { this.props.history.goBack(); } },\r\n { title: \"Reload\", icon: MatIconService.RELOAD, iconColor: \"secondary\", onClick: () => { this.fetchData(true); } }\r\n ]}\r\n rightActions={[\r\n { icon: MatIconService.DOWNLOAD, title: \"Export\", onClick: () => { }, isReadOnly: RolePermissionService.USER_LIST_EXPORT.cannotView },\r\n { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"Create User\", onClick: this.handleCreateUserModal, isReadOnly: RolePermissionService.USER_DETAIL_PERSONAL_INFORMATION.cannotCreate }\r\n ]}\r\n />\r\n\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(true); }} />);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(UserListComponent);\r\n","import React, { Component } from \"react\";\r\nimport {\r\n withStyles,\r\n TextField,\r\n InputLabel,\r\n Input,\r\n Select,\r\n FormControlLabel,\r\n Switch,\r\n FormGroup,\r\n} from \"@material-ui/core\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { ResultStatus, CrudAction } from \"../../../../shared/types/enums\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n} from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass CreateRoleModalComponent extends Component {\r\n static contextType = AuthContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.onValueChange = this.onValueChange.bind(this);\r\n\r\n this.state = {\r\n data: [],\r\n selectedTabIndex: 0,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n roleType: \"Customer\",\r\n isActive: true,\r\n isPlsRequired: true,\r\n };\r\n console.log(this.props);\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n\r\n onValueChange = (event) => {\r\n this.setState({ [event.target.name]: event.target.checked });\r\n };\r\n\r\n getInitialValues = () => {\r\n return {\r\n roleType: \"Customer\",\r\n isPlsRequired: \"true\",\r\n roleName: \"\",\r\n roleDescription: \"\",\r\n isActive: \"true\",\r\n effectiveDate: \"2022-01-01\",\r\n };\r\n };\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema = () => {\r\n this.validationSchema = Yup.object({\r\n roleType: Yup.string().required(\"Required\"),\r\n roleName: Yup.string()\r\n .min(3, \"Must be atleast 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .required(\"Required\")\r\n .test(\r\n \"checkDuplicateRoleName\",\r\n \"Role Name already exists\",\r\n async (_formikValue) => {\r\n try {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Role/GetAllRoles/${this.context.user.tenantId}`\r\n );\r\n const roleList = await result.json();\r\n const role = roleList.find(\r\n (role) =>\r\n role.roleName.toLowerCase() === _formikValue.toLowerCase()\r\n );\r\n\r\n if (role) {\r\n return false;\r\n }\r\n return true;\r\n } catch (error) {\r\n console.log(\"Role Exists Error:\", error);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n }\r\n ),\r\n roleDescription: Yup.string().required(\"Required\"),\r\n effectiveDate: Yup.date()\r\n .min(\"01/01/2019\", \"On or after 01/01/2019\")\r\n .max(\"1/1/2051\", \"On or before 1/1/2051\")\r\n .required(\"Required\")\r\n .nullable(),\r\n });\r\n return this.validationSchema;\r\n };\r\n\r\n fetchCreateRolePost = async (_formikProps) => {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n try {\r\n const roleObj = JSON.stringify({\r\n roleId: 0,\r\n tenantId: this.context.user.tenantId,\r\n roleName: _formikProps.values.roleName,\r\n roleDescription: _formikProps.values.roleDescription,\r\n roleType: this.state.roleType,\r\n isPlsRequired: this.state.isPlsRequired,\r\n isActive: this.state.isActive,\r\n effectiveDate: _formikProps.values.effectiveDate,\r\n });\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Role/AddRole/${this.context.user.tenantId}`,\r\n {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: roleObj,\r\n }\r\n );\r\n if (result.status === 201) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshRolesList(true);\r\n this.props.onClose(false);\r\n } else {\r\n ToastService.showError(\"Error while creating Role Post.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n } catch (error) {\r\n ToastService.showError(\"Error while creating Role Post.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n };\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema\r\n .validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n this.fetchCreateRolePost(_formikProps);\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n _formikProps.setSubmitting(true);\r\n setTimeout(() => {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n _formikProps.setSubmitting(false);\r\n }, 3000);\r\n })\r\n .catch((erroObj) => {\r\n ToastService.showError(\"Please Recheck your input.\");\r\n erroObj.inner &&\r\n erroObj.inner.forEach((err) => {\r\n _formikProps.setFieldError(err.path, err.message);\r\n });\r\n });\r\n }\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.ROLE_DETAIL.cannotCreate) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => {\r\n this.props.onClose(false);\r\n });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n \r\n Edit Role\r\n \r\n {\r\n this.handleSubmit(fProps);\r\n }}\r\n >\r\n {\" \"}\r\n {MatIconService.OK}{\" \"}\r\n \r\n {\r\n this.props.onClose(false);\r\n }}\r\n >\r\n {\" \"}\r\n {MatIconService.CANCEL}{\" \"}\r\n \r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n \r\n {/* \r\n Role Type\r\n \r\n }\r\n >\r\n \r\n \r\n \r\n \r\n */}\r\n {/* \r\n \r\n }\r\n label=\"PLS Required\"\r\n />\r\n */}\r\n \r\n \r\n }\r\n label=\"Active\"\r\n />\r\n \r\n \r\n \r\n
    \r\n )}\r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.SERVICE.fetchData(this, true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n\r\n //---\r\n}\r\nexport default LayoutService.getHocComponenet(CreateRoleModalComponent);\r\n","import React from \"react\";\r\nimport { ResultStatus, CrudAction } from \"../../../../shared/types/enums\";\r\nimport {\r\n withStyles,\r\n TextField,\r\n Switch,\r\n FormGroup,\r\n FormControlLabel,\r\n Select,\r\n InputLabel,\r\n FormControl,\r\n} from \"@material-ui/core\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n MenuItem,\r\n} from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass EditRoleModalComponent extends React.Component {\r\n static contextType = AuthContext;\r\n constructor(props) {\r\n super(props);\r\n // bind\r\n this.onValueChange = this.onValueChange.bind(this);\r\n this.handleDeleteSubmit = this.handleDeleteSubmit.bind(this);\r\n\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n data: [],\r\n fetchResult: ResultStatus.SUCCESS,\r\n selectedTabIndex: 0,\r\n isActive: this.props.modalAgNode.isActive,\r\n isPlsRequired: this.props.modalAgNode.isPlsRequired,\r\n };\r\n }\r\n\r\n onValueChange = (event) => {\r\n this.setState({ [event.target.name]: event.target.checked });\r\n };\r\n\r\n getInitialValues = () => {\r\n const obj = {\r\n roleType: \"Customer\",\r\n tenantId: this.context.user.tenantId,\r\n isPlsRequired: this.props.modalAgNode.isPlsRequired,\r\n roleName: this.props.modalAgNode.roleName,\r\n roleDescription: this.props.modalAgNode.roleDescription,\r\n isActive: this.props.modalAgNode.isActive,\r\n effectiveDate: this.props.modalAgNode.effectiveDate,\r\n };\r\n return obj;\r\n };\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema = () => {\r\n this.validationSchema = Yup.object({\r\n //roleType: Yup.string().required(\"Required\"),\r\n roleName: Yup.string()\r\n .min(3, \"Must be atleast 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .required(\"Required\")\r\n .test(\r\n \"checkDuplicateRoleName\",\r\n \"Role Name already exists\",\r\n async (_formikValue) => {\r\n try {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Role/GetAllRoles/${this.context.user.tenantId}`\r\n );\r\n const roleList = await result.json();\r\n const roleListWithoutCurrentRole = roleList.filter(\r\n (role) =>\r\n role.roleName.toLowerCase() !==\r\n this.props.modalAgNode.roleName.toLowerCase()\r\n );\r\n const role = roleListWithoutCurrentRole.find(\r\n (role) =>\r\n role.roleName.toLowerCase() === _formikValue.toLowerCase()\r\n );\r\n if (role) {\r\n return false;\r\n }\r\n return true;\r\n } catch (error) {\r\n console.log(\"Role Exists Error:\", error);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n }\r\n ),\r\n roleDescription: Yup.string().required(\"Required\"),\r\n effectiveDate: Yup.date()\r\n .min(\"01/01/2019\", \"On or after 01/01/2019\")\r\n .max(\"01/01/2051\", \"On or before 01/01/2051\")\r\n .required(\"Required\")\r\n .nullable(),\r\n });\r\n return this.validationSchema;\r\n };\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting) {\r\n await this.validationSchema\r\n .validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n this.fetchRoleUpdatePut(_formikProps);\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n _formikProps.setSubmitting(true);\r\n setTimeout(() => {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n _formikProps.setSubmitting(false);\r\n }, 3000);\r\n })\r\n .catch((erroObj) => {\r\n erroObj.inner &&\r\n erroObj.inner.forEach((err) => {\r\n _formikProps.setFieldError(err.path, err.message);\r\n });\r\n });\r\n }\r\n };\r\n\r\n handleDeleteSubmit() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n try {\r\n const roleId = this.props.modalAgNode.roleId;\r\n const url = `${process.env.REACT_APP_TENANT_HTTP}/Role/EditRole/${this.context.user.tenantId}/${roleId}`;\r\n const result = fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Role/EditRole/${this.context.user.tenantId}/${roleId}`,\r\n {\r\n method: \"DELETE\",\r\n headers: { accept: \"*/*\" },\r\n }\r\n );\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.onClose(false);\r\n this.props.refreshRolesList(true);\r\n } catch (error) {\r\n ToastService.showError(\"Error while creating Role Post.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n }\r\n\r\n fetchRoleUpdatePut = async (_formikProps) => {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n try {\r\n const roleObj = JSON.stringify({\r\n roleId: this.props.modalAgNode.roleId,\r\n tenantId: _formikProps.values.tenantId,\r\n roleName: _formikProps.values.roleName,\r\n roleDescription: _formikProps.values.roleDescription,\r\n roleType: \"Customer\",\r\n isPlsRequired: this.state.isPlsRequired,\r\n isActive: this.state.isActive,\r\n effectiveDate: \"2022-01-01\",\r\n });\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Role/EditRole/${this.context.user.tenantId}`,\r\n {\r\n method: \"PUT\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: roleObj,\r\n }\r\n );\r\n if ((result.status === 201) | (result.status === 204)) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshRolesList(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n } catch (error) {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n };\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.ROLE_DETAIL.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => {\r\n this.props.onClose(false);\r\n });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n \r\n Role Details\r\n \r\n {RolePermissionService.ROLE_DETAIL.cannotEdit ? (\r\n {\r\n this.props.onClose(false);\r\n }}\r\n >\r\n {MatIconService.CANCEL}\r\n \r\n ) : (\r\n LayoutService.getReadOnlyActions(\r\n this,\r\n !this.state.isEditing,\r\n () => {\r\n this.props.onClose(false);\r\n },\r\n () => {\r\n this.handleSubmit(fProps);\r\n }\r\n )\r\n )}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n \r\n\r\n {/* {RolePermissionService.ROLE_DETAIL_TYPE_CUSTOMER\r\n .cannotView ? null : (\r\n <>\r\n \r\n { Role Type }\r\n \r\n \r\n \r\n \r\n \r\n )} */}\r\n\r\n {/* \r\n \r\n */}\r\n\r\n {/* {RolePermissionService.ROLE_DETAIL_PORZIO_REQUIRED\r\n .cannotView ? null : (\r\n \r\n \r\n }\r\n label=\"PLS Required\"\r\n />\r\n \r\n )} */}\r\n \r\n \r\n }\r\n label=\"Active\"\r\n />\r\n \r\n \r\n \r\n
    \r\n )}\r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(this, true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n\r\n //---\r\n}\r\n/** HOC */\r\nexport default withStyles(MatClassService)(EditRoleModalComponent);\r\n","import Cache from \"../../../shared/store/cache\";\r\nimport { ResultStatus } from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\n\r\nexport default class RoleManagementService {\r\n // subscriptions\r\n static oSUBSCRIPTIONS = new SubscriptionArray();\r\n\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, context) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(context);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(context) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n return ApiService.fetchObsTenant(\r\n `/Role/GetAllRoles/${context.user.tenantId}`\r\n );\r\n }\r\n\r\n /** API Fetch */\r\n static fetchData(_component, _ignoreCache = false) {\r\n this.oSUBSCRIPTIONS.cancelAll();\r\n _component.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSUBSCRIPTIONS.add(\r\n this.getObs(_ignoreCache).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.CACHE.SET(o);\r\n _component.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n // onResultStatus.ERROR\r\n _component.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static dateFormatter(params) {\r\n return new Date(params.value).toLocaleDateString();\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Role Name\",\r\n field: \"roleName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 300,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Role Description\",\r\n field: \"roleDescription\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 300,\r\n },\r\n // {\r\n // headerName: \"Role Type\",\r\n // field: \"roleType\",\r\n // sortable: true,\r\n // filter: \"text\",\r\n // cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n // resizable: true,\r\n // width: 150,\r\n // },\r\n // {\r\n // headerName: \"Porzio Required\",\r\n // field: \"isPlsRequired\",headerTooltip:\"Porzio Required\",\r\n // sortable: true,\r\n // filter: \"text\",\r\n // cellStyle: { \"border-right\": \"1px solid lightgray\", \"text-align\": \"center\"},\r\n // resizable: true,\r\n // width: 150, cellRenderer: \"isActiveIconRendererComponent\",\r\n // },\r\n // {\r\n // headerName: \"Effective Date\",\r\n // field: \"effectiveDate\",\r\n // sortable: true,\r\n // filter: \"text\",\r\n // cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n // resizable: true, valueFormatter: (params)=> new Date(params.value).toLocaleDateString(),\r\n // width: 150,\r\n // },\r\n {\r\n headerName: \"Active?\",\r\n width: 150,\r\n field: \"isActive\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: {\r\n \"border-right\": \"1px solid lightgray\",\r\n \"text-align\": \"center\",\r\n },\r\n resizable: true,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n ];\r\n }\r\n //---\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport ChildMessageRendererComponent from \"../childMessageRendererComponent\";\r\nimport IsActiveIconRendererComponent from \"../../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\n\r\nimport { Dialog } from \"@material-ui/core\";\r\nimport CreateRoleModalComponent from \"./create-role/createRoleModalComponent\";\r\nimport EditRoleModalComponent from \"./role-details/editRoleModalComponent\";\r\nimport RoleManagementService from \"./roleManagementService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport it from \"date-fns/esm/locale/it/index.js\";\r\n\r\nclass RoleManagementComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = RoleManagementService;\r\n constructor(props) {\r\n super(props);\r\n this.handleHideEditRoleModal = this.handleHideEditRoleModal.bind(this);\r\n this.handleCreateRoleModal = this.handleCreateRoleModal.bind(this);\r\n this.handleHideCreateRoleModal = this.handleHideCreateRoleModal.bind(this);\r\n this.fetchData.bind(this);\r\n\r\n this.state = {\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n },\r\n createRoleModalShow: false,\r\n editRoleModalShow: false,\r\n rowData: [],\r\n modalAgNode: null,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, rowData: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (successObj) => {\r\n if (!Array.isArray(successObj)) {\r\n successObj = new Array(successObj);\r\n }\r\n successObj.sort(this.compareFn);\r\n this.setState({\r\n rowData: successObj,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (errorObj) => {\r\n console.log(\"Error:\", errorObj);\r\n ToastService.showError(\"Error while saving\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n compareFn = (a, b) => {\r\n if (a.roleName < b.roleName) {\r\n return -1;\r\n } else if (a.roleName > b.roleName) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n // this.gridApi.setDomLayout(\"autoHeight\");\r\n this.gridApi.sizeColumnsToFit();\r\n };\r\n\r\n methodFromParent = (cell, node) => {\r\n if (RolePermissionService.ROLE_DETAIL.cannotView) {\r\n RolePermissionService.showAccessDeniedToast();\r\n } else {\r\n this.setState({ modalAgNode: node, editRoleModalShow: true });\r\n }\r\n };\r\n\r\n handleCreateRoleModal() {\r\n if (RolePermissionService.ROLE_DETAIL.cannotCreate) {\r\n RolePermissionService.showAccessDeniedToast();\r\n } else {\r\n this.setState({\r\n modalAgNode: {\r\n roleId: 100,\r\n tenantId: this.context.user.tenantId,\r\n roleName: \"\",\r\n roleDescription: \"\",\r\n roleType: \"Customer\",\r\n isPlsRequired: true,\r\n isActive: true,\r\n effectiveDate: \"\",\r\n },\r\n createRoleModalShow: true,\r\n });\r\n }\r\n }\r\n\r\n handleHideCreateRoleModal() {\r\n this.setState({ createRoleModalShow: false });\r\n }\r\n\r\n handleHideEditRoleModal() {\r\n this.setState({ editRoleModalShow: false });\r\n }\r\n\r\n removeTenantAdminRole = (rowData) => {\r\n let filteredData = rowData.filter((item) => {\r\n return item.roleName !== \"Tenant Admin\";\r\n });\r\n return filteredData;\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.ROLE_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => {\r\n this.props.history.goBack();\r\n });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n {\r\n this.props.history.goBack();\r\n },\r\n },\r\n {\r\n title: \"Reload\",\r\n icon: MatIconService.RELOAD,\r\n iconColor: \"secondary\",\r\n onClick: () => {\r\n this.fetchData(true);\r\n },\r\n },\r\n ]}\r\n rightActions={[\r\n {\r\n icon: MatIconService.DOWNLOAD,\r\n title: \"Export\",\r\n onClick: () => {},\r\n isReadOnly:\r\n RolePermissionService.ROLE_LIST_EXPORT.cannotView,\r\n },\r\n {\r\n icon: MatIconService.ADD_CIRCLE_OUTLINE,\r\n title: \"Create User\",\r\n onClick: this.handleCreateRoleModal,\r\n isReadOnly:\r\n RolePermissionService.ROLE_DETAIL.cannotCreate,\r\n },\r\n ]}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n\r\n //---\r\n}\r\nexport default LayoutService.getHocComponenet(RoleManagementComponent);\r\n","import { ReplaySubject } from \"rxjs\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ENTITY_TYPE } from \"../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport DynamicControlService from \"../../../shared/services/dynamicControlService\";\r\nimport { AgGridBulkEditUtil } from \"../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport TransactionTabService from \"../transaction-detail/transaction-tab/transactionTabService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport { DataService } from \"../../../shared/services/dataService\";\r\nimport { AgGridService } from \"../../../shared/services/ag-grid/agGridService\";\r\n\r\nexport default class TransactionExpandedViewService {\r\n\r\n static createBatchProfiles = (_context, _profileSourceId, _selectedTrIds) => {\r\n //Transactions/CreateRecipientsForTransactions/1376/90\r\n return ApiService.postOBS(API_ENDPOINT.CORE, `/Transactions/CreateRecipientsForTransactions/${_context.user.tenantId}/${_profileSourceId}/${_context.user.uid}`,\r\n JSON.stringify(_selectedTrIds),\r\n );\r\n };\r\n\r\n\r\n static postTransactionCenterExpandedViewAsOBS = (_context, _modalAgNode, _healthIndicator, _screenId) => {\r\n\r\n return ApiService.postOBS(\r\n API_ENDPOINT.CORE,\r\n `/Transactions/GetExpandedViewDetails`,\r\n JSON.stringify({\r\n tenantId: _context.user.tenantId,\r\n fileId: parseInt(_modalAgNode.fileID),\r\n userId: _context.user.userId,\r\n userType: _context.user.userTypeId,\r\n healthIndicatorId: parseInt(_healthIndicator),\r\n sourceId: parseInt(_modalAgNode.sourceID),\r\n screenId: parseInt(_screenId),\r\n page: 1,\r\n pageSize: 100000\r\n }),\r\n );\r\n };\r\n\r\n static getTransactionCenterDisplayedFieldsAsOBS = (_tenantId, _sourceId, _entityId, _userId, screenId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/DataCenter/DisplayedFields/${_tenantId}/${_sourceId}/${_entityId}/${_userId}/${screenId}`\r\n );\r\n };\r\n\r\n static getTransactionRuleSummaryAsOBS = (_tenantId, _fileId) => {\r\n return ApiService.getOBS(API_ENDPOINT.CORE, `/RuleSummary/FetchRuleSummaryByEntity/${_tenantId}/${ENTITY_TYPE.TRANSACTION}?id=0&fileId=${_fileId}&pageNumber=1&pageSize=5000`);\r\n }\r\n\r\n static validateRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n static getDeleteOBS = (tenantId, transactionId, userId) => {\r\n return ApiService.deleteOBS(API_ENDPOINT.CORE,\r\n `/Transactions/DeleteTransaction/${tenantId}/${transactionId}/${userId}?taskId=0`);\r\n }\r\n\r\n /** Refer -> https://porzioproducts.atlassian.net/browse/PP2-739 */\r\n static readonlyColumnNamesInLowerCase = [\"profiletype\", \"profiletypeid\", \"organizationname\", \"firstname\", \"lastname\", \"middlename\", \"suffix\", \"prefix\",\r\n \"recipientidentifiercountry\", \"recipientidentifiercountryid\", \"recipientidentifiertype\", \"recipientidentifiertypeid\", \"recipientidentifiervalue\", \"recipientcategory\", \"recipientcategoryid\",\r\n \"address1\", \"address2\", \"address3\", \"address4\", \"city\", \"province\", \"postalcode\", \"country\", \"countryid\", \"countryname\", \"companyaddressid\", \"porziogstaddressid\",\r\n \"credentialsid\", \"credentials\", \"specialtyid\", \"specialty\", 'speciality', \"specialityid\",\r\n \"usstatelicensenumber\", \"usstatelicensenumber2\", \"usstatelicensenumber3\", \"usstatelicensenumber4\", \"usstatelicensenumber5\", \"usstatelicensenumber6\",\r\n \"uslicensestate\", \"uslicensestate2\", \"uslicensestate3\", \"uslicensestate4\", \"uslicensestate5\", \"uslicensestate6\",\r\n \"ustaxidnumber\", \"ustaxidnum\", \"usnpinumber\", \"companyprofileid\", \"customermasterid\"\r\n ];\r\n\r\n // TODO:- sorting for LOVs\r\n // custom sorting logic for ProfileType field\r\n // customComparator = (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n // if (DataService.isNullOrUndefined(nodeA.data.profiletype))\r\n // return 1;\r\n // else if (DataService.isNullOrUndefined(nodeB.data.profiletype))\r\n // return -1;\r\n // else if (nodeA.data.profiletype === nodeB.data.profiletype) return 0;\r\n // return (nodeA.data.profiletype > nodeB.data.profiletype) ? 1 : -1;\r\n // };\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef, _isParentReadOnly) {\r\n\r\n // console.log(_componentThisRef.state.displayedColumnConfigs);\r\n\r\n let dynamicColumns = [];\r\n\r\n if (RolePermissionService.TRANSACTION_EXPANDED_VIEW.canEdit) {\r\n dynamicColumns.push(AgGridBulkEditUtil.getSelectColumn(RolePermissionService.TRANSACTION_EXPANDED_VIEW.canEdit, _componentThisRef.toggleSubmitButton));\r\n }\r\n // other columns\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"text\", \"healthindicator\", \"Health Indicator\", false).fixedWidth(104).headerClass(\"center-text\").cellRenderer(\"healthIndicatorCellRenderer\", {\r\n hasApprovalFlag: (_props) => { return _props.data.transactionstatusid === 3; } // 3 -> Approved\r\n }).SET());\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"text\", \"ruleviolations\", \"Rule Violations\").minWidth(136).valueSetter((params) => { params.data.ruleviolations = params.newValue; return true; }).SET());\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"set\", \"sourcename\", \"Source System\").minWidth(136).flexWeight(1).tooltip().SET());\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"text\", \"filename\", \"File Name\").minWidth(136).flexWeight(1).tooltip().SET());\r\n dynamicColumns.push(AgGridColumnExt.GET(false, \"set\", \"transactionstatus\", \"Transaction Status\").minWidth(136).flexWeight(1).tooltip().SET());\r\n\r\n // dynamic columns\r\n (_componentThisRef.state.displayedColumnConfigs || []).forEach(colFieldConfig => {\r\n\r\n // make columns readonly\r\n if (TransactionExpandedViewService.readonlyColumnNamesInLowerCase.includes(colFieldConfig.mappedFieldNameLower)) {\r\n colFieldConfig.isReadOnly = true;\r\n\r\n }\r\n\r\n if (\r\n // don't render recipient information fields if restricted\r\n (RolePermissionService.TRANSACTION_EXPANDED_RECIPIENT_INFORMATION_FIELDS.cannotView &&\r\n colFieldConfig.grouprenderid === TransactionTabService.recipientInformationFieldGroupKey)\r\n ) {\r\n // role have limitted access\r\n } else {\r\n const sortableCols = [\"piid1\", \"piid2\", \"piid3\", \"piid4\", \"piid5\", \"usstatelicensenumber\", \"companytransactionid\", \"porziogsttransactionid\",\r\n \"transactiondate\", \"totalamount\", \"currency\", \"organizationname\", \"profiletypeid\", \"firstname\", \"lastname\", \"usnpinumber\", \"country\", \"amountinvested\"];\r\n\r\n // adding custom comparator for sorting to LOV fields\r\n // const customSortCols = [\"profiletypeid\"];\r\n // if (customSortCols.includes(colFieldConfig.mappedFieldNameLower)) {\r\n // colFieldConfig.comparator = this.customComparator;\r\n // }\r\n\r\n // common configurations\r\n var colProps = DynamicControlService.getAgGridColumn(_componentThisRef, _isParentReadOnly, colFieldConfig, _componentThisRef.state.transactionRuleSummaries, sortableCols);\r\n\r\n // field specific configurations\r\n switch (colFieldConfig.mappedFieldNameLower) {\r\n case \"porziogsttransactionid\": colProps.editable(false).minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"childMessageRendererComponent\"); break;\r\n case \"country\": colProps.minWidth(136); break;\r\n default: break;\r\n }\r\n\r\n colProps.cellClassRules({\r\n excelErrorClassName: (params) => AgGridService.getBusinessRuleSeverity(_componentThisRef.state.transactionRuleSummaries, params.colDef.field, params.data.recordid) === 'error',\r\n excelWarningClassName: (params) => AgGridService.getBusinessRuleSeverity(_componentThisRef.state.transactionRuleSummaries, params.colDef.field, params.data.recordid) === 'warning',\r\n });\r\n\r\n // finalize and push to the array\r\n dynamicColumns.push(colProps.SET());\r\n }\r\n\r\n\r\n });\r\n\r\n // RETURN\r\n return dynamicColumns;\r\n }\r\n\r\n\r\n //---\r\n}","import React from \"react\";\r\nimport { combineLatest, from, BehaviorSubject } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged } from \"rxjs/operators\";\r\nimport { Dialog, DialogTitle, DialogContent, Box, Typography, AppBar, Toolbar, DialogContentText, Grid, LinearProgress, FormControl, InputLabel, Select, MenuItem, Chip, Divider, FormHelperText } from \"@material-ui/core\";\r\nimport { API_ENDPOINT, CrudAction, ENTITY_TYPE, ResultStatus, TaskLauncher, HEALTH_INDICATOR } from \"../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport ChildMessageRendererComponent from \"../childMessageRendererComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AgGridUtil } from \"../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport FieldConfigurationComponent from \"../../../shared/components/field-configuration/fieldConfigurationComponent\";\r\nimport TransactionExpandedViewService from \"./transactionExpandedViewService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport TransactionDetailDialogComponent from \"../transaction-detail/transactionDetailDialogComponent\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport TransactionTabService from \"../transaction-detail/transaction-tab/transactionTabService\";\r\nimport AgGridErroredDropdownCellRenderer from \"../../../shared/components/ag-grid/error-cell-renderers/agGridErroredDropdownCellRenderer\";\r\nimport AgGridErroredDatePickerCellRenderer from \"../../../shared/components/ag-grid/error-cell-renderers/agGridErroredDatePickerCellRenderer\";\r\nimport { AgGridBulkEditUtil } from \"../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport { AgGridErroredTextCellRenderer } from \"../../../shared/components/ag-grid/error-cell-renderers/agGridErroredTextCellRenderer\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { AgGridErroredCheckboxCellRenderer } from \"../../../shared/components/ag-grid/error-cell-renderers/agGridErroredCheckboxCellRenderer\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport HealthIndicatorCellRenderer from \"../../../shared/components/elements/healthIndicator/healthIndicatorCellRenderer\";\r\nimport StatusOverrideComponent from \"../../../shared/components/profiles-transactions/StatusOverrideComponent\";\r\nimport TaskDetailsComponent from \"../../home/task/task-details/taskDetailsComponent\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport MatThemeService from \"../../../shared/services/theme/matThemeService\";\r\nimport AgGridSelectMenuComponent from \"../../../shared/components/agGridSelectMenuComponent\";\r\nimport { AgGridService } from \"../../../shared/services/ag-grid/agGridService\";\r\n\r\n\r\nlet searchSubject = new BehaviorSubject(\"\");\r\nlet SearchResultObservable = searchSubject.pipe(\r\n filter((val) => val.hasOwnProperty(\"newValue\")),\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((val) => from(fetchTransactionsBySearchBoxText(val)))\r\n);\r\nconst fetchTransactionsBySearchBoxText = async (searchBoxParams) => {\r\n const rowData = await fetch(`${process.env.REACT_APP_CORE_HTTP}/Transactions/GetExpandedViewDetails`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({\r\n tenantId: searchBoxParams.user.tenantId,\r\n fileId: parseInt(searchBoxParams.fileID),\r\n userId: searchBoxParams.user.userId,\r\n userType: searchBoxParams.user.userTypeId,\r\n healthIndicatorId: parseInt(searchBoxParams.healthIndicator),\r\n sourceId: parseInt(searchBoxParams.sourceID),\r\n page: 1,\r\n pageSize: 5000,\r\n searchBoxText: searchBoxParams.newValue,\r\n }),\r\n }).then((result) => result.json());\r\n return rowData.map(obj => Object.entries(obj).reduce((a, [key, value]) => {\r\n a[key.toLowerCase()] = value;\r\n return a;\r\n }, {}));\r\n};\r\n\r\nclass TransactionsExpandedViewComponent extends React.Component {\r\n static contextType = AuthContext;\r\n scopedSubscriptions = new SubscriptionArray();\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n isInit: true, // true for the first time\r\n isReadOnly: false,\r\n isGridReady: false,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n porzioSearch: \"\",\r\n // transactionModelKeyMap: DataService.getModelKeyMap(new TransactionParameterModel()),\r\n selectedTransactions: [],\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n // checked or radio button based on permissions\r\n isCheckedCellRenderer: RolePermissionService.TRANSACTION_EXPANDED_BULK_EDIT.canEdit ? AgGridCheckboxCellRendererComponent : AgGridRadioButtonCellRendererComponent,\r\n\r\n erroredDropdownCellRenderer: AgGridErroredDropdownCellRenderer,\r\n erroredDatePickerCellRenderer: AgGridErroredDatePickerCellRenderer,\r\n erroredTextCellRenderer: AgGridErroredTextCellRenderer,\r\n erroredCheckboxCellRenderer: AgGridErroredCheckboxCellRenderer,\r\n\r\n healthIndicatorCellRenderer: HealthIndicatorCellRenderer,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n LookupService.fetchCommonLookups(this.context);\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n LookupService.getSourceSystemsByEntityAsOBS(this.context.user.tenantId, ENTITY_TYPE.PROFILE),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n TransactionExpandedViewService.postTransactionCenterExpandedViewAsOBS(this.context, this.props.modalAgNode, this.props.healthIndicator, this.props.screenId),\r\n TransactionExpandedViewService.getTransactionCenterDisplayedFieldsAsOBS(this.context.user.tenantId, this.props.modalAgNode.sourceID, 2, this.context.user.userId, this.props.screenId),\r\n TransactionExpandedViewService.getTransactionRuleSummaryAsOBS(this.context.user.tenantId, this.props.modalAgNode.fileID)\r\n ]).subscribe(\r\n // success\r\n ([_profileSourceList, _countryList, _data, _agGridColumns, _transactionRuleSummaries]) => {\r\n\r\n // hardocde\r\n _agGridColumns = TransactionTabService.hardCodeColumns(_agGridColumns);\r\n\r\n\r\n // adds the selected prop to each element and converts the all keys to lowecase\r\n _data = (_data || []).map(obj => { obj[AgGridBulkEditUtil.selectColumnName] = false; return obj; });\r\n _data = _data.map(obj => Object.entries(obj).reduce((a, [key, value]) => {\r\n a[key.toLowerCase()] = value;\r\n return a;\r\n }, {}));\r\n\r\n if (DataService.hasElements(_data)) {\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n LookupService.getTemplateBySourceIdAsOBS(this.context.user.tenantId, _data[0].sourceid)\r\n ]).subscribe(\r\n ([_templateData]) => {\r\n var _displayedColumnConfigs = [];\r\n const _dynamicControlFieldsMap = TransactionTabService.getGroupFieldsMap(this, false, _templateData, \"grouprenderid\", \"fieldID\");\r\n const _displayedFieldIds = _agGridColumns.map(x => { return x.fieldId; });\r\n _dynamicControlFieldsMap.forEach(_value => {\r\n _value.fieldConfigs.forEach(_fieldConfig => {\r\n if (_displayedFieldIds.includes(_fieldConfig.fieldID)) {\r\n _displayedColumnConfigs.push(_fieldConfig);\r\n }\r\n });\r\n });\r\n\r\n this.setState(\r\n {\r\n data: _data,\r\n displayedColumnConfigs: _displayedColumnConfigs,\r\n transactionRuleSummaries: _transactionRuleSummaries,\r\n agGridColumns: _agGridColumns,\r\n countryList: _countryList,\r\n profileSourceList: _profileSourceList,\r\n },\r\n // change the state after all the above are assigned\r\n () => { this.setState({ fetchResult: ResultStatus.LOADED }); }\r\n );\r\n },\r\n (_errorObj) => {\r\n ToastService.showError(\"Error while loading template.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n } else {\r\n //ToastService.showWarning(\"Based on your permissions you do not have access to this data set\");\r\n //ToastService.showError(\"No Data.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n // onError\r\n (error) => {\r\n ToastService.showError(\"Error while Fetching.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n handleSearchChange = (e) => {\r\n const newValue = e.target.value;\r\n this.setState({ porzioSearch: newValue, isProcessing: true });\r\n\r\n if (!this.state.searchSubscriptionAdded) {\r\n this.setState(\r\n { searchSubscriptionAdded: true },\r\n () => {\r\n this.scopedSubscriptions.add(\r\n SearchResultObservable.subscribe((searchResultJson) => {\r\n this.setState({ data: searchResultJson, isProcessing: false });\r\n })\r\n );\r\n }\r\n );\r\n } else {\r\n this.setState({ isProcessing: true });\r\n searchSubject.next({ newValue, ...this.props.modalAgNode, ...this.context, healthIndicator: this.props.healthIndicator });\r\n }\r\n }\r\n\r\n clearSearch = () => {\r\n searchSubject.next({ newValue: \"\", ...this.props.modalAgNode, ...this.context, healthIndicator: this.props.healthIndicator });\r\n this.setState({ isProcessing: false });\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n onProcessCellCallback = (params) => {\r\n const recordId = params.node.data[\"recordid\"];\r\n switch (params.column.colId) {\r\n case 'healthindicator':\r\n return HEALTH_INDICATOR[params.node.data.healthindicator];\r\n case 'country':\r\n return params.node.data.countryname;\r\n case 'transactionconsentid':\r\n case 'customersourcesystemid':\r\n case 'transactiontypeid':\r\n case 'purposeid':\r\n case 'secondarypurposeid':\r\n case 'formid':\r\n case 'productid':\r\n case 'indirectpaymentid':\r\n case 'payeetypeid':\r\n case 'recipientcategoryid':\r\n case 'specialityid':\r\n case 'recipientidentifiertypeid':\r\n case 'recipientidentifiercountryid':\r\n case 'engagementtypeid':\r\n case 'venuecountryid':\r\n case 'credentialsid':\r\n case 'currencyid':\r\n case 'profiletypeid':\r\n case 'affiliatedcompanyid':\r\n let colLovName = params.column.colId + '';\r\n let colName = colLovName.substring(0, colLovName.length - 2);\r\n\r\n return this.getValueOrError(colLovName, recordId, params.node.data[colName]);\r\n case 'vendorid':\r\n return this.getValueOrError('vendorid', recordId, params.node.data['vendorname']);\r\n case 'productid2':\r\n return this.getValueOrError('productid2', recordId, params.node.data['product2']);\r\n case 'productid3':\r\n return this.getValueOrError('productid3', recordId, params.node.data['product3']);\r\n case 'productid4':\r\n return this.getValueOrError('productid4', recordId, params.node.data['product4']);\r\n case 'productid5':\r\n return this.getValueOrError('productid5', recordId, params.node.data['product5']);\r\n case 'materialid':\r\n return this.getValueOrError('materialid', recordId, params.node.data['materialname']);\r\n default:\r\n return this.getValueOrError(params.column.colId, recordId, params.value);\r\n }\r\n }\r\n\r\n getValueOrError(_colName, _recordId, _value) {\r\n const fieldRuleSummary = this.state.transactionRuleSummaries.find(x =>\r\n x.fieldName.toLowerCase() === _colName.toLowerCase()\r\n && x.recordId === _recordId);\r\n\r\n if (fieldRuleSummary) {\r\n return DataService.isStringNullOrEmpty(fieldRuleSummary.fieldValue) ? \"[null]\" : fieldRuleSummary.fieldValue;\r\n } else {\r\n return _value;\r\n }\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\" && c.colDef.headerName !== \"Edit\"),\r\n fileName: `Transactions_Expanded_View ${new Date().toDateString()}`,\r\n processCellCallback: this.onProcessCellCallback\r\n };\r\n }\r\n\r\n methodFromParent = (cell, node) => {\r\n this.setState({ modalAgNode: node });\r\n if (RolePermissionService.TRANSACTION_DETAILS.cannotView) {\r\n RolePermissionService.showAccessDeniedToast();\r\n } else {\r\n if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showTransactionDetailDialog: true });\r\n }\r\n }\r\n };\r\n\r\n handleDeleteClick = () => {\r\n this.setState({\r\n openDeleteConfirm: true\r\n });\r\n }\r\n\r\n handleDeleteConfirm = () => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n let selectedTransactionIds = this.state.selectedTransactions.map(t => t.trid);\r\n this.setState({ openDeleteConfirm: false, selectedTransactions: [] });\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n this.state.agGridUtils.gridApi.applyTransaction({ remove: [rowNode.data] });\r\n }\r\n });\r\n selectedTransactionIds.map(trid => {\r\n this.apiSubscriptions.add(TransactionExpandedViewService.getDeleteOBS(this.context.user.tenantId, trid, this.context.user.userId)\r\n .subscribe(\r\n (_successResult) => {\r\n if (_successResult === \"validation_error\") { this.flashError(\"Validation Failed\"); }\r\n else if (_successResult === \"save_error\") { this.flashError(\"Delete Failed\"); }\r\n else { this.props.onClose(true); } // close this and reload the TransactionCenter\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occurred while deleting\");\r\n }\r\n ));\r\n });\r\n }\r\n\r\n\r\n getSelectedGstIds = () => {\r\n let _selectedGstIds = [];\r\n this.state.agGridUtils.getSelectedRows(AgGridBulkEditUtil.selectColumnName).forEach((rowNode) => {\r\n _selectedGstIds.push(rowNode.data[\"porziogsttransactionid\"]);\r\n });\r\n return _selectedGstIds;\r\n }\r\n getSelectedTrIds = () => {\r\n let _selectedGstIds = [];\r\n this.state.agGridUtils.getSelectedRows(AgGridBulkEditUtil.selectColumnName).forEach((rowNode) => {\r\n _selectedGstIds.push(rowNode.data[\"trid\"]);\r\n });\r\n return _selectedGstIds;\r\n }\r\n\r\n handleBatchProfileClick = () => {\r\n const _selectedGstIds = this.getSelectedGstIds();\r\n if (DataService.hasNoElements(_selectedGstIds)) {\r\n ToastService.showWarning(\"Please select one or more Transactions\");\r\n }\r\n else {\r\n const _selectedTrIds = this.getSelectedTrIds();\r\n\r\n const gstIdsWithMatchedRecipients = (this.state.data || []).filter(x => x.isrecipientmatch && _selectedTrIds.includes(x.trid)).map(x => x.porziogsttransactionid);\r\n if (DataService.hasElements(gstIdsWithMatchedRecipients)) {\r\n ToastService.showError(`Recipient already matched for ${gstIdsWithMatchedRecipients.join(', ')}`)\r\n } else {\r\n this.setState({\r\n selectedGstIds: _selectedGstIds,\r\n selectedTrIds: _selectedTrIds,\r\n showConfirmCreateBatchProfileDialog: true,\r\n });\r\n }\r\n }\r\n }\r\n\r\n handleCreateTaskDialogClick = () => {\r\n const _selectedGstIds = this.getSelectedGstIds();\r\n if (DataService.hasNoElements(_selectedGstIds)) {\r\n ToastService.showWarning(\"Please select one or more Transactions\");\r\n } else {\r\n this.setState({\r\n selectedGstIds: _selectedGstIds,\r\n showCreateTaskDialog: true\r\n });\r\n }\r\n }\r\n\r\n createBatchProfile = () => {\r\n if (!DataService.isValidNumber(this.state.selProfileSourceId)) {\r\n ToastService.showWarning(\"Please select a Profile Source.\");\r\n } else {\r\n this.setState({ isCreatingBatchProfile: true, });\r\n TransactionExpandedViewService.createBatchProfiles(this.context, this.state.selProfileSourceId, this.state.selectedTrIds)\r\n .subscribe(\r\n (successObj) => {\r\n if (successObj) {\r\n ToastService.showSuccess(\"Successfully Created.\");\r\n this.setState({\r\n isCreatingBatchProfile: false,\r\n showConfirmCreateBatchProfileDialog: false,\r\n selProfileSourceId: ''\r\n });\r\n } else {\r\n ToastService.showError(\"Please select only the Transactions with Unmatched Recipient.\");\r\n this.setState({ isCreatingBatchProfile: false });\r\n }\r\n },\r\n (errorObj) => {\r\n ToastService.showError(\"An Error occured.\");\r\n this.setState({ isCreatingBatchProfile: false });\r\n }\r\n );\r\n }\r\n }\r\n\r\n customComparator = (number1, number2, nodeA, nodeB, isInverted) => {\r\n\r\n if (number1 === null && number2 === null) {\r\n return 0;\r\n }\r\n if (isNaN(number1)) { return -1 }\r\n if (isNaN(number2)) { return 1 }\r\n if (number1 === null) {\r\n return -1;\r\n }\r\n if (number2 === null) {\r\n return 1;\r\n }\r\n return number1 - number2;\r\n };\r\n\r\n getSelectionIcon = () => {\r\n return RolePermissionService.TRANSACTION_EXPANDED_BULK_EDIT.cannotEdit ? null\r\n : { title: \"select\", icon: MatIconService.MENU, onClick: (e) => { this.setState({ anchorEl: e.currentTarget, openSelectMenu: true }); }, isReadOnly: !this.state.isGridReady };\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.TRANSACTION_EXPANDED_VIEW.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose(false) }); // this is required to prevent Url navigation\r\n } else {\r\n let componentType = \"\";\r\n switch (this.props.healthIndicator) {\r\n case 1: componentType = `Transaction Error`; break;\r\n case 2: componentType = `Transaction Warning`; break;\r\n case 3: componentType = `Transaction Unmatched`; break;\r\n case 4: componentType = `Transaction Eligible`; break;\r\n case 5: componentType = `Transaction NonLicensed`; break;\r\n case 0:\r\n default: componentType = `Transaction Count`;\r\n }\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n { this.props.onClose(false); }, title: \"Cancel\" }]}\r\n />\r\n ;\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {/* Header Componenet */}\r\n { this.setState({ anchorEl: null, openSelectMenu: false }); }}\r\n onSelectionChange={() => { this.toggleSubmitButton(); }}\r\n />\r\n { this.props.onClose(false); }, title: \"GoTo Trransactions\" },\r\n { icon: MatIconService.RELOAD, onClick: () => { this.fetchData(); }, title: \"Reload\" },\r\n { ...this.getSelectionIcon() }\r\n ]}\r\n rightActions={[\r\n { jsxElement: LayoutService.getSearchText(classes, \"search\", this.state.porzioSearch, this.handleSearchChange) },\r\n {\r\n icon: MatIconService.OVERRIDE_28, onClick: () => { this.setState({ showTransactionStatusOverrideDialog: true }); }, title: \"Override Transaction Status\",\r\n isReadOnly: (this.state.isReadOnly || this.state.isInit || RolePermissionService.TRANSACTION_EXPANDED_STATUS_FIELD.cannotEdit),\r\n },\r\n { icon: MatIconService.COLUMNS_24, onClick: () => { this.setState({ showFieldConfigurationDialog: true }); }, title: \"Field Configurations\", isReadOnly: RolePermissionService.TRANSACTION_EXPANDED_VIEW.cannotConfigure },\r\n { icon: MatIconService.TASK_ADD, onClick: this.handleCreateTaskDialogClick, title: \"Create Task\", isReadOnly: RolePermissionService.TRANSACTION_EXPANDED_TASK.cannotCreate },\r\n { icon: MatIconService.PROFILE_BATCH_ADD, onClick: this.handleBatchProfileClick, title: \"Create Batch Profiles\", isReadOnly: false },\r\n { icon: MatIconService.DOWNLOAD, onClick: () => { this.onDownloadClick(); }, title: \"Download\", isReadOnly: RolePermissionService.TRANSACTION_EXPANDED_EXPORT.cannotView },\r\n { icon: MatIconService.DELETE, onClick: () => { this.handleDeleteClick(); }, title: \"Delete\", isReadOnly: (this.state.isInit || this.state.isReadOnly || RolePermissionService.TRANSACTION_EXPANDED_VIEW.cannotDelete) },\r\n { icon: MatIconService.OK, iconColor: \"primary\", onClick: () => { this.clearSearch(); this.handleSubmit(); }, title: \"Save\", isReadOnly: (this.state.isInit || this.state.isReadOnly) },\r\n ]}\r\n />\r\n {/* Content */}\r\n \r\n {/* Processing Progress */}\r\n {this.state.isProcessing ? : null}\r\n\r\n
    \r\n {\r\n this.setState({ isGridReady: true });\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridUtils.setGridParams(params, false);\r\n this.state.agGridUtils.pinColumn(AgGridBulkEditUtil.selectColumnName); // pin the edit column to the left\r\n }}\r\n\r\n gridOptions={{\r\n context: { componentParent: this },\r\n ...AgGridColumnExt.getGridOptions(40),\r\n cellFlashDelay: 1000,\r\n cellFadeDelay: 750,\r\n }}\r\n >\r\n
    \r\n
    \r\n\r\n {/* Delete dialog */}\r\n {this.state.openDeleteConfirm ?\r\n this.setState({ openDeleteConfirm: false })} aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\">\r\n \r\n \r\n \r\n Delete Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete\", this.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => this.setState({ openDeleteConfirm: false }), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to delete the selected Transaction(s)?\r\n \r\n \r\n {this.state.selectedTransactions.map(t => t.porziogsttransactionid).join(\",\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n\r\n {/* Confirm New Profile dialog */}\r\n {!this.state.showConfirmCreateBatchProfileDialog ? null :\r\n \r\n {/* Title */}\r\n \r\n \r\n \r\n Confirm Batch Profile Creation\r\n {LayoutService.getIconButton(this.state.isCreatingBatchProfile, MatIconService.OK, \"Confirm\", () => {\r\n this.createBatchProfile();\r\n }, \"inherit\", \"keyActionSave\")}\r\n {LayoutService.getIconButton(this.state.isCreatingBatchProfile, MatIconService.CANCEL, \"Cancel\", () => { this.setState({ showConfirmCreateBatchProfileDialog: false }) }, \"secondary\", \"keyActionCancel1\")}\r\n \r\n {this.state.isCreatingBatchProfile ? : null}\r\n \r\n \r\n {/* Content */}\r\n \r\n \r\n {this.state.isCreatingBatchProfile ? \"Creating Batch Profiles...\" : \"This Action cannot be reversed.\"}\r\n \r\n \r\n \r\n {/*
    Please select a Profile Source
    */}\r\n \r\n Profile Source\r\n \r\n {/* The selected Profile Source will be used for each Profile. */}\r\n \r\n \r\n \r\n
    New Profile Records will be created, or matched, for the following Unmatched Transactions, when one of the below conditions is true.
    \r\n
    Note: For the Profile to be inserted, the Transaction MUST have a value for the \"COUNTRY\" field AND a value for at least one of the following fields: \"US NPI NUMBER\"; or \"US LICENSE STATE\"; or \"US STATE LICENSE NUMBER\"; or \"US TAX ID NUMBER\"; or \"RECIPIENT IDENTIFIER VALUE\"
    \r\n \r\n {this.state.selectedGstIds.map((x, index) => {\r\n return \r\n })}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n {/* Field configuration Dialog */}\r\n {this.state.showFieldConfigurationDialog ?\r\n this.setState({ showFieldConfigurationDialog: false })}\r\n refreshList={this.fetchData} />\r\n : null}\r\n\r\n {/* Transaction Dialog On select */}\r\n {!this.state.showTransactionDetailDialog ? null :\r\n {\r\n this.setState({ showTransactionDetailDialog: false });\r\n if (_reload) { this.componentDidMount(); }\r\n }}\r\n // clone stuff\r\n onClone={this.props.onClone}\r\n />\r\n }\r\n {/* Transaction Status Selector Dialog */}\r\n {!this.state.showTransactionStatusOverrideDialog ? null : x.transactionid)}\r\n entityId={ENTITY_TYPE.TRANSACTION}\r\n onClose={(_reload) => {\r\n this.setState({ showTransactionStatusOverrideDialog: false });\r\n }} />}\r\n\r\n {/* Create new Task for selected Profiles */}\r\n {this.state.showCreateTaskDialog ?\r\n this.setState({ showCreateTaskDialog: false })} inputAction={CrudAction.CREATE} refreshTaskList={() => { }} updateData={null}\r\n porzioGstIds={this.state.selectedGstIds}\r\n />\r\n : null}\r\n\r\n\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }, title: \"GoTo Trransactions\" },\r\n { icon: MatIconService.RELOAD, onClick: () => { this.fetchData(); }, title: \"Reload\" },\r\n ]}\r\n />\r\n // \r\n // { this.props.onClose(true); }}\r\n // onClose={() => { this.props.onClose(true); }}\r\n // />\r\n // \r\n );\r\n }\r\n }\r\n }\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n var hasSelected = false;\r\n let selectedTransactions = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedTransactions.push(rowNode.data);\r\n }\r\n });\r\n }\r\n // set the state\r\n this.setState({\r\n selectedTransactions: selectedTransactions,\r\n isReadOnly: !hasSelected,\r\n isInit: false // only true for the first time \r\n });\r\n }\r\n\r\n handleSubmit = () => {\r\n let arrayToPost = [];\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode, rowIndex) => {\r\n // TODO: rowIndex will not be correct if sorted, so search this app for sortAndFilterAwareRowNode and see the impl\r\n if (this.state.agGridBulkEditUtil.updatedRowIdsCoumnNamesMap.has(rowNode.id) && rowNode.data[\"is_selected\"] === true) {\r\n var modelObj = {};\r\n\r\n const rowColumnNames = this.state.agGridBulkEditUtil.updatedRowIdsCoumnNamesMap.get(rowNode.id);\r\n rowColumnNames.forEach(rowDataKey => {\r\n modelObj[rowDataKey] = rowNode.data[rowDataKey];\r\n const fieldConfig = this.state.displayedColumnConfigs.find(x => x.mappedFieldNameLower === rowDataKey);\r\n if (fieldConfig) { TransactionTabService.convertForPost(modelObj, fieldConfig, rowDataKey, modelObj[rowDataKey]); }\r\n });\r\n\r\n\r\n //--- ensure mandatory fields\r\n modelObj.tenantid = this.context.user.tenantId;\r\n modelObj.userId = this.context.user.userId;\r\n modelObj.userType = this.context.user.userTypeId;\r\n modelObj.uid = this.context.user.uid;\r\n modelObj.transactionid = rowNode.data.transactionid;\r\n modelObj.sourceid = rowNode.data.sourceid;\r\n modelObj.recordid = rowNode.data.recordid;\r\n modelObj.fileid = rowNode.data.fileid;\r\n modelObj.ismanuallyentered = true; //rowNode.data.ismanuallyentered;\r\n //---\r\n\r\n arrayToPost.push(modelObj);\r\n }\r\n });\r\n\r\n if (arrayToPost.length > 1000) {\r\n ToastService.showInfo(\"Select up to 1000 records each occurrence\");\r\n }\r\n else {\r\n this.setState({ isProcessing: true });\r\n ApiService.postOBS(API_ENDPOINT.CORE, \"/Transactions/SaveTransactions\", JSON.stringify(arrayToPost))\r\n .subscribe((successObj) => {\r\n this.state.agGridBulkEditUtil.clearUpdateTrackers();\r\n ToastService.showSuccess(\"Successfully saved.\");\r\n this.setState({ isProcessing: false });\r\n // this.props.onClose(true); as per PP2-871\r\n },\r\n (errorObj) => {\r\n ToastService.showError(\"Error while saving.\");\r\n this.setState({ isProcessing: false });\r\n }\r\n );\r\n }\r\n }\r\n\r\n //---\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(TransactionsExpandedViewComponent);\r\n","import ApiService from \"../../shared/services/apiService\";\r\nimport Cache from \"../../shared/store/cache\";\r\nimport { GST_API } from \"../../shared/types/enums\";\r\nimport { from } from \"rxjs\";\r\nimport { switchMap } from \"rxjs/operators\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nexport default class transactionCenterService {\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n let sortqry = \" \";\r\n let filterQry = \" \";\r\n let pageNo = 1;\r\n let pageSize = 5000;\r\n let url = `/Transactions/${clientAuthContext.user.tenantId}/${clientAuthContext.user.userId}/${sortqry}/${filterQry}/${pageNo}/${pageSize}`;\r\n return ApiService.fetchHTTP_API(GST_API.Core, url);\r\n }\r\n\r\n static fetchTransactionsFromApiObs(fileId, column, context) {\r\n this.CACHE.CLEAR();\r\n\r\n let columns = { Tran: \"transactionCount\", Error: \"error\", Warn: \"warning\", Unmatch: \"unmatched\", NonLicensed: \"nonLicensed\" };\r\n let healthIndicatorId = \"\";\r\n switch (column) {\r\n case columns.Tran:\r\n healthIndicatorId = \"\";\r\n break;\r\n case columns.Error:\r\n healthIndicatorId = 1;\r\n break;\r\n case columns.Warn:\r\n healthIndicatorId = 2;\r\n break;\r\n case columns.Unmatch:\r\n healthIndicatorId = 3;\r\n break;\r\n case columns.NonLicensed:\r\n healthIndicatorId = 5;\r\n break;\r\n default:\r\n healthIndicatorId = \"\";\r\n break;\r\n }\r\n\r\n const roleObj = JSON.stringify({\r\n tenantId: context.user.tenantId,\r\n fileId: parseInt(fileId),\r\n userId: context.user.userId,\r\n userType: context.user.userTypeId,\r\n healthIndicatorId: parseInt(healthIndicatorId),\r\n page: 1,\r\n pageSize: 5000\r\n\r\n });\r\n\r\n const result = from(fetch(`${process.env.REACT_APP_CORE_HTTP}/Transactions/GetExpandedViewDetails`, {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: roleObj,\r\n })).pipe(switchMap((response) => response.json()));\r\n return result;\r\n }\r\n\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getActionMenuParams = (_componentThisRef) => {\r\n return {\r\n menuIcon: MatIconService.MORE_VERT_16,\r\n menuMaxHeight: 60,\r\n\r\n menuOptions: [\r\n {\r\n text: \"Add/Edit a File Comment\", icon: MatIconService.FILE_COMMENT, onClickCallback: (_cellRef) => {\r\n _componentThisRef.handleAddEditCommentFile(_cellRef);\r\n }\r\n },\r\n {\r\n text: \"Delete File\", icon: MatIconService.DELETE, onClickCallback: (_cellRef) => {\r\n _componentThisRef.handleDeleteFile(_cellRef);\r\n }\r\n },\r\n {\r\n text: \"Petite Validation\", icon: MatIconService.RERUN_VALIDATION, onClickCallback: (_cellRef) => {\r\n _componentThisRef.handleRerunValidationConfirm(_cellRef);\r\n }\r\n },\r\n {\r\n text: \"Re-run File Validation\", icon: MatIconService.REVALIDATE_QUEUE, onClickCallback: (_cellRef) => {\r\n _componentThisRef.handleAddToRerunFileValidationQueueConfirm(_cellRef);\r\n }\r\n },\r\n {\r\n text: \"Profile Creation for Unmatched\", icon: MatIconService.RERUN_MATCHING, onClickCallback: (_cellRef) => {\r\n _componentThisRef.handleAddToRerunForUnmatchedQueueConfirm(_cellRef);\r\n }\r\n },\r\n // {\r\n // text: \"Re-run Matching\", icon: MatIconService.RERUN_MATCHING, onClickCallback: (_cellRef) => {\r\n // ToastService.showInfo(\"Under Construction\");\r\n // }\r\n // },\r\n // {\r\n // text: \"Run Health Reports\", icon: MatIconService.RUN_REPORTS, onClickCallback: (_cellRef) => {\r\n // ToastService.showInfo(\"Under Construction\");\r\n // }\r\n // },\r\n ]\r\n }\r\n }\r\n\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, null, null, \"\").fixedWidth(48).headerClass(\"center-text\").cellRenderer(\"actionCellRendererComponent\", this.getActionMenuParams(_componentThisRef)).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"receivedDate\", \"Processed Date\").fixedWidth(128).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"sourceName\", \"Source\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().groupDefaultExpanded(4).SET(),\r\n AgGridColumnExt.GET(false, true, \"fileName\", \"File Name\").flexWeight(6).minWidth(162).filterOptions(\"agTextColumnFilter\", \"contains\").cellRenderer(\"commentIconTextRenderer\",\r\n {\r\n getIcon: (_cellRef) => {\r\n if (_cellRef.props.data && _cellRef.props.data.hasComments) {\r\n return MatIconService.FILE_COMMENT_ON;\r\n } else {\r\n return null; //MatIconService.FILE_COMMENT_OFF;\r\n }\r\n }\r\n }\r\n ).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionRange\", \"Transaction Date Range\").flexWeight(4).minWidth(128).maxWidth(176).headerClass(\"center-text\").tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"transactionCount\", \"Transaction Count\").fixedWidth(136).headerClass(\"center-text\").centerAlignText().enableValue().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"error\", \"Errors\").fixedWidth(96).headerClass(\"center-text\").enableValue().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"warning\", \"Warnings\").fixedWidth(112).headerClass(\"center-text\").enableValue().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"unmatched\", \"Unmatched\").fixedWidth(136).headerClass(\"center-text\").enableValue().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"nonLicensed\", \"NonLicensed\").fixedWidth(136).headerClass(\"center-text\").enableValue().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"eligible\", \"Eligible\").fixedWidth(112).headerClass(\"center-text\").enableValue().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n ];\r\n\r\n }\r\n\r\n static getExpandedViewColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Health Indicator\",\r\n field: \"healthindicator\", headerTooltip: \"Health Indicator\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true, enableValue: true, cellRenderer: \"childMessageRendererComponent\",\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Rule Violations\",\r\n field: \"ruleviolations\", headerTooltip: \"Rule Violations\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Company Transaction Id\",\r\n field: \"companytransactionid\",\r\n sortable: true,\r\n filter: \"text\", headerTooltip: \"Company Transaction Id\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n { \r\n headerName: \"Total Amount\",\r\n field: \"totalamount\",\r\n sortable: true,\r\n filter: \"text\", headerTooltip: \"Total Amount\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Base Currency\",\r\n field: \"currency\",\r\n sortable: true,\r\n filter: \"text\", headerTooltip: \"Base Currency\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Last Name\",\r\n field: \"lastname\",\r\n sortable: true,\r\n filter: \"text\", headerTooltip: \"Last Name\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"First Name\",\r\n field: \"firstname\",\r\n sortable: true,\r\n filter: \"text\", headerTooltip: \"First Name\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Organization Name\",\r\n field: \"organizationname\",\r\n sortable: true,\r\n filter: \"text\", headerTooltip: \"Organization Name\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n {\r\n headerName: \"Country\",\r\n field: \"country\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n ]\r\n }\r\n}\r\n","import React from 'react';\r\nimport { AppBar, Box, CircularProgress, Dialog, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../store/authProvider\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport LayoutService from \"../../services/layoutService\";\r\nimport ApiService from \"../../services/apiService\";\r\nimport ToastService from \"../../services/toastService\";\r\nimport PageErrorComponent from \"../page/pageErrorComponent\";\r\nimport { ResultStatus, API_ENDPOINT, ENTITY_TYPE } from \"../../types/enums\";\r\n\r\nclass DeleteFileComponent extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n state = {\r\n fetchResult: ResultStatus.SUCCESS,\r\n };\r\n\r\n handleDeleteFile = () => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n var pathParams = \"\";\r\n switch (this.props.entityType) {\r\n case ENTITY_TYPE.TRANSACTION:\r\n pathParams = `/DataCenter/DeleteFile/${this.context.user.tenantId}/${this.props.agCellData.fileID}`;\r\n break;\r\n case ENTITY_TYPE.DATA:\r\n pathParams = `/DataCenter/DeleteFile/${this.context.user.tenantId}/${this.props.agCellData.fileId}`;\r\n break;\r\n default:\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\"DELETE\", API_ENDPOINT.CORE, pathParams, JSON.stringify({})).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Delete File Successful\");\r\n this.props.handleClose(true);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.SUCCESS:\r\n case ResultStatus.SAVING:\r\n return (\r\n
    \r\n this.props.handleClose(false)}\r\n aria-labelledby=\"alert-dialog-title\"\r\n aria-describedby=\"alert-dialog-description\"\r\n >\r\n \r\n \r\n \r\n Delete File\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete File\", this.handleDeleteFile, \"inherit\", \"keyActionDeleteFile\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => this.props.handleClose(false), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n\r\n {this.state.fetchResult === ResultStatus.SUCCESS ?\r\n <>\r\n \r\n Are you sure you want to Delete this File?\r\n \r\n \r\n {this.props.agCellData.fileName}\r\n \r\n \r\n This action cannot be reversed\r\n \r\n \r\n : null}\r\n\r\n {this.state.fetchResult === ResultStatus.SAVING ?\r\n <>\r\n \r\n Delete File for file:\r\n \r\n \r\n {this.props.agCellData.fileName}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n ToastService.showSuccess(\"Delete File Successful\");\r\n this.props.handleClose(true);\r\n return <>;\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(DeleteFileComponent);","import React from 'react';\r\nimport { AppBar, Box, CircularProgress, Dialog, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { ResultStatus, API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nclass RerunValidationComponent extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n state = {\r\n fetchResult: ResultStatus.SUCCESS,\r\n };\r\n\r\n handleRerunValidation = () => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Transactions/InstantRerunFileValidationForTransactions/${this.context.user.tenantId}/${this.props.agCellData.fileID}/${this.context.user.userId}`, JSON.stringify({})).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Re-run Validation Successful\");\r\n this.props.handleClose();\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n handleRevalidateQueue = () => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Transactions/AddRerunFileValidationProcessForTransactions/${this.context.user.tenantId}/${this.props.agCellData.fileID}/${encodeURIComponent(this.props.agCellData.fileName)}/${this.context.user.userId}`, JSON.stringify({}), undefined, \"text\").subscribe(\r\n (successResult) => {\r\n if (successResult.includes(\"success\")) {\r\n ToastService.showSuccess(\"Revalidation of Queue is Successful\");\r\n this.props.handleClose();\r\n } else {\r\n ToastService.showError(successResult);\r\n //this.setState({ fetchResult: ResultStatus.ERROR });\r\n this.props.handleClose();\r\n }\r\n },\r\n (errorResult) => {\r\n console.log(\"Errorrrrrrrrrrrr\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.SUCCESS:\r\n case ResultStatus.SAVING:\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n {this.props.reRunFileValidation ? \"Rerun Validation\" : \"Rerun Validation\"}\r\n {LayoutService.getIconButton(false, MatIconService.OK, this.props.reRunFileValidation ? \"Re-run File Validation\" : \"Rerun Validation\", this.props.reRunFileValidation ? this.handleRerunValidation : this.handleRevalidateQueue, \"inherit\", \"keyActionRerunValidation\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.handleClose, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {this.state.fetchResult === ResultStatus.SAVING ?\r\n \r\n Re-running File Validation for file:\r\n \r\n :\r\n \r\n Are you sure you want to Re-run File Validation? For file:\r\n \r\n }\r\n \r\n {this.props.agCellData.fileName}\r\n \r\n {this.state.fetchResult !== ResultStatus.SAVING ?\r\n \r\n This action cannot be reversed\r\n \r\n : null}\r\n {this.state.fetchResult === ResultStatus.SAVING ?\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ();\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(RerunValidationComponent);","import React from 'react';\r\nimport { AppBar, Box, CircularProgress, Dialog, DialogContent, DialogContentText, DialogTitle, Grid, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { ResultStatus, API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nclass RerunUnmatchedQueueComponent extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n state = {\r\n fetchResult: ResultStatus.SUCCESS,\r\n };\r\n\r\n handleUnmatchQueue = () => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/File/Unmatched/${this.context.user.tenantId}/${this.props.agCellData.sourceID}/${this.context.user.userId}/${this.props.agCellData.fileID}`, JSON.stringify({}), undefined, \"text\").subscribe(\r\n (successResult) => {\r\n if (successResult.includes(\"Success\")) {\r\n ToastService.showSuccess(\"File successfully queued for Profile Creation\");\r\n this.props.handleClose();\r\n } else {\r\n ToastService.showError(successResult);\r\n //this.setState({ fetchResult: ResultStatus.ERROR });\r\n this.props.handleClose();\r\n }\r\n },\r\n (errorResult) => {\r\n console.log(\"Errorrrrrrrrrrrr\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.SUCCESS:\r\n case ResultStatus.SAVING:\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n {this.props.reRunUnmatch ? \"Rerun Unmatched\" : \"Rerun Unmatched\"}\r\n {LayoutService.getIconButton(false, MatIconService.OK, this.props.reRunUnmatch ? \"Re-run Unmatched\" : \"Rerun Unmatched\", this.props.reRunUnmatch ? this.handleRerunValidation : this.handleUnmatchQueue, \"inherit\", \"keyActionRerunUnmatched\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.handleClose, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n {this.state.fetchResult === ResultStatus.SAVING ?\r\n \r\n Re-running unmatched for file:\r\n \r\n :\r\n \r\n Are you sure you want to Re-run unmatched? For file:\r\n \r\n }\r\n \r\n {this.props.agCellData.fileName}\r\n \r\n {this.state.fetchResult !== ResultStatus.SAVING ?\r\n \r\n This action cannot be reversed\r\n \r\n : null}\r\n {this.state.fetchResult === ResultStatus.SAVING ?\r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ();\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(RerunUnmatchedQueueComponent);","import React, { Component } from \"react\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\n\r\nexport default class CommentAvailableImageRenderer extends Component {\r\n render() {\r\n if (this.props.data && this.props.data.hasComments) { \r\n return (\r\n
    {MatIconService.FILE_COMMENT}
    \r\n );\r\n } else {\r\n return (\r\n <>\r\n );\r\n }\r\n }\r\n}","import React, { Component } from \"react\";\r\nimport { Typography } from \"@material-ui/core\";\r\n\r\nexport default class AgGridIconTextRendererComponent extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n\r\n };\r\n }\r\n\r\n render() {\r\n const _icon = this.props.getIcon(this);\r\n return (\r\n
    \r\n {this.props.value}\r\n {_icon ?
    {_icon}
    : null}\r\n
    \r\n\r\n );\r\n }\r\n\r\n //---\r\n}","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\"\r\n\r\nexport default class TransactionSearchDialogService {\r\n\r\n static searchOBS = (_tenantId, _searchValue) => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Transactions/FetchTransactionsSearchValue/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\",\r\n isAdvance: false\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"companyTransactionId\", \"Company Transaction ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGstTransactionId\", \"Porzio GST Transaction ID\").minAndDefaultWidth(136).flexWeight(1).headerClass(\"center-text\").centerAlignText().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTProfileId\", \"Porzio GST Profile ID\").minAndDefaultWidth(136).flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"sourceName\", \"Source\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"transactionStatus\", \"Transaction Status\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"transactionDate\", \"Transaction Date\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"country\", \"Country\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"number\", \"totalAmount\", \"Total Amount\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { from, BehaviorSubject } from \"rxjs\";\r\nimport { mergeMap, debounceTime, distinctUntilChanged, } from \"rxjs/operators\";\r\nimport { Typography, Dialog, DialogTitle, DialogContent, AppBar, Toolbar, InputBase, Box } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction } from \"../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport ActionDialog from \"../../../../shared/components/dialog/actionDialog\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport TransactionSearchDialogService from \"./transactionSearchDialogService\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport TransactionDetailDialogComponent from \"../../transaction-detail/transactionDetailDialogComponent\";\r\nimport ChildMessageRendererComponent from \"../../childMessageRendererComponent\";;\r\n\r\n\r\nclass TransactionsSearchDialogComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n // ept till component's unMount\r\n scopedSubscriptions = new SubscriptionArray();\r\n // apiSubscriptions are canclled before retry also\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n searchResult: ResultStatus.NOT_LOADED,\r\n transactionList: [],\r\n lastSearchedValue: '',\r\n errorMessage: null,\r\n showTransactionDetailDialog: false,\r\n agGridRecipientUtils: new AgGridUtil(\"lastName\", {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.scopedSubscriptions.cancelAll();\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n searchSubject = new BehaviorSubject(\"\");\r\n\r\n componentDidMount() {\r\n var searchOBS = this.searchSubject.pipe(\r\n debounceTime(750),\r\n distinctUntilChanged(),\r\n mergeMap((_searchValue) => from(this.searchRecipient(_searchValue)))\r\n );\r\n\r\n this.scopedSubscriptions.add(searchOBS.subscribe());\r\n }\r\n\r\n // called on row-cell click\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: { ...node, porziogsttransactionid: node.porzioGstTransactionId, transactionid: node.trid, sourceid: node.sourceId } });\r\n this.setState({ showTransactionDetailDialog: true });\r\n };\r\n\r\n searchRecipient = (_searchValue) => {\r\n this.apiSubscriptions.cancelAll();\r\n\r\n if (DataService.stringShouldBe(_searchValue, 3)) {\r\n this.setState({ searchResult: ResultStatus.LOADING, transactionList: [], lastSearchedValue: _searchValue });\r\n this.apiSubscriptions.add(\r\n TransactionSearchDialogService.searchOBS(this.context.user.tenantId, _searchValue).subscribe(\r\n (_transactionList) => {\r\n this.setState({\r\n searchResult: DataService.hasElements(_transactionList) ? ResultStatus.SUCCESS : ResultStatus.LOADED,//-> no records\r\n transactionList: _transactionList,\r\n });\r\n },\r\n (err) => { this.setState({ searchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n } else {\r\n this.setState({ searchResult: ResultStatus.NOT_LOADED });\r\n }\r\n return [];\r\n }\r\n\r\n // render\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n Transaction Search\r\n {/* Search */}\r\n
    \r\n
    {MatIconService.SEARCH}
    \r\n { this.searchSubject.next(e.target.value); }} />\r\n
    \r\n {/* {LayoutService.getIconButton(false, MatIconService.OK, \"Submit\", () => { alert(\"Under development\") }, \"inherit\")} */}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => {\r\n this.setState({\r\n transactionList: [],\r\n lastSearchedValue: '',\r\n searchResult: ResultStatus.NOT_LOADED,\r\n });\r\n this.props.onClose();\r\n }, \"secondary\", \"keyActionCancel1\")}\r\n
    \r\n
    \r\n
    \r\n\r\n \r\n \r\n {this.renderContent(classes)}\r\n \r\n \r\n {this.state.showTransactionDetailDialog ?\r\n { this.setState({ showTransactionDetailDialog: false }); /*this.fetchData(true);*/ }} />\r\n : null}\r\n
    \r\n );\r\n }\r\n\r\n renderContent = (classes) => {\r\n switch (this.state.searchResult) {\r\n case ResultStatus.SAVING: return ;\r\n case ResultStatus.LOADING: return ;\r\n case ResultStatus.NOT_LOADED: return ;\r\n case ResultStatus.LOADED: return ;\r\n case ResultStatus.SUCCESS:\r\n return (
    \r\n
    \r\n { this.state.agGridRecipientUtils.setGridParams(params, true); }}\r\n gridOptions={{\r\n context: { componentParent: this },\r\n suppressContextMenu: true,\r\n rowHeight: 32,\r\n }}\r\n />\r\n
    \r\n
    );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.searchRecipient(this.state.lastSearchedValue); }} />);\r\n }\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(TransactionsSearchDialogComponent);","import React, { Component } from \"react\";\r\nimport { Dialog, DialogTitle, DialogContent, Box, Typography, AppBar, Toolbar, DialogContentText, Grid, LinearProgress, FormControl, InputLabel, Select, MenuItem, Chip, Divider, FormHelperText } from \"@material-ui/core\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { AllEnterpriseModules } from \"ag-grid-enterprise\";\r\nimport { API_ENDPOINT } from \"../../shared/types/enums\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport ChildMessageRendererComponent from \"./childMessageRendererComponent\";\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { DataService, SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { CrudAction, ResultStatus, ENTITY_TYPE } from \"../../shared/types/enums\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport TransactionExpandedViewComponent from \"./expanded-view/transactionsExpandedViewComponent.jsx\";\r\nimport TransactionCenterService from \"./transactionCenterService\";\r\nimport TransactionDetailDialogComponent from \"./transaction-detail/transactionDetailDialogComponent\";\r\nimport DeleteFileComponent from \"../../shared/components/dialog/deleteFileComponent\";\r\nimport RerunValidationComponent from \"./action-menu/rerunValidationComponent\";\r\nimport LookupService from \"../../shared/services/lookupService\";\r\nimport RerunUnmatchQueueComponent from \"./action-menu/rerunUnmatchQueueComponent\";\r\nimport AgGridActionCellRendererComponent from \"../../shared/components/ag-grid/agGridActionCellRendererComponent\";\r\nimport AddEditCommentComponent from \"../../shared/components/add-edit-comments/addEditCommentComponent\";\r\nimport CommentAvailableImageRenderer from \"../../shared/components/add-edit-comments/commentAvailableImageRenderer\";\r\nimport AgGridIconTextRendererComponent from \"../../shared/components/ag-grid/agGridIconTextRendererComponent\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport TransactionSearchDialogComponent from \"./action-menu/transaction-search/transactionSearchDialogComponent\";\r\nimport MatThemeService from \"../../shared/services/theme/matThemeService\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\n\r\nclass transactionCenterComponent extends Component {\r\n oSubscriptions = new SubscriptionArray();\r\n static contextType = AuthContext;\r\n STORE = TransactionCenterService;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modules: AllEnterpriseModules,\r\n data: [],\r\n fileID: 0,\r\n col: \"\",\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n commentIconTextRenderer: AgGridIconTextRendererComponent,\r\n actionCellRendererComponent: AgGridActionCellRendererComponent,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n commentAvailableImageRenderer: CommentAvailableImageRenderer,\r\n },\r\n\r\n showTransactionExpandedDialog: false,\r\n showTransactionDetailDialog: false,\r\n showTransactionSearchDialog: false,\r\n openCommentFile: false,\r\n openDeleteFile: false,\r\n openRerunConfirm: false,\r\n openAddToRerunValidationQueueConfirm: false,\r\n openAddToRerunForUnmatchQueueConfirm: false,\r\n agCellData: null,\r\n };\r\n }\r\n componentWillUnmount() { this.oSubscriptions.cancelAll(); }\r\n componentDidMount() { this.fetchData()}\r\n\r\n \r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, dataFromFirstAPI: [], dataFromSecondAPI: [] });\r\n \r\n \r\n this.oSubscriptions.add(\r\n combineLatest([\r\n this.STORE.getObs(_ignoreCache, this.context), \r\n LookupService.getSourceSystemsByEntityAsOBS(this.context.user.tenantId, ENTITY_TYPE.PROFILE)\r\n ]).subscribe({\r\n next: ([_data, _profileSourceList]) => {\r\n // Process the data from the first API\r\n if (!Array.isArray(_data)) { _data = [_data]; }\r\n _data.forEach((tran) => {\r\n if (tran.transactionFromDate !== undefined) {\r\n tran.transactionRange = tran.transactionFromDate + \"--\" + tran.transactionToDate;\r\n }\r\n });\r\n this.STORE.CACHE.SET(_data, 0);\r\n this.setState({ data: _data });\r\n \r\n // Process the data from the second API\r\n if (!Array.isArray(_profileSourceList)) { _profileSourceList = [_profileSourceList]; }\r\n \r\n this.setState({ profileSourceList: _profileSourceList });\r\n \r\n // Mark fetch as successful only once both APIs have returned data\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n },\r\n error: (error) => {\r\n console.log(\"Error: \" + error);\r\n // onResultStatus.ERROR\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n })\r\n );\r\n };\r\n\r\n methodFromParent = (cell, node) => {\r\n let _healthIndicator = null;\r\n switch (cell) {\r\n case (\"error\"): _healthIndicator = 1; break;\r\n case (\"warning\"): _healthIndicator = 2; break;\r\n case (\"unmatched\"): _healthIndicator = 3; break;\r\n case (\"eligible\"): _healthIndicator = 4; break;\r\n case (\"nonLicensed\"): _healthIndicator = 5; break;\r\n default: _healthIndicator = null;\r\n }\r\n if (RolePermissionService.TRANSACTION_EXPANDED_VIEW.cannotView) {\r\n RolePermissionService.showAccessDeniedToast();\r\n } else if (\r\n (_healthIndicator === 1 && node['error'] === 0) ||\r\n (_healthIndicator === 2 && node['warning'] === 0) ||\r\n (_healthIndicator === 3 && node['unmatched'] === 0) ||\r\n (_healthIndicator === 4 && node['eligible'] === 0) ||\r\n (_healthIndicator === 5 && node['nonLicensed'] === 0)\r\n ) {\r\n ToastService.showWarning('No data found.!');\r\n return;\r\n }\r\n else {\r\n this.setState({\r\n healthIndicator: _healthIndicator,\r\n fileID: node.fileID,\r\n col: cell,\r\n modalAgNode: node,\r\n showTransactionExpandedDialog: true,\r\n });\r\n }\r\n };\r\n\r\n // these are called by the triple-dot Action Menu\r\n handleAddEditCommentFile = (_cellRef) => {\r\n this.setState({\r\n openCommentFile: true,\r\n agCellData: _cellRef.props.data,\r\n });\r\n }\r\n handleDeleteFile = (_cellRef) => {\r\n this.setState({\r\n openDeleteFile: true,\r\n agCellData: _cellRef.props.data,\r\n });\r\n }\r\n handleRerunValidationConfirm = (_cellRef) => {\r\n this.setState({\r\n openRerunConfirm: true,\r\n agCellData: _cellRef.props.data,\r\n });\r\n }\r\n handleAddToRerunFileValidationQueueConfirm = (_cellRef) => {\r\n this.setState({\r\n openAddToRerunValidationQueueConfirm: true,\r\n agCellData: _cellRef.props.data,\r\n });\r\n }\r\n\r\n handleAddToRerunForUnmatchedQueueConfirm = (_cellRef) => {\r\n this.setState({\r\n //openAddToRerunForUnmatchedQueueConfirm: true,\r\n showConfirmCreateBatchProfileDialog: true,\r\n agCellData: _cellRef.props.data,\r\n });\r\n }\r\n\r\n createBatchProfile = () => {\r\n if (!DataService.isValidNumber(this.state.selProfileSourceId)) {\r\n ToastService.showWarning(\"Please select a Profile Source.\");\r\n } else {\r\n this.setState({ isCreatingBatchProfile: true, });\r\n ApiService.getOBS(API_ENDPOINT.CORE, `/File/Unmatched/${this.context.user.tenantId}/${this.state.agCellData.sourceID}/${this.state.selProfileSourceId}/${this.context.user.userId}/${this.state.agCellData.fileID}`)\r\n .subscribe(\r\n (successObj) => {\r\n const objAsString = JSON.stringify(successObj.result);\r\n if (objAsString.includes(\"success\")) {\r\n ToastService.showSuccess(\"File successfully queued for Profile Creation.\");\r\n this.setState({\r\n isCreatingBatchProfile: false,\r\n showConfirmCreateBatchProfileDialog: false,\r\n selProfileSourceId: ''\r\n });\r\n } \r\n else {\r\n const messageWithoutQuotes = successObj.result.replace(/[\"]/g, \"\");\r\n ToastService.showError(messageWithoutQuotes);\r\n //this.setState({ fetchResult: ResultStatus.ERROR });\r\n //this.props.handleClose();\r\n this.setState({\r\n isCreatingBatchProfile: false,\r\n showConfirmCreateBatchProfileDialog: false,\r\n selProfileSourceId: ''\r\n });\r\n }\r\n },\r\n (errorObj) => {\r\n ToastService.showError(\"An Error occured.\");\r\n this.setState({ isCreatingBatchProfile: false });\r\n }\r\n );\r\n }\r\n }\r\n\r\n handleHide = () => { this.setState({ showTransactionDetailDialog: false, showTransactionExpandedDialog: false }); }\r\n onAddClick = (_transactionToClone = null) => {\r\n this.setState({\r\n transactionToClone: _transactionToClone,\r\n showTransactionDetailDialog: true,\r\n showTransactionExpandedDialog: false\r\n });\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: `Transactions ${new Date().toDateString()}`\r\n };\r\n }\r\n onSearchClick = () => {\r\n this.setState({ showTransactionSearchDialog: true });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.TRANSACTION_CENTER.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/* Header Componenet */}\r\n { { this.fetchData(true); }, },\r\n ]}\r\n rightActions={[\r\n { icon: MatIconService.DOWNLOAD, title: \"Download to Excel\", iconColor: \"primary\", onClick: this.onDownloadClick, },\r\n { icon: MatIconService.SEARCH, title: \"Search\", iconColor: \"primary\", onClick: this.onSearchClick, },\r\n { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"Add New\", iconColor: \"secondary\", onClick: this.onAddClick, isReadOnly: RolePermissionService.TRANSACTION_DETAILS.cannotCreate },\r\n ]}\r\n />}\r\n\r\n
    \r\n
    \r\n {\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n event.api.closeToolPanel();\r\n }}\r\n >\r\n
    \r\n\r\n {/* ExpandedView Dialog rendered as Page */}\r\n \r\n {\r\n this.handleHide();\r\n if (_reloadRequired) { this.fetchData(true); }\r\n }}\r\n // clone stuff\r\n onClone={(_transactionToClone) => {\r\n this.handleHide();\r\n this.onAddClick(_transactionToClone);\r\n }}\r\n />\r\n \r\n\r\n {/* Transaction Dialog as a page On AddNew Click */}\r\n {!this.state.showTransactionDetailDialog ? null :\r\n this.setState({ showTransactionDetailDialog: false })}\r\n // clone stuff\r\n onClone={null} // hides the clone icon\r\n transactionToClone={this.state.transactionToClone}\r\n />\r\n }\r\n\r\n {/* Action Menu Items */}\r\n {this.state.openCommentFile && this.state.agCellData ?\r\n {\r\n this.setState({ openCommentFile: false });\r\n if (_reloadRequired) {\r\n this.fetchData(true);\r\n }\r\n }}\r\n agCellData={this.state.agCellData}\r\n />\r\n : null}\r\n {this.state.openDeleteFile && this.state.agCellData ?\r\n { this.setState({ openDeleteFile: false }); isRefresh && this.fetchData(true); }}\r\n agCellData={this.state.agCellData}\r\n />\r\n : null}\r\n {(this.state.openRerunConfirm || this.state.openAddToRerunValidationQueueConfirm) && this.state.agCellData ?\r\n this.setState({ openRerunConfirm: false, openAddToRerunValidationQueueConfirm: false })}\r\n agCellData={this.state.agCellData}\r\n />\r\n : null}\r\n {( this.state.openAddToRerunForUnmatchedQueueConfirm) && this.state.agCellData ?\r\n this.setState({ openAddToRerunForUnmatchedQueueConfirm: false })}\r\n agCellData={this.state.agCellData}\r\n />\r\n : null}\r\n\r\n {/* Confirm New Profile dialog */}\r\n {!this.state.showConfirmCreateBatchProfileDialog ? null :\r\n \r\n {/* Title */}\r\n \r\n \r\n \r\n Confirm Batch Profile Creation\r\n {LayoutService.getIconButton(this.state.isCreatingBatchProfile, MatIconService.OK, \"Confirm\", () => {\r\n this.createBatchProfile();\r\n }, \"inherit\", \"keyActionSave\")}\r\n {LayoutService.getIconButton(this.state.isCreatingBatchProfile, MatIconService.CANCEL, \"Cancel\", () => { this.setState({ showConfirmCreateBatchProfileDialog: false }) }, \"secondary\", \"keyActionCancel1\")}\r\n \r\n {this.state.isCreatingBatchProfile ? : null}\r\n \r\n \r\n {/* Content */}\r\n \r\n \r\n {this.state.isCreatingBatchProfile ? \"Creating Batch Profiles...\" : \"This Action cannot be reversed.\"}\r\n \r\n \r\n \r\n {/*
    Please select a Profile Source
    */}\r\n \r\n Profile Source\r\n \r\n {/* The selected Profile Source will be used for each Profile. */}\r\n \r\n \r\n \r\n
    New Profile Records will be created, or matched, for the Unmatched Transactions in this File, when one of the below conditions is true.
    \r\n
    Note: For the Profile to be inserted, the Transaction MUST have a value for the \"COUNTRY\" field AND a value for at least one of the following fields: \"US NPI NUMBER\"; or \"US LICENSE STATE\"; or \"US STATE LICENSE NUMBER\"; or \"US TAX ID NUMBER\"; or \"RECIPIENT IDENTIFIER VALUE\"
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n }\r\n\r\n\r\n this.setState({ showTransactionSearchDialog: false })}\r\n />\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(true); }} />);\r\n }\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(transactionCenterComponent);","import React, { Component } from \"react\";\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class ComplianceReportMappingService {\r\n\r\n static getProductDetailsAsOBS = (_tenantId, _productId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Products/${_tenantId}/${_productId}`\r\n );\r\n };\r\n\r\n static getBrandDataAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetNonEntityLOVsByID/${_tenantId}/6`\r\n );\r\n };\r\n\r\n static getCategoryDataAsOBS = (_tenantId, _entityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetNonEntityLOVsByID/${_tenantId}/7`\r\n );\r\n };\r\n\r\n static getDuplicateNdcCode = (_tenantId, _ndcToCheck) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Products/NDCExists/${_tenantId}/${_ndcToCheck}`\r\n );\r\n };\r\n\r\n static getNdcCodeExistsInRegistry = (_tenantId, _ndcToCheck) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Products/NDCMasterByCode/${_tenantId}/${_ndcToCheck}`\r\n );\r\n };\r\n\r\n}\r\n","import React from \"react\";\r\nimport { from, of, combineLatest, BehaviorSubject, } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged } from \"rxjs/operators\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n FormGroup,\r\n Grid,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n TextField,\r\n} from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport ProductDetailsService from \"./productDetailsService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\n\r\nlet searchSubject = new BehaviorSubject(\"\");\r\nlet SearchResultObservable = searchSubject.pipe(\r\n filter((val) => val.hasOwnProperty(\"newValue\")),\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n mergeMap((val) => from(fetchProfilesBySearchBoxText(val)))\r\n);\r\n\r\nconst fetchProfilesBySearchBoxText = async (searchBoxParams) => {\r\n\r\n const prom = new Promise(resolve => {\r\n combineLatest([\r\n ProductDetailsService.getNdcCodeExistsInRegistry(searchBoxParams.user.tenantId, searchBoxParams.newValue),\r\n ProductDetailsService.getDuplicateNdcCode(searchBoxParams.user.tenantId, searchBoxParams.newValue),\r\n ]).subscribe(\r\n // success\r\n ([_regNdcResult, _dupNdcResult]) => {\r\n let warningMessage = \" \"; //Note that a single space prepopulates the pushdown area to proactively make space for any warnings\r\n let isRegWarning = false;\r\n let isDupWarning = false;\r\n\r\n console.log(\"searchBoxParams\", searchBoxParams);\r\n console.log(\"_regNdcResult\", _regNdcResult);\r\n console.log(\"_dupNdcResult\", _dupNdcResult);\r\n\r\n if (searchBoxParams.newValue === \"\" || searchBoxParams.newValue === undefined) { // Let empty strings pass without warning\r\n warningMessage = \" \";\r\n } else {\r\n if (_regNdcResult.length >= 1) {\r\n if (_regNdcResult[0].ndcCode === searchBoxParams.newValue) {\r\n isRegWarning = false; // Good News: This NDC is in the database, no warning needed\r\n } else {\r\n isRegWarning = true; // Warning: This NDC is not the database\r\n }\r\n } else {\r\n isRegWarning = true; // Warning: This NDC is not in the database\r\n }\r\n\r\n if (searchBoxParams.inputAction === CrudAction.UPDATE) {\r\n if (searchBoxParams.newValue === searchBoxParams.previousNdc) {\r\n isDupWarning = false; // There is no need to warn if an update duplicates itself\r\n } else {\r\n isDupWarning = _dupNdcResult;\r\n }\r\n } else {\r\n isDupWarning = _dupNdcResult;\r\n }\r\n console.log(\"isRegWarning\", isRegWarning);\r\n console.log(\"isDupWarning\", isDupWarning);\r\n\r\n if (isRegWarning && isDupWarning) {\r\n warningMessage = \"Warning: NDC is invalid and duplicates another Product\";\r\n } else {\r\n if (isRegWarning) {\r\n warningMessage = \"Warning: NDC is invalid\";\r\n }\r\n if (isDupWarning) {\r\n warningMessage = \"Warning: NDC duplicates another Product\";\r\n }\r\n }\r\n }\r\n\r\n resolve(warningMessage);\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n });\r\n const strWarning = await prom;\r\n console.log(\"strWarning\", strWarning);\r\n return strWarning;\r\n}\r\n\r\nclass ProductDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n scopedSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n data: [],\r\n openDeleteConfirm: false,\r\n ndcWarning: \" \",\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n this.scopedSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n\r\n // search subscriptions\r\n this.scopedSubscriptions.add(\r\n SearchResultObservable.subscribe((searchResultJson) => {\r\n this.setState({ ndcWarning: searchResultJson });\r\n })\r\n );\r\n searchSubject.next({\r\n newValue: this.props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.ndc : \"\",\r\n ...this.context,\r\n inputAction: this.props.inputAction,\r\n previousNdc: this.props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.ndc : \"\",\r\n })\r\n\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n (this.props.inputAction === CrudAction.CREATE ? of(null) : ProductDetailsService.getProductDetailsAsOBS(this.context.user.tenantId, this.props.modalAgNode.id)),\r\n ProductDetailsService.getBrandDataAsOBS(this.context.user.tenantId, 1),\r\n ProductDetailsService.getCategoryDataAsOBS(this.context.user.tenantId, 2),\r\n ]).subscribe(\r\n // success\r\n ([_productDetailsData, _brandData, _categoryData]) => {\r\n this.setState(\r\n {\r\n productDetailsData: _productDetailsData,\r\n brandData: this.props.inputAction===CrudAction.CREATE?_brandData.filter(x => x.isActive): _brandData,\r\n categoryData: _categoryData,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n handleChangeNdc = (_fProps, e) => {\r\n const newValue = e.target.value;\r\n _fProps.handleChange(e);\r\n searchSubject.next({\r\n newValue,\r\n ...this.context,\r\n inputAction: this.props.inputAction,\r\n previousNdc: this.props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.ndc : \"\",\r\n });\r\n };\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n productName: \"\",\r\n categoryId: \"\",\r\n ndc: \"\",\r\n udi: \"\",\r\n brandId: null,\r\n therapeuticArea: \"\",\r\n isUSFederal: true,\r\n isActive: true,\r\n };\r\n\r\n } else {\r\n return {\r\n productName: this.props.modalAgNode.name,\r\n categoryId: this.state.categoryData.find(x => x.lovKey === this.props.modalAgNode.productCategory) ? this.state.categoryData.find(x => x.lovKey === this.props.modalAgNode.productCategory).lovId : \"\",\r\n ndc: this.props.modalAgNode.ndc,\r\n udi : this.props.modalAgNode.udi,\r\n brandId: this.props.modalAgNode.brandId,\r\n therapeuticArea: this.props.modalAgNode.therapeuticArea,\r\n isUSFederal: this.state.productDetailsData.isUSFederal,\r\n isActive: this.props.modalAgNode.isActive,\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n productName: Yup.string()\r\n .required(\"Required\")\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .test(\r\n \"checkDuplicateProductName\",\r\n \"Product Name already exists\",\r\n async (_formikValue) => {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n if (_formikValue === this.props.modalAgNode.name) {\r\n return true;\r\n }\r\n }\r\n try {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Products/Exists/${this.context.user.tenantId}/${_formikValue}`\r\n );\r\n const isExists = await result.json();\r\n console.log(\"is Product Name exists: \", isExists);\r\n return !isExists;\r\n } catch (error) {\r\n console.log(\"Product Exists Error:\", error);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n }\r\n ),\r\n //categoryId: Yup.number().required(\"Required\").typeError('Required'),\r\n //brandId: Yup.number().required(\"Required\").typeError('Required'),\r\n ndc: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n udi : Yup.string().max(100, \"Must be 100 characters or less\"),\r\n therapeuticArea: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n isUSFederal: Yup.boolean().required(\"Required\"),\r\n isActive: Yup.boolean().required(\"Required\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n console.log(_formikProps);\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // 0) clear the CACHE,so next time if requried this new object will also be fetched\r\n LookupService.clearPRODUCTS();\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n name: _formikProps.values.productName,\r\n productCategory: this.state.categoryData.find(x => x.lovId === _formikProps.values.categoryId)?.lovKey,\r\n brandId: _formikProps.values.brandId === null ? 0 : _formikProps.values.brandId,\r\n ndc: _formikProps.values.ndc,\r\n udi : _formikProps.values.udi,\r\n therapeuticArea: _formikProps.values.therapeuticArea,\r\n isUSFederal: _formikProps.values.isUSFederal,\r\n isActive: _formikProps.values.isActive,\r\n }\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let actionVerb = \"\";\r\n let targetUrl = \"\";\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n // UPDATE\r\n actionVerb = \"PUT\";\r\n targetUrl = `/Products/${this.context.user.tenantId}/${this.props.modalAgNode.id}`;\r\n mappedObj.id = this.props.modalAgNode.id;\r\n mappedObj.createdBy = this.props.modalAgNode.createdBy;\r\n mappedObj.createdDate = this.props.modalAgNode.createdDate;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n mappedObj.updatedDate = new Date().toISOString().slice(0, 10);\r\n } else {\r\n // CREATE\r\n actionVerb = \"POST\";\r\n targetUrl = `/Products/${this.context.user.tenantId}`;\r\n mappedObj.id = 0;\r\n mappedObj.createdBy = this.context.user.userId;\r\n mappedObj.createdDate = new Date().toISOString().slice(0, 10);\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshProductList(true);\r\n this.props.onClose(false);\r\n } else {\r\n console.error(\"Error: falsey successResult while saving Product\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Product\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n \r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.PRODUCT_DETAIL.cannotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n case ResultStatus.LOADED:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n Product Details\r\n {this.props.inputAction === CrudAction.UPDATE ? RolePermissionService.PRODUCT_DETAIL.cannotEdit ? LayoutService.getIconButton(false, MatIconService.CLOSE, \"close\",\r\n () => { this.props.onClose(false) }, \"secondary\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n {/* {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })} */}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"categoryId\",\r\n \"Product Category\",\r\n this.state.categoryData,\r\n \"lovId\",\r\n \"lovKey\",\r\n \"95%\",\r\n true\r\n )}\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"brandId\",\r\n \"Brand Name\",\r\n this.state.brandData,\r\n \"lovId\",\r\n \"lovKey\",\r\n \"95%\"\r\n )}\r\n \r\n \r\n this.handleChangeNdc(fProps, e)}\r\n style={{ minWidth: \"90%\" }}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isUSFederal\", \"US Federal Covered\")}\r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isActive\", \"Active\")}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n )}\r\n \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n return (\r\n {\r\n this.SERVICE.fetchData(this, true);\r\n }}\r\n onClose={this.props.onClose}\r\n />\r\n );\r\n default:\r\n return (null);\r\n }\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ProductDetailsComponent);","import ApiService from \"../../shared/services/apiService\";\r\nimport Cache from \"../../shared/store/cache\";\r\nimport { GST_API } from \"../../shared/types/enums\";\r\nimport { DataService } from \"../../shared/services/dataService\";\r\n\r\n\r\nexport default class productMasterService {\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n // replace this._jsonData with reacl ApiCall\r\n return ApiService.fetchHTTP_API(GST_API.TenantConfig, `/Products/${clientAuthContext.user.tenantId}`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Product Name\",\r\n field: \"name\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 125,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Product Category\",\r\n field: \"productCategory\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 125,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Brand\",\r\n field: \"brand\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n filterOptions: \"contains\",\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"NDC\",\r\n field: \"ndc\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n \r\n },\r\n {\r\n headerName: \"Primary Device Indicator\",\r\n field: \"udi\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Therapeutic Area\",\r\n field: \"therapeuticArea\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Active?\",\r\n field: \"isActive\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n cellRenderer: \"productIsActiveRendererComponent\",\r\n width: 65,\r\n },\r\n {\r\n headerName: \"Us Federal Covered?\",\r\n field: \"isUSFederal\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n cellRenderer: \"productIsActiveRendererComponent\",\r\n width: 65,\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport ChildMessageRendererComponent from \"./childMessageRendererComponent\";\r\nimport ProductIsActiveRendererComponent from \"../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../shared/types/enums\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AllCommunityModules } from \"ag-grid-enterprise\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport ProductDetailsComponent from \"./product-details/productDetailsComponent.jsx\";\r\nimport ProductMasterService from \"./productMasterService\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\n\r\nclass productMasterComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = ProductMasterService;\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.state = {\r\n modules: AllCommunityModules,\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n // profilesStatusReceivedDateRenderer: ProfilesStatusReceivedDateRenderer,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n productIsActiveRendererComponent: ProductIsActiveRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n\r\n methodFromParent = (cell, node) => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node });\r\n };\r\n\r\n handleCreateProductModal = () => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n };\r\n\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.PRODUCT.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/* Header Componenet */}\r\n { { this.fetchData(true); }, },\r\n ]}\r\n />}\r\n
    \r\n
    \r\n {/* */}\r\n { event.api.sizeColumnsToFit() }}\r\n >\r\n
    \r\n {/* */}\r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(productMasterComponent);\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","export default class Util{\r\n \r\nstatic xmlToJson = (xml) => {\r\n\t\r\n // Create the return object\r\n var obj = {};\r\n \r\n if (xml.nodeType === 1) { // element\r\n // do attributes\r\n if (xml.attributes.length > 0) {\r\n obj[\"@attributes\"] = {};\r\n for (var j = 0; j < xml.attributes.length; j++) {\r\n var attribute = xml.attributes.item(j);\r\n obj[\"@attributes\"][attribute.nodeName] = attribute.nodeValue;\r\n }\r\n }\r\n } else if (xml.nodeType === 3) { // text\r\n obj = xml.nodeValue;\r\n }\r\n \r\n // do children\r\n if (xml.hasChildNodes()) {\r\n for(var i = 0; i < xml.childNodes.length; i++) {\r\n var item = xml.childNodes.item(i);\r\n var nodeName = item.nodeName;\r\n if (typeof(obj[nodeName]) === \"undefined\") {\r\n obj[nodeName] = this.xmlToJson(item);\r\n } else {\r\n if (typeof(obj[nodeName].push) === \"undefined\") {\r\n var old = obj[nodeName];\r\n obj[nodeName] = [];\r\n obj[nodeName].push(old);\r\n }\r\n obj[nodeName].push(this.xmlToJson(item));\r\n }\r\n }\r\n }\r\n return obj;\r\n }\r\n}","import ApiService from \"../../../../shared/services/apiService\";\r\nimport Cache from \"../../../../shared/store/cache\";\r\nimport { CrudAction, API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport util from \"../../../../shared/utilities/xmlToJSON\";\r\nimport { AgGridService } from \"../../../../shared/services/ag-grid/agGridService\";\r\nimport { ReplaySubject } from 'rxjs';\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\n\r\nexport default class ViewFieldService {\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static fetchFieldValueAsObs(clientAuthContext, fieldId, isPorzio) {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/EntityField/GetFieldValueById?tenantId=${clientAuthContext.user.tenantId}&fieldId=${fieldId}&isPorzio=${isPorzio}`,\r\n {},\r\n );\r\n }\r\n\r\n static fetchEntityAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/Entity/${_tenantId}`\r\n );\r\n };\r\n\r\n static getInitialValues(props, state) {\r\n this.props = props;\r\n this.state = state;\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n fieldName: \"\",\r\n systemAlias: \"\",\r\n toolTip: \"\",\r\n description: \"\",\r\n switchPLSRequired: false,\r\n switchActive: true,\r\n switchTextSearchable: false,\r\n switchBooleanDefault: false,\r\n dateTimeDefault: null,\r\n dateDefault: null\r\n };\r\n } else {\r\n let fieldTypes = {};\r\n let tVal0, tVal1, tVal2, tVal3;\r\n var parser = new DOMParser();\r\n var xmlDoc = parser.parseFromString(\r\n this.state.data.lookUpList,\r\n \"text/xml\"\r\n );\r\n let t = util.xmlToJson(xmlDoc);\r\n\r\n if (t.Field != undefined) {\r\n tVal0 =\r\n t.Field.Attribute[0] == undefined\r\n ? 2\r\n : t.Field.Attribute[0][\"@attributes\"].value;\r\n tVal1 =\r\n t.Field.Attribute[1] == undefined\r\n ? 0\r\n : t.Field.Attribute[1][\"@attributes\"].value;\r\n tVal2 =\r\n t.Field.Attribute[2] == undefined\r\n ? 100\r\n : t.Field.Attribute[2][\"@attributes\"].value;\r\n tVal3 =\r\n t.Field.Attribute[3] == undefined\r\n ? 10\r\n : t.Field.Attribute[3][\"@attributes\"].value;\r\n\r\n switch (this.state.field_Type_Id) {\r\n case 1:\r\n fieldTypes = {\r\n numericDecimalPlaces: tVal0,\r\n numericMin: tVal1,\r\n numericMax: tVal2,\r\n numericDefault: tVal3,\r\n };\r\n break;\r\n case 2:\r\n fieldTypes = {\r\n switchTextSearchable: tVal0 === \"true\" ? true : false,\r\n textDefault: t.Field.Attribute[0][\"@attributes\"].default,\r\n };\r\n break;\r\n case 3:\r\n fieldTypes = {\r\n dateTimeDefault: t.Field.Attribute[\"@attributes\"].value === \"null\" ? null : new Date(t.Field.Attribute[\"@attributes\"].value.split('-')),\r\n };\r\n break;\r\n case 4:\r\n fieldTypes = {\r\n switchBooleanDefault:\r\n t.Field.Attribute[\"@attributes\"].default === \"true\"\r\n ? true\r\n : false,\r\n };\r\n break;\r\n case 5:\r\n fieldTypes = {\r\n LovDefault: \"\",\r\n };\r\n break;\r\n case 6:\r\n fieldTypes = {\r\n dateDefault: t.Field.Attribute[\"@attributes\"].value === \"null\" ? null : new Date(t.Field.Attribute[\"@attributes\"].value.split('-')),\r\n };\r\n break;\r\n case 7:\r\n fieldTypes = {\r\n decimalDecimalPlaces: tVal0,\r\n decimalMin: tVal1,\r\n decimalMax: tVal2,\r\n decimalDefault: tVal3,\r\n };\r\n break;\r\n default:\r\n fieldTypes = {\r\n numericDecimalPlaces: tVal0,\r\n numericMin: tVal1,\r\n numericMax: tVal2,\r\n numericDefault: tVal3,\r\n };\r\n break;\r\n }\r\n }\r\n return {\r\n fieldName: this.props.modalAgNode.field_Name,\r\n systemAlias: this.props.modalAgNode.fielD_ALIASNAME,\r\n toolTip: this.state.data.toolTip,\r\n description: this.props.modalAgNode.field_Description,\r\n fieldType: this.props.modalAgNode.fielD_TYPE,\r\n switchPLSRequired: this.props.modalAgNode.iS_PLSREQUIRED,\r\n switchActive: this.props.modalAgNode.active,\r\n switchTextSearchable: fieldTypes.switchTextSearchable ? fieldTypes.switchTextSearchable : false,\r\n switchBooleanDefault: fieldTypes.switchBooleanDefault ? fieldTypes.switchBooleanDefault : false,\r\n\r\n ...fieldTypes,\r\n };\r\n }\r\n }\r\n\r\n static getLookUpListValue(_fProps, _field_Type_Id) {\r\n let tVal0;\r\n switch (_field_Type_Id) {\r\n case 1:\r\n tVal0 = `\r\n `;\r\n break;\r\n case 2:\r\n tVal0 = ``;\r\n break;\r\n case 3:\r\n tVal0 = ``;\r\n break;\r\n case 4:\r\n tVal0 = ``;\r\n break;\r\n case 5:\r\n tVal0 = null;\r\n break;\r\n case 6:\r\n tVal0 = ``;\r\n break;\r\n case 7:\r\n tVal0 = `\r\n \r\n `;\r\n break;\r\n default:\r\n break;\r\n }\r\n return tVal0;\r\n }\r\n\r\n //#region Address Grid\r\n static validateEntityFieldRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n static trimText = (_params) => {\r\n const _newValue = _params.newValue?.trim();\r\n const _oldValue = _params.data.lovKey?.trim();\r\n\r\n // // check for duplicates\r\n // let hasDuplicates = false;\r\n // _cellRef.props.api.forEachNode((rowNode, rowIndex) => {\r\n // if (_cellRef.props.node.rowIndex !== rowIndex && DataService.stringEquals(_cellRef.props.data[\"lovKey\"], rowNode.data[\"lovKey\"])) {\r\n // hasDuplicates = true;\r\n // }\r\n // })\r\n // if (hasDuplicates) {\r\n // oSubject.next({ isSuccess: false, invalidCellRef: _cellRef, invalidMessage: 'Value Already exists' }); // false <- failure\r\n // } else {\r\n // oSubject.next({ isSuccess: true }); // true <- success\r\n // }\r\n\r\n _params.data.lovKey = _newValue;\r\n return true;\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _isReadOnly, _agGridUtils) => {\r\n let cols = [\r\n // edit button column\r\n _agGridUtils.getInlineEditActionColumn(false, this.validateEntityFieldRowEditOBS),\r\n // other columns \r\n AgGridColumnExt.GET(false, \"text\", \"isDefault\", \"Default\").fixedWidth(96).cellRenderer(\"isPrimaryCellRenderer\", { allowUnCheck: true }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"isActive\", \"Active\").fixedWidth(96).cellRenderer(\"isActiveCellRenderer\").SET(),\r\n AgGridColumnExt.GET(true, \"text\", \"lovKey\", \"Key\").valueSetter(_params => this.trimText(_params)).flexWeight(1).SET(),\r\n ];\r\n if (_componentThisRef.props.modalAgNode.fieldId === 11 )\r\n cols.splice(3, 0, AgGridColumnExt.GET(false, \"text\", \"isLicensed\", \"Licensed\").fixedWidth(96).cellRenderer(\"isActiveCellRenderer\").SET(),)\r\n return cols;\r\n };\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport {\r\n withStyles,\r\n FormControl,\r\n Grid,\r\n TextField,\r\n Typography,\r\n InputLabel,\r\n MenuItem,\r\n Select,\r\n FormGroup,\r\n Box,\r\n Divider, DialogTitle, AppBar, Toolbar, DialogContent, Tooltip,IconButton\r\n} from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport {\r\n ResultStatus,\r\n CrudAction,\r\n FieldTypes,\r\n API_ENDPOINT,\r\n ENTITY_FIELD_TYPE\r\n} from \"../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport ViewFieldService from \"./viewFieldService\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport AgGridRadioButtonCellRendererComponent from \"../../../../shared/components/elements/agGridRadioButtonCellRendererComponent\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport MatSpecService from \"../../../../shared/services/theme/matSpecService\";\r\n\r\n\r\nclass ViewFieldComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n STORE = ViewFieldService;\r\n CrudAction = CrudAction;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n enableClearDefault: false,\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n entityData: [],\r\n entityId:\r\n this.props.inputAction === CrudAction.UPDATE\r\n ? this.props.modalAgNode.entityId\r\n : 2,\r\n field_Type_Id:\r\n this.props.inputAction === this.CrudAction.CREATE\r\n ? 1\r\n : this.props.modalAgNode.field_Type_Id,\r\n hasAgGrid: false,\r\n\r\n agGridFieldUtils: new AgGridUtil(\"lovKey\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n isActiveCellRenderer: AgGridCheckboxCellRendererComponent,\r\n isPrimaryCellRenderer: AgGridRadioButtonCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n (this.props.inputAction === CrudAction.CREATE ? of(null) : ViewFieldService.fetchFieldValueAsObs(this.context, this.props.modalAgNode.fieldId, this.props.isPorzio)),\r\n ViewFieldService.fetchEntityAsOBS(this.context.user.tenantId),\r\n ]).subscribe(\r\n // success\r\n ([_data, _entityData]) => {\r\n this.setState(\r\n {\r\n data: _data,\r\n entityData: _entityData,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n const optionsCustom = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 5000,\r\n entityId: 0,\r\n searchText: \"\",\r\n isCustom: true,\r\n companyId: 0\r\n })\r\n };\r\n const optionsPorzio = {\r\n method: 'POST',\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n },\r\n body: JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n entityId: 0,\r\n searchText: \"\",\r\n isCustom: false,\r\n companyId: 0\r\n })\r\n }\r\n this.validationSchema = Yup.object().shape({\r\n fieldName: Yup.string().min(3, \"Must be atleast 3 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n systemAlias: Yup.string().required(\"Required\")\r\n .test(\"checkDuplicateSystemAlias\", \"System Alias already exists\", async (_formikValue) => {\r\n if (_formikValue) {\r\n try {\r\n const resultPorzio = await fetch(`${process.env.REACT_APP_TENANT_HTTP}/EntityField/FetchPagedFields?tenantId=${this.context.user.tenantId}`, optionsPorzio);\r\n const result = await fetch(`${process.env.REACT_APP_TENANT_HTTP}/EntityField/FetchPagedFields?tenantId=${this.context.user.tenantId}`, optionsCustom);\r\n const isExists = await result.json();\r\n const isExistsPorzio = await resultPorzio.json();\r\n if (this.props.inputAction==this.CrudAction.CREATE)\r\n return !(isExistsPorzio.filter((x) => x.fielD_ALIASNAME.toLowerCase() === _formikValue.toLowerCase()).length > 0 || isExists.filter((x) => x.fielD_ALIASNAME.toLowerCase() === _formikValue.toLowerCase()).length > 0);\r\n else \r\n return true;\r\n } catch {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n return false;\r\n }\r\n } else { return true; }\r\n }),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n removeDuplicateAndEmptyKeys = (_updatedRows) => {\r\n _updatedRows = _updatedRows.filter((oRow) => oRow.lovKey !== \"\" || oRow.lovKey !== null || oRow.lovKey !== undefined);\r\n\r\n _updatedRows = _updatedRows.filter((oRow, index, self) =>\r\n index === self.findIndex((t) => (\r\n String(t.lovKey).toLowerCase() === String(oRow.lovKey).toLowerCase()\r\n ))\r\n );\r\n return _updatedRows;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n\r\n if (this.state.data && !this.state.data.isEditableLov) {\r\n ToastService.showError(\"Field is not editable\");\r\n return;\r\n }\r\n\r\n // check for duplicates\r\n if (this.state.hasAgGrid) {\r\n let lovKeys = [];\r\n let duplicateRowNodes = [];\r\n let emptyRowNodes = [];\r\n this.state.agGridFieldUtils.gridApi.forEachNode((rowNode, rowIndex) => {\r\n const _value = (rowNode.data[\"lovKey\"] + \"\").trim().toLowerCase();\r\n if (DataService.isStringNullOrEmpty(_value) || _value === 'undefined') {\r\n emptyRowNodes.push(rowNode);\r\n } else {\r\n if (lovKeys.includes(_value)) {\r\n duplicateRowNodes.push(rowNode);\r\n }\r\n else { lovKeys.push(_value); }\r\n }\r\n });\r\n\r\n if (emptyRowNodes.length > 0) {\r\n ToastService.showError(\"Please Remove the empty keys.\");\r\n this.state.agGridFieldUtils.gridApi.flashCells({ rowNodes: emptyRowNodes, columns: [\"lovKey\"] });\r\n return;\r\n }\r\n\r\n if (duplicateRowNodes.length > 0) {\r\n ToastService.showError(\"Please Remove the duplicate keys.\");\r\n this.state.agGridFieldUtils.gridApi.flashCells({ rowNodes: duplicateRowNodes, columns: [\"lovKey\"] });\r\n return;\r\n }\r\n }\r\n\r\n\r\n if (_formikProps.values.systemAlias === \"PORZIOGSTIDENTIFIERTYPE\") {\r\n ToastService.showWarning(\"PORZIOGSTIDENTIFIERTYPE is not editable\");\r\n return;\r\n }\r\n\r\n let updatedRows = [];\r\n let showDupMessage = false;\r\n if (this.state.hasAgGrid) {\r\n updatedRows = this.state.agGridFieldUtils.getUpdatedRowData();\r\n const preRemoveLen = updatedRows.length;\r\n updatedRows = this.removeDuplicateAndEmptyKeys(updatedRows);\r\n showDupMessage = (preRemoveLen !== updatedRows.length);\r\n let i = 1;\r\n updatedRows.map((x) => {\r\n x.isActive = DataService.parseBoolean(x.isActive);\r\n x.isLicensed = DataService.parseBoolean(x.isLicensed);\r\n x.isDefault = DataService.parseBoolean(x.isDefault);\r\n x.lovKeyId =\r\n x.lovKeyId !== undefined\r\n ? \"\" + x.lovKeyId\r\n : this.props.inputAction === CrudAction.CREATE\r\n ? 0 + \"Key\" + i\r\n : this.state.data.fieldId + \"Key\" + i;\r\n x.order = false;\r\n x.ordinal = i;\r\n x.lovId = x.lovId !== undefined ? x.lovId : 0;\r\n i++;\r\n return x;\r\n })\r\n }\r\n\r\n let date = new Date();\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n let lookupLst = this.STORE.getLookUpListValue(_formikProps, this.state.field_Type_Id);\r\n let lovDictionary = {};\r\n\r\n if (this.state.hasAgGrid) {\r\n updatedRows.forEach((x) => {\r\n lovDictionary[x.lovKeyId] = x.lovKey;\r\n })\r\n }\r\n\r\n // 2) extract the formik values into an object\r\n let fieldValue = {\r\n fieldId:\r\n this.props.inputAction === CrudAction.CREATE\r\n ? 0\r\n : this.props.modalAgNode.fieldId,\r\n entityId:\r\n this.props.inputAction === CrudAction.CREATE\r\n ? this.state.entityId\r\n : this.props.modalAgNode.entityId,\r\n tenantId: this.context.user.tenantId,\r\n entityName:\r\n this.props.inputAction === CrudAction.CREATE\r\n ? this.state.entityData[this.state.entityId].entityname\r\n : this.props.modalAgNode.entityName,\r\n field_Name: _formikProps.values.fieldName,\r\n field_Description: _formikProps.values.description,\r\n iS_PLSREQUIRED: _formikProps.values.switchPLSRequired,\r\n isCustomField:\r\n this.props.inputAction === CrudAction.CREATE\r\n ? true\r\n : this.props.modalAgNode.isCustomField,\r\n fielD_ALIASNAME: _formikProps.values.systemAlias,\r\n field_Type_Id:\r\n this.props.inputAction === CrudAction.CREATE\r\n ? this.state.field_Type_Id\r\n : this.props.modalAgNode.field_Type_Id,\r\n active: _formikProps.values.switchActive,\r\n toolTip: _formikProps.values.toolTip,\r\n lookUpList: lookupLst,\r\n createdBy: this.context.user.userId,\r\n createdDate:\r\n this.props.inputAction === CrudAction.CREATE ? DataService.formatDate(date) : null,\r\n updatedBy: this.context.user.userId,\r\n updatedDate: DataService.formatDate(date),\r\n mask:\r\n this.props.inputAction === CrudAction.CREATE\r\n ? false\r\n : this.state.data.mask,\r\n encryption:\r\n this.props.inputAction === CrudAction.CREATE\r\n ? false\r\n : this.state.data.encryption,\r\n isEditableLov:\r\n this.props.inputAction === CrudAction.CREATE\r\n ? true\r\n : this.state.data.isEditableLov,\r\n entityFieldLOVs: updatedRows\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let actionVerb = \"POST\";\r\n let targetUrl = `/EntityField/SaveFieldValue?tenantId=${this.context.user.tenantId}`;\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n JSON.stringify({ \"fieldValue\": fieldValue, \"lovDictionary\": lovDictionary })\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult === 0 || successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshList(true);\r\n this.props.onClose(false);\r\n if (showDupMessage) {\r\n ToastService.showWarning(\"Duplicate or empty keys were found and removed\");\r\n }\r\n } else {\r\n console.error(\"Error: falsey successResult while saving Product\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Product\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n handleAliasValueChange(event, formikProps) {\r\n const input = event.target;\r\n const start = input.selectionStart;\r\n const end = input.selectionEnd;\r\n formikProps.setFieldValue('systemAlias', input.value.toUpperCase().replace(/\\s/g, ''), true);\r\n formikProps.setFieldTouched('systemAlias', true, false);\r\n input.setSelectionRange(start, end);\r\n } \r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi;\r\n const params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n}\r\n\r\ngetParams() {\r\n const colIds = this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\" && c.colDef.headerName !== \"Edit\").map(c => c.colId);\r\n return {\r\n \r\n columnKeys: colIds,\r\n fileName: this.getFileName(),\r\n processCellCallback: this.onProcessCellCallback\r\n };\r\n}\r\n\r\n\r\ngetFileName() {\r\n return `Lovs- ${(this.props.modalAgNode.entityName)} - ${(this.props.modalAgNode.fielD_ALIASNAME)} ${new Date().toDateString()}`;\r\n}\r\n\r\n\r\n onProcessCellCallback = (params) => {\r\n switch (params.column.colId) {\r\n case 'isDefault': return params.node.data['isDefault'] ? 'Yes' : 'No';\r\n case 'isActive': return params.node.data['isActive'] ? 'Yes' : 'No';\r\n case 'lovKey' : return params.node.data['lovKey'];\r\n case 'isLicensed' : return params.node.data['isLicensed'] ? 'Yes' : 'No';\r\n }\r\n}\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if ((this.props.isPorzio && RolePermissionService.PORZIO_FIELD_DETAIL.cannotView) ||\r\n (!this.props.isPorzio && RolePermissionService.FIELD_DETAIL.cannotView)) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose(); });\r\n } else {\r\n this.state.agGridFieldUtils.setReadOnlyMode(this.state.isReadOnly);\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n {this.props.inputAction === CrudAction.VIEW_DISABLED ? \"View Field\" : (this.props.inputAction === CrudAction.CREATE ? \"Add Field\" : \"Edit Field\")}\r\n \r\n {\r\n (this.props.isPorzio && this.state.field_Type_Id !== ENTITY_FIELD_TYPE.LOV) ? (\r\n { this.props.onClose(false); }} >{MatIconService.CANCEL}\r\n ) : (\r\n LayoutService.getControlledReadOnlyActions(this,\r\n this.props.isPorzio ? RolePermissionService.PORZIO_FIELD_DETAIL.canEdit : RolePermissionService.FIELD_DETAIL.canEdit,\r\n !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Entity\r\n {this.state.entityData.length > 0 ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n this.handleAliasValueChange(event, fProps)} />\r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly || this.props.isPorzio, classes, fProps, \"switchPLSRequired\", \"PLS Required\")}\r\n \r\n \r\n\r\n \r\n \r\n Field Type\r\n \r\n \r\n \r\n\r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly || this.props.isPorzio, classes, fProps, \"switchActive\", \"Active?\")}\r\n \r\n \r\n\r\n \r\n\r\n {this.state.field_Type_Id === 1 && (this.props.inputAction === CrudAction.CREATE || this.props.inputAction === CrudAction.UPDATE) ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n {this.state.field_Type_Id === 2 && (this.props.inputAction === CrudAction.CREATE || this.props.inputAction === CrudAction.UPDATE) ? (\r\n <>\r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly || this.props.isPorzio, classes, fProps, \"switchTextSearchable\", \"Searchable\")}\r\n \r\n \r\n \r\n \r\n ) : null}\r\n {this.state.field_Type_Id === 3 && (this.props.inputAction === CrudAction.CREATE || this.props.inputAction === CrudAction.UPDATE) ? (\r\n \r\n ) : null}\r\n {this.state.field_Type_Id === 4 && (this.props.inputAction === CrudAction.CREATE || this.props.inputAction === CrudAction.UPDATE) ? (\r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly || this.props.isPorzio, classes, fProps, \"switchBooleanDefault\", \"Default\")}\r\n \r\n \r\n ) : null}\r\n {this.state.field_Type_Id === 5 &&\r\n (this.props.inputAction === CrudAction.CREATE || this.props.inputAction === CrudAction.UPDATE) ? (\r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n {LayoutService.getIconButton(this.state.isReadOnly, MatIconService.ADD_CIRCLE_OUTLINE, \"Add New Entity Field LOV\",\r\n () => {\r\n if (this.state.agGridFieldUtils.isNotEditing()) {\r\n this.state.agGridFieldUtils.addNewRow({ isDefault: \"\", isActive: \"\", isLicensed: \"\", lovKey: \"\", });\r\n }\r\n }\r\n )}\r\n \r\n \r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n \r\n \r\n\r\n\r\n
    \r\n {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridFieldUtils.setGridParams(params, true);\r\n this.state.agGridFieldUtils.setReadOnlyMode(this.state.isReadOnly);\r\n this.setState({ hasAgGrid: true });\r\n \r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n ) : null}\r\n {this.state.field_Type_Id === 6 &&\r\n (this.props.inputAction === CrudAction.CREATE ||\r\n this.props.inputAction === CrudAction.UPDATE) ? (\r\n \r\n ) : null}\r\n {this.state.field_Type_Id === 7 && (this.props.inputAction === CrudAction.CREATE || this.props.inputAction === CrudAction.UPDATE) ?\r\n (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : null}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.refreshList(true); this.props.onClose(false); }}\r\n onRetry={() => { this.fetchData() }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction parseXml(xmlStr) {\r\n console.log(new window.DOMParser().parseFromString(xmlStr, \"text/xml\"));\r\n return new window.DOMParser().parseFromString(xmlStr, \"text/xml\");\r\n}\r\n\r\nexport default withStyles(MatClassService)(ViewFieldComponent);","import React from \"react\";\r\nimport { withStyles } from \"@material-ui/core\";\r\nimport ViewFieldComponent from \"./viewFieldComponent\";\r\nimport { ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\n\r\nclass ViewFieldDialogComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n selectedTabIndex: 0,\r\n };\r\n }\r\n componentWillUnmount() { }\r\n componentDidMount() {\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n }\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { }} onClose={() => { this.props.onClose(true); }} />);\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default withStyles(MatClassService)(ViewFieldDialogComponent);\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class PorzioFieldListService {\r\n\r\n static getPorzioFieldListAsOBS = (_tenantId) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/EntityField/FetchPagedFields?tenantId=${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n entityId: 0,\r\n searchText: \"\",\r\n isCustom: false,\r\n companyId: 0,\r\n }),\r\n );\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Field Name\",\r\n field: \"field_Name\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Description\",\r\n field: \"field_Description\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Entity\",\r\n headerHeight: 35,\r\n field: \"entityName\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n height: 30,\r\n },\r\n {\r\n headerName: \"PLS Required\",\r\n field: \"plsrequired\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Field Type\",\r\n field: \"fielD_TYPE\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"System Alias\",\r\n field: \"fielD_ALIASNAME\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Active\",\r\n field: \"active\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 75,\r\n cellRenderer: \"activeRendererComponent\",\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport PageHeaderComponent from \"../../../shared/components/page/pageHeaderComponent\";\r\nimport { Dialog } from \"@material-ui/core\";\r\nimport ChildMessageRendererComponent from \"../childMessageRendererComponent\";\r\nimport ViewFieldDialogComponent from \"./view-field/viewFieldDialogComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport ActiveRendererComponent from \"../../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport PorzioFieldListService from \"./porzioFieldListService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass PorzioFieldsListComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.state = {\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n activeRendererComponent: ActiveRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n selectedEntityId: 0,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n PorzioFieldListService.getPorzioFieldListAsOBS(this.context.user.tenantId),\r\n LookupService.getEntityListAsOBS(this.context.user.tenantId)\r\n ]).subscribe(\r\n // success\r\n ([_data, _entityList]) => {\r\n this.setState(\r\n {\r\n data: _data,\r\n entityList: [{ entityid: 0, entityname: \"-- All --\" }, ..._entityList.filter(x => x.isPorzioEntity === true)],\r\n },\r\n // change the state after all the above are assigned\r\n () => { this.setState({ fetchResult: ResultStatus.LOADED }); }\r\n );\r\n },\r\n // onError\r\n (error) => { this.setState({ fetchResult: ResultStatus.ERROR }); }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n setTimeout(() => {\r\n this.gridApi.setFilterModel({\r\n entityName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedEntityId === 0 ? null : this.state.entityList.find(x => x.entityid === this.state.selectedEntityId).entityname,\r\n },\r\n });\r\n }, 150);\r\n };\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n getFileName() {\r\n return `Porzio_Fields Entity-${(Object.keys(this.gridApi.getFilterModel()).length > 0 ? this.gridApi.getFilterModel().entityName.filter : `All`)} ${new Date().toDateString()}`;\r\n }\r\n\r\n onEntitySelectClick = (event) => {\r\n this.setState({ selectedEntityId: event.target.value });\r\n this.gridApi.setFilterModel({\r\n entityName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === 0 ? null : this.state.entityList.find(x => x.entityid === event.target.value).entityname,\r\n },\r\n });\r\n }\r\n\r\n methodFromParent = (cell, rowData) => {\r\n const fieldEntity = this.state.data.find(x => x.fieldId === rowData.fieldId);\r\n if (!fieldEntity) { ToastService.showError('InvalidField'); }\r\n else {\r\n rowData.fieldlength = fieldEntity.fieldlength;\r\n this.setState({ modalAgNode: rowData, modalShow: true });\r\n }\r\n\r\n };\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n\r\n validateDownload = () => {\r\n return (RolePermissionService.PORZIO_FIELD_LIST_EXPORT.cannotView) ? {}\r\n : { 'download': true, 'onDownloadClick': this.onDownloadClick };\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.PORZIO_FIELD_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack(); });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n { this.onEntitySelectClick(event); }}\r\n reload onReloadClick={() => { this.fetchData(true); }}\r\n {...this.validateDownload()}\r\n />\r\n
    \r\n
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(PorzioFieldsListComponent);;\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class CustomFieldListService {\r\n\r\n static getCustomFieldListAsOBS = (_tenantId,) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/EntityField/FetchPagedFields?tenantId=${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 1000,\r\n entityId: 0,\r\n searchText: \"\",\r\n isCustom: true,\r\n companyId: 0,\r\n }),\r\n );\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Field Name\",\r\n field: \"field_Name\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Description\",\r\n field: \"field_Description\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Entity\",\r\n headerHeight: 35,\r\n field: \"entityName\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n height: 30,\r\n },\r\n {\r\n headerName: \"PLS Required\",\r\n field: \"plsrequired\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Field Type\",\r\n field: \"fielD_TYPE\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"System Alias\",\r\n field: \"fielD_ALIASNAME\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Active\",\r\n field: \"active\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 75,\r\n cellRenderer: \"activeRendererComponent\",\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport PageHeaderComponent from \"../../../shared/components/page/pageHeaderComponent\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport ChildMessageRendererComponent from \"../childMessageRendererComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport ActiveRendererComponent from \"../../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport ViewFieldDialogComponent from \"../porzio-fields/view-field/viewFieldDialogComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\n\r\nimport CustomFieldListService from \"./customFieldListService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass CustomFieldsListComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleCreateFieldModal = this.handleCreateFieldModal.bind(this);\r\n this.handleHideViewFieldModal = this.handleHideViewFieldModal.bind(this);\r\n this.state = {\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n activeRendererComponent: ActiveRendererComponent,\r\n },\r\n createFieldModalShow: false,\r\n viewFieldModalShow: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n selectedEntityId: 0,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n CustomFieldListService.getCustomFieldListAsOBS(this.context.user.tenantId,),\r\n LookupService.getEntityListAsOBS(this.context.user.tenantId),\r\n ]).subscribe(\r\n // success\r\n ([_data, _entityList]) => {\r\n this.setState(\r\n {\r\n data: _data,\r\n entityList: [{ entityid: 0, entityname: \"-- All --\" }, ..._entityList.filter(x => x.isPorzioEntity === true)],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n setTimeout(() => {\r\n this.gridApi.setFilterModel({\r\n entityName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedEntityId === 0 ? null : this.state.entityList.find(x => x.entityid === this.state.selectedEntityId).entityname,\r\n },\r\n });\r\n }, 150);\r\n };\r\n\r\n getFileName() {\r\n return `Custom_Fields Entity-${(Object.keys(this.gridApi.getFilterModel()).length > 0 ? this.gridApi.getFilterModel().entityName.filter : `All`)} ${new Date().toDateString()}`;\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n onEntitySelectClick = (event) => {\r\n this.setState({ selectedEntityId: event.target.value });\r\n this.gridApi.setFilterModel({\r\n entityName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === 0 ? null : this.state.entityList.find(x => x.entityid === event.target.value).entityname,\r\n },\r\n });\r\n }\r\n\r\n handleCreateFieldModal() {\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n this.setState({ viewFieldModalShow: true });\r\n }\r\n\r\n methodFromParent(cell, node) {\r\n this.setState({ viewFieldModalShow: true });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node }, () => {\r\n console.log(this.state.modalAgNode);\r\n });\r\n }\r\n\r\n handleHideViewFieldModal() {\r\n this.setState({ viewFieldModalShow: false });\r\n }\r\n\r\n\r\n validateDownload = () => {\r\n return (RolePermissionService.CUSTOMER_FIELD_LIST_EXPORT.cannotView) ? {}\r\n : { 'download': true, 'onDownloadClick': this.onDownloadClick };\r\n }\r\n validateAdd = () => {\r\n return (RolePermissionService.FIELD_DETAIL.cannotCreate) ? {}\r\n : { 'addCircle': true, 'onAddClick': this.handleCreateFieldModal };\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.CUSTOMER_FIELD_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack(); });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n {\r\n this.onEntitySelectClick(event);\r\n }}\r\n reload onReloadClick={() => { this.fetchData(true); }}\r\n {...this.validateDownload()}\r\n {...this.validateAdd()}\r\n />\r\n
    \r\n
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(true); }} />);\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(CustomFieldsListComponent);\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import { ReplaySubject } from 'rxjs';\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { AgGridService } from \"../../../../shared/services/ag-grid/agGridService\";\r\nimport { AgGridColumnExt } from '../../../../shared/services/ag-grid/agGridColumnExt';\r\n\r\nexport default class EditAffiliateService {\r\n static getAffiliateAsOBS = (_tenantId, _comapnyAffiliateId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Affiliate/AffiliateById/${_tenantId}/${_comapnyAffiliateId}`\r\n );\r\n };\r\n\r\n static getAffiliateByLovIdAsOBS = (_tenantId, _comapnyAffiliateId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetFieldLOVByIds/${_tenantId}/303`\r\n );\r\n };\r\n\r\n //#region Address Grid\r\n static validateAffiliateRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n static getColumnDefs = (_componentThisRef, _isReadOnly, _agGridUtils) => {\r\n return [\r\n // edit button column\r\n _agGridUtils.getInlineEditActionColumn(true, this.validateAffiliateRowEditOBS),\r\n // other columns\r\n AgGridColumnExt.GET(false, \"text\", \"reportIdentifierId\", \"Report Identifier\").makeMaterialDropDown(_componentThisRef.state.reportIdentifierList, \"lovId\", \"lovKey\").SET(),\r\n AgGridService.getTextColumn(true, \"Report Identifier Value\", \"reportIdentifierValue\")\r\n \r\n ];\r\n };\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest, of } from \"rxjs\";\r\nimport {\r\n ResultStatus,\r\n TenantSelectList,\r\n AffiliatesSelectList,\r\n CrudAction,\r\n API_ENDPOINT,\r\n} from \"../../../../shared/types/enums\";\r\nimport {\r\n withStyles,\r\n Grid,\r\n FormControlLabel,\r\n FormGroup,\r\n Switch,\r\n TextField,\r\n Typography,\r\n Box,\r\n Divider,\r\n} from \"@material-ui/core\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport SectionComponent from \"../../../../shared/components/sectionComponent\";\r\nimport EditAffiliateService from \"./editAffiliateService\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridEditButtonCellRendererComponent from \"../../../../shared/components/elements/agGridEditButtonCellRendererComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport AgGridDropdownWithStatusCellRenderer from \"../../../../shared/components/ag-grid/agGridDropdownWithStatusCellRenderer\";\r\n\r\nclass EditAffiliateModalComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n fetchResult: ResultStatus.SUCCESS,\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n\r\n affiliateNameExists: true,\r\n showAffiliateNameExistsAlert: false,\r\n\r\n manufacturerData: [],\r\n manufacturerTypeName: \"\",\r\n isLoadingManufacturerData: false,\r\n\r\n federalBusinessTypeData: [],\r\n federalBusinessTypeName: \"\",\r\n isLoadingFederalBusinessData: false,\r\n\r\n affiliate: {},\r\n reportIdentifierList: [],\r\n countryList: [],\r\n agGridComplianceUtils: new AgGridUtil(\"reportIdentifierId\", {\r\n inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n dropDownRenderer: AgGridDropdownWithStatusCellRenderer,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n //this.SERVICE.oSUBSCRIPTIONS.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n\r\n this.setState({ fetchResult: ResultStatus.LOADING, affiliate: {} });\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n (this.props.inputAction === CrudAction.CREATE ? of(null) : EditAffiliateService.getAffiliateAsOBS(this.context.user.tenantId, this.props.affiliate.companyAffiliateId)),\r\n (this.props.inputAction === CrudAction.CREATE ? of(null) : EditAffiliateService.getAffiliateByLovIdAsOBS(this.context.user.tenantId,)),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n ([_affiliate, _reportIdentifiers, _countryList]) => {\r\n // console.log(\"_countryList\", _countryList);\r\n this.setState(\r\n {\r\n affiliate: _affiliate,\r\n reportIdentifierList: _reportIdentifiers, //DataService.arrayToObject(_reportIdentifiers, \"lovId\", \"lovKey\"),\r\n countryList: _countryList,\r\n },\r\n () => { this.setState({ fetchResult: ResultStatus.SUCCESS }); }\r\n );\r\n },\r\n (error) => {\r\n ToastService.showError(\"Error While Fetching the list.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n\r\n this.fetchAffiliatesData(AffiliatesSelectList.ManufacturerType, \"isLoadingManufacturerData\", \"manufacturerData\");\r\n this.fetchAffiliatesData(AffiliatesSelectList.FederalBusinessType, \"isLoadingFederalBusinessTypeData\", \"federalBusinessTypeData\");\r\n }\r\n\r\n fetchGetListData = async (tenantSelectList, isLoadingKey, dataKey) => {\r\n this.setState({ [isLoadingKey]: true });\r\n try {\r\n const result = await fetch(`${process.env.REACT_APP_TENANT_HTTP}/Util/GetMasterSubSet/${this.context.user.tenantId}/${tenantSelectList}`);\r\n const json = await result.json();\r\n this.setState({ [dataKey]: json, [isLoadingKey]: false });\r\n } catch (error) {\r\n ToastService.showError(\"Error While Fetching the list.\");\r\n }\r\n };\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n customerAffiliateId: \"\",\r\n affiliateName: \"\",\r\n address1: \"\",\r\n address2: null,\r\n address3: null,\r\n address4: null,\r\n city: \"\",\r\n province: \"\",\r\n country: \"\",\r\n countryId: \"\",\r\n postalCode: \"\",\r\n isActive: true,\r\n usCmsSubmittingEntity: false,\r\n manufacturerType: \"\",\r\n usCms10PctLimitation: false,\r\n caAnnualThreshold: null,\r\n usFederalSmplBusinessType: \"\",\r\n registrationName: \"\",\r\n complianceOfficerName: \"\",\r\n complianceOfficerEmail: \"\",\r\n complianceOfficerPhoneNumber: \"\"\r\n };\r\n } else {\r\n return {\r\n customerAffiliateId: this.state.affiliate.customerAffiliateId,\r\n affiliateName: this.state.affiliate.affiliateName,\r\n address1: this.state.affiliate.address1,\r\n address2: this.state.affiliate.address2,\r\n address3: this.state.affiliate.address3,\r\n address4: this.state.affiliate.address4,\r\n city: this.state.affiliate.city,\r\n province: this.state.affiliate.province,\r\n country: this.state.affiliate.country,\r\n countryId: this.state.affiliate.countryId,\r\n postalCode: this.state.affiliate.postalCode,\r\n isActive: this.state.affiliate.isActive,\r\n usCmsSubmittingEntity: this.state.affiliate.usCmsSubmittingEntity,\r\n manufacturerType: this.state.affiliate.manufacturerType ? this.state.affiliate.manufacturerType : \"\",\r\n usCms10PctLimitation: this.state.affiliate.usCms10PctLimitation,\r\n caAnnualThreshold: this.state.affiliate.caAnnualThreshold ? this.state.affiliate.caAnnualThreshold : null,\r\n usFederalSmplBusinessType: this.state.affiliate.usFederalSmplBusinessType ? this.state.affiliate.usFederalSmplBusinessType : \"\",\r\n registrationName: this.state.affiliate.registrationName,\r\n complianceOfficerName: this.state.affiliate.complianceOfficerName,\r\n complianceOfficerEmail: this.state.affiliate.complianceOfficerEmail,\r\n complianceOfficerPhoneNumber: this.state.affiliate.complianceOfficerPhoneNumber\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n customerAffiliateId: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n affiliateName: Yup.string().min(3, \"Must be atleast 3 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\")\r\n .test(\"checkDuplicateAffiliateName\", \"Affiliate Name already exists\",\r\n async (_formikValue) => {\r\n if (_formikValue) {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n if (_formikValue === this.props.affiliate.affiliateName) { return true; }\r\n }\r\n const result = await fetch(`${process.env.REACT_APP_TENANT_HTTP}/Affiliate/IsAffiliateNameExist?affiliateName=${_formikValue}&tenantId=${this.context.user.tenantId}`);\r\n const isExists = await result.json();\r\n return !isExists;\r\n } else {\r\n return true;\r\n }\r\n }\r\n ),\r\n address1: Yup.string().min(3, \"Must be atleast 3 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n address2: Yup.string().nullable(),\r\n address3: Yup.string().nullable(),\r\n address4: Yup.string().nullable(),\r\n city: Yup.string().min(3, \"Must be atleast 3 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n province: Yup.string().min(2, \"Must be atleast 2 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n countryId: Yup.number().required(\"Required\").typeError(\"Required\"),\r\n postalCode: Yup.string().min(2, \"Must be atleast 2 characters long\").max(256, \"Must be 256 characters or less\").required(\"Required\"),\r\n caAnnualThreshold: Yup.number().nullable(true).typeError(\"Must be a number\"),\r\n complianceOfficerName: Yup.string().nullable().max(250, \"Must be 250 characters or less\"),\r\n complianceOfficerEmail: Yup.string().nullable().max(250, \"Must be 250 characters or less\"),\r\n complianceOfficerPhoneNumber: Yup.string().nullable().max(250, \"Must be 250 characters or less\"),\r\n //commented as per ticket PP2-683\r\n //registrationName: Yup.string().min(3, \"Must be atleast 3 characters long\").max(500, \"Must be 500 characters or less\")\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n // console.log(_formikProps);\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema\r\n .validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // 0) clear the CACHE,so next time if requried this new object will also be fetched\r\n LookupService.clearAFFILIATIONS();\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n // console.log(this.state.agGridComplianceUtils.getUpdatedRowData());\r\n\r\n let reportIdentifiersArray = [];\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n reportIdentifiersArray = this.state.agGridComplianceUtils.getUpdatedRowData();\r\n }\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n // companyAffiliateId: this is set conditionally below,\r\n customerAffiliateId: parseInt(\r\n _formikProps.values.customerAffiliateId\r\n ),\r\n porzioAffiliationId: parseInt(\r\n _formikProps.values.customerAffiliateId\r\n ),\r\n tenantId: this.context.user.tenantId,\r\n affiliateName: _formikProps.values.affiliateName,\r\n address1: _formikProps.values.address1,\r\n address2: _formikProps.values.address2 || null,\r\n address3: _formikProps.values.address3 || null,\r\n address4: _formikProps.values.address4 || null,\r\n city: _formikProps.values.city,\r\n province: _formikProps.values.province,\r\n postalCode: _formikProps.values.postalCode,\r\n isActive: _formikProps.values.isActive,\r\n caAnnualThreshold: parseFloat(\r\n _formikProps.values.caAnnualThreshold\r\n ),\r\n countryId: _formikProps.values.countryId,\r\n currencyId: 1,\r\n timeZoneId: 1,\r\n languageId: 1,\r\n updatedBy: 1,\r\n searchText: \"\",\r\n isAllSelected: true,\r\n usCmsSubmittingEntity: _formikProps.values.usCmsSubmittingEntity,\r\n usCms10PctLimitation: _formikProps.values.usCms10PctLimitation,\r\n usCmsBusinessType: _formikProps.values.usCmsBusinessType,\r\n manufacturerType: _formikProps.values.manufacturerType,\r\n usFederalSmplBusinessType:\r\n _formikProps.values.usFederalSmplBusinessType,\r\n registrationName: _formikProps.values.registrationName,\r\n reportIdentifiers: reportIdentifiersArray,\r\n complianceOfficerName: _formikProps.values.complianceOfficerName,\r\n complianceOfficerEmail: _formikProps.values.complianceOfficerEmail,\r\n complianceOfficerPhoneNumber: _formikProps.values.complianceOfficerPhoneNumber,\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let actionVerb = \"\";\r\n let targetUrl = \"\";\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n // UPDATE\r\n actionVerb = \"PUT\";\r\n targetUrl = `/Affiliate/UpdateAffiliate/${this.context.user.tenantId}`;\r\n mappedObj.companyAffiliateId = this.props.affiliate.companyAffiliateId;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n } else {\r\n // CREATE\r\n actionVerb = \"POST\";\r\n targetUrl = `/Affiliate/${this.context.user.tenantId}`;\r\n mappedObj.companyAffiliateId = 0;\r\n mappedObj.createdBy = this.context.user.userId;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.TENANT, targetUrl, JSON.stringify(mappedObj))\r\n .subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n LookupService.fetchCommonLookups(this.context);\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshAfiliatesList(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n ToastService.showError(\"Error while saving Produc\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n ToastService.showError(\"Error Occured.\");\r\n (erroObj.inner || []).forEach((err) => {\r\n _formikProps.setFieldError(err.path, err.message);\r\n });\r\n });\r\n }\r\n };\r\n\r\n fetchAffiliatesData = async (affiliatesSelectEnum, stateLoadingKey, stateDataKey, stateDataId) => {\r\n this.setState({ [stateLoadingKey]: true });\r\n try {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Util/GetNonEntityLOVsByID/${this.context.user.tenantId}/${affiliatesSelectEnum}`\r\n );\r\n const json = await result.json();\r\n this.setState({ [stateDataKey]: json, [stateLoadingKey]: false, });\r\n } catch (error) { ToastService.showError(\"Error Occured.\"); }\r\n };\r\n\r\n handleSwitch = (event) => {\r\n this.setState({ [event.target.name]: event.target.checked });\r\n };\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n let formContent = null;\r\n\r\n this.state.agGridComplianceUtils.setReadOnlyMode(this.state.isReadOnly);\r\n\r\n formContent = (\r\n \r\n {(fProps) => (\r\n
    \r\n { this.handleSubmit(fProps) })} />\r\n\r\n \r\n \r\n \r\n {this.state.showAffiliateNameExistsAlert ? ( Please choose another Affiliate Name, the one you have entered is already in use in a different Affiliate entry.) : (\"\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"countryId\", \"Country*\", this.state.countryList, \"id\", \"value\", \"80%\")}\r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isActive\", \"Active?\")}\r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"usCmsSubmittingEntity\", \"US CMS Submitting Entity\")}\r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"usCms10PctLimitation\", \"US CMS 10% Limitation\")}\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"manufacturerType\", \"Manufacturer Type\", this.state.manufacturerData, \"lovKey\", \"lovKey\", \"98%\")}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"usFederalSmplBusinessType\", \"US Federal Samples Business Type\", this.state.federalBusinessTypeData, \"lovKey\", \"lovKey\", \"98%\")}\r\n \r\n \r\n \r\n \r\n \r\n {this.props.inputAction === CrudAction.CREATE ? <> :\r\n \r\n \r\n
    \r\n \r\n Compliance Report Identifiers\r\n {LayoutService.getIconButton(this.state.isReadOnly, MatIconService.ADD_CIRCLE_OUTLINE, \"Add New compliance report\",\r\n () => {\r\n if (this.state.agGridComplianceUtils.isNotEditing()) {\r\n this.state.agGridComplianceUtils.addNewRow({\r\n reportIdentifierId: \"\",\r\n reportIdentifierValue: \"\",\r\n companyProfileId: 0,\r\n isActive: true,\r\n });\r\n }\r\n }\r\n )}\r\n \r\n
    \r\n {\r\n this.state.agGridComplianceUtils.setGridParams(params, true);\r\n this.state.agGridComplianceUtils.setReadOnlyMode(this.state.isReadOnly);\r\n }}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n }\r\n\r\n \r\n )}\r\n
    \r\n );\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return formContent;\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.props.onClose(false); }} />);\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(EditAffiliateModalComponent);","import React from \"react\";\r\nimport {\r\n withStyles,\r\n DialogTitle,\r\n DialogContent,\r\n Tabs,\r\n Tab,\r\n Box,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n Divider,\r\n} from \"@material-ui/core\";\r\nimport { ResultStatus } from \"../../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport EditAffiliateModalComponent from \"./editAffiliateModalComponent\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport EditAffiliateService from \"./editAffiliateService\";\r\n\r\nclass AffiliateCompaniesDialogComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n selectedTabIndex: 0,\r\n affiliate: {},\r\n };\r\n }\r\n\r\n componentWillUnmount() { }\r\n componentDidMount() {\r\n this.oSubscriptions.add(\r\n EditAffiliateService.getAffiliateAsOBS(\r\n this.context.user.tenantId,\r\n this.props.affiliate.companyAffiliateId\r\n ).subscribe((_affiliate) => {\r\n this.setState({ affiliate: _affiliate });\r\n })\r\n );\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n\r\n onTabChange = (event, newValue) => {\r\n this.setState({ selectedTabIndex: newValue });\r\n };\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {/* Header */}\r\n \r\n \r\n \r\n Affiliate Company Details\r\n { this.props.onClose(false); }}>{MatIconService.CANCEL}\r\n \r\n \r\n \r\n {/* Content */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { }} />);\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(AffiliateCompaniesDialogComponent);\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class AffiliateCompaniesListService {\r\n \r\n static getAffiliateCompanyListAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, `/Affiliate/FetchAllAffiliates/${_tenantId}`);\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Affiliate Name\",\r\n field: \"affiliateName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Affiliate ID\",\r\n field: \"customerAffiliateId\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n },\r\n\r\n {\r\n headerName: \"Address 1\",\r\n field: \"address1\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"City\",\r\n field: \"city\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Province/State\",\r\n field: \"province\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Country\",\r\n field: \"country\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Active\",\r\n field: \"isActive\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 75,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AppBar, Box, Dialog, DialogContent, DialogTitle, IconButton, Toolbar, Typography } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport PageHeaderComponent from \"../../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport ChildMessageRendererComponent from \"../childMessageRendererComponent\";\r\nimport EditAffiliateModalComponent from \"./affiliate-companies-details/editAffiliateModalComponent\";\r\nimport AffiliateCompaniesDialogComponent from \"./affiliate-companies-details/affiliateCompaniesDialogComponent\";\r\nimport IsActiveIconRendererComponent from \"../../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport AffiliateCompaniesListService from \"./affiliateCompaniesListService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\n\r\nclass AffiliateCompaniesListComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n },\r\n modalShow: false,\r\n showAffiliateCreateDialog: false,\r\n submitCreateWasClicked: false,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n AffiliateCompaniesListService.getAffiliateCompanyListAsOBS(this.context.user.tenantId),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n // success\r\n ([_data, _countryList]) => {\r\n this.setState(\r\n {\r\n data: _data.map((d) => ({ ...d, country: _countryList.find((c) => c.id === d.countryId).value, })),\r\n },\r\n // change the state after all the above are assigned\r\n () => { this.setState({ fetchResult: ResultStatus.LOADED }); }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n ToastService.showError(\"Error Occured.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.sizeColumnsToFit();\r\n };\r\n methodFromParent = (cell, data) => {\r\n this.setState({ modalShow: true, companyAffiliate: data });\r\n };\r\n handleHide = () => {\r\n this.setState({ modalShow: false });\r\n };\r\n handleHideCreateAffiliateCompanyModal = () => {\r\n this.setState({ showAffiliateCreateDialog: false });\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n { this.setState({ showAffiliateCreateDialog: true }); }}\r\n reload onReloadClick={() => { this.fetchData(true); }}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n \r\n \r\n \r\n \r\n Affiliate Company Details\r\n {\r\n this.setState({ submitCreateWasClicked: false });\r\n this.setState({ showAffiliateCreateDialog: false });\r\n }}>{MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(true); }} />);\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(AffiliateCompaniesListComponent);;","import React, { Component } from \"react\";\r\n\r\nexport default class VendorLinkRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { Box, DialogTitle, DialogContent, Typography, AppBar, Toolbar, IconButton, TextField, Grid, FormGroup } from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, } from \"../../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\n\r\nclass VendorDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n // vendor name validations\r\n lastValidatedVendorName = null;\r\n lastValidatedVendorResult = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n fetchResult: ResultStatus.NOT_LOADED\r\n };\r\n }\r\n\r\n componentWillUnmount() { this.oSubscriptions.cancelAll(); }\r\n componentDidMount() {\r\n\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getAffiliationsAsOBS(this.context),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n LookupService.getLanguagesAsOBS(this.context),\r\n LookupService.getFormattedCurrenciesAsOBS(this.context, null),\r\n LookupService.getTimezonesAsOBS(this.context)\r\n ]).subscribe(([_affiliationList, _countryList, _languageList, _currencyList, _timeZoneList]) => {\r\n this.setState(\r\n {\r\n affiliationList: _affiliationList,\r\n countryList: _countryList,\r\n languageList: _languageList,\r\n currencyList: _currencyList,\r\n timeZoneList: _timeZoneList,\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // 0) clear the CACHE,so next time if requried this new object will also be fetched\r\n LookupService.clearVENDOR_NAMES();\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n tenantID: this.context.user.tenantId,\r\n vendorName: _formikProps.values.vendorName,\r\n vendorDescription: _formikProps.values.vendorDescription,\r\n address1: _formikProps.values.address1,\r\n address2: _formikProps.values.address2,\r\n address3: _formikProps.values.address3,\r\n address4: _formikProps.values.address4,\r\n city: _formikProps.values.city,\r\n province: _formikProps.values.province,\r\n postalCode: _formikProps.values.postalCode,\r\n countryID: _formikProps.values.countryID,\r\n languageID: _formikProps.values.languageID,\r\n currencyID: _formikProps.values.currencyID,\r\n timeZoneID: _formikProps.values.timeZoneID,\r\n affiliateID: _formikProps.values.affiliateID,\r\n active: _formikProps.values.active,\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n var actionVerb = \"\";\r\n if (this.state.isEditing) {\r\n // UPDATE\r\n actionVerb = \"PUT\";\r\n mappedObj.vendorId = this.props.modalAgNode.vendorId;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n } else {\r\n // CREATE\r\n actionVerb = \"POST\";\r\n mappedObj.vendorId = 0;\r\n mappedObj.createdBy = this.context.user.userId;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.TENANT, `/Vendor/${this.context.user.tenantId}`, JSON.stringify(mappedObj)).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ isReadOnly: true, fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshVendorList(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving vendor details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(erroObj);\r\n if (erroObj.inner) {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n }\r\n });\r\n }\r\n }\r\n getInitialValues() {\r\n return {\r\n vendorName: this.props.modalAgNode.vendorName,\r\n vendorDescription: this.props.modalAgNode.vendorDescription,\r\n address1: this.props.modalAgNode.address1,\r\n address2: this.props.modalAgNode.address2,\r\n address3: this.props.modalAgNode.address3,\r\n address4: this.props.modalAgNode.address4,\r\n city: this.props.modalAgNode.city,\r\n province: this.props.modalAgNode.province,\r\n postalCode: this.props.modalAgNode.postalCode,\r\n countryID: this.props.modalAgNode.countryID,\r\n languageID: this.props.modalAgNode.languageID,\r\n currencyID: this.props.modalAgNode.currencyID,\r\n timeZoneID: this.props.modalAgNode.timeZoneID,\r\n affiliateID: this.props.modalAgNode.affiliateID,\r\n active: this.props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.active : true,\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n vendorDescription: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n address1: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n city: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n province: Yup.string().required(\"Required\").min(2, \"Must be at least 2 characters long\").max(256, \"Must be 256 characters or less\"),\r\n postalCode: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n vendorName: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\")\r\n .test(\"checkDuplicateVendorName\", \"Vendor name already exists\", async (_formikValue) => {\r\n if (_formikValue) {\r\n if (this.lastValidatedVendorName === _formikValue) {\r\n return this.lastValidatedVendorResult;\r\n } else {\r\n this.lastValidatedVendorName = _formikValue;\r\n if (this.state.isEditing && _formikValue === this.props.modalAgNode.vendorName) {\r\n this.lastValidatedVendorResult = true;\r\n return this.lastValidatedVendorResult; // vendor name edited but okay\"\r\n } else {\r\n // new vendor name (or) vendorName updated\r\n try {\r\n const result = await fetch(`${process.env.REACT_APP_TENANT_HTTP}/Vendor/VendorExists/${this.context.user.tenantId}/${_formikValue}`);\r\n const isExists = await result.json();\r\n console.log(\"is vendor name exists: \", isExists);\r\n this.lastValidatedVendorResult = !isExists;\r\n return this.lastValidatedVendorResult;\r\n } catch {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n return false;\r\n }\r\n }\r\n }\r\n } else { return true; }\r\n }),\r\n affiliateID: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n countryID: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n languageID: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n currencyID: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n timeZoneID: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n getLanguageList(list) {\r\n let english = list.find(x => x.id === 1);\r\n let newList = list.filter(x => x.id !== 1);\r\n newList.unshift(english);\r\n return newList;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING: return ();\r\n case ResultStatus.SAVING: return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n Vendor Details\r\n {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n {this.state.fetchResult === ResultStatus.SUCCESS ? (

    Your Vendor has been updated!!

    ) : null}\r\n \r\n \r\n {\" \"}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"affiliateID\", \"Affiliate Company*\", this.state.affiliationList, \"companyAffiliateId\", \"affiliateName\", \"100%\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"countryID\", \"Country Name*\", this.state.countryList, \"id\", \"value\", \"98%\")}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"languageID\", \"Language*\", this.getLanguageList(this.state.languageList), \"id\", \"value\", \"98%\")}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"currencyID\", \"Currency*\", this.state.currencyList, \"id\", \"value\", \"98%\")}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"timeZoneID\", \"Time Zone*\", this.state.timeZoneList, \"id\", \"value\", \"98%\")}\r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"active\", \"Active?\")}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { console.log(\"Retry Clicked\"); }} />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(VendorDetailsComponent);","import ApiService from \"../../../shared/services/apiService\";\r\nimport Cache from \"../../../shared/store/cache\";\r\nimport { GST_API, API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class VendorSetupService {\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n // replace this._jsonData with reacl ApiCall\r\n return ApiService.fetchHTTP_API(\r\n GST_API.TenantConfig,\r\n `/Vendor/GetAllVendors/${clientAuthContext.user.tenantId}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n );\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Vendor Name\",\r\n field: \"vendorName\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n cellRenderer: \"vendorLinkRendererComponent\",\r\n },\r\n {\r\n headerName: \"Affiliate Company\",\r\n field: \"affiliateName\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 175,\r\n },\r\n {\r\n headerName: \"Address 1\",\r\n field: \"address1\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n filterOptions: \"contains\",\r\n width: 150,\r\n },\r\n {\r\n headerName: \"City\",\r\n field: \"city\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Province/State\",\r\n field: \"province\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Country\",\r\n field: \"country\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Postal Code\",\r\n field: \"postalCode\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Active?\",\r\n field: \"active\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 75,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { AllCommunityModules } from \"ag-grid-community\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport VendorLinkRendererComponent from \"./vendorLinkRendererComponent\";\r\nimport PageHeaderComponent from \"../../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport IsActiveIconRendererComponent from \"../../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-community/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-community/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-community/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport VendorDetailsComponent from \"./vendor-details/vendorDetailsComponent.jsx\";\r\nimport VendorSetupService from \"./vendorSetupService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\n\r\nimport { Dialog } from \"@material-ui/core\";\r\n\r\nclass VendorSetupComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = VendorSetupService;\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.state = {\r\n modules: AllCommunityModules,\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n vendorLinkRendererComponent: VendorLinkRendererComponent,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n methodFromParent = (cell, node) => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node });\r\n };\r\n\r\n handleCreateModal = () => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n this.setState({\r\n modalAgNode: {\r\n id: 100,\r\n vendorName: \"\",\r\n vendorDescription: \"\",\r\n address1: \"\",\r\n address2: \"\",\r\n address3: \"\",\r\n address4: \"\",\r\n city: \"\",\r\n province: \"\",\r\n postalCode: \"\",\r\n countryID: \"\",\r\n languageID: \"\",\r\n currencyID: \"\",\r\n timeZoneID: \"\",\r\n affiliateID: \"\",\r\n },\r\n });\r\n };\r\n\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n { this.fetchData(true); }}\r\n />\r\n
    \r\n
    \r\n { event.api.sizeColumnsToFit(); }}\r\n >\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(true); }} />);\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(VendorSetupComponent);\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class ComplianceDefaultMappingService {\r\n\r\n static getPorzioFieldListAsOBS = (_tenantId) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchDefaultMappings/${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 50000,\r\n searchText: \"\",\r\n entityId: \"\",\r\n fieldId: \"\"\r\n }),\r\n );\r\n };\r\n\r\n static getEntityListAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntitiesForDefaultMapping/${_tenantId}`\r\n );\r\n };\r\n\r\n static getComplianceEntityFieldsAsOBS = (_tenantId, _entityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntityFields/${_tenantId}/${_entityId}?entityId=${_entityId}`\r\n );\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Field Name\",\r\n field: \"fieldName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n // width: 225,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Field Value\",\r\n field: \"fieldValue\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n // width: 150,\r\n },\r\n {\r\n headerName: \"Porzio GST Field Value\",\r\n field: \"gstLovKey\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n // width: 150,\r\n // height: 30,\r\n },\r\n ];\r\n }\r\n}\r\n","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class ComplianceReportMappingService {\r\n\r\n static getDefaultMappingsByEntityFieldIdListAsOBS = (_tenantId, _fieldId) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchDefaultMappingsByEntityFieldId/${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 5000,\r\n searchText: \"\",\r\n entityId: \"\",\r\n fieldId: String(_fieldId),\r\n reportId: \"\",\r\n year: \"\"\r\n }),\r\n );\r\n };\r\n\r\n static getPorzioGSTFieldListAsOBS = (_tenantId, _fieldId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchPorzioGSTFieldList/${_tenantId}/${_fieldId}`\r\n );\r\n };\r\n\r\n static getComplianceEntityFieldsAsOBS = (_tenantId, _entityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntityFields/${_tenantId}/${_entityId}`\r\n );\r\n };\r\n\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n {\r\n headerName: \"Field Value\",\r\n field: \"lovKey\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n AgGridColumnExt.GET(false, \"text\", \"gstLovID\", \"Porzio GST Field Value\", true).comparator(_componentThisRef.porzioGstFieldValueComparator).flexWeight(1)\r\n .makeMaterialDropDown(_componentThisRef.state.porzioGSTFieldList, \"lovId\", \"lovKey\", true, 0).SET(),\r\n ]\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport clsx from \"clsx\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport SectionComponent from \"../../../../shared/components/sectionComponent\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, API_ENDPOINT, CrudAction } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { Typography, Divider, Grid, Tooltip, IconButton, MenuItem, Select } from \"@material-ui/core\";\r\nimport MatSpecService from \"../../../../shared/services/theme/matSpecService\";\r\nimport ComplianceDefaultEditService from \"./complianceDefaultEditService\";\r\nimport AgGridDropdownWithStatusCellRenderer from \"../../../../shared/components/ag-grid/agGridDropdownWithStatusCellRenderer\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\n\r\nclass ComplianceDefaultEditComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.state = {\r\n isReadOnly: props.inputAction === CrudAction.UPDATE,\r\n isEditing: true,\r\n showDialog: false,\r\n modalAgNode: null,\r\n selectedEntityId: 0,\r\n selectedFieldId: props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.fieldId : 0,\r\n\r\n agGridUtils: new AgGridUtil(\"gstLovID\", {\r\n dropDownRenderer: AgGridDropdownWithStatusCellRenderer,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n if (this.state.selectedFieldId !== 0) {\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ComplianceDefaultEditService.getDefaultMappingsByEntityFieldIdListAsOBS(this.context.user.tenantId, this.state.selectedFieldId),\r\n ComplianceDefaultEditService.getPorzioGSTFieldListAsOBS(this.context.user.tenantId, this.state.selectedFieldId),\r\n ComplianceDefaultEditService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 1),\r\n ComplianceDefaultEditService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 2),\r\n ]).subscribe(\r\n // success\r\n ([_data, _porzioGSTFieldList, _profileFieldList, _transactionFieldList]) => {\r\n\r\n // sort data\r\n _data = (_data || []).sort((x, y) => x.lovKey.localeCompare(y.lovKey));\r\n\r\n // remove spciality and sort\r\n _profileFieldList = _profileFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n // remove product and sort\r\n _transactionFieldList = _transactionFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n // combine product and transactiony, then sort\r\n const _profileAndTransactionFieldList = ([..._profileFieldList, ..._transactionFieldList]).sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n\r\n\r\n //---> Format _porzioGSTFieldList\r\n let emptyElement = null;\r\n const emptyElementIndex = _porzioGSTFieldList.findIndex(x => x.lovId === 757); // find the emptyElement's index\r\n if (emptyElementIndex >= 0) { // if exists remove it\r\n const spliced = _porzioGSTFieldList.splice(emptyElementIndex, 1) || [];\r\n if (DataService.hasElements(spliced)) {\r\n emptyElement = spliced[0];\r\n emptyElement.lovKey = \"-empty-\";\r\n }\r\n }\r\n _porzioGSTFieldList = _porzioGSTFieldList.sort((x, y) => { return x.lovKey.localeCompare(y.lovKey); }); // sort the reset of the array by key\r\n if (emptyElement) { _porzioGSTFieldList = [emptyElement, ..._porzioGSTFieldList]; } // add the empty element at the top if exists\r\n //<---\r\n\r\n this.setState(\r\n {\r\n data: _data,\r\n porzioGSTFieldList: _porzioGSTFieldList,\r\n profileFieldList: _profileFieldList,\r\n transactionFieldList: _transactionFieldList,\r\n profileAndTransactionFieldList: _profileAndTransactionFieldList,\r\n fieldList: [{ fieldId: 0, fieldName: \"Select\" }, ..._profileAndTransactionFieldList],\r\n },\r\n // change the state after all the above are assigned\r\n () => { this.setState({ fetchResult: ResultStatus.LOADED }); }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n } else {\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ComplianceDefaultEditService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 1),\r\n ComplianceDefaultEditService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 2),\r\n ]).subscribe(\r\n // success\r\n ([_profileFieldList, _transactionFieldList]) => {\r\n\r\n // remove spciality and sort\r\n _profileFieldList = _profileFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n // remove product and sort\r\n _transactionFieldList = _transactionFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n // combine product and transactiony, then sort\r\n const _profileAndTransactionFieldList = ([..._profileFieldList, ..._transactionFieldList]).sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n\r\n this.setState(\r\n {\r\n data: [],\r\n porzioGSTFieldList: [],\r\n profileFieldList: _profileFieldList,\r\n transactionFieldList: _transactionFieldList,\r\n profileAndTransactionFieldList: _profileAndTransactionFieldList,\r\n fieldList: [{ fieldId: 0, fieldName: \"Select\" }, ..._profileAndTransactionFieldList],\r\n },\r\n // change the state after all the above are assigned\r\n () => { this.setState({ fetchResult: ResultStatus.LOADED }); }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n\r\n onEntitySelectClick = (event) => {\r\n console.log(event);\r\n this.setState({ selectedEntityId: event.target.value });\r\n switch (event.target.value) {\r\n case 0:\r\n this.setState({ fieldList: [{ fieldId: 0, fieldName: \"Select\" }, ...this.state.profileAndTransactionFieldList] });\r\n this.setState({ selectedFieldId: 0 });\r\n break;\r\n case 1:\r\n this.setState({ fieldList: [{ fieldId: 0, fieldName: \"Select\" }, ...this.state.profileFieldList] });\r\n break;\r\n case 2:\r\n this.setState({ fieldList: [{ fieldId: 0, fieldName: \"Select\" }, ...this.state.transactionFieldList] });\r\n break;\r\n default:\r\n this.setState({ selectedEntityId: event.target.value });\r\n }\r\n this.gridApi.setFilterModel(null);\r\n }\r\n\r\n onFieldSelectClick = (event) => {\r\n this.setState({ selectedFieldId: event.target.value },\r\n this.fetchData, // https://stackoverflow.com/questions/37401635/react-js-wait-for-setstate-to-finish-before-triggering-a-function\r\n );\r\n }\r\n\r\n methodFromParent = (cell, data) => {\r\n console.log(\"methodFromParent\");\r\n this.setState({ showDialog: true });\r\n this.setState({ modalAgNode: data });\r\n };\r\n\r\n handleHide() {\r\n this.setState({ showDialog: false });\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n var _fieldId = 0;\r\n var arrNodes = [];\r\n this.gridApi.forEachNode((rowNode) => {\r\n _fieldId = rowNode.data.fieldId;\r\n const gstLovId = Number(rowNode.data.gstLovID);\r\n const gstLov = DataService.getFirstOrDefault(this.state.porzioGSTFieldList.filter(x => x.lovId === gstLovId), null);\r\n arrNodes.push({\r\n fieldId: rowNode.data.fieldId,\r\n lovID: rowNode.data.lovID,\r\n lovKey: rowNode.data.lovKey,\r\n gstLovID: rowNode.data.gstLovID,\r\n gstLovKey: gstLovId === 757 ? \"\" : (gstLov ? gstLov.lovKey : \"\")\r\n });\r\n });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n fieldId: _fieldId,\r\n lovID: 0,\r\n lovKey: \"\",\r\n gstLovID: 0,\r\n gstLovKey: \"\",\r\n fieldValue: JSON.stringify(arrNodes),\r\n fieldName: \"\",\r\n };\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\"POST\", API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/SaveDefaultMapping/${this.context.user.tenantId}/${this.context.user.userId}`,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Sucessfully saved.\");\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshList(true);\r\n this.props.onClose(false);\r\n } else {\r\n ToastService.showError(\"Error while saving.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n ToastService.showError(\"Error while saving.\");\r\n console.error(\"Error while saving\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n porzioGstFieldValueComparator = (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n if (DataService.isNullOrUndefined(nodeA.data.gstLovKey))\r\n return 1;\r\n else if (DataService.isNullOrUndefined(nodeB.data.gstLovKey))\r\n return -1;\r\n else if (nodeA.data.gstLovKey === nodeB.data.gstLovKey) return 0;\r\n return (nodeA.data.gstLovKey > nodeB.data.gstLovKey) ? 1 : -1;\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const isNew = this.props.inputAction === CrudAction.CREATE;\r\n const isUpdate = this.props.inputAction === CrudAction.UPDATE;\r\n\r\n if (isUpdate && RolePermissionService.DEFAULT_MAPPING_DETAIL.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack(); });\r\n } else {\r\n this.state.agGridUtils.disableEditability(this.state.isReadOnly);\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n { this.onFieldSelectClick(event); }} />\r\n
    \r\n
    \r\n { this.handleSubmit() }) :\r\n RolePermissionService.DEFAULT_MAPPING_DETAIL.cannotEdit ? null :\r\n LayoutService.getReadOnlyActionsSolo(this, isNew, () => { this.handleSubmit() })\r\n }\r\n />\r\n
    \r\n
    \r\n {\r\n this.onGridReady(event);\r\n this.state.agGridUtils.setGridParams(event, true);\r\n this.state.agGridUtils.disableEditability(this.state.isReadOnly);\r\n }}\r\n >\r\n
    \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return ( { this.fetchData(true); }} />);\r\n default:\r\n return null;\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass CompliancePageHeaderComponent extends Component {\r\n render() {\r\n const { small, classes, history, label, back, menu, search, entityComplianceSelect, fieldComplianceSelect, countrySelect, importTemplate, uploadFile, save, add, addCircle, view, reload, ok, cancel, noDivider, noDividerSpacing } = this.props;\r\n const showButtons = back || menu || search || entityComplianceSelect || countrySelect || importTemplate || uploadFile || save || add || addCircle || view || reload || ok || cancel;\r\n return (\r\n \r\n \r\n \r\n\r\n \r\n {label}\r\n \r\n\r\n {fieldComplianceSelect ? (\r\n <>\r\n Field:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.fieldSelectData.map((el) => (\r\n \r\n {el.fieldName}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n \r\n {noDivider || noDividerSpacing ? (\r\n {!noDivider && MatSpecService.showPageTitleDivider ? : null}\r\n ) : (\r\n {MatSpecService.showPageTitleDivider ? : null}\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(ComplianceDefaultEditComponent);","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { AppBar, Box, Dialog, DialogContent, DialogTitle, Divider, IconButton, LinearProgress, Tab, Tabs, TextField, Toolbar, Typography } from \"@material-ui/core\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { CrudAction } from \"../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport ComplianceDefaultEditComponent from \"./complianceDefaultEditComponent\";\r\n// import AuditMappingComponent from \"./auditMappingComponent\";\r\n\r\nclass ComplianceDefaultDialogComponent extends React.Component {\r\n oSubscriptions = new SubscriptionArray();\r\n tabConfigMap = new Map();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.tabIndexMap = new Map();\r\n this.tabIndexMap.set(0, { name: \"editTabPanel\", validationCallback: null, postCallback: null });\r\n\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n selectedTabIndex: 0,\r\n };\r\n\r\n }\r\n\r\n onTabChange = (event, newValue) => {\r\n this.setState({ selectedTabIndex: newValue });\r\n };\r\n\r\n\r\n onClose = (_reloadRequired) => {\r\n this.setState({ isReadOnly: true }, () => {\r\n this.props.onClose(_reloadRequired);\r\n });\r\n }\r\n\r\n onSave = (_dataToPost) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ isSaving: true });\r\n\r\n let validationOBSs = [];\r\n this.tabIndexMap.forEach(tabConfig => { if (tabConfig.validationCallback) { validationOBSs.push(tabConfig.validationCallback()); } });\r\n\r\n this.oSubscriptions.add(combineLatest(validationOBSs).subscribe(\r\n (_validationResults) => {\r\n if (DataService.hasAnyFalse(_validationResults)) { // error : validation of all tabs\r\n // TODO: display the error\r\n }\r\n else { // success : validation of all tabs\r\n let postOBSs = [];\r\n this.tabIndexMap.forEach(tabConfig => { if (tabConfig.postCallback) { postOBSs.push(tabConfig.postCallback()); } });\r\n\r\n // post the data\r\n this.oSubscriptions.add(combineLatest(postOBSs).subscribe(\r\n // success : Post\r\n (_tabResults) => {\r\n this.setState({ isSaving: false, saveErrorInfo: null });\r\n this.onClose(true); // close this and reload the ProfileCenter\r\n },\r\n // error : Post\r\n (_error) => {\r\n this.setState({ isSaving: false, saveErrorInfo: _error }, () => {\r\n setTimeout(() => { this.setState({ saveErrorInfo: null }); }, 5000)\r\n });\r\n }\r\n ));\r\n }\r\n }\r\n ));\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n { this.onClose(false) }} >\r\n {/* DialogTitle */}\r\n \r\n \r\n \r\n Mapping Detail\r\n { this.onClose(false); }}>{MatIconService.CANCEL}\r\n \r\n {this.state.isSaving ? : null}\r\n {this.state.saveErrorInfo ? Error Occured while Saving : null}\r\n \r\n \r\n {/* DialogContent */}\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 LayoutService.getHocComponenet(ComplianceDefaultDialogComponent);","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport clsx from \"clsx\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { Typography, Divider, Grid, Tooltip, IconButton, MenuItem, Select } from \"@material-ui/core\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\n\r\nimport ChildMessageRendererComponent from \"./compliance-default-details/childMessageRendererComponent\";\r\nimport ComplianceDefaultMappingService from \"./complianceDefaultMappingService\";\r\nimport ComplianceDefaultDialogComponent from \"./compliance-default-details/complianceDefaultDialogComponent\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass ComplianceDefaultMappingComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n },\r\n showDialog: false,\r\n modalAgNode: null,\r\n selectedEntityId: 0,\r\n selectedFieldId: 0,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ComplianceDefaultMappingService.getPorzioFieldListAsOBS(this.context.user.tenantId),\r\n ComplianceDefaultMappingService.getEntityListAsOBS(this.context.user.tenantId),\r\n ComplianceDefaultMappingService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 1),\r\n ComplianceDefaultMappingService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 2),\r\n ]).subscribe(\r\n // success\r\n ([_data, _entityList, _profileFieldList, _transactionFieldList]) => {\r\n\r\n //remove spciality and sort //gst_1889:get the speciality and product into the dropdown and move it to db.\r\n _profileFieldList = _profileFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n //remove product and sort\r\n _transactionFieldList = _transactionFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n // combine product and transactiony, then sort\r\n const _profileAndTransactionFieldList = ([..._profileFieldList, ..._transactionFieldList]).sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n\r\n this.setState(\r\n {\r\n data: _data,\r\n entityList: [{ entityId: 0, entityName: \"All\" }, ..._entityList],\r\n profileFieldList: _profileFieldList,\r\n transactionFieldList: _transactionFieldList,\r\n profileAndTransactionFieldList: _profileAndTransactionFieldList,\r\n fieldList: [{ fieldId: 0, fieldName: \"All\" }, ..._profileAndTransactionFieldList],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n };\r\n\r\n onEntitySelectClick = (event) => {\r\n console.log(event);\r\n this.setState({ selectedEntityId: event.target.value });\r\n\r\n switch (event.target.value) {\r\n case 0:\r\n this.setState({ fieldList: [{ fieldId: 0, fieldName: \"All\" }, ...this.state.profileAndTransactionFieldList] });\r\n this.setState({ selectedFieldId: 0 });\r\n break;\r\n case 1:\r\n this.setState({ fieldList: [{ fieldId: 0, fieldName: \"All\" }, ...this.state.profileFieldList] });\r\n break;\r\n case 2:\r\n this.setState({ fieldList: [{ fieldId: 0, fieldName: \"All\" }, ...this.state.transactionFieldList] });\r\n break;\r\n default:\r\n this.setState({ selectedEntityId: event.target.value });\r\n }\r\n\r\n this.gridApi.setFilterModel(null);\r\n\r\n }\r\n\r\n onFieldSelectClick = (event) => {\r\n this.setState({ selectedFieldId: event.target.value });\r\n this.gridApi.setFilterModel({\r\n fieldName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === 0 ? null : this.state.fieldList.find(x => x.fieldId === event.target.value).fieldName,\r\n },\r\n });\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: `Compliance_Default_Mapping ${new Date().toDateString()}`\r\n };\r\n }\r\n\r\n methodFromParent = (cell, data) => {\r\n this.setState({\r\n showDialog: true,\r\n modalAgNode: data,\r\n inputAction: CrudAction.UPDATE,\r\n });\r\n };\r\n\r\n handleCreate = () => {\r\n this.setState({\r\n showDialog: true,\r\n inputAction: CrudAction.CREATE,\r\n });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const pageName = \"Default Mapping\";\r\n if (RolePermissionService.DEFAULT_MAPPING_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack(); });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n { this.onEntitySelectClick(event); }}\r\n fieldComplianceSelect\r\n selectedFieldId={this.state.selectedFieldId}\r\n fieldSelectData={this.state.fieldList}\r\n onFieldSelectClick={(event) => { this.onFieldSelectClick(event); }}\r\n download onDownloadClick={this.onDownloadClick}\r\n addCircle onAddClick={this.handleCreate}\r\n />\r\n
    \r\n
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    \r\n\r\n {this.state.showDialog ? this.setState({ showDialog: false })} refreshList={this.fetchData} />\r\n : <>}\r\n\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return ( { this.fetchData(true); }} />);\r\n default:\r\n return null;\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass CompliancePageHeaderComponent extends Component {\r\n render() {\r\n const { small, classes, history, label, back, menu, search, entityComplianceSelect, fieldComplianceSelect, countrySelect, importTemplate, uploadFile, save, add, addCircle, view, reload, ok, cancel, noDivider, noDividerSpacing, download } = this.props;\r\n const showButtons = back || menu || search || entityComplianceSelect || countrySelect || importTemplate || uploadFile || save || add || addCircle || view || reload || ok || cancel || download;\r\n\r\n return (\r\n \r\n \r\n \r\n {back ? (\r\n \r\n { history.goBack(); }}>{MatIconService.BACK}\r\n \r\n ) : null}\r\n\r\n \r\n {label}\r\n \r\n\r\n {entityComplianceSelect ? (\r\n <>\r\n Entity:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.entitySelectData.map((el) => (\r\n \r\n {el.entityName}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {fieldComplianceSelect ? (\r\n <>\r\n Field:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.fieldSelectData.map((el) => (\r\n \r\n {el.fieldName}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {download && RolePermissionService.DEFAULT_MAPPING_EXPORT.canView ? (\r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n ) : null}\r\n\r\n {(add || addCircle) && RolePermissionService.DEFAULT_MAPPING_DETAIL.canCreate ? (\r\n \r\n \r\n {addCircle ? MatIconService.ADD_CIRCLE_OUTLINE : MatIconService.ADD}\r\n \r\n \r\n ) : null}\r\n\r\n {reload ? (\r\n \r\n \r\n {MatIconService.RELOAD}\r\n \r\n \r\n ) : null}\r\n \r\n {noDivider || noDividerSpacing ? (\r\n {!noDivider && MatSpecService.showPageTitleDivider ? : null}\r\n ) : (\r\n {MatSpecService.showPageTitleDivider ? : null}\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n\r\nexport default LayoutService.getHocComponenet(ComplianceDefaultMappingComponent);\r\n","import { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class ComplianceReportMappingService {\r\n\r\n static getPorzioFieldListAsOBS = (_tenantId) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchReportMappings/${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 50000,\r\n searchText: \"\",\r\n entityId: \"\",\r\n fieldId: \"\"\r\n }),\r\n );\r\n };\r\n\r\n static getEntityListAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntitiesForDefaultMapping/${_tenantId}`\r\n );\r\n };\r\n\r\n static getYearsByReportId = (_tenantId, _reportId) => {\r\n let $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}`\r\n if (_reportId !== undefined) {\r\n $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}?reportId=${_reportId}`\r\n }\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, $url);\r\n };\r\n\r\n static getComplianceEntityFieldsAsOBS = (_tenantId, _entityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntityFields/${_tenantId}/${_entityId}?entityId=${_entityId}`\r\n );\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Report Name\",\r\n field: \"reportName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n\r\n },\r\n {\r\n headerName: \"Template Year\",\r\n field: \"templateYear\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Field Name\",\r\n field: \"fieldName\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Field Value\",\r\n field: \"customerFieldValue\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Porzio GST Field Value\",\r\n field: \"porzioGSTFieldValue\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Report Value\",\r\n field: \"reportMappingName\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Reportable\",\r\n field: \"reportable\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 115,\r\n },\r\n AgGridColumnExt.GET(false, \"text\", \"isCustomMappingText\", \"Custom Mapping\").defaultWidth(128).SET()\r\n ];\r\n }\r\n}\r\n","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\n\r\nexport default class ComplianceReportDetailsDialogService {\r\n\r\n static getEntityListAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntitiesForDefaultMapping/${_tenantId}`\r\n );\r\n };\r\n\r\n static getYearsByReportId = (_tenantId, _reportId) => {\r\n let $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}`\r\n if (_reportId !== undefined) {\r\n $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}?reportId=${_reportId}`\r\n }\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, $url);\r\n };\r\n\r\n static getComplianceEntityFieldsAsOBS = (_tenantId, _entityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntityFields/${_tenantId}/${_entityId}?entityId=${_entityId}`\r\n );\r\n };\r\n\r\n static getReportMappings = (_tenantId, _reportId, _yearId, _fieldId) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchReportMappingsListByReportId/${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 5000,\r\n searchText: \"\",\r\n entityId: \"\",\r\n fieldId: String(_fieldId),\r\n reportId: String(_reportId),//This should be the report path ID\r\n year: String(_yearId),\r\n }),\r\n );\r\n };\r\n\r\n static getReportNameDropdownAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchReports/${_tenantId}`\r\n );\r\n };\r\n\r\n static getReportValueDropdownAsOBS = (_tenantId, _fieldId, _reportPathId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchReportValueList/${_tenantId}/${_fieldId}/${_reportPathId}`\r\n );\r\n };\r\n\r\n static setReportsList = (_componentThisRef, _reportsList) => {\r\n let tempData = [];\r\n let visited = [];\r\n _reportsList.forEach(x => {\r\n if (_componentThisRef.state.selectedReportId === x[\"reportId\"]) {\r\n if (tempData.find(t => t[\"reportName\"] === x[\"reportName\"])) {\r\n //tempData.find(t => t[\"reportName\"] === x[\"reportName\"]).reportId = _componentThisRef.state.selectedReportId;\r\n tempData = tempData.filter(t => t.reportName !== x.reportName);\r\n tempData.push(x);\r\n visited.push(x[\"reportName\"]);\r\n }\r\n else {\r\n tempData.push(x);\r\n visited.push(x[\"reportName\"]);\r\n }\r\n }\r\n else if (!visited.includes(x[\"reportName\"])) {\r\n visited.push(x[\"reportName\"]);\r\n tempData.push(x);\r\n }\r\n })\r\n return tempData;\r\n }\r\n\r\n\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"customerFieldValue\", \"Field Value\").flexWeight(3).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porzioGSTFieldValue\", \"Porzio GST Field Value\").flexWeight(3).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportMappingId\", \"Report Value\").comparator(_componentThisRef.reportValueComparator).cellRenderer(\"dropDownRenderer\", {\r\n options: _componentThisRef.state.reportValueDropdownList, optionKey: \"reportMappingId\", optionLabel: \"reportMappingName\",\r\n statusIcon: MatIconService.REPORT,\r\n showStatusCallBack: (_cellRef) => {\r\n if (_cellRef.props.data[\"reportMappingId\"] !== 0 && _cellRef.props.data[\"isPZMapping\"] !== undefined) { return !_cellRef.props.data[\"isPZMapping\"]; }\r\n else { return false; }\r\n },\r\n showEmpty: true, emptyValue: 0,\r\n onChangeCallback: (_cellRef, params) => {\r\n _cellRef.props.data.isMappingChanged = true;\r\n _componentThisRef.handleReportValueChanged(_cellRef, params);\r\n },\r\n }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportable\", \"Reportable\").flexWeight(3).tooltip().SET(),\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport { ResultStatus, API_ENDPOINT, CrudAction, SaveStatus } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridDropdownWithStatusCellRenderer from \"../../../../shared/components/ag-grid/agGridDropdownWithStatusCellRenderer\";\r\nimport ComplianceReportDetailsDialogService from './ComplianceReportDetailsDialogService';\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\n\r\nimport { Typography, LinearProgress, Dialog, DialogTitle, AppBar, Toolbar, DialogContent } from \"@material-ui/core\";\r\nimport { combineLatest } from \"rxjs\";\r\n\r\nclass ComplianceReportDetailsDialogComponent extends Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n apiSubscriptions = new SubscriptionArray();\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n\r\n this.state = {\r\n fetchResult: ResultStatus.LOADED,\r\n isNew: this.props.inputAction === CrudAction.CREATE,\r\n isUpdate: this.props.inputAction === CrudAction.UPDATE,\r\n\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE,\r\n saveStatus: SaveStatus.NONE,\r\n\r\n modalAgNode: this.props.modalAgNode,\r\n reportList: [],//this.props.reportList,\r\n yearList: [],\r\n fieldList: [],\r\n\r\n selectedReportId: this.props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.reportId : '', // modalAgNode props -> reportId && reportName\r\n selectedFieldId: this.props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.fieldId : '', // modalAgNode props -> fieldId && fieldName\r\n parentReportPathYearText: this.props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.templateYear : '',\r\n selectedReportPathYearId: '', // modalAgNode props -> -> & templateYear (text) & templateYearId (recevied as is empty from the modalAgNode) \r\n\r\n // final-grid-data\r\n gridData: [],\r\n\r\n // agGridUtils\r\n agGridUtils: new AgGridUtil(\"gstLovID\", {\r\n dropDownRenderer: AgGridDropdownWithStatusCellRenderer,\r\n }),\r\n }\r\n console.clear();\r\n\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchFields(false);\r\n\r\n }\r\n\r\n fetchFields = (cancelSubscriptions = true) => {\r\n if (cancelSubscriptions) { this.apiSubscriptions.cancelAll(); }\r\n\r\n this.setState({ fetchResult: ResultStatus.LOADING, fieldList: [], gridData: [] })\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ComplianceReportDetailsDialogService.getReportNameDropdownAsOBS(this.context.user.tenantId),\r\n ComplianceReportDetailsDialogService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 1),\r\n ComplianceReportDetailsDialogService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 2),\r\n ]).subscribe(\r\n ([_reportList, _profileFieldList, _transactionFieldList]) => {\r\n let tempData = ComplianceReportDetailsDialogService.setReportsList(this, _reportList);\r\n\r\n let reportList = DataService.getKeyValueCollection(tempData, \"reportId\", \"reportName\", false);\r\n // transform\r\n _profileFieldList = _profileFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n _transactionFieldList = _transactionFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n const derivedFieldList = ([..._profileFieldList, ..._transactionFieldList]).sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n\r\n this.setState({\r\n fieldList: derivedFieldList,\r\n reportList: reportList\r\n }, // don't set Laaded here\r\n () => {\r\n this.fetchYears(false); // call the fetch year\r\n });\r\n\r\n },\r\n (error) => {\r\n console.error(error);\r\n ToastService.showError('Error Loading Fields.');\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n fetchYears = (cancelSubscriptions = true) => {\r\n if (cancelSubscriptions) { this.apiSubscriptions.cancelAll(); }\r\n this.setState({ yearList: [], gridData: [] });\r\n\r\n if (this.state.selectedReportId > 0) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ComplianceReportDetailsDialogService.getYearsByReportId(this.context.user.tenantId, this.state.selectedReportId),\r\n ]).subscribe(\r\n ([_yearList]) => {\r\n let derivedReportPathYearId = '';\r\n if (this.state.isUpdate && this.state.parentReportPathYearText) {\r\n derivedReportPathYearId = _yearList.find(x => x.reportYear === this.state.parentReportPathYearText)?.reportPathId || '';\r\n }\r\n\r\n this.setState({\r\n yearList: _yearList,\r\n selectedReportPathYearId: derivedReportPathYearId,\r\n parentReportPathYearText: '', // clear it so it won't interfer the 2ndTime\r\n fetchResult: ResultStatus.LOADED\r\n }, () => {\r\n if (!cancelSubscriptions && this.state.isUpdate) {\r\n this.fetchGridData(); // called via edit\r\n }\r\n });\r\n },\r\n (error) => {\r\n console.error(error);\r\n ToastService.showError('Error fetching Years for the selected Report.');\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n\r\n );\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n }\r\n\r\n handleReportChange = (e) => {\r\n this.setState({\r\n selectedReportId: e.target.value, // set the selected reportId\r\n selectedReportPathYearId: '', // clear the previously selected year\r\n gridData: [] // clear the grid\r\n },\r\n () => { this.fetchYears(true); } //-> reload the years\r\n )\r\n };\r\n\r\n handleYearChange = (e) => {\r\n this.setState({\r\n selectedReportPathYearId: e.target.value, // set the selected year\r\n gridData: [] // clear the grid\r\n },\r\n () => { this.fetchGridData() } // fetch the grid data\r\n );\r\n }\r\n\r\n handleFieldChange = (e) => {\r\n this.setState({\r\n selectedFieldId: e.target.value, // set the selected field id\r\n gridData: [] // clear the grid\r\n },\r\n () => { this.fetchGridData() } // fetch the grid data\r\n );\r\n }\r\n\r\n fetchGridData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ gridData: [] });\r\n const { selectedReportId, selectedReportPathYearId, selectedFieldId } = this.state;\r\n\r\n if (selectedReportId > 0 && selectedReportPathYearId > 0 && selectedFieldId > 0) {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ComplianceReportDetailsDialogService.getReportMappings(this.context.user.tenantId, selectedReportPathYearId, selectedReportPathYearId, selectedFieldId),\r\n ComplianceReportDetailsDialogService.getReportValueDropdownAsOBS(this.context.user.tenantId, selectedFieldId, selectedReportPathYearId)\r\n ]).subscribe(\r\n ([_gridData, _reportValueDropdownList]) => {\r\n console.log(_gridData);\r\n this.setState(\r\n {\r\n gridData: _gridData ?? [],\r\n reportValueDropdownList: [{ 'reportMappingId': 0, 'reportMappingName': \"\" }, ..._reportValueDropdownList],\r\n }, () => this.setState({ fetchResult: ResultStatus.LOADED })\r\n )\r\n },\r\n (error) => {\r\n console.error(error);\r\n ToastService.showError('Error fetching Data.');\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n handleReportValueChanged = (_cellRef, _params) => {\r\n if (_cellRef.props.data.reportMappingId > 0) {\r\n const newReportableValue = this.state.reportValueDropdownList.find(r => r.reportMappingId === _cellRef.props.data.reportMappingId).reportable;\r\n _params.node.setDataValue('reportable', newReportableValue);\r\n } else {\r\n _params.node.setDataValue('reportable', \"\");\r\n _params.node.setDataValue('reportMappingId', 0);\r\n }\r\n }\r\n reportValueComparator = (valueA, valueB, nodeA, nodeB, isInverted) => {\r\n if (DataService.isNullOrUndefined(nodeA.data.reportMappingName))\r\n return 1;\r\n else if (DataService.isNullOrUndefined(nodeB.data.reportMappingName))\r\n return -1;\r\n else if (nodeA.data.reportMappingName === nodeB.data.reportMappingName) return 0;\r\n return (nodeA.data.reportMappingName > nodeB.data.reportMappingName) ? 1 : -1;\r\n };\r\n\r\n handleClose = (isReloadRequired) => {\r\n this.props.onClose(isReloadRequired, this.state.selectedReportId);\r\n }\r\n\r\n render() {\r\n const { classes, open } = this.props;\r\n return (\r\n {\r\n this.onClose(false)\r\n }} >\r\n {/* DialogTitle */}\r\n < DialogTitle disableTypography id=\"dialogTitle\" >\r\n \r\n \r\n Mapping Detail\r\n {LayoutService.getReadOnlyActions(this, this.state.isNew,\r\n () => this.handleClose(false), // onClose\r\n () => this.handleSave(), // on Save\r\n )}\r\n \r\n \r\n \r\n {/* DialogContent */}\r\n < DialogContent style={{ paddingInline: 24, paddingBottom: 24 }}>\r\n {this.renderContent()}\r\n \r\n \r\n );\r\n }\r\n\r\n renderContent = () => {\r\n const { classes } = this.props;\r\n const { fetchResult, isUpdate, isReadOnly, agGridUtils, gridData, saveStatus,\r\n reportList, selectedReportId, yearList, selectedReportPathYearId, fieldList, selectedFieldId,\r\n } = this.state;\r\n\r\n if ((isUpdate && RolePermissionService.COMPLIANCE_REPORT_MAPPING_DETAIL.cannotView)) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.handleClose(false); });\r\n } else {\r\n agGridUtils.disableEditability(isReadOnly);\r\n switch (fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n {saveStatus === SaveStatus.START ? : null}\r\n {saveStatus === SaveStatus.ERROR ? {this.state.errorMessage} : null\r\n }\r\n\r\n
    \r\n {LayoutService.getSimpleDropDown('reportName', selectedReportId, \"Report Name\", reportList, \"id\", \"text\", this.handleReportChange, { minWidth: '336px' })}\r\n {LayoutService.getSimpleDropDown('year', selectedReportPathYearId, \"Year\", yearList, \"reportPathId\", \"reportYear\", this.handleYearChange, { width: '312px' })}\r\n {LayoutService.getSimpleDropDown('field', selectedFieldId, \"Field\", fieldList, \"fieldId\", \"fieldName\", this.handleFieldChange, { width: '256px' })}\r\n
    \r\n\r\n
    \r\n {\r\n agGridUtils.setGridParams(e, true);\r\n agGridUtils.disableEditability(isReadOnly);\r\n }}\r\n />\r\n
    \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ();\r\n }\r\n }\r\n\r\n }\r\n\r\n handleSave = async () => {\r\n\r\n if (this.state.saveStatus === SaveStatus.START) {\r\n ToastService.showWarning('Save Already In Progress...');\r\n return;\r\n } else if (this.state.selectedReportId > 0 && this.state.selectedReportPathYearId > 0 && this.state.selectedFieldId > 0) {\r\n this.setState({ saveStatus: SaveStatus.START }, () => {\r\n let _fieldId = 0;\r\n let _reportId = 0;\r\n let arrNodes = [];\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n _fieldId = rowNode.data.fieldId;\r\n _reportId = rowNode.data.reportId;\r\n arrNodes.push({\r\n fieldId: rowNode.data.fieldId,\r\n reportId: this.state.selectedReportPathYearId,\r\n year: rowNode.data.year,\r\n customerFieldId: rowNode.data.customerFieldId,\r\n customerFieldValue: rowNode.data.customerFieldValue,\r\n porzioGSTFieldId: rowNode.data.porzioGSTFieldId,\r\n porzioGSTFieldValue: rowNode.data.porzioGSTFieldValue,\r\n reportMappingId: rowNode.data.reportMappingId,\r\n //reportMappingName: this.state.reportValueDropdownList[Number(rowNode.data.reportMappingId)],\r\n isMappingChanged: rowNode.data.isMappingChanged,\r\n reportable: rowNode.data.reportable,\r\n });\r\n });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n fieldId: String(_fieldId),\r\n // reportId: String(this.state.selectedReportId), // String(_reportId),\r\n reportId: String(this.state.selectedReportPathYearId),\r\n year: this.state.yearList.find(y => y.reportPathId === this.state.selectedReportPathYearId).reportYear, // String(this.state.selectedYearId),\r\n complianceReportMapping: JSON.stringify(arrNodes),\r\n };\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\"POST\", API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/SaveReportMappings/${this.context.user.tenantId}/${this.context.user.userId}`,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Saved successfully.\");\r\n this.setState({ saveStatus: SaveStatus.SUCCESS, errorMessage: null });\r\n this.props.onClose(true, this.state.selectedReportId);\r\n } else { this.flashError('Error Occured while Saving.!!!'); }\r\n },\r\n (errorResult) => this.flashError(errorResult.message)\r\n );\r\n });\r\n } else {\r\n ToastService.showWarning('Nothing to Save.');\r\n }\r\n }\r\n\r\n flashError = (errorMessage) => {\r\n ToastService.showError(\"Error Occured.\");\r\n this.setState({\r\n saveStatus: ResultStatus.ERROR,\r\n errorMessage: errorMessage\r\n });\r\n // hide the error message after 5 seconds\r\n setTimeout(() => { this.setState({ errorMessage: null }) }, 5000);\r\n }\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(ComplianceReportDetailsDialogComponent);","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport clsx from \"clsx\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray, DataService } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\n\r\nimport { Typography, Divider, Grid, Tooltip, IconButton, MenuItem, Select } from \"@material-ui/core\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\n\r\nimport ChildMessageRendererComponent from \"./compliance-default-details/childMessageRendererComponent\";\r\nimport ComplianceReportMappingService from \"./complianceReportMappingService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport ComplianceReportDetailsDialogComponent from \"./compliance-report-details-dialog/complianceReportDetailsDialogComponent\";\r\n\r\n\r\nclass ComplianceReportMappingComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n },\r\n showDialog: false,\r\n modalAgNode: null,\r\n selectedEntityId: 0,\r\n selectedFieldId: 0,\r\n selectedReportId: 0,\r\n selectedYearId: 0,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ComplianceReportMappingService.getPorzioFieldListAsOBS(this.context.user.tenantId),\r\n ComplianceReportMappingService.getEntityListAsOBS(this.context.user.tenantId),\r\n ComplianceReportMappingService.getYearsByReportId(this.context.user.tenantId, this.state.selectedReportId === 0 ? undefined : this.state.selectedReportId),\r\n ComplianceReportMappingService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 1),\r\n ComplianceReportMappingService.getComplianceEntityFieldsAsOBS(this.context.user.tenantId, 2),\r\n ]).subscribe(\r\n // success\r\n ([_data, _entityList, _yearList, _profileFieldList, _transactionFieldList]) => {\r\n let tempData = [];\r\n let tempFieldList = [];\r\n let pushedReportNames = [];\r\n _data.forEach(x => {\r\n\r\n // for display purposes\r\n x.isCustomMappingText = x.isPZMapping === true ? \"\" : \"Yes\";\r\n\r\n let flag = 0;\r\n for (let i = 0; i < tempData.length; i++) {\r\n if (tempData[i].reportId === x.reportId) {\r\n flag = 1;\r\n }\r\n }\r\n if (flag === 1) { flag = 0; }\r\n else {\r\n if (!pushedReportNames.includes(x.reportName)) {\r\n pushedReportNames.push(x.reportName)\r\n tempData.push(x)\r\n }\r\n }\r\n })\r\n\r\n _profileFieldList = _profileFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n _transactionFieldList = _transactionFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n tempData = tempData.sort((a, b) => a.reportName.localeCompare(b.reportName));\r\n\r\n tempFieldList = [{ fieldId: 0, fieldName: \"All\" }, ..._profileFieldList, ..._transactionFieldList];\r\n tempFieldList = tempFieldList.sort((a, b) => a.fieldName.localeCompare(b.fieldName));\r\n\r\n _yearList = _yearList.filter((obj, pos, arr) => {\r\n return arr.map(mapObj => mapObj[\"reportYear\"]).indexOf(obj[\"reportYear\"]) === pos;\r\n });\r\n \r\n let _reportsList = DataService.getKeyValueCollection(tempData, \"reportId\", \"reportName\", false);\r\n this.setState(\r\n {\r\n data: _data ? _data.sort((a, b) => a.reportName.localeCompare(b.reportName)) : [],\r\n entityList: [{ entityId: 0, entityName: \"All\" }, ..._entityList],\r\n fieldList: tempFieldList,\r\n fieldListWithAll: tempFieldList,\r\n reportsList: _reportsList,\r\n reportsListForCreate: _reportsList,\r\n reportsListWithAll: [{ id: 0, text: \"All\" }, ..._reportsList],\r\n yearList: [{ id: 0, text: \"All\" }, ...DataService.getKeyValueCollection(_yearList, \"reportPathId\", \"reportYear\")],\r\n profileFieldList: [{ fieldId: 0, fieldName: \"All\" }, ..._profileFieldList],\r\n transactionFieldList: [{ fieldId: 0, fieldName: \"All\" }, ..._transactionFieldList],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n this.setFilters(event.api);\r\n };\r\n\r\n setFilters = (_agGridApi) => {\r\n if (this.state.selectedReportId > 0) {\r\n this.gridApi.setFilterModel({\r\n reportName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.reportsListWithAll.find(x => x.id === this.state.selectedReportId).text,\r\n },\r\n });\r\n this.fetchYear(this.state.selectedReportId);\r\n }\r\n }\r\n\r\n onEntitySelectClick = (event) => {\r\n console.log(event);\r\n this.setState({\r\n selectedEntityId: event.target.value,\r\n //selectedReportId: 0,\r\n //selectedYearId: 0,\r\n });\r\n\r\n switch (event.target.value) {\r\n case 0: this.setState({ fieldList: this.state.fieldListWithAll, selectedFieldId: 0, }); break;\r\n case 1: this.setState({ fieldList: this.state.profileFieldList, selectedFieldId: 0, }); break;\r\n case 2: this.setState({ fieldList: this.state.transactionFieldList, selectedFieldId: 0, }); break;\r\n default: this.setState({ selectedEntityId: event.target.value, selectedFieldId: 0, }); break;\r\n }\r\n\r\n this.gridApi.setFilterModel(null);\r\n }\r\n\r\n onFieldSelectClick = (event) => {\r\n this.setState({\r\n selectedFieldId: event.target.value,\r\n //selectedReportId: 0,\r\n //selectedYearId: 0,\r\n });\r\n this.gridApi.setFilterModel({\r\n fieldName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === 0 ? null : this.state.fieldList.find(x => x.fieldId === event.target.value).fieldName,\r\n },\r\n reportName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedReportId === 0 ? null : this.state.reportsListWithAll.find(x => x.id === this.state.selectedReportId).text,\r\n },\r\n templateYear: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedYearId === 0 ? null : this.state.yearList.find(x => x.id === this.state.selectedYearId).text,\r\n },\r\n });\r\n }\r\n\r\n onReportSelectClick = (event) => {\r\n this.setState({\r\n selectedReportId: event.target.value,\r\n //selectedYearId: 0,\r\n });\r\n this.gridApi.setFilterModel({\r\n reportName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === 0 ? null : this.state.reportsListWithAll.find(x => x.id === event.target.value).text,\r\n },\r\n fieldName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedFieldId === 0 ? null : this.state.fieldList.find(x => x.fieldId === this.state.selectedFieldId).fieldName,\r\n },\r\n templateYear: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedYearId === 0 ? null : this.state.yearList.find(x => x.id === this.state.selectedYearId).text,\r\n },\r\n });\r\n this.fetchYear(event.target.value);\r\n }\r\n\r\n fetchYear = (_reportId) => {\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchReportTemplateYears/${this.context.user.tenantId}?reportId=${_reportId}`\r\n ).subscribe(\r\n (successResult) => {\r\n let tempYearList = [];\r\n if (successResult) {\r\n tempYearList = tempYearList.filter((obj, pos, arr) => {\r\n return arr.map(mapObj => mapObj[\"reportYear\"]).indexOf(obj[\"reportYear\"]) === pos;\r\n });\r\n tempYearList = [...DataService.getKeyValueCollection(successResult, \"reportPathId\", \"reportYear\")];\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n yearList: [{ id: 0, text: \"All\" }, ...tempYearList.sort((a, b) => a.text.localeCompare(b.text))],\r\n });\r\n } else { this.setState({ fetchResult: ResultStatus.ERROR }); }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Product\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n onYearSelectClick = (event) => {\r\n this.setState({ selectedYearId: event.target.value });\r\n this.gridApi.setFilterModel({\r\n templateYear: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === 0 ? null : this.state.yearList.find(x => x.id === event.target.value).text,\r\n },\r\n reportName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedReportId === 0 ? null : this.state.reportsListWithAll.find(x => x.id === this.state.selectedReportId).text,\r\n },\r\n fieldName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedFieldId === 0 ? null : this.state.fieldList.find(x => x.fieldId === this.state.selectedFieldId).fieldName,\r\n }\r\n });\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: `Compliance_Report_Mapping ${new Date().toDateString()}`\r\n };\r\n }\r\n\r\n methodFromParent = (cell, data) => {\r\n this.setState({ modalAgNode: data, inputAction: CrudAction.UPDATE, showDialog: true });\r\n };\r\n\r\n handleCreate = () => {\r\n this.setState({ inputAction: CrudAction.CREATE, modalAgNode: null, showDialog: true });\r\n }\r\n\r\n handleReload = (_selectedReportId) => {\r\n this.setState({ selectedReportId: _selectedReportId },\r\n () => { this.fetchData() }\r\n );\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const pageName = \"Report Mapping\";\r\n if (RolePermissionService.COMPLIANCE_REPORT_MAPPING_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack(); });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n {\r\n this.onFieldSelectClick(event);\r\n }}\r\n\r\n reportComplianceSelect\r\n selectedReportId={this.state.selectedReportId}\r\n reportSelectData={this.state.reportsListWithAll}\r\n onReportSelectClick={(event) => {\r\n this.onReportSelectClick(event);\r\n }}\r\n\r\n yearComplianceSelect\r\n selectedYearId={this.state.selectedYearId}\r\n yearList={this.state.yearList}\r\n onYearSelectClick={(event) => {\r\n this.onYearSelectClick(event);\r\n }}\r\n download onDownloadClick={this.onDownloadClick}\r\n addCircle\r\n onAddClick={this.handleCreate}\r\n\r\n />\r\n
    \r\n
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    \r\n\r\n {this.state.showDialog ?\r\n {\r\n this.setState({ showDialog: false }, () => {\r\n if (_reloadRequired) { this.handleReload(_selectedReportId); }\r\n });\r\n }}\r\n modalAgNode={this.state.modalAgNode}\r\n selectedReportName={this.state.inputAction === CrudAction.CREATE ? '' : this.state.modalAgNode?.reportName}\r\n reportList={this.state.inputAction === CrudAction.UPDATE ? this.state.reportsList\r\n : this.state.reportsListForCreate}\r\n />\r\n : null\r\n }\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return ( { this.fetchData(true); }} />);\r\n default:\r\n return null;\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass CompliancePageHeaderComponent extends Component {\r\n render() {\r\n const { small, classes, history, label, back, menu, search, entityComplianceSelect, fieldComplianceSelect, reportComplianceSelect, yearComplianceSelect, countrySelect, importTemplate, uploadFile, save, add, addCircle, view, reload, ok, cancel, noDivider, noDividerSpacing, download } = this.props;\r\n const showButtons = back || menu || search || entityComplianceSelect || countrySelect || importTemplate || uploadFile || save || add || addCircle || view || reload || ok || cancel || download;\r\n\r\n return (\r\n \r\n \r\n \r\n {back ? (\r\n \r\n { history.goBack(); }}>{MatIconService.BACK}\r\n \r\n ) : null}\r\n\r\n \r\n {label}\r\n \r\n\r\n {entityComplianceSelect ? (\r\n <>\r\n Entity:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.entitySelectData.map((el) => (\r\n \r\n {el.entityName}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {fieldComplianceSelect ? (\r\n <>\r\n Field:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.fieldSelectData.map((el) => (\r\n \r\n {el.fieldName}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {reportComplianceSelect ? (\r\n <>\r\n Report Name:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.reportSelectData.map((el) => (\r\n \r\n {el.text}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {yearComplianceSelect ? (\r\n <>\r\n Year:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.yearList.map((el) => (\r\n \r\n {el.text}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {download && RolePermissionService.COMPLIANCE_REPORT_MAPPING_EXPORT.canView ? (\r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n ) : null}\r\n\r\n {(add || addCircle) && RolePermissionService.COMPLIANCE_REPORT_MAPPING_DETAIL.canCreate ? (\r\n \r\n \r\n {addCircle ? MatIconService.ADD_CIRCLE_OUTLINE : MatIconService.ADD}\r\n \r\n \r\n ) : null}\r\n\r\n {reload ? (\r\n \r\n \r\n {MatIconService.RELOAD}\r\n \r\n \r\n ) : null}\r\n \r\n {noDivider || noDividerSpacing ? (\r\n {!noDivider && MatSpecService.showPageTitleDivider ? : null}\r\n ) : (\r\n {MatSpecService.showPageTitleDivider ? : null}\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(ComplianceReportMappingComponent);","import React, { Component } from \"react\";\r\n\r\nexport default class ReportYearAgGridRendererComponent extends Component {\r\n\r\n invokeParentMethod = () => {\r\n this.props.context.componentParent.showConsentMappingDialog(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class ComplianceConsentMappingService {\r\n\r\n static fetchConsentMappingsAsOBS = (_tenantId,) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchConsentMappings/${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 5000,\r\n searchText: \"\",\r\n entityId: \"\",\r\n fieldId: \"\",\r\n reportId: \"\",\r\n reportName: \"0\",\r\n year: \"0\"\r\n }),\r\n );\r\n };\r\n\r\n static fetchReportMappings = (_tenantId,) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchReportMappings/${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 50000,\r\n searchText: \"\",\r\n entityId: \"\",\r\n fieldId: \"\"\r\n }),\r\n );\r\n };\r\n\r\n static getYearsByReportId = (_tenantId, _reportId) => {\r\n let $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}`\r\n if (_reportId !== 0) {\r\n $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}?reportId=${_reportId}`\r\n }\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, $url);\r\n };\r\n\r\n static getEntityListAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntitiesForDefaultMapping/${_tenantId}`\r\n );\r\n };\r\n\r\n static getComplianceEntityFieldsAsOBS = (_tenantId, _entityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntityFields/${_tenantId}/${_entityId}?entityId=${_entityId}`\r\n );\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Report Name\",\r\n field: \"reportName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Template Year\",\r\n field: \"templateYear\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n cellRenderer: \"reportYearAgGridRendererComponent\",\r\n },\r\n {\r\n headerName: \"Profile Consent Value\",\r\n field: \"profileConsentValue\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Agreement Consent Value\",\r\n field: \"agreementConsentValue\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Transaction Consent Value\",\r\n field: \"transactionConsentValue\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Reportable\",\r\n field: \"reportable\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n ];\r\n }\r\n}\r\n","import { ReplaySubject } from 'rxjs';\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { AgGridService } from \"../../../../shared/services/ag-grid/agGridService\";\r\n\r\nexport default class EditConsentProcessingService {\r\n\r\n static getComplianceReportMappingProcessingAsOBS = (_tenantId, _reportName, _verifiedYear) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/GetProcessing/${_tenantId}?reportName=${_reportName}&verifiedYear=${_verifiedYear}`\r\n );\r\n };\r\n\r\n static fetchReportMappings = (_tenantId,) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchReportMappings/${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 5000,\r\n searchText: \"\",\r\n entityId: \"\",\r\n fieldId: \"\"\r\n }),\r\n );\r\n };\r\n\r\n static getYearsByReportId = (_tenantId, _reportId) => {\r\n let $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}`\r\n if (_reportId !== 0) {\r\n $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}?reportId=${_reportId}`\r\n }\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, $url);\r\n };\r\n\r\n //#region Address Grid\r\n static validateAffiliateRowEditOBS = (_cellRef) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // static/async validation logic should trigger the below\r\n oSubject.next({ isSuccess: true }); // true <- success\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n static getColumnDefs = (_componentThisRef, _isReadOnly, _agGridUtils) => {\r\n return [\r\n // edit button column\r\n _agGridUtils.getInlineEditActionColumn(true, this.validateAffiliateRowEditOBS),\r\n // other columns\r\n\r\n AgGridService.getDropdownColumn(\r\n \"Report Identifier\",\r\n \"reportIdentifierId\",\r\n _componentThisRef.state.reportIdentifierList,\r\n true\r\n ),\r\n AgGridService.getTextColumn(\r\n true,\r\n \"Report Identifier Value\",\r\n \"reportIdentifierValue\"\r\n ),\r\n ];\r\n };\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport clsx from \"clsx\";\r\nimport { withStyles, Divider, Grid, FormGroup, FormControl, FormControlLabel, IconButton, MenuItem, Radio, RadioGroup, Select, Tooltip, Typography } from \"@material-ui/core\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, ReportableMap, } from \"../../../../shared/types/enums\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport MatSpecService from \"../../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport SectionComponent from \"../../../../shared/components/sectionComponent\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport EditConsentProcessingService from \"./editConsentProcessingService\";\r\nimport ActionDialog from \"../../../../shared/components/dialog/actionDialog\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass EditConsentProcessingComponent extends React.Component {\r\n static contextType = AuthContext;\r\n\r\n oSubscriptions = new SubscriptionArray();\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n fetchResult: ResultStatus.SUCCESS,\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n reportable: 250,//this.props.inputAction === CrudAction.CREATE ? 250 : null,\r\n reportsListWithAll: [],\r\n yearList: [],\r\n selectedReportId: this.props.modalAgNode.reportId,\r\n selectedYearId: this.props.modalAgNode.reportPathId,\r\n selectedVerifiedYearId: this.props.modalAgNode.templateYearLov,\r\n selectedReportName: this.props.modalAgNode.reportName,\r\n showConfirmDialog: false,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n\r\n this.setState({ fetchResult: ResultStatus.LOADING, processingObj: {} });\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n EditConsentProcessingService.getComplianceReportMappingProcessingAsOBS(this.context.user.tenantId, this.state.selectedReportName, this.state.selectedVerifiedYearId),\r\n EditConsentProcessingService.fetchReportMappings(this.context.user.tenantId,),\r\n EditConsentProcessingService.getYearsByReportId(this.context.user.tenantId, this.state.selectedReportId),\r\n ]).subscribe(\r\n ([_processingObj, _reportList, _yearList,]) => {\r\n const _arrReportsObjsDupes = _reportList.map(r => ({ id: r.reportId, text: r.reportName }));\r\n let _arrReportsObjs = _arrReportsObjsDupes.filter((dupeReport, index, self) =>\r\n index === self.findIndex((dedupedReport) => (\r\n dedupedReport.text === dupeReport.text)));\r\n _arrReportsObjs = _arrReportsObjs.slice().sort((a, b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0));\r\n _arrReportsObjs = _arrReportsObjs.filter(x => !LookupService.REPORTS_TO_BE_REMOVED_CONSENT.includes(x.text));\r\n\r\n _yearList = _yearList.map(r => ({ id: r.reportPathId, text: r.reportYear }));\r\n _yearList = _yearList.filter((dupeReport, index, self) =>\r\n index === self.findIndex((dedupedReport) => (\r\n dedupedReport.text === dupeReport.text)));\r\n _yearList = _yearList.slice().sort((a, b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0))\r\n this.setState(\r\n {\r\n processingObj: _processingObj,\r\n reportable: _processingObj.reportable,\r\n reportsListWithAll: [..._arrReportsObjs],\r\n yearList: [..._yearList],\r\n },\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n );\r\n },\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n\r\n }\r\n\r\n fetchGetListData = async (tenantSelectList, isLoadingKey, dataKey) => {\r\n this.setState({ [isLoadingKey]: true });\r\n try {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Util/GetMasterSubSet/${this.context.user.tenantId}/${tenantSelectList}`\r\n );\r\n const json = await result.json();\r\n this.setState({ [dataKey]: json, [isLoadingKey]: false });\r\n } catch (error) {\r\n console.log(`GetList ${tenantSelectList} Error:`, error);\r\n }\r\n };\r\n\r\n onReportSelectClick = (event) => {\r\n this.setState(\r\n {\r\n selectedReportName: event.target.value,\r\n selectedReportId: this.state.reportsListWithAll.find(x => x.text === event.target.value).id,\r\n selectedYearId: 0,\r\n },\r\n () => {\r\n // Note: This ia an ugly shortcut just for now\r\n this.fetchYear(this.state.selectedReportId, this.setVerifiedYear);\r\n }\r\n );\r\n }\r\n\r\n fetchYear = (_reportId, _callbackOnSuccess = null) => {\r\n let url = `/ComplianceMapping/FetchReportTemplateYears/${this.context.user.tenantId}`\r\n if (_reportId !== 0) {\r\n url = `/ComplianceMapping/FetchReportTemplateYears/${this.context.user.tenantId}?reportId=${_reportId}`\r\n }\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n url\r\n ).subscribe(\r\n (successResult) => {\r\n let _yearList = successResult;\r\n if (_yearList) {\r\n _yearList = _yearList.map(r => ({ id: r.reportPathId, text: r.reportYear }));\r\n _yearList = _yearList.filter((dupeReport, index, self) =>\r\n index === self.findIndex((dedupedReport) => (\r\n dedupedReport.text === dupeReport.text)));\r\n _yearList = _yearList.slice().sort((a, b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0))\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n yearList: [..._yearList],\r\n }, () => {\r\n if (this.state.selectedYearId === 0) {\r\n this.setState({ selectedYearId: this.state.yearList[0].id }, () => {\r\n if (_callbackOnSuccess) { _callbackOnSuccess(this.state.yearList[0].text, this.fetchProcessingObj); }\r\n })\r\n }\r\n else {\r\n if (_callbackOnSuccess) {\r\n _callbackOnSuccess(this.state.yearList.find(x => x.id === this.state.selectedYearId).text,\r\n this.fetchProcessingObj);\r\n }\r\n }\r\n });\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Product\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n setVerifiedYear = (_templateYear, _callbackOnSuccess = null) => {\r\n ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/VerifyTemplateYear/${this.context.user.tenantId}/${_templateYear}`\r\n ).subscribe(\r\n (successResult) => {\r\n this.setState({ selectedVerifiedYearId: successResult }, () => {\r\n if (_callbackOnSuccess) { _callbackOnSuccess(this.state.selectedVerifiedYearId); }\r\n });\r\n },\r\n (errorResult) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n }\r\n\r\n onYearSelectClick = (event) => {\r\n this.setState(\r\n {\r\n selectedYearId: event.target.value,\r\n },\r\n () => {\r\n this.setVerifiedYear(this.state.yearList.find(x => x.id === this.state.selectedYearId).text, this.fetchProcessingObj);\r\n //this.fetchProcessingObj(this.state.selectedVerifiedYearId);\r\n }\r\n );\r\n }\r\n\r\n fetchProcessingObj = (_verifiedYear) => {\r\n const reportObj = this.state.reportsListWithAll.find((reportObj) => (reportObj.id === this.state.selectedReportId));\r\n const _reportName = reportObj?.text ?? \"\";\r\n this.setState({ fetchResult: ResultStatus.LOADING, processingObj: {} });\r\n\r\n ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/GetProcessing/${this.context.user.tenantId}?reportName=${_reportName}&verifiedYear=${_verifiedYear}`\r\n ).subscribe(\r\n (successResult) => {\r\n let _processingObj = successResult;\r\n if (_processingObj) {\r\n this.setState({\r\n processingObj: _processingObj,\r\n reportable: _processingObj.reportable\r\n },\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n );\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Product\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n isProfileConsent: false,\r\n isAgreementConsent: false,\r\n isTransactionConsent: false,\r\n isConsentGrouping: false,\r\n isLinkedProfles: false,\r\n reportable: 250,\r\n };\r\n } else {\r\n return {\r\n isProfileConsent: this.state.processingObj?.profileConsent,\r\n isAgreementConsent: this.state.processingObj?.agreementConsent,\r\n isTransactionConsent: this.state.processingObj?.transactionConsent,\r\n isConsentGrouping: this.state.processingObj?.consentGrouping,\r\n isLinkedProfles: this.state.processingObj?.linkedProfiles,\r\n reportable: this.state.reportable,\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleReportableRadioChange = (event) => {\r\n console.log(\"handleReportableRadioChange\", event);\r\n event.persist();\r\n this.setState({ reportable: Number(event.target.value) });\r\n\r\n }\r\n handleConsentGrouping = (_checked) => {\r\n if (!_checked) {\r\n this.setState({ reportable: 0 });\r\n } else {\r\n this.setState({ reportable: 250 });\r\n }\r\n }\r\n\r\n handleConfirmDialog = (_formikProps) => {\r\n if (Object.keys(_formikProps.touched).length !== 0) {\r\n this.setState({ showConfirmDialog: true });\r\n }\r\n else {\r\n this.handleSubmit(_formikProps);\r\n }\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n // console.log(_formikProps);\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema\r\n .validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n reportDisplayName: this.state.processingObj.reportDisplayName,\r\n reportYear: this.state.processingObj.reportYear,\r\n profileConsent: _formikProps.values.isProfileConsent,\r\n agreementConsent: _formikProps.values.isAgreementConsent,\r\n transactionConsent: _formikProps.values.isTransactionConsent,\r\n consentGrouping: _formikProps.values.isConsentGrouping,\r\n reportable: _formikProps.values.isConsentGrouping ? this.state.reportable : 0,\r\n linkedProfiles: _formikProps.values.isLinkedProfles,\r\n reportableText: ReportableMap[this.state.reportable],\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n const actionVerb = \"POST\";\r\n const targetUrl = `/ComplianceMapping/SaveConsentProcessing/${this.context.user.tenantId}/${this.context.user.userId}`;\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n // UPDATE\r\n mappedObj.reportPathId = this.props.modalAgNode.reportPathId;\r\n } else {\r\n // CREATE\r\n mappedObj.reportPathId = 0;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshList(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Product\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(erroObj);\r\n if (erroObj.inner) {\r\n erroObj.inner.forEach((err) => {\r\n _formikProps.setFieldError(err.path, err.message);\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n const pageName = \"Consent Mapping\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n {\r\n this.handleSubmit(fProps)\r\n this.setState({ showConfirmDialog: false });\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n {\r\n this.onReportSelectClick(event);\r\n }}\r\n\r\n yearComplianceSelect\r\n selectedYearId={this.state.selectedYearId}\r\n yearList={this.state.yearList}\r\n onYearSelectClick={(event) => {\r\n this.onYearSelectClick(event);\r\n }}\r\n\r\n />\r\n\r\n \r\n \r\n { this.handleConfirmDialog(fProps) })\r\n }\r\n />\r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isProfileConsent\", \"Profile Consent\")}\r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isAgreementConsent\", \"Agreement Consent\")}\r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isTransactionConsent\", \"Transaction Consent\")}\r\n \r\n \r\n\r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isConsentGrouping\", \"Group in Compliance Report by Consent Mapping\", true, \"47%\", \"medium\", this.handleConsentGrouping)}\r\n \r\n \r\n\r\n \r\n \r\n this.handleReportableRadioChange(e)}>\r\n } label=\"Reportable - Direct\" />\r\n } label=\"Reportable - Aggregate\" />\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isLinkedProfles\", \"Report by linked parent Profile Consent\")}\r\n \r\n \r\n\r\n {/*
    {JSON.stringify(this.props, null, 2)}
    \r\n
    {JSON.stringify(this.state, null, 2)}
    */}\r\n\r\n
    \r\n \r\n )}\r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.props.onClose(false);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\nclass CompliancePageHeaderComponent extends Component {\r\n render() {\r\n const { small, classes, history, label, back, menu, search, reportComplianceSelect, yearComplianceSelect, countrySelect, importTemplate, uploadFile, save, add, addCircle, view, reload, ok, cancel, noDivider, noDividerSpacing, download } = this.props;\r\n const showButtons = back || menu || search || countrySelect || importTemplate || uploadFile || save || add || addCircle || view || reload || ok || cancel || download;\r\n\r\n return (\r\n \r\n \r\n \r\n {back ? (\r\n \r\n { history.goBack(); }}>{MatIconService.BACK}\r\n \r\n ) : null}\r\n\r\n \r\n {label}\r\n \r\n\r\n {reportComplianceSelect ? (\r\n <>\r\n Report Name:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.reportSelectData.map((el) => (\r\n \r\n {el.text}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {yearComplianceSelect ? (\r\n <>\r\n Year:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.yearList.map((el) => (\r\n \r\n {el.text}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {download ? (\r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n ) : null}\r\n\r\n {add || addCircle ? (\r\n \r\n \r\n {addCircle ? MatIconService.ADD_CIRCLE_OUTLINE : MatIconService.ADD}\r\n \r\n \r\n ) : null}\r\n\r\n {reload ? (\r\n \r\n \r\n {MatIconService.RELOAD}\r\n \r\n \r\n ) : null}\r\n \r\n {noDivider || noDividerSpacing ? (\r\n {!noDivider && MatSpecService.showPageTitleDivider ? : null}\r\n ) : (\r\n {MatSpecService.showPageTitleDivider ? : null}\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\n\r\n/** HOC */\r\nexport default withStyles(MatClassService)(EditConsentProcessingComponent);\r\n","import React, { Component } from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { Typography, Divider, Grid, Tooltip, IconButton, MenuItem, Select } from \"@material-ui/core\";\r\n\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport MatSpecService from \"../../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\n\r\nclass CompliancePageHeaderComponent extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n reportSelectData: this.props.reportSelectData,\r\n yearList: this.props.yearList,\r\n } \r\n }\r\n\r\n render() {\r\n const { small, classes, history, label, back, menu, search, reportComplianceSelect, yearComplianceSelect, countrySelect, importTemplate, uploadFile, save, add, addCircle, view, reload, ok, cancel, noDivider, noDividerSpacing, download } = this.props;\r\n const showButtons = back || menu || search || countrySelect || importTemplate || uploadFile || save || add || addCircle || view || reload || ok || cancel || download;\r\n\r\n console.log(\"this.props.reportSelectData\", JSON.stringify(this.props.reportSelectData, null, 2));\r\n\r\n return (\r\n \r\n \r\n \r\n {back ? (\r\n \r\n { history.goBack(); }}>{MatIconService.BACK}\r\n \r\n ) : null}\r\n\r\n \r\n {label}\r\n \r\n\r\n {reportComplianceSelect ? (\r\n <>\r\n Report Name:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.state.reportSelectData.map((el) => (\r\n \r\n {el.text}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {yearComplianceSelect ? (\r\n <>\r\n Year:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.state.yearList.map((el) => (\r\n \r\n {el.text}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {download ? (\r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n ) : null}\r\n\r\n {add || addCircle ? (\r\n \r\n \r\n {addCircle ? MatIconService.ADD_CIRCLE_OUTLINE : MatIconService.ADD}\r\n \r\n \r\n ) : null}\r\n\r\n {reload ? (\r\n \r\n \r\n {MatIconService.RELOAD}\r\n \r\n \r\n ) : null}\r\n \r\n {noDivider || noDividerSpacing ? (\r\n {!noDivider && MatSpecService.showPageTitleDivider ? : null}\r\n ) : (\r\n {MatSpecService.showPageTitleDivider ? : null}\r\n )}\r\n\r\n {/*
    {JSON.stringify(this.props, null, 2)}
    \r\n
    {JSON.stringify(this.state, null, 2)}
    */}\r\n\r\n\r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(CompliancePageHeaderComponent);\r\n","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\n\r\nexport default class EditConsentMappingService {\r\n\r\n static fetchConsentMappingsAsOBS = (_tenantId, _reportName = \"0\", _year = \"0\") => {\r\n if (_reportName !== 0) {\r\n // prepend \"Compliance\\\\\" for dialog only, not for the home screen\r\n _reportName = `Compliance\\\\${_reportName}`\r\n }\r\n\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchConsentMappings/${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 5000,\r\n searchText: \"\",\r\n entityId: \"\",\r\n fieldId: \"\",\r\n reportId: \"\",\r\n reportName: _reportName,\r\n year: String(_year)\r\n }),\r\n );\r\n };\r\n\r\n static fetchReportMappings = (_tenantId,) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchReportMappings/${_tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 5000,\r\n searchText: \"\",\r\n entityId: \"\",\r\n fieldId: \"\"\r\n }),\r\n );\r\n };\r\n\r\n static getYearsByReportId = (_tenantId, _reportId) => {\r\n let $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}`\r\n if (_reportId !== 0) {\r\n $url = `/ComplianceMapping/FetchReportTemplateYears/${_tenantId}?reportId=${_reportId}`\r\n }\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, $url);\r\n };\r\n\r\n static getComplianceEntityFieldsAsOBS = (_tenantId, _entityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/FetchEntityFields/${_tenantId}/${_entityId}`\r\n );\r\n };\r\n\r\n static getColumnDefs(_componentRef) {\r\n return [\r\n {\r\n headerName: \"Profile Consent Value\",\r\n field: \"profileConsentValue\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Agreement Consent Value\",\r\n field: \"agreementConsentValue\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Transaction Consent Value\",\r\n field: \"transactionConsentValue\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n\r\n // {\r\n // headerName: \"Reportable Id\",\r\n // field: \"reportableId\",\r\n // sortable: true,\r\n // filter: \"agTextColumnFilter\",\r\n // cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n // resizable: true,\r\n // width: 75,\r\n // },\r\n // {\r\n // headerName: \"Reportable Name\",\r\n // field: \"reportable\",\r\n // sortable: true,\r\n // filter: \"agTextColumnFilter\",\r\n // cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n // resizable: true,\r\n // },\r\n\r\n // {\r\n // headerName: \"Reportable\",\r\n // field: \"reportableId\",\r\n // editable: true,\r\n // singleClickEdit: true,\r\n // cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n // cellEditor: \"agSelectCellEditor\",\r\n // // refData: { 257: \"Reportable - Direct\", 258: \"Reportable - Aggregate\" },\r\n\r\n // refData: LookupService.COMPLIANCE_CONSENT_REPORTABLE.reduce((obj, item) => Object.assign(obj, { [item.reportableId]: item.reportableName }), {}),\r\n\r\n // cellEditorParams: {\r\n // cellHeight: 20,\r\n // values: DataService.extractKeysAsNumbers(\r\n // LookupService.COMPLIANCE_CONSENT_REPORTABLE.reduce((obj, item) => Object.assign(obj, { [item.reportableId]: item.reportableName }), {})\r\n // ), // extract the keys as numbers\r\n // },\r\n // },\r\n AgGridColumnExt.GET(false, \"text\", \"reportableId\", \"Reportable\").cellRenderer(\"dropDownRenderer\", {\r\n options: _componentRef.state.reportableLovList,\r\n optionKey: \"reportableId\", optionLabel: \"reportableName\",\r\n statusIcon: MatIconService.REPORT,\r\n showStatusCallBack: (_cellRef) => {\r\n if (_cellRef.props.data[\"reportableId\"] !== 0 && _cellRef.props.data[\"isCustomMapping\"] !== undefined) { return _cellRef.props.data[\"isCustomMapping\"]; }\r\n else { return false; }\r\n },\r\n showEmpty: true, emptyValue: 0,\r\n onChangeCallback: (_cellRef, params) => {\r\n _cellRef.props.data.isModified = true;\r\n\r\n //_componentThisRef.handleReportValueChanged(_cellRef, params);\r\n },\r\n }).SET(),\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport clsx from \"clsx\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport SectionComponent from \"../../../../shared/components/sectionComponent\";\r\nimport { SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { ResultStatus, API_ENDPOINT, CrudAction } from \"../../../../shared/types/enums\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport AgGridDropdownWithStatusCellRenderer from \"../../../../shared/components/ag-grid/agGridDropdownWithStatusCellRenderer\";\r\nimport { Typography, Divider, Grid, MenuItem, Select } from \"@material-ui/core\";\r\nimport MatSpecService from \"../../../../shared/services/theme/matSpecService\";\r\nimport CompliancePageHeaderComponent from \"../compliance-consent-details/complianceConsentPageHeaderComponent\";\r\nimport EditConsentMappingService from \"./editConsentMappingService\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport ActionDialog from \"../../../../shared/components/dialog/actionDialog\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass EditConsentMappingComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isReadOnly: true,\r\n isEditing: true,\r\n reportsListWithAll: [],\r\n yearList: [],\r\n reportableLovList: [],\r\n selectedReportId: this.props.modalAgNode.reportId,\r\n showConfirmDialog: false,\r\n //selectedYearId: this.props.modalAgNode.templateYearLov,\r\n selectedYearId: this.props.modalAgNode.reportPathId,\r\n selectedVerifiedYearId: this.props.modalAgNode.templateYearLov,\r\n selectedReportName: this.props.modalAgNode.reportName,\r\n agGridUtils: new AgGridUtil(\"gstLovID\", {\r\n dropDownRenderer: AgGridDropdownWithStatusCellRenderer,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n EditConsentMappingService.fetchConsentMappingsAsOBS(this.context.user.tenantId, this.state.selectedReportName, this.state.selectedVerifiedYearId),\r\n EditConsentMappingService.fetchReportMappings(this.context.user.tenantId,),\r\n EditConsentMappingService.getYearsByReportId(this.context.user.tenantId, this.state.selectedReportId),\r\n ApiService.getOBS(API_ENDPOINT.TENANT, `/Util/GetFieldLOVByName/${this.context.user.tenantId}/reportable`)\r\n ]).subscribe(\r\n // success\r\n ([_data, _reportList, _yearList, _reportableLovList]) => {\r\n _data.forEach(x => {\r\n x.recievedReportableId = x.reportableId;\r\n x.initialCustomMappingValue = x.isCustomMapping;\r\n });\r\n const _arrReportsObjsDupes = _reportList.map(r => ({ id: r.reportId, text: r.reportName }));\r\n _reportableLovList = _reportableLovList.map(x => ({ reportableId: x.lovId, reportableName: x.lovKey }));\r\n let _arrReportsObjs = _arrReportsObjsDupes.filter((dupeReport, index, self) =>\r\n index === self.findIndex((dedupedReport) => (\r\n dedupedReport.text === dupeReport.text)));\r\n _arrReportsObjs = _arrReportsObjs.slice().sort((a, b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0));\r\n _arrReportsObjs = _arrReportsObjs.filter(x => !LookupService.REPORTS_TO_BE_REMOVED_CONSENT.includes(x.text));\r\n\r\n _yearList = _yearList.map(r => ({ id: r.reportPathId, text: r.reportYear }));\r\n _yearList = _yearList.filter((dupeReport, index, self) =>\r\n index === self.findIndex((dedupedReport) => (\r\n dedupedReport.text === dupeReport.text)));\r\n _yearList = _yearList.slice().sort((a, b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0))\r\n this.setState(\r\n {\r\n data: _data,\r\n reportsListWithAll: [..._arrReportsObjs],\r\n reportableLovList: _reportableLovList,\r\n yearList: [..._yearList],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n onReportSelectClick = (event) => {\r\n this.setState(\r\n {\r\n selectedReportName: event.target.value,\r\n selectedReportId: this.state.reportsListWithAll.find(x => x.text === event.target.value).id,\r\n selectedYearId: 0,\r\n },\r\n () => this.fetchYear(this.state.selectedReportId, this.setVerifiedYear)\r\n );\r\n }\r\n\r\n fetchYear = (_reportId, _callbackOnSuccess = null) => {\r\n let url = `/ComplianceMapping/FetchReportTemplateYears/${this.context.user.tenantId}`\r\n if (_reportId !== 0) {\r\n url = `/ComplianceMapping/FetchReportTemplateYears/${this.context.user.tenantId}?reportId=${_reportId}`\r\n }\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n url\r\n ).subscribe(\r\n (successResult) => {\r\n let _yearList = successResult;\r\n if (_yearList) {\r\n _yearList = _yearList.map(r => ({ id: r.reportPathId, text: r.reportYear }));\r\n _yearList = _yearList.filter((dupeReport, index, self) =>\r\n index === self.findIndex((dedupedReport) => (\r\n dedupedReport.text === dupeReport.text)));\r\n _yearList = _yearList.slice().sort((a, b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0))\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n yearList: [..._yearList],\r\n }, () => {\r\n if (this.state.selectedYearId === 0) {\r\n this.setState({ selectedYearId: this.state.yearList[0].id }, () => {\r\n if (_callbackOnSuccess) { _callbackOnSuccess(this.state.yearList[0].text, this.fetchData); }\r\n })\r\n }\r\n else {\r\n if (_callbackOnSuccess) {\r\n _callbackOnSuccess(this.state.yearList.find(x => x.id === this.state.selectedYearId).text,\r\n this.fetchData);\r\n }\r\n }\r\n });\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Product\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n setVerifiedYear = (_templateYear, _callbackOnSuccess = null) => {\r\n ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/VerifyTemplateYear/${this.context.user.tenantId}/${_templateYear}`\r\n ).subscribe(\r\n (successResult) => {\r\n this.setState({ selectedVerifiedYearId: successResult }, () => {\r\n if (_callbackOnSuccess) { _callbackOnSuccess(); }\r\n });\r\n },\r\n (errorResult) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n }\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n //this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n\r\n handleSubmit = async (_formikProps) => {\r\n var arrNodes = [];\r\n this.gridApi.forEachNode((rowNode) => {\r\n arrNodes.push({\r\n profileConsentValue: rowNode.data.profileConsentValue,\r\n agreementConsentValue: rowNode.data.agreementConsentValue,\r\n transactionConsentValue: rowNode.data.transactionConsentValue,\r\n reportName: this.state.selectedReportName,\r\n templateYear: this.props.modalAgNode.templateYear,\r\n reportable: rowNode.data.reportable,\r\n rowsCount: 27,\r\n profileConsentId: rowNode.data.profileConsentId,\r\n agreementConsentId: rowNode.data.agreementConsentId,\r\n transactionConsentId: rowNode.data.transactionConsentId,\r\n reportableId: rowNode.data.reportableId,\r\n templateYearLov: this.state.selectedVerifiedYearId,\r\n // isCustomMapping: rowNode.data.isCustomMapping,\r\n isCustomMapping: (rowNode.data.isCustomMapping && rowNode.data.recievedReportableId !== rowNode.data.reportableId) ?\r\n false :\r\n (!rowNode.data.isCustomMapping && rowNode.data.recievedReportableId !== rowNode.data.reportableId) ?\r\n true : rowNode.data.initialCustomMappingValue,\r\n reportPathId: this.props.modalAgNode.reportPathId,\r\n isModified: rowNode.data.isModified,\r\n });\r\n });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = arrNodes;\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n \"POST\",\r\n API_ENDPOINT.TENANT,\r\n `/ComplianceMapping/SaveConsentMapping/${this.context.user.tenantId}/${this.context.user.userId}?reportName=${this.state.selectedReportName}&year=${this.state.selectedVerifiedYearId}`,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshList(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Product\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n onYearSelectClick = (event) => {\r\n this.setState(\r\n {\r\n selectedYearId: event.target.value,\r\n },\r\n () => {\r\n this.setVerifiedYear(this.state.yearList.find(x => x.id === this.state.selectedYearId).text, this.fetchData);\r\n //this.fetchProcessingObj(this.state.selectedVerifiedYearId);\r\n }\r\n );\r\n }\r\n handleConfirmDialog = () => {\r\n this.gridApi.forEachNode((rowNode) => {\r\n if (!rowNode.data.isModified) {\r\n this.setState({ showConfirmDialog: true });\r\n }\r\n })\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const pageName = \"Consent Mapping\";\r\n this.state.agGridUtils.disableEditability(this.state.isReadOnly);\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n {\r\n this.handleSubmit();\r\n this.setState({ showConfirmDialog: false });\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n
    \r\n { this.onReportSelectClick(event); }}\r\n\r\n\r\n yearComplianceSelect\r\n selectedYearId={this.state.selectedYearId}\r\n yearList={this.state.yearList}\r\n onYearSelectClick={(event) => { this.onYearSelectClick(event); }}\r\n />\r\n
    \r\n
    \r\n { this.handleConfirmDialog() })\r\n } />\r\n
    \r\n
    \r\n {\r\n this.onGridReady(event);\r\n this.state.agGridUtils.setGridParams(event, true);\r\n this.state.agGridUtils.disableEditability(this.state.isReadOnly);\r\n }}\r\n >\r\n
    \r\n

    \r\n \r\n 1. Blank consent values will be treated as \"Unknown\" by the system during reporting.\r\n
    \r\n 2. Profile Date and Agreement Date consents and revocations will be considered by Transaction Date. If no dates exist, system will consider as blanks and thus treated as \"Unknown\".\r\n
    \r\n 3. If Consent Evaluation for an entity is not enabled in the Processing tab, then the system will assume the consent for the non-enabled entity(s) is \"Yes.\"\r\n
    \r\n 4. If a Transaction is not linked to an Agreement or Profile (Unmatched), then the Consent value will be treated as a \"Yes\" value per the above table.\r\n
    \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return ( { this.fetchData(true); }} />);\r\n default:\r\n return null;\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(EditConsentMappingComponent);\r\n","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { AppBar, Box, Dialog, DialogContent, DialogTitle, Divider, IconButton, LinearProgress, Tab, Tabs, TextField, Toolbar, Typography } from \"@material-ui/core\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { CrudAction } from \"../../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport EditConsentProcessingComponent from \"../consent-processing-edit/editConsentProcessingComponent\";\r\nimport EditConsentMappingComponent from \"../consent-mapping-edit/editConsentMappingComponent\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass ComplianceConsentDialogComponent extends React.Component {\r\n oSubscriptions = new SubscriptionArray();\r\n tabConfigMap = new Map();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.tabIndexMap = new Map();\r\n this.tabIndexMap.set(0, { name: \"processingTabPanel\", validationCallback: null, postCallback: null });\r\n this.tabIndexMap.set(1, { name: \"editTabPanel\", validationCallback: null, postCallback: null });\r\n\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n selectedTabIndex: 0,\r\n };\r\n\r\n }\r\n\r\n onTabChange = (event, newValue) => {\r\n this.setState({ selectedTabIndex: newValue });\r\n };\r\n\r\n\r\n onClose = (_reloadRequired) => {\r\n this.setState({ isReadOnly: true }, () => {\r\n this.props.onClose(_reloadRequired);\r\n });\r\n }\r\n\r\n onSave = (_dataToPost) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ isSaving: true });\r\n\r\n let validationOBSs = [];\r\n this.tabIndexMap.forEach(tabConfig => { if (tabConfig.validationCallback) { validationOBSs.push(tabConfig.validationCallback()); } });\r\n\r\n this.oSubscriptions.add(combineLatest(validationOBSs).subscribe(\r\n (_validationResults) => {\r\n if (DataService.hasAnyFalse(_validationResults)) { // error : validation of all tabs\r\n // TODO: display the error\r\n }\r\n else { // success : validation of all tabs\r\n let postOBSs = [];\r\n this.tabIndexMap.forEach(tabConfig => { if (tabConfig.postCallback) { postOBSs.push(tabConfig.postCallback()); } });\r\n\r\n // post the data\r\n this.oSubscriptions.add(combineLatest(postOBSs).subscribe(\r\n // success : Post\r\n (_tabResults) => {\r\n this.setState({ isSaving: false, saveErrorInfo: null });\r\n this.onClose(true); // close this and reload the ProfileCenter\r\n },\r\n // error : Post\r\n (_error) => {\r\n this.setState({ isSaving: false, saveErrorInfo: _error }, () => {\r\n setTimeout(() => { this.setState({ saveErrorInfo: null }); }, 5000)\r\n });\r\n }\r\n ));\r\n }\r\n }\r\n ));\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n { this.onClose(false) }} >\r\n {/* DialogTitle */}\r\n \r\n \r\n \r\n Consent Mapping Detail\r\n {/* {LayoutService.getReadOnlyActions(this, (this.props.inputAction === CrudAction.CREATE), () => { this.onClose(false) }, () => { this.onSave(); })} */}\r\n {\r\n this.onClose(false);\r\n }}\r\n >\r\n {MatIconService.CANCEL}\r\n \r\n \r\n {this.state.isSaving ? : null}\r\n {this.state.saveErrorInfo ? Error Occured while Saving : null}\r\n \r\n \r\n {/* DialogContent */}\r\n \r\n {RolePermissionService.CONSENT_MAPPING_DETAIL.cannotView ? RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack(); }) :\r\n <>\r\n \r\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 LayoutService.getHocComponenet(ComplianceConsentDialogComponent);","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport clsx from \"clsx\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray, DataService } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { Typography, Divider, Grid, Tooltip, IconButton, MenuItem, Select } from \"@material-ui/core\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\n\r\nimport ReportYearAgGridRendererComponent from \"./compliance-consent-details/reportYearAgGridRendererComponent\";\r\nimport ComplianceConsentMappingService from \"./complianceConsentMappingService\";\r\nimport ComplianceConsentDialogComponent from \"./compliance-consent-details/complianceConsentDialogComponent\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass ComplianceConsentMappingComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n frameworkComponents: {\r\n reportYearAgGridRendererComponent: ReportYearAgGridRendererComponent,\r\n },\r\n showDialog: false,\r\n modalAgNode: null,\r\n selectedReportId: 0,\r\n selectedYearId: 0,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ComplianceConsentMappingService.fetchConsentMappingsAsOBS(this.context.user.tenantId,),\r\n ComplianceConsentMappingService.fetchReportMappings(this.context.user.tenantId,),\r\n ComplianceConsentMappingService.getYearsByReportId(this.context.user.tenantId, this.state.selectedReportId),\r\n ]).subscribe(\r\n // success\r\n ([_data, _reportList, _yearList,]) => {\r\n const _arrReportsObjsDupes = _reportList.map(r => ({ id: r.reportId, text: r.reportName }));\r\n let _arrReportsObjs = _arrReportsObjsDupes.filter((dupeReport, index, self) =>\r\n index === self.findIndex((dedupedReport) => (\r\n dedupedReport.text === dupeReport.text)));\r\n\r\n _arrReportsObjs = _arrReportsObjs.slice().sort((a, b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0));\r\n _arrReportsObjs = _arrReportsObjs.filter(x => !LookupService.REPORTS_TO_BE_REMOVED_CONSENT.includes(x.text));\r\n //_arrReportsObjs.forEach(x => x.id = x.text);\r\n\r\n _yearList = _yearList.map(r => ({ id: r.reportPathId, text: r.reportYear }));\r\n _yearList = _yearList.filter((dupeReport, index, self) =>\r\n index === self.findIndex((dedupedReport) => (\r\n dedupedReport.text === dupeReport.text)));\r\n _yearList = _yearList.slice().sort((a, b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0))\r\n this.setState(\r\n {\r\n data: _data,\r\n reportsListWithAll: [{ id: 0, text: \"All\" }, ..._arrReportsObjs],\r\n yearList: [{ id: 0, text: \"All\" }, ..._yearList],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n };\r\n\r\n onEntitySelectClick = (event) => {\r\n console.log(event);\r\n this.setState({ selectedEntityId: event.target.value });\r\n\r\n switch (event.target.value) {\r\n case 0:\r\n this.setState({ fieldList: [{ fieldId: 0, fieldName: \"All\" }, ...this.state.profileFieldList, ...this.state.transactionFieldList] });\r\n this.setState({ selectedFieldId: 0 });\r\n break;\r\n case 1:\r\n this.setState({ fieldList: [{ fieldId: 0, fieldName: \"All\" }, ...this.state.profileFieldList] });\r\n break;\r\n case 2:\r\n this.setState({ fieldList: [{ fieldId: 0, fieldName: \"All\" }, ...this.state.transactionFieldList] });\r\n break;\r\n default:\r\n this.setState({ selectedEntityId: event.target.value });\r\n }\r\n\r\n this.gridApi.setFilterModel(null);\r\n\r\n // this.gridApi.setFilterModel({\r\n // entityName: {\r\n // filterType: 'text',\r\n // type: 'equals',\r\n // filter: event.target.value === 0 ? null : this.state.entityList.find(x => x.entityId === event.target.value).entityName,\r\n // },\r\n // });\r\n }\r\n\r\n onReportSelectClick = (event) => {\r\n this.setState(\r\n {\r\n selectedReportId: event.target.value,\r\n selectedYearId: 0,\r\n },\r\n );\r\n this.gridApi.setFilterModel({\r\n reportName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === 0 ? null : this.state.reportsListWithAll.find(x => x.id === event.target.value).text,\r\n },\r\n });\r\n this.fetchYear(event.target.value);\r\n }\r\n\r\n fetchYear = (_reportId) => {\r\n let url = `/ComplianceMapping/FetchReportTemplateYears/${this.context.user.tenantId}`\r\n if (_reportId !== 0) {\r\n url = `/ComplianceMapping/FetchReportTemplateYears/${this.context.user.tenantId}?reportId=${_reportId}`\r\n }\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n url\r\n ).subscribe(\r\n (successResult) => {\r\n let _yearList = successResult;\r\n if (_yearList) {\r\n _yearList = _yearList.map(r => ({ id: r.reportPathId, text: r.reportYear }));\r\n _yearList = _yearList.filter((dupeReport, index, self) =>\r\n index === self.findIndex((dedupedReport) => (\r\n dedupedReport.text === dupeReport.text)));\r\n _yearList = _yearList.slice().sort((a, b) => (a.text > b.text) ? 1 : ((b.text > a.text) ? -1 : 0))\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n yearList: [{ id: 0, text: \"All\" }, ..._yearList],\r\n });\r\n console.log(\"successResult: \", successResult);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Product\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n onYearSelectClick = (event) => {\r\n this.setState(\r\n {\r\n selectedYearId: event.target.value,\r\n },\r\n );\r\n this.gridApi.setFilterModel({\r\n reportName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedReportId === 0 ? null : this.state.reportsListWithAll.find(x => x.id === this.state.selectedReportId).text,\r\n },\r\n templateYear: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === 0 ? null : this.state.yearList.find(x => x.id === event.target.value).text,\r\n },\r\n });\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: `Compliance_Default_Mapping ${new Date().toDateString()}`\r\n };\r\n }\r\n\r\n showConsentMappingDialog = (cell, data) => {\r\n console.log(\"showConsentMappingDialog\", data);\r\n this.setState({\r\n showDialog: true,\r\n modalAgNode: data,\r\n selectedReportId: data.reportId,\r\n inputAction: CrudAction.UPDATE,\r\n });\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const pageName = \"Consent Mapping\";\r\n if (RolePermissionService.CONSENT_MAPPING_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack(); });\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n {\r\n this.onReportSelectClick(event);\r\n }}\r\n\r\n yearComplianceSelect\r\n selectedYearId={this.state.selectedYearId}\r\n yearList={this.state.yearList}\r\n onYearSelectClick={(event) => {\r\n this.onYearSelectClick(event);\r\n }}\r\n\r\n download onDownloadClick={this.onDownloadClick}\r\n />\r\n
    \r\n
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    \r\n this.setState({ showDialog: false })} refreshList={this.fetchData} />\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n }\r\n}\r\n\r\nclass CompliancePageHeaderComponent extends Component {\r\n render() {\r\n const { small, classes, history, label, back, menu, search, reportComplianceSelect, yearComplianceSelect, countrySelect, importTemplate, uploadFile, save, add, addCircle, view, reload, ok, cancel, noDivider, noDividerSpacing, download } = this.props;\r\n const showButtons = back || menu || search || countrySelect || importTemplate || uploadFile || save || add || addCircle || view || reload || ok || cancel || download;\r\n\r\n return (\r\n \r\n \r\n \r\n {back ? (\r\n \r\n { history.goBack(); }}>{MatIconService.BACK}\r\n \r\n ) : null}\r\n\r\n \r\n {label}\r\n \r\n\r\n {reportComplianceSelect ? (\r\n <>\r\n Report Name:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.reportSelectData.map((el) => (\r\n \r\n {el.text}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {yearComplianceSelect ? (\r\n <>\r\n Year:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.yearList.map((el) => (\r\n \r\n {el.text}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n {download && RolePermissionService.CONSENT_MAPPING_EXPORT.canView ? (\r\n \r\n \r\n {MatIconService.DOWNLOAD}\r\n \r\n \r\n ) : null}\r\n\r\n {(add || addCircle) ? ( // && RolePermissionService.CONSENT_MAPPING_DETAIL.canCreate\r\n \r\n \r\n {addCircle ? MatIconService.ADD_CIRCLE_OUTLINE : MatIconService.ADD}\r\n \r\n \r\n ) : null}\r\n\r\n {reload ? (\r\n \r\n \r\n {MatIconService.RELOAD}\r\n \r\n \r\n ) : null}\r\n \r\n {noDivider || noDividerSpacing ? (\r\n {!noDivider && MatSpecService.showPageTitleDivider ? : null}\r\n ) : (\r\n {MatSpecService.showPageTitleDivider ? : null}\r\n )}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(ComplianceConsentMappingComponent);\r\n","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ReportCategory } from \"../../../../shared/types/enums\";\r\n\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\n\r\nexport default class ComplianceTemplatesService {\r\n\r\n static getTemplates(_tenantId, _roleId) {\r\n\r\n /**\r\n * As per the discussion with the DB Team\r\n --#3 Report center for \"Tenant Admin\" Role\r\n EXEC USP_RPT_REPORTBYCATEGORYIDGET @CATEGORYID = 1, @PageNumber = 1, @RowsperPage = 1000, @IsViewable = 1, @RoleID = NULL, @IsSubcribe = 0\r\n --#3.1 Report center for \"Specific role\"\r\n EXEC USP_RPT_REPORTBYCATEGORYIDGET @CATEGORYID = 1, @PageNumber = 1, @RowsperPage = 1000, @IsViewable = 1, @RoleID = 2, @IsSubcribe = 0\r\n */\r\n\r\n // _roleId = RolePermissionService.IS_TENANT_ADMIN ? null : _roleId;\r\n const _isViewable = true;\r\n const _isSubscribe = false;\r\n\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/${_tenantId}/${ReportCategory.COMPLIANCE_TEMPLATES}/${_roleId}?pageNo=1&pageSize=1000&isViewable=${_isViewable}&isSubscribe=${_isSubscribe}`);\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n AgGridColumnExt.GET(false, true, \"reportName\", \"\").fixedWidth(70).headerClass(\"center-text\").cellRenderer(\"reportLaunchAgGridRenderer\", {\r\n isCellEnabledCallback: (_cellRef) => {\r\n return true; //TODO: uncomment laters\r\n // return _cellRef.props.data.izendaReportId != \"\";\r\n }\r\n }).pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"reportName\", \"Template Name\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"templateYear\", \"Year\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"jurisdiction\", \"Jurisdiction\").flexWeight(1).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"reportDescription\", \"Description\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n ];\r\n }\r\n\r\n //---\r\n}","import React, { Component } from \"react\";\r\nimport { IconButton, } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\n\r\nexport default class ReportLaunchAgGridRenderer extends Component {\r\n invokeParentSaveReport = () => {\r\n this.props.context.componentParent.handleSaveReport(\r\n `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data\r\n );\r\n }\r\n\r\n render() {\r\n let isCellDisabled = false;\r\n if (this.props.isCellEnabledCallback && !this.props.isCellEnabledCallback(this)) {\r\n isCellDisabled= true;\r\n }\r\n return (\r\n <>\r\n {MatIconService.PERM_DATA_SETTING}\r\n );\r\n }\r\n}\r\n","import SessionService from \"../../../shared/services/sessionService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class ReportSettingsService {\r\n\r\n //not using izenda so commenting below method\r\n // static getchCurrentIzendaTenantId = () => {\r\n // const authUserObj = SessionService.getUserModelFromStorage();\r\n // const headerParams = {\r\n // method: \"GET\",\r\n // headers: {\r\n // \"access_token\": `${authUserObj.sessionToken}`,\r\n // \"Access-Control-Allow-Origin\": \"*\",\r\n // \"Access-Control-Allow-Headers\": \"Origin, X-Requested-With, Content-Type, Accept\",\r\n // \"Content-Type\": \"application/json\",\r\n // }\r\n // };\r\n // return ApiService.getOBS(API_ENDPOINT.IZENDA_CORE, `/api/tenant/allTenants`, headerParams);\r\n // }\r\n\r\n\r\n static getReportFilters = (_tenantId, _reportId) => {\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/FetchReportFilters/${_tenantId}/${_reportId}`);\r\n }\r\n\r\n //Not using below api currently - gst-1923 izenda dependency removal\r\n static getLanguagesByParentIzendaAsOBS = (_tenantId, _parentIzendaDisplayName) => {\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/FetchLanguagesByParentIzenda?tenantId=${_tenantId}&parentIzendaDisplayName=${_parentIzendaDisplayName}`);\r\n };\r\n\r\n static getLanguagesByReportId = (_tenantId, _reportId, _languages) => {\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/FetchLanguagesByReportId?tenantId=${_tenantId}&reportId=${_reportId}&languages=${_languages}`);\r\n };\r\n\r\n static getReportCompanionDetails = (_tenantId, _parentIzendaDisplayName) => {\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/FetchReportCompanionDetails?tenantId=${_tenantId}&parentIzendaDisplayName=${_parentIzendaDisplayName}`);\r\n };\r\n\r\n static getReportSaveFileTypes = () => {\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/FetchReportSaveFileTypes`);\r\n };\r\n}","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { DialogTitle, DialogContent, AppBar, Toolbar, Typography, Grid, Divider, FormControl, Chip, FormHelperText, TextField } from \"@material-ui/core\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { FILTER_FIELD_TYPE, ReportCategory, ResultStatus, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\n\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\n\r\nimport ReportSettingsService from \"./reportSettingsService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport SectionComponent from \"../../../shared/components/sectionComponent\";\r\n\r\nclass ReportSettingsComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n US_JURISDICTION = \"united states\";\r\n objAll = { 'lovId': '[ALL]', 'localLovKey': '[ALL]' };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n fetchResult: ResultStatus.LOADING,\r\n errorMessage: '',\r\n reportId: this.props.modalAgNode.reportId,\r\n izendaReportId: this.props.modalAgNode.izendaReportId,\r\n izendaDisplayName: this.props.modalAgNode.izendaDisplayName,\r\n izendaCurrentTenantId: null,\r\n reportFilters: [],\r\n languageslist: [],\r\n isGemboxReport: true,\r\n isComplianceTemplateReport: this.props.category === ReportCategory.COMPLIANCE_TEMPLATES,\r\n isUSJursdiction: (this.props.modalAgNode.jurisdiction + \"\").toLowerCase() === this.US_JURISDICTION,\r\n isLobbyReport: this.props.modalAgNode.isLobbyReport\r\n }\r\n }\r\n\r\n componentDidMount() { this.configure(); }\r\n componentWillUnmount() { this.oSubscriptions.cancelAll(); }\r\n\r\n configure = () => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({\r\n fetchResult: ResultStatus.LOADING,\r\n loadingMessage: 'Loading Report Settings...',\r\n errorMessage: '',\r\n });\r\n\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n ReportSettingsService.getReportFilters(this.context.user.tenantId, this.state.reportId),\r\n ReportSettingsService.getReportSaveFileTypes(),\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 304),\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 305),\r\n ]).subscribe(\r\n ([_reportFilters, _reportFileExtensionList, _reportLibraryList, _finalDispositionList]) => {\r\n //const reportPathName = (_reportFilters || [])[0]?.reportPathName;\r\n let languageslist = this.state.languageslist??[];\r\n ReportSettingsService.getLanguagesByReportId(this.context.user.tenantId, this.state.reportId, languageslist)\r\n .subscribe(\r\n (languages) => {\r\n this.setState({\r\n reportFilters: (_reportFilters || []).sort((a, b) => a.ordinal > b.ordinal),\r\n reportLibraryList: _reportLibraryList,\r\n reportFileExtensionList: _reportFileExtensionList.map((x, index) => ({ id: index + 1, ...x })),\r\n finalDispositionList: _finalDispositionList,\r\n languageslist: languages ?? [],\r\n fetchResult: ResultStatus.LOADED\r\n });\r\n },\r\n (errorObj) => {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n errorMessage: 'Error fetching languages.'\r\n });\r\n }\r\n );\r\n },\r\n (errorObj) => {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n errorMessage: 'Error fetching report filters.'\r\n });\r\n }\r\n )\r\n );\r\n }\r\n\r\n\r\n getInitialValues() {\r\n let initialObject = {};\r\n\r\n /* --- Select Reports:---------------------------- */\r\n initialObject.isEnglishReport = true;\r\n initialObject.isCompanionReport = false;\r\n\r\n let arr = this.state.languageslist;\r\n for (var i = 0; i < arr.length; i++) {\r\n const zKey = arr[i].translatedReportLanguage;\r\n initialObject[\"is\" + zKey + \"Report\"] = arr[i].selected;\r\n }\r\n\r\n {/* --- (DYNAMIC) Select Filters:---------------------------- */ }\r\n this.state.reportFilters.forEach((x, index) => {\r\n switch (x.filterType) {\r\n case FILTER_FIELD_TYPE.DATE:\r\n initialObject[x.filterName] = new Date((x.defaultFilterValue + \"\").split('-')) || null;\r\n break;\r\n case FILTER_FIELD_TYPE.TEXT:\r\n initialObject[x.filterName] = x.defaultFilterValue || '';\r\n break;\r\n case FILTER_FIELD_TYPE.LOV: // since lovId is also string in this impl\r\n if (x.isMultiSelect) {\r\n const lovOptions = this.objAll.localLovKey == x.defaultFilterValue ? [this.objAll, ...x.customLovList] : x.customLovList;\r\n const defaultValue = lovOptions.find(o => o.lovId.toLowerCase() === (x.defaultFilterValue || '')?.toLowerCase());\r\n initialObject[x.filterName] = defaultValue ? [defaultValue] : [];\r\n } else {\r\n const lovOptions = x.customLovList.filter(o => o.lovId !== 0); // autoSelect\r\n const hasDefaultValue = lovOptions.filter(o => o.lovId === x.defaultFilterValue).length === 1;\r\n const defaultValue = hasDefaultValue ? x.defaultFilterValue : '';\r\n initialObject[x.filterName] = defaultValue;\r\n }\r\n break;\r\n default:\r\n console.warn('dynmaic control field type not implemented', x.filterType);\r\n break;\r\n }\r\n\r\n });\r\n\r\n /* --- Save Report Details:---------------------------- */\r\n initialObject.reportLibraryId = 0;\r\n initialObject.reportFileExtensionId = 0;\r\n initialObject.reportName = \"\";\r\n initialObject.reportDescription = \"\";\r\n\r\n initialObject.finalDispositionId = 0;\r\n initialObject.finalDispositionDate = null;\r\n initialObject.finalDispositionComments = \"\";\r\n\r\n if (initialObject.IZENDADISPLAYNAME.includes(\"Generic\") || initialObject.IZENDADISPLAYNAME.includes(\"Medicines for Europe\") || \r\n initialObject.IZENDADISPLAYNAME.includes(\"EFPIA Patient Organizations -2022\")\r\n ) {\r\n initialObject.CURRENCY = \"13\";\r\n initialObject.GENERICCURRENCY = \"13\";\r\n }\r\n console.log(initialObject);\r\n\r\n return initialObject;\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n\r\n let dynamicSchemas = {};\r\n {/* --- (DYNAMIC) Select Filters:---------------------------- */ }\r\n this.state.reportFilters.forEach((x, index) => {\r\n\r\n // required validation\r\n if (x.isMandatory) {\r\n switch (x.filterType) {\r\n case FILTER_FIELD_TYPE.DATE:\r\n dynamicSchemas[x.filterName] = Yup.date().required(x.errorMessage);\r\n break;\r\n case FILTER_FIELD_TYPE.TEXT:\r\n case FILTER_FIELD_TYPE.LOV: // since lovId is also string in this impl\r\n dynamicSchemas[x.filterName] = Yup.string().required(x.errorMessage);\r\n break;\r\n default:\r\n console.warn('dynmaic control field type not implemented', x.filterType);\r\n break;\r\n }\r\n }\r\n\r\n /** TODO: the following has to be sent by the api\r\n * -> min value validation\r\n * -> max value validation\r\n */\r\n });\r\n\r\n\r\n // construct the validation schema object\r\n this.validationSchema = Yup.object().shape({\r\n\r\n /* --- Select Reports:---------------------------- */\r\n isEnglishReport: Yup.boolean().required(\"Required\"),\r\n isCompanionReport: Yup.boolean().required(\"Required\"),\r\n // TODO: atleast the above one should be selected\r\n\r\n\r\n /* --- Save Report Details:---------------------------- */\r\n reportLibraryId: Yup.number().required().min(1, \"Select a Report Library\"),\r\n reportFileExtensionId: this.state.isUSJursdiction ? Yup.number().nullable(true) : Yup.number().min(1, \"Select a Report Type\"),\r\n reportName: Yup.string().required(\"Enter a Report Name\").max(256, \"Must be 256 characters or less\"),\r\n reportDescription: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n\r\n // TODO: remove the min(0) and replace the nullables eg: LayoutService.getNullableValidation(Yup.number())\r\n finalDispositionId: Yup.number().min(0, \"Select a Final Disposition\"),\r\n finalDispositionDate: Yup.date().nullable(true).min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n finalDispositionComments: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n\r\n /* --- Spread the Dynamic Schemas :---------------------------- */\r\n ...dynamicSchemas,\r\n\r\n\r\n }).test('oneOfRequired', 'Please select the report type', (obj) => {\r\n if (obj.isEnglishReport || obj.isCompanionReport) {\r\n return true;\r\n } else {\r\n ToastService.showWarning('Please check your input.');\r\n return new Yup.ValidationError('Please select the report type', null, 'isEnglishReport');\r\n }\r\n });\r\n\r\n\r\n // return\r\n return this.validationSchema;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n \r\n Report Settings: {this.props.modalAgNode.reportName}\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Save Reports\", () => { this.handleSubmit(fProps) }, \"inherit\", \"keySave\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.handleClose, \"secondary\", \"keyCancel\")}\r\n \r\n \r\n \r\n \r\n\r\n {/* --- Select Reports:---------------------------- */}\r\n \r\n \r\n {[\r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isEnglishReport\", \"English Report\")}\r\n ,\r\n \r\n {this.state.isComplianceTemplateReport &&\r\n LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isCompanionReport\", \"Porzio Analysis Report\")}\r\n ,\r\n ...this.state.languageslist.map((language, index) => ( \r\n \r\n {LayoutService.getSwitch(\r\n this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"is\" + language.translatedReportLanguage + \"Report\",\r\n language.translatedReportLanguage.charAt(0).toUpperCase() + language.translatedReportLanguage.slice(1) + \" Report\",\r\n )}\r\n \r\n ))\r\n ]}\r\n \r\n\r\n\r\n {/* --- (DYNAMIC) Select Filters:---------------------------- */}\r\n {this.state.reportFilters.length > 0 ?\r\n : null}\r\n \r\n {this.state.reportFilters.filter(x => x.isVisible).map((x, index) => {\r\n return this.getDynamicControl(classes, fProps, x, index);\r\n })}\r\n \r\n\r\n\r\n {/* --- Save Report Details:------------------------ */}\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps,\r\n \"reportLibraryId\", \"Report Library *\", this.state.reportLibraryList, \"lovId\", \"lovKey\", \"47%\", true)}\r\n {/* {this.state.isUSJursdiction ? null\r\n : LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps,\r\n \"reportFileExtensionId\", \"Report Extension\", this.state.reportFileExtensionList, \"id\", \"fileType\", \"47%\", true)\r\n } */}\r\n {\r\n this.renderReportExtensionDropdown(this.state.isLobbyReport, classes, fProps)\r\n }\r\n \r\n \r\n {LayoutService.getInputTextBox(this.state.isReadOnly, false, 0, classes.dialogControl, fProps, this.validationSchema,\r\n \"reportName\", \"Report Name\", \"string\", \"96%\")}\r\n \r\n \r\n {LayoutService.getInputTextBox(this.state.isReadOnly, true, 1, classes.dialogControl, fProps, this.validationSchema,\r\n \"reportDescription\", \"Report Description\", \"string\", \"96%\")}\r\n \r\n\r\n {this.state.isComplianceTemplateReport ?\r\n <>\r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps,\r\n \"finalDispositionId\", \"Final Disposition\", this.state.finalDispositionList, \"lovId\", \"lovKey\", \"47%\", true)}\r\n {LayoutService.getDatePicker(this.state.isReadOnly, classes.dialogControl, fProps, this.validationSchema,\r\n \"finalDispositionDate\", \"Final Disposition Date\")}\r\n \r\n\r\n \r\n {LayoutService.getInputTextBox(this.state.isReadOnly, true, 1, classes.dialogControl, fProps, this.validationSchema,\r\n \"finalDispositionComments\", \"Final Disposition Comments\", \"string\", \"96%\")}\r\n \r\n \r\n : null}\r\n\r\n\r\n \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.configure(); }} />\r\n );\r\n }\r\n }\r\n\r\n getDynamicControl = (_classes, _fProps, _config, index) => {\r\n switch (_config.filterType) {\r\n case FILTER_FIELD_TYPE.DATE:\r\n return LayoutService.getDatePicker(this.state.isReadOnly, _classes.dialogControl, _fProps, this.validationSchema,\r\n _config.filterName, _config.filterDisplayName, null, null, \"47%\"\r\n );\r\n\r\n case FILTER_FIELD_TYPE.TEXT:\r\n return LayoutService.getInputTextBox(this.state.isReadOnly, false, 0, _classes.dialogControl, _fProps, this.validationSchema,\r\n _config.filterName, _config.filterDisplayName, 'text', \"96%\"\r\n );\r\n\r\n case FILTER_FIELD_TYPE.LOV:\r\n if (_config.isMultiSelect) { // multiple\r\n const lovOptions = this.objAll.localLovKey == _config.defaultFilterValue ? [this.objAll, ..._config.customLovList] : _config.customLovList;\r\n return LayoutService.getMultiSelect(this.state.isReadOnly, _classes, _fProps,\r\n _config.filterName, _config.filterDisplayName, lovOptions, \"lovId\", \"localLovKey\", this.handleMultiSelect, \"96%\");\r\n } else { // single select\r\n const lovOptions = _config.customLovList.filter(x => x.lovId !== 0); // autoSelect\r\n return LayoutService.getDropDown(this.state.isReadOnly, _classes.dialogControl, _classes.menuPaper, _fProps, this.validationSchema,\r\n _config.filterName, _config.filterDisplayName, lovOptions, \"lovId\", \"localLovKey\", null, false, \"96%\"\r\n );\r\n }\r\n default:\r\n console.warn('dynamic control field type not implemented', _config.filterType);\r\n return <>;\r\n }\r\n }\r\n\r\n handleMultiSelect = async (_key, _fProps, _newValues) => {\r\n if (DataService.hasElements(_newValues)) {\r\n let _selectedValues = [].concat(..._newValues);\r\n // check for [ALL] Item, if present then clear other items\r\n const itemAll = DataService.getFirstOrDefault(_selectedValues.filter((x) => x['lovId'] === this.objAll.lovId));\r\n if (itemAll && !_fProps.values[_key].includes(itemAll)) {\r\n await _fProps.setFieldValue(_key, [itemAll], true);\r\n } else {\r\n // if was originally selected and a new value is selected, then remove \r\n if (_fProps.values[_key].includes(itemAll)) {\r\n _selectedValues = _selectedValues.filter(f => f != itemAll);\r\n }\r\n await _fProps.setFieldValue(_key, _selectedValues, true);\r\n }\r\n }\r\n }\r\n\r\n renderReportExtensionDropdown = (_isLobbyReport, _classes, _fProps) => {\r\n //console.log(\"Render\" + JSON.stringify(this.state.reportFileExtensionList));\r\n _fProps.values[\"reportFileExtensionId\"] = this.state.reportFileExtensionList.find(x => x.fileTypeExtension === \"doc\").id;\r\n if (_isLobbyReport)\r\n return LayoutService.getSelectControl(true, _classes, _fProps,\r\n \"reportFileExtensionId\", \"Report Extension\", this.state.reportFileExtensionList, \"id\", \"fileType\", \"47%\", true);\r\n return <>\r\n }\r\n\r\n //TODO : translated report logic not implemented for now\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n const getFileType = () => {\r\n if (this.state.isLobbyReport) {\r\n return \"WORD\";\r\n }\r\n return \"EXCEL\";\r\n };\r\n\r\n const getFileTypeExtension = () => {\r\n if (this.state.isLobbyReport) {\r\n return \"doc\";\r\n }\r\n return \"xlsx\";\r\n };\r\n\r\n const getFilterValue = (_formikProps, filter) => {\r\n if (filter.filterType == FILTER_FIELD_TYPE.DATE) {\r\n return new Date(_formikProps.values[filter.filterName].getTime() - (_formikProps.values[filter.filterName].getTimezoneOffset() * 60000)).toISOString().split(\"T\")[0];\r\n }\r\n else if (Array.isArray(_formikProps.values[filter.filterName]))\r\n return _formikProps.values[filter.filterName].map(x => x.lovId).join(',');\r\n return _formikProps.values[filter.filterName];\r\n }\r\n\r\n //create filter fields payload\r\n let filterFields = this.state.reportFilters.map(f => {\r\n let displayValue = \"\";\r\n let filterDisplayName = \"\";\r\n if (f.filterType === FILTER_FIELD_TYPE.LOV) {\r\n if (!f.isMultiSelect)\r\n displayValue = f.customLovList.filter(x => x.lovId === getFilterValue(_formikProps, f))[0]?.localLovKey;\r\n\r\n else {\r\n displayValue = getFilterValue(_formikProps, f) === \"[ALL]\" ? \"[ALL]\" : f.customLovList.filter(x => _formikProps.values[f.filterName].map(x => x.lovId).includes(x.lovId)).map(x => x.localLovKey).join(\",\");\r\n\r\n }\r\n } else {\r\n displayValue = getFilterValue(_formikProps, f);\r\n }\r\n return {\r\n displayValue: displayValue,\r\n actualValue: getFilterValue(_formikProps, f),\r\n filterName: f.filterName,\r\n filterDisplayName: f.filterDisplayName\r\n }\r\n });\r\n\r\n \r\n // 2) extract the formik values into an object\r\n let mappedObj = {\r\n isGemboxReport: this.props.modalAgNode.isGemboxReport,\r\n IzendaCurrentTenantId: this.state.izendaCurrentTenantId,\r\n reportDetailID: 0,\r\n izendaReportID: this.props.modalAgNode.reportId,\r\n fileType: getFileType(),\r\n fileTypeExtension: getFileTypeExtension(),\r\n reportId: this.props.modalAgNode.reportId,\r\n reportNameForJsonMapping: this.props.modalAgNode.reportName,\r\n reportDetailName: _formikProps.values.reportName,\r\n reportDetailDescription: _formikProps.values.reportDescription,\r\n reportLibraryId: _formikProps.values.reportLibraryId,\r\n reportLibrary: this.state.reportLibraryList.find(r => r.lovId == _formikProps.values.reportLibraryId)?.lovKey,\r\n startDate: new Date().toISOString(),\r\n isActive: true,\r\n reportName: this.props.modalAgNode.izendaDisplayName,\r\n countryID: 0,\r\n jurisdiction: this.props.modalAgNode.jurisdiction,\r\n finalDispositionName: this.state.finalDispositionList.find((o) => o.lovId === _formikProps.values.finalDispositionId)?.lovKey,\r\n reportCreatedDate: new Date().toISOString(),\r\n launchDocument: true,\r\n porzioGSTReportID: \"DEVTK43F440C42\",//TODO : need to revisit these\r\n workflowID: 0,\r\n porzioGSTWorkflowID: \"\",\r\n isComplianceSave: _formikProps.values.isEnglishReport,\r\n isCompanionSave: this.props.category === ReportCategory.COMPLIANCE_TEMPLATES ? _formikProps.values.isCompanionReport : false,\r\n languagesList: this.state.languageslist\r\n .map((x) => ({\r\n selected: _formikProps.values[\"is\" + x.translatedReportLanguage + \"Report\"],\r\n translatedReportLanguage: x.translatedReportLanguage,\r\n translatedReportName: x.translatedReportName,\r\n izendaReportName: x.izendaReportName,\r\n izendaReportId: x.izendaReportId,\r\n }))\r\n .filter((item) => item.selected === true),\r\n translatedReportLanguageList: \"\",\r\n genStatus: \"InProgress\",\r\n statusReason: \"\",\r\n izendaReportFilters: null,//TODO\r\n filters: filterFields,\r\n ...(this.props.category === ReportCategory.COMPLIANCE_TEMPLATES && {\r\n finalDisposition: _formikProps.values.finalDispositionId,\r\n finalDispositionDate: _formikProps.values.finalDispositionDate?.toISOString(),\r\n dispositionComments: _formikProps.values.finalDispositionComments,\r\n endDate: _formikProps.values.finalDispositionDate?.toISOString(),\r\n }),\r\n }\r\n\r\n // 3) determine the action and assign the appropriate props\r\n const actionVerb = \"POST\"\r\n const targetUrl = `/Reports/SaveReportToLibrary?tenantId=${this.context.user.tenantId}&accessToken=${this.context.user.sessionToken}&userId=${this.context.user.userId}`;\r\n\r\n // 4) save to Api and subscribe for the result\r\n this.oSubscriptions.add(ApiService.setOBS(actionVerb, API_ENDPOINT.REPORTS, targetUrl, JSON.stringify(mappedObj))\r\n .subscribe((successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Report(s) are queued for processing. An email will be sent once completed.\");\r\n this.props.handleClose();\r\n } else {\r\n console.error(\"Error: falsey successResult while saving report\", successResult);\r\n ToastService.showError(\"Error: Report not Saved\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n }, (errors) => {\r\n console.error(\"Error while saving report\", errors);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }));\r\n })\r\n .catch((errorObj) => {\r\n console.log(errorObj.message);\r\n if (errorObj.inner) {\r\n errorObj.inner.forEach(err => {\r\n _formikProps.setFieldError(err.path, err.message);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n\r\n\r\n //---\r\n}\r\nexport default LayoutService.getHocComponenet(ReportSettingsComponent);\r\n","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { Dialog, DialogTitle, DialogContent, Box, Typography, AppBar, Toolbar, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus, ReportCategory } from \"../../../../shared/types/enums\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ComplianceTemplatesService from \"./complianceTemplatesService\";\r\nimport ReportLaunchAgGridRenderer from \"../../reportLaunchAgGridRendererComponent\";\r\nimport ReportSaveComponent from \"../../report-save/reportSaveComponent\";\r\nimport ReportSettingsComponent from \"../../report-settings/reportSettingsComponent\";\r\n\r\nclass ComplianceTemplatesComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n reportLaunchAgGridRenderer: ReportLaunchAgGridRenderer\r\n },\r\n openSaveReport: false,\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchReportsData();\r\n }\r\n\r\n fetchReportsData = () => {\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n ComplianceTemplatesService.getTemplates(this.context.user.tenantId, this.context.user.roleId).subscribe(\r\n (o) => { this.setState({ data: o, fetchResult: ResultStatus.SUCCESS }); },\r\n (o) => {\r\n ToastService.showError(\"Reports Center Component API Fetch Error:\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n\r\n handleSaveReport = (cell, node) => {\r\n this.setState({\r\n modalAgNode: node,\r\n openSaveReport: true,\r\n });\r\n }\r\n\r\n refreshToReportLocation = (_reportId) => {\r\n console.log(\"refreshToReportLocation: \", _reportId);\r\n this.props.history.push(`/reporting/viewer/${_reportId}`);\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Compliance Templates\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n {\r\n event.api.closeToolPanel();\r\n }}\r\n >\r\n
    \r\n {this.state.openSaveReport ?\r\n this.setState({ openSaveReport: false })}\r\n >\r\n {this.state.modalAgNode?.isGemboxReport ?\r\n this.setState({ openSaveReport: false })}\r\n modalAgNode={this.state.modalAgNode}\r\n category={ReportCategory.COMPLIANCE_TEMPLATES}\r\n />\r\n :\r\n // this.setState({ openSaveReport: false })}\r\n // modalAgNode={this.state.modalAgNode}\r\n // category={ReportCategory.COMPLIANCE_TEMPLATES}\r\n // />\r\n null\r\n }\r\n \r\n : null}\r\n
    \r\n
    \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n // TODO : add proper close calls\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchReportsData(); }} />\r\n );\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ComplianceTemplatesComponent);","import ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ReportCategory } from \"../../../../shared/types/enums\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class StandardTemplatesService {\r\n static getTemplates(_tenantId, _roleId, _categoryId) {\r\n const _isViewable = true;\r\n const _isSubscribe = false;\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/${_tenantId}/${ReportCategory.STANDARD_TEMPLATES}/${_roleId}?pageNo=1&pageSize=1000&isViewable=${_isViewable}&isSubscribe=${_isSubscribe}`);\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n AgGridColumnExt.GET(false, true, \"reportName\", \"\").fixedWidth(70).headerClass(\"center-text\").cellRenderer(\"reportLaunchAgGridRenderer\", {\r\n isCellEnabledCallback: (_cellRef) => {\r\n return true; //TODO: uncomment later\r\n // return _cellRef.props.data.izendaReportId != \"\";\r\n }\r\n }).pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"reportName\", \"Template Name\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"templateYear\", \"Year\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"jurisdiction\", \"Jurisdiction\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"reportDescription\", \"Description\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n ];\r\n }\r\n}","import ApiService from \"../../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../../shared/types/enums\";\r\n\r\nexport default class StandardReportSettingsService {\r\n static getReportFilters = (_tenantId, _reportId) => {\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/FetchReportFilters/${_tenantId}/${_reportId}`);\r\n }\r\n\r\n static getReportSaveFileTypes = () => {\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/FetchReportSaveFileTypes`);\r\n };\r\n}","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { MuiPickersUtilsProvider, DatePicker, DateTimePicker } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport ApiService from \"../../../../../shared/services/apiService\";\r\nimport { DialogTitle, DialogContent, AppBar, Toolbar, Typography, Grid, FormControlLabel, Checkbox, TextField } from \"@material-ui/core\";\r\nimport ToastService from \"../../../../../shared/services/toastService\";\r\nimport { DataService, SubscriptionArray } from \"../../../../../shared/services/dataService\";\r\nimport { FILTER_FIELD_TYPE, ResultStatus, API_ENDPOINT } from \"../../../../../shared/types/enums\";\r\nimport { AuthContext } from \"../../../../../shared/store/authProvider\";\r\nimport { MatIconService } from \"../../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../../shared/components/page/dialogErrorFragmentComponent\";\r\n\r\nimport ReportSettingsService from \"./standardReportSettingsService\";\r\nimport LookupService from \"../../../../../shared/services/lookupService\";\r\nimport SectionComponent from \"../../../../../shared/components/sectionComponent\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport EventIcon from \"@material-ui/icons/Event\";\r\nimport InputAdornment from \"@material-ui/core/InputAdornment\";\r\nclass StandardReportSettingsComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n objAll = { 'lovId': '[ALL]', 'localLovKey': '[ALL]' };\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n fetchResult: ResultStatus.LOADING,\r\n errorMessage: '',\r\n reportId: this.props.modalAgNode.reportId,\r\n izendaReportId: this.props.modalAgNode.izendaReportId,\r\n izendaDisplayName: this.props.modalAgNode.izendaDisplayName,\r\n izendaCurrentTenantId: null,\r\n reportFilters: [],\r\n isGemboxReport: true,\r\n isScheduleNeeded: false ,\r\n scheduledDate: new Date() ,\r\n ccMe: true, \r\n emailTO: \"\" \r\n }\r\n }\r\n\r\n\r\n componentDidMount() { this.configure(); }\r\n componentWillUnmount() { this.oSubscriptions.cancelAll(); }\r\n\r\n configure = () => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, loadingMessage: 'Loading Report Settings...', errorMessage: '', });\r\n\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n ReportSettingsService.getReportFilters(this.context.user.tenantId, this.state.reportId),\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 304)\r\n ]).subscribe(\r\n ([_reportFilters, _reportLibraryList]) => {\r\n this.setState({\r\n reportFilters: (_reportFilters || []).sort((a, b) => a.ordinal > b.ordinal),\r\n reportLibraryList: _reportLibraryList,\r\n fetchResult: ResultStatus.LOADED\r\n });\r\n },\r\n (errorObj) => {\r\n console.log(errorObj.message);\r\n this.setState({ fetchResult: ResultStatus.ERROR, errorMessage: 'Error fetching report filters' });\r\n }\r\n )\r\n );\r\n }\r\n getInitialValues() {\r\n let initialObject = {};\r\n\r\n {/* --- (DYNAMIC) Select Filters:---------------------------- */ }\r\n this.state.reportFilters.forEach((x, index) => {\r\n switch (x.filterType) {\r\n case FILTER_FIELD_TYPE.DATE:\r\n initialObject[x.filterName] = new Date((x.defaultFilterValue + \"\").split('-')) || null;\r\n break;\r\n case FILTER_FIELD_TYPE.TEXT:\r\n initialObject[x.filterName] = x.defaultFilterValue || '';\r\n break;\r\n case FILTER_FIELD_TYPE.LOV: // since lovId is also string in this impl\r\n if (x.isMultiSelect) {\r\n const lovOptions = this.objAll.localLovKey == x.defaultFilterValue ? [this.objAll, ...x.customLovList] : x.customLovList;\r\n const defaultValue = lovOptions.find(o => o.lovId.toLowerCase() === (x.defaultFilterValue || '')?.toLowerCase());\r\n initialObject[x.filterName] = defaultValue ? [defaultValue] : [];\r\n } else {\r\n const lovOptions = x.customLovList.filter(o => o.lovId !== 0); // autoSelect\r\n const hasDefaultValue = lovOptions.filter(o => o.lovId === x.defaultFilterValue).length === 1;\r\n const defaultValue = hasDefaultValue ? x.defaultFilterValue : '';\r\n initialObject[x.filterName] = defaultValue;\r\n }\r\n break;\r\n default:\r\n console.warn('dynmaic control field type not implemented', x.filterType);\r\n break;\r\n }\r\n\r\n });\r\n\r\n\r\n\r\n /* --- Save Report Details:---------------------------- */\r\n initialObject.reportLibraryId = 0;\r\n initialObject.reportName = \"\";\r\n initialObject.reportDescription = \"\";\r\n initialObject.scheduledDate = new Date();\r\n initialObject.emailTO = \"\";\r\n\r\n // return\r\n return initialObject;\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n\r\n let dynamicSchemas = {};\r\n {/* --- (DYNAMIC) Select Filters:---------------------------- */ }\r\n this.state.reportFilters.forEach((x, index) => {\r\n\r\n // required validation\r\n if (x.isMandatory) {\r\n switch (x.filterType) {\r\n case FILTER_FIELD_TYPE.DATE:\r\n dynamicSchemas[x.filterName] = x.isMandatory ? Yup.date().required(x.errorMessage) : Yup.date();\r\n break;\r\n case FILTER_FIELD_TYPE.TEXT:\r\n case FILTER_FIELD_TYPE.LOV: // since lovId is also string in this impl\r\n dynamicSchemas[x.filterName] = x.isMandatory ? Yup.string().required(x.errorMessage) : Yup.string();\r\n break;\r\n default:\r\n console.warn('dynmaic control field type not implemented', x.filterType);\r\n break;\r\n }\r\n }\r\n\r\n /** TODO: the following has to be sent by the api\r\n * -> min value validation\r\n * -> max value validation\r\n */\r\n });\r\n\r\n\r\n // construct the validation schema object\r\n this.validationSchema = Yup.object().shape({\r\n /* --- Save Report Details:---------------------------- */\r\n reportLibraryId: Yup.number().required().min(1, \"Select a Report Library\"),\r\n reportName: Yup.string().required(\"Enter a Report Name\").max(256, \"Must be 256 characters or less\"),\r\n reportDescription: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n ScheduledDate: Yup.date().nullable(true).min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n emailTO: Yup.array()\r\n .transform(function (value, originalValue) {\r\n if (this.isType(value) && value !== null) {\r\n return value;\r\n }\r\n return originalValue ? originalValue.split(/[\\s,]+/) : [];\r\n })\r\n .of(Yup.string().email(({ value }) => `${value} is not a valid email, separate multiple emails by comma`)),\r\n\r\n /* --- Spread the Dynamic Schemas :---------------------------- */\r\n ...dynamicSchemas,\r\n\r\n\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n \r\n Report Settings: {this.props.modalAgNode.reportName}\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Save Reports\", () => { this.handleSubmit(fProps) }, \"inherit\", \"keySave\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", this.props.handleClose, \"secondary\", \"keyCancel\")}\r\n \r\n \r\n \r\n \r\n\r\n {/* --- (DYNAMIC) Select Filters:---------------------------- */}\r\n {this.state.reportFilters.length > 0 ?\r\n : null}\r\n \r\n {this.state.reportFilters.filter(x => x.isVisible).map((x, index) => {\r\n return this.getDynamicControl(classes, fProps, x, index);\r\n })}\r\n \r\n\r\n {/* --- Save Report Details:------------------------ */}\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps,\r\n \"reportLibraryId\", \"Report Library *\", this.state.reportLibraryList, \"lovId\", \"lovKey\", \"47%\", true)}\r\n \r\n \r\n {LayoutService.getInputTextBox(this.state.isReadOnly, false, 0, classes.dialogControl, fProps, this.validationSchema,\r\n \"reportName\", \"Report Name\", \"string\", \"96%\")}\r\n \r\n \r\n {LayoutService.getInputTextBox(this.state.isReadOnly, true, 1, classes.dialogControl, fProps, this.validationSchema,\r\n \"reportDescription\", \"Report Description\", \"string\", \"96%\")}\r\n \r\n {/* New toggle for scheduling */}\r\n \r\n \r\n {\r\n const isChecked = event.target.checked;\r\n this.setState({ \r\n isScheduleNeeded: isChecked,\r\n scheduledDate: isChecked ? this.state.scheduledDate : null,\r\n emailTO: isChecked ? this.state.emailTO : \"\",\r\n ccMe: isChecked? this.state.ccMe : false,\r\n }, () => console.log(this.state.emailTO)); // Log the emailTO state\r\n }}\r\n \r\n name=\"scheduleNeeded\"\r\n color=\"primary\" \r\n />\r\n Schedule Needed\r\n \r\n \r\n {/* Conditionally Display DateTimePicker */}\r\n \r\n {this.state.isScheduleNeeded && (\r\n \r\n \r\n this.setState({ scheduledDate: date })}\r\n renderInput={(params) => {\r\n return current.isAfter(new Date());}}\r\n InputProps={{\r\n ...params.InputProps,\r\n endAdornment: (\r\n \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.isScheduleNeeded && (\r\n \r\n \r\n \r\n )}\r\n {this.state.isScheduleNeeded && (\r\n \r\n {\r\n const isChecked = event.target.checked;\r\n this.setState({ \r\n ccMe: isChecked, \r\n }, () => console.log(this.state.emailTO)); // Log the emailTO state\r\n }}\r\n \r\n name=\"ccMe\"\r\n color=\"primary\" \r\n />\r\n Include me on email\r\n \r\n )}\r\n \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.configure(); }} />\r\n );\r\n }\r\n }\r\n\r\n getDynamicControl = (_classes, _fProps, _config, index) => {\r\n switch (_config.filterType) {\r\n case FILTER_FIELD_TYPE.DATE:\r\n return LayoutService.getDatePicker(this.state.isReadOnly, _classes.dialogControl, _fProps, this.validationSchema,\r\n _config.filterName, _config.filterDisplayName, null, null, \"47%\", null, null, null, \"yyyy-MM-dd\", null, true\r\n );\r\n\r\n case FILTER_FIELD_TYPE.TEXT:\r\n return LayoutService.getInputTextBox(this.state.isReadOnly, false, 0, _classes.dialogControl, _fProps, this.validationSchema,\r\n _config.filterName, _config.filterDisplayName, 'text', \"96%\"\r\n );\r\n\r\n case FILTER_FIELD_TYPE.LOV:\r\n if (_config.isMultiSelect) { // multiple\r\n let lovOptions = this.objAll.localLovKey == _config.defaultFilterValue ? [this.objAll, ..._config.customLovList] : _config.customLovList;\r\n\r\n // Had to hardcode the filter name against my will\r\n if (_config.filterName == 'SOURCE') {\r\n // filter by Entity\r\n const entityText = _fProps.values['ENTITY'];\r\n const EntityMapping = {\r\n \"Profiles\":\"1\",\r\n \"Transactions\":\"2\",\r\n \"Agreements\":\"3\",\r\n \"User Management\":\"4\",\r\n \"Home\":\"5\",\r\n \"Newsfeed\":\"6\",\r\n \"Data\":\"7\",\r\n \"Documents\":\"8\",\r\n \"Reports\":\"9\",\r\n \"Compliance Mappings\":\"10\",\r\n \"Tasks\":\"11\",\r\n \"WorkFlow\":\"12\",\r\n \"Calendar\":\"13\",\r\n \"Sales Rep\":\"14\",\r\n }\r\n const entityID = EntityMapping[entityText];\r\n lovOptions = lovOptions.filter(opt => opt.relatedID == entityID || opt.lovId === this.objAll.lovId);\r\n }\r\n\r\n return LayoutService.getMultiSelect(this.state.isReadOnly, _classes, _fProps,\r\n _config.filterName, _config.filterDisplayName, lovOptions, \"lovId\", \"localLovKey\", this.handleMultiSelect, \"96%\");\r\n } else { // single select\r\n const lovOptions = _config.customLovList.filter(x => x.lovId !== 0); // autoSelect\r\n return LayoutService.getDropDown(this.state.isReadOnly, _classes.dialogControl, _classes.menuPaper, _fProps, this.validationSchema,\r\n _config.filterName, _config.filterDisplayName, lovOptions, \"lovId\", \"localLovKey\", null, false, \"96%\"\r\n );\r\n }\r\n default:\r\n console.warn('dynamic control field type not implemented', _config.filterType);\r\n return <>;\r\n }\r\n }\r\n\r\n handleMultiSelect = async (_key, _fProps, _newValues) => {\r\n\r\n if (_key == 'SOURCE') {\r\n // SOURCE changed so need to filter the filename LOV\r\n // console.debug('SOURCE filter changed so have to filter the filename LOV')\r\n let rf = this.state.reportFilters.find(x => x.filterName === 'FILENAME');\r\n\r\n // do not filter if nothing or [ALL] is selected\r\n if (_newValues.length === 0 || (_newValues.length === 1 && _newValues[0].lovId === this.objAll.lovId)) {\r\n // console.debug('setting back to original');\r\n if (this.originalFileNames) rf.customLovList = this.originalFileNames;\r\n }\r\n else {\r\n // we are about to remove items from customLovList so before we do \r\n // that we save the original list with all the items so we can keep using it in case the user chooses a different SOURCE\r\n if (!this.originalFileNames) {\r\n this.originalFileNames = rf.customLovList;\r\n }\r\n\r\n // change options\r\n // here make a new LOV list for the FILENAME field\r\n // for each filename LOV we check if the relatedID (SOURCEID) is in the _newValues list which contains CustomLov objects\r\n rf.customLovList = this.originalFileNames.filter((x) => { for (var i=0; i<_newValues.length; i++) { if (_newValues[i].lovId == x.relatedID) return true; } } );\r\n }\r\n }\r\n\r\n if (DataService.hasElements(_newValues)) {\r\n let _selectedValues = [].concat(..._newValues);\r\n // check for [ALL] Item, if present then clear other items\r\n const itemAll = DataService.getFirstOrDefault(_selectedValues.filter((x) => x['lovId'] === this.objAll.lovId));\r\n if (itemAll && !_fProps.values[_key].includes(itemAll)) {\r\n await _fProps.setFieldValue(_key, [itemAll], true);\r\n } else {\r\n // if was originally selected and a new value is selected, then remove \r\n if (_fProps.values[_key].includes(itemAll)) {\r\n _selectedValues = _selectedValues.filter(f => f != itemAll);\r\n }\r\n await _fProps.setFieldValue(_key, _selectedValues, true);\r\n }\r\n }\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n const getFilterValue = (_formikProps, filter) => {\r\n if (filter.filterType == FILTER_FIELD_TYPE.DATE) {\r\n return _formikProps.values[filter.filterName].toISOString().split('T')[0];\r\n }\r\n else if (Array.isArray(_formikProps.values[filter.filterName]))\r\n return _formikProps.values[filter.filterName].map(x => x.lovId).join(',');\r\n return _formikProps.values[filter.filterName];\r\n }\r\n\r\n //create filter fields payload\r\n let filterFields = this.state.reportFilters.map(f => {\r\n let displayValue = \"\";\r\n if (f.filterType === FILTER_FIELD_TYPE.LOV) {\r\n if (!f.isMultiSelect)\r\n displayValue = f.customLovList.filter(x => x.lovId === getFilterValue(_formikProps, f))[0]?.localLovKey;\r\n else {\r\n displayValue = getFilterValue(_formikProps, f) === \"[ALL]\" ? \"[ALL]\" : f.customLovList.filter(x => _formikProps.values[f.filterName].map(x => x.lovId).includes(x.lovId)).map(x => x.localLovKey).join(\",\");\r\n }\r\n } else {\r\n displayValue = getFilterValue(_formikProps, f);\r\n }\r\n return {\r\n displayValue: displayValue,\r\n actualValue: getFilterValue(_formikProps, f),\r\n filterName: f.filterName,\r\n filterDisplayName : f.filterDisplayName\r\n }\r\n });\r\n\r\n\r\n // 2) extract the formik values into an object\r\n let mappedObj = {\r\n isGemboxReport: this.props.modalAgNode.isGemboxReport,\r\n IzendaCurrentTenantId: this.state.izendaCurrentTenantId,\r\n reportDetailID: 0,\r\n izendaReportID: this.props.modalAgNode.reportId,\r\n fileType: \"EXCEL\",\r\n fileTypeExtension: \"xlsx\",\r\n reportId: this.props.modalAgNode.reportId,\r\n reportNameForJsonMapping: this.props.modalAgNode.reportName,\r\n reportDetailName: _formikProps.values.reportName,\r\n reportDetailDescription: _formikProps.values.reportDescription,\r\n reportLibraryId: _formikProps.values.reportLibraryId,\r\n reportLibrary: this.state.reportLibraryList.find(r => r.lovId == _formikProps.values.reportLibraryId)?.lovKey,\r\n startDate: new Date().toISOString(),\r\n isActive: true,\r\n reportName: this.props.modalAgNode.izendaDisplayName,\r\n countryID: 0,\r\n jurisdiction: this.props.modalAgNode.jurisdiction,\r\n reportCreatedDate: new Date().toISOString(),\r\n launchDocument: true,\r\n porzioGSTReportID: \"\",\r\n workflowID: 0,\r\n porzioGSTWorkflowID: \"\",\r\n isComplianceSave: false,\r\n isCompanionSave: false,\r\n isStandardSave: true, genStatus: \"InProgress\",\r\n statusReason: \"\",\r\n izendaReportFilters: null,//TODO\r\n filters: filterFields,\r\n isScheduleNeeded: this.state.isScheduleNeeded,\r\n scheduledDate: this.state.scheduledDate,\r\n emailTO: this.state.isScheduleNeeded ? _formikProps.values.emailTO : \"\",\r\n ccMe: this.state.isScheduleNeeded? this.state.ccMe : false\r\n }\r\n\r\n // 3) determine the action and assign the appropriate props\r\n const actionVerb = \"POST\"\r\n const targetUrl = `/Reports/SaveReportToLibrary?tenantId=${this.context.user.tenantId}&accessToken=${this.context.user.sessionToken}&userId=${this.context.user.userId}`;\r\n\r\n // 4) save to Api and subscribe for the result\r\n this.oSubscriptions.add(ApiService.setOBS(actionVerb, API_ENDPOINT.REPORTS, targetUrl, JSON.stringify(mappedObj))\r\n .subscribe((successResult) => {\r\n if (successResult) {\r\n ToastService.showSuccess(\"Report(s) are queued for processing. An email will be sent once completed.\");\r\n this.props.handleClose();\r\n } else {\r\n console.error(\"Error: falsey successResult while saving report\", successResult);\r\n ToastService.showError(\"Error: Report not Saved\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n }, (errors) => {\r\n console.error(\"Error while saving report\", errors);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }));\r\n })\r\n .catch((errorObj) => {\r\n console.log(errorObj.message);\r\n if (errorObj.inner) {\r\n errorObj.inner.forEach(err => {\r\n _formikProps.setFieldError(err.path, err.message);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(StandardReportSettingsComponent);\r\n\r\n","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { Dialog, DialogTitle, DialogContent, Box, Typography, AppBar, Toolbar, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus, ReportCategory } from \"../../../../shared/types/enums\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport StandardTemplatesService from \"./standardTemplatesService\";\r\nimport ReportLaunchAgGridRenderer from \"../../reportLaunchAgGridRendererComponent\";\r\nimport ReportSaveComponent from \"../../report-save/reportSaveComponent\";\r\nimport StandardReportSettingsComponent from \"./standard-report-settings/standardReportSettingsComponent\";\r\n\r\nclass StandardTemplatesComponenet extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n reportLaunchAgGridRenderer: ReportLaunchAgGridRenderer\r\n },\r\n openSaveReport: false,\r\n };\r\n }\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchReportsData();\r\n }\r\n\r\n fetchReportsData = () => {\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n StandardTemplatesService.getTemplates(this.context.user.tenantId, this.context.user.roleId, ReportCategory.STANDARD_TEMPLATES).subscribe(\r\n (o) => {\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n data: o,\r\n });\r\n },\r\n (o) => {\r\n ToastService.showError(\"Reports Center Component API Fetch Error:\", o);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n );\r\n }\r\n\r\n handleSaveReport = (cell, node) => {\r\n this.setState({\r\n modalAgNode: node,\r\n openSaveReport: true,\r\n });\r\n }\r\n\r\n refreshToReportLocation = (_reportId) => {\r\n console.log(\"refreshToReportLocation: \", _reportId);\r\n this.props.history.push(`/reporting/viewer/${_reportId}`);\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = \"Standard Templates\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n
    \r\n {\r\n event.api.closeToolPanel();\r\n }}\r\n sideBar={true}\r\n >\r\n
    \r\n {this.state.openSaveReport ?\r\n this.setState({ openSaveReport: false })}>\r\n {this.state.modalAgNode?.isGemboxReport ?\r\n this.setState({ openSaveReport: false })}\r\n modalAgNode={this.state.modalAgNode}\r\n category={ReportCategory.STANDARD_TEMPLATES}\r\n />\r\n :\r\n this.setState({ openSaveReport: false })}\r\n modalAgNode={this.state.modalAgNode}\r\n category={ReportCategory.STANDARD_TEMPLATES}\r\n />\r\n }\r\n \r\n : null}\r\n
    \r\n
    \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n // TODO : add proper close calls\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchReportsData(); }} />\r\n );\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(StandardTemplatesComponenet);","import { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ENTITY_TYPE } from \"../../../../shared/types/enums\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class ReportLibraryViewService {\r\n\r\n static getReportsByLibraryId = (_tenantId, _userId, _reportLibId) => {\r\n const targetUrl = `/Reports/FetchReportLibraryView?tenantId=${_tenantId}&userId=${_userId}&reportLibId=${_reportLibId}&pageNum=1&pageSize=1000&active=1`\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, targetUrl);\r\n };\r\n\r\n static deleteReportLibrary = (tenantId, userId, reportDetailIds) => {\r\n return ApiService.deleteOBS(API_ENDPOINT.REPORTS,\r\n `/Reports/DeleteReportLibrary/${tenantId}?userId=${userId}&reportDetailIds=${reportDetailIds},`);\r\n }\r\n\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", { onChange: _componentThisRef.toggleSubmitButton }).SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"genStatus\", \"Generation Status\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"fileType\", \"File\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().cellRenderer(\"downloadReportViaImageCellRenderer\", {\r\n showIcon: (_cellRef) => {\r\n return _cellRef.props.data['genStatus'] === \"Completed\";\r\n },\r\n reportType: (_cellRef) => {\r\n return _cellRef.props.data['reportType'];\r\n }\r\n }).noCellHighlight().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportDetailName\", \"Report Name\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().cellRenderer(\"childMessageRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportDetailDescription\", \"Report Description\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, true, \"fileType\", \"Porzio Analysis Report\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().cellRenderer(\"downloadReportViaImageCellRenderer\", {\r\n showIcon: (_cellRef) => {\r\n return _cellRef.props.data['isCompanionSave'] && _cellRef.props.data['genStatus'] === \"Completed\";;\r\n },\r\n isCompanionCol: () => true,\r\n reportType: (_cellRef) => {\r\n return _cellRef.props.data['reportType']\r\n }\r\n }).noCellHighlight().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"workflowStatus\", \"WorkFlow Status\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"startDate\", \"Report Run Date\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, \"set\", \"finalDispositionName\", \"Final Disposition\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"finalDispositionDate\", \"Final Disposition Date\").flexWeight(1).minWidth(144).headerClass(\"center-text\").pivot().SET()];\r\n }\r\n}","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { Subject } from 'rxjs';\r\n\r\nexport default class ReportSaveService {\r\n static reportSavedSubject = new Subject();\r\n\r\n // static fetchLanguagesByParentIzendaAsOBS = (_tenantId, _parentIzendaDisplayName) => {\r\n // return ApiService.getOBS(\r\n // API_ENDPOINT.REPORTS,\r\n // `/Reports/FetchLanguagesByParentIzenda?tenantId=${_tenantId}&parentIzendaDisplayName=${_parentIzendaDisplayName}`\r\n // );\r\n // };\r\n\r\n // static fetchReportCompanionDetails = (_tenantId, _parentIzendaDisplayName) => {\r\n // return ApiService.getOBS(\r\n // API_ENDPOINT.REPORTS,\r\n // `/Reports/FetchReportCompanionDetails?tenantId=${_tenantId}&parentIzendaDisplayName=${_parentIzendaDisplayName}`\r\n // );\r\n // };\r\n\r\n static fetchReportSaveFileTypes = () => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.REPORTS,\r\n `/Reports/FetchReportSaveFileTypes`\r\n );\r\n };\r\n\r\n // static fetchFiltersByReport = (postObj, headers) => {\r\n // return ApiService.setOBS(\r\n // \"POST\",\r\n // API_ENDPOINT.IZENDA_CORE,\r\n // `/api/report/loadForEdit`,\r\n // postObj,\r\n // headers\r\n // )\r\n // }\r\n\r\n // static fetchFilterValues = (_tenantId) => {\r\n // return ApiService.getOBS(\r\n // API_ENDPOINT.REPORTS,\r\n // `/Reports/FetchIzendaFilters?tenantId=${_tenantId}`\r\n // );\r\n // };\r\n\r\n}\r\n","import React, { Component, createRef } from \"react\";\r\nimport csv_icon from \"../../../../public/images/csv-export-icon.png\";\r\nimport excel_icon from \"../../../../public/images/xls-export-icon.png\";\r\nimport pdf_icon from \"../../../../public/images/pdf-icon.png\";\r\nimport ms_word_icon from \"../../../../public/images/ms-word-icon.png\";\r\nimport unknown_file from \"../../../../public/images/UnknownFile.png\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport { ReportType } from \"../../../../shared/types/enums\";\r\n\r\nexport default class DownloadReportViaImageCellRenderer extends Component {\r\n //link = createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod = async (_fileType = \"\", _fileExtension = \"\") => {\r\n //if (this.link.current.href) { return }\r\n let fileExtension = !DataService.isStringNullOrEmpty(_fileExtension) ? _fileExtension : this.props.value;\r\n let blob = await this.props.context.componentParent.handleDownloadAg(this.props.node.data, fileExtension, _fileType);\r\n const url = window.URL.createObjectURL(new Blob([blob]));\r\n const link = document.createElement('a');\r\n link.href = url;\r\n link.setAttribute('download', `${this.props.node.data.reportDetailName}${(_fileType == \"Companion\" ? \"PorzioAnalysisReport\" : _fileType)}.${fileExtension}`); //or any other extension\r\n document.body.appendChild(link);\r\n link.click();\r\n }\r\n\r\n renderIcons = (category) => {\r\n let translatedReportLanguageList = !DataService.isStringNullOrEmpty(this.props.data.translatedReportLanguageList) ?\r\n this.props.data.translatedReportLanguageList.split(',') : null;\r\n let content;\r\n let imageSrc;\r\n let isComplianceSave = this.props.data.isComplianceSave;\r\n\r\n switch (this.props.value) {\r\n case \"csv\":\r\n imageSrc = csv_icon;\r\n break;\r\n case \"xls\":\r\n case \"xlsx\":\r\n imageSrc = excel_icon;\r\n break;\r\n case \"pdf\":\r\n imageSrc = pdf_icon;\r\n break;\r\n case \"doc\":\r\n case \"docx\":\r\n imageSrc = ms_word_icon;\r\n break;\r\n default:\r\n imageSrc = unknown_file;\r\n }\r\n\r\n switch (category) {\r\n case \"Compliance\": //Compliance(English) + Language reports\r\n content = (<>\r\n {isComplianceSave ?\r\n ( { this.invokeParentMethod(\"\") }}>\r\n {\"English\r\n ) : null}\r\n {translatedReportLanguageList ?\r\n translatedReportLanguageList.map((language, index) => {\r\n return ( { this.invokeParentMethod(language.replace('/', '-')) }}>\r\n {`${language}\r\n );\r\n }) : null\r\n }\r\n );\r\n break;\r\n case \"Companion\": //Companion + FVM\r\n content = (<>\r\n { this.invokeParentMethod(\"Companion\") }}>\r\n {\"Porzio\r\n \r\n { this.invokeParentMethod(\"FVM\") }}>\r\n {\"FVM\r\n \r\n );\r\n break;\r\n case \"US_General_Report_Companion\":\r\n content = (<>\r\n { this.invokeParentMethod(\"Companion\", 'xlsx') }}>\r\n {\"Porzio\r\n \r\n { this.invokeParentMethod(\"FVM\") }}>\r\n {\"FVM\r\n \r\n );\r\n break;\r\n case \"US_General_Report\":\r\n content = (<>\r\n {isComplianceSave ?\r\n (<>\r\n { this.invokeParentMethod(\"\") }}>\r\n {\"General\r\n \r\n { this.invokeParentMethod(\"\", 'csv') }}>\r\n {\"General\r\n \r\n { this.invokeParentMethod(\"Research\") }}>\r\n {\"Research\r\n \r\n { this.invokeParentMethod(\"Research\", 'csv') }}>\r\n {\"Research\r\n \r\n ) : <>}\r\n );\r\n break;\r\n case \"US_State_Report_Companion\":\r\n content = (<>\r\n { this.invokeParentMethod(\"Companion\",'xlsx') }}>\r\n {\"Porzio\r\n \r\n { this.invokeParentMethod(\"FVM\",'xlsx') }}>\r\n {\"FVM\r\n \r\n );\r\n break;\r\n case \"US_Ownership_Report\":\r\n case \"US_State_Report\":\r\n content = (<>\r\n {isComplianceSave ?\r\n (<>\r\n { this.invokeParentMethod(\"\") }}>\r\n {\"English\r\n \r\n { this.invokeParentMethod(\"\", 'csv') }}>\r\n {\"English\r\n \r\n ) : <>}\r\n );\r\n break;\r\n case \"Standard\":\r\n content = (<>\r\n { { this.invokeParentMethod(\"\") }}>\r\n {\"Standard\r\n }\r\n );\r\n break;\r\n default:\r\n content = <>;\r\n }\r\n return content;\r\n }\r\n\r\n render() {\r\n let content = <>;\r\n let isIconVisible = true;\r\n if (this.props.showIcon && !this.props.showIcon(this)) {\r\n isIconVisible = false;\r\n }\r\n let isCompanionCol = this.props.isCompanionCol && this.props.isCompanionCol();\r\n\r\n if (this.props.data['reportType']) {\r\n switch (this.props.data['reportType']) {\r\n case ReportType.US_GENERAL:\r\n content = (isCompanionCol ? this.renderIcons(\"US_General_Report_Companion\") : this.renderIcons(\"US_General_Report\"));\r\n break;\r\n case ReportType.US_STATE:\r\n content = (isCompanionCol ? this.renderIcons(\"US_State_Report_Companion\") : this.renderIcons(\"US_State_Report\"));\r\n break;\r\n case ReportType.US_OWNERSHIP:\r\n content = (isCompanionCol ? null : this.renderIcons(\"US_Ownership_Report\"));\r\n break;\r\n case ReportType.OUS:\r\n content = (isCompanionCol ? this.renderIcons(\"Companion\") : this.renderIcons(\"Compliance\"));\r\n break;\r\n case ReportType.STANDARD:\r\n content = this.renderIcons(\"Standard\");\r\n break;\r\n }\r\n }\r\n return (\r\n {isIconVisible ? content : null}\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import { ReplaySubject } from 'rxjs';\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../../shared/types/enums\";\r\nimport { AgGridService } from \"../../../../shared/services/ag-grid/agGridService\";\r\nimport { AgGridColumnExt } from '../../../../shared/services/ag-grid/agGridColumnExt';\r\n\r\nexport default class EditReportDetailDialogService {\r\n static getReportDetailsById = (_tenantId, _reportDetailId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.REPORTS,\r\n `/Reports/FetchReportDetailView/${_tenantId}/${_reportDetailId}`\r\n );\r\n };\r\n\r\n static updateReportDetails = (_tenantId, _jsonStringifiedBody, _userId) => {\r\n return ApiService.putOBS(\r\n API_ENDPOINT.REPORTS,\r\n `/Reports/UpdateReportDetail?tenantId=${_tenantId}&userId=${_userId}`,\r\n _jsonStringifiedBody\r\n );\r\n };\r\n}\r\n","import React from \"react\";\r\nimport { ResultStatus, CrudAction, ReportType } from \"../../../../shared/types/enums\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { withStyles, TextField, Grid, InputLabel, FormControl, Backdrop, colors } from \"@material-ui/core\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatClassService } from \"../../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { Box, DialogTitle, DialogContent, Typography, AppBar, Toolbar, IconButton, MenuItem } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport EditReportDetailDialogService from \"./editReportDetailDialogService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport ReportSaveService from \"../../report-save/reportSaveService\";\r\n\r\nlet izendaTrue = false;\r\nclass EditReportDetailDialogComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n data: [],\r\n fetchResult: ResultStatus.LOADING,\r\n OUS: false\r\n //reportType : this.reportDetail.reportType\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n EditReportDetailDialogService.getReportDetailsById(this.context.user.tenantId, this.props.modalAgNode.reportDetailID),\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 304),\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 305)\r\n ]).subscribe(\r\n // success\r\n ([_reportDetail, _reportLibraryLov, _finalDispositionLov]) => {\r\n this.setState(\r\n {\r\n reportDetail: _reportDetail,\r\n reportLibraryLov: _reportLibraryLov,\r\n finalDispositionLov: _finalDispositionLov,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n if (this.state.reportDetail.reportType.toLowerCase() !== ReportType.OUS.toLowerCase()) {\r\n this.setSelectedFilters();\r\n this.setState({ OUS: false });\r\n }\r\n else {\r\n this.setSelectedFiltersOUS();\r\n this.setState({ OUS: true });\r\n }\r\n\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }));\r\n }\r\n\r\n setSelectedFilters = () => {\r\n let deserializedata = JSON.parse(this.state.reportDetail.filterData);\r\n let deserializedfilters = deserializedata ? deserializedata.Filters : [];\r\n this.setState({ selectedFilters: deserializedfilters.length > 0 ? deserializedfilters : [] }, () => {\r\n console.log(this.state.selectedFilters);\r\n })\r\n return this.selectedFilters;\r\n }\r\n\r\n setSelectedFiltersOUS = () => {\r\n let deserializedata = JSON.parse(this.state.reportDetail.filterData);\r\n let deserializedfilters = deserializedata ? deserializedata.IzendaReportFilters : [];\r\n if (deserializedfilters === null) {\r\n izendaTrue = false;\r\n this.setState({ OUS: true });\r\n this.setSelectedFilters();\r\n return this.selectedFilters;\r\n }\r\n else {\r\n izendaTrue = true;\r\n let izendaFilters = deserializedfilters ? deserializedfilters.ReportFilter : [];\r\n let filterFields = izendaFilters ? izendaFilters.FilterFields : [];\r\n let extraFilters = filterFields && filterFields.length > 0 ? filterFields.filter(o => o.QuerySourceFieldName.toLowerCase() !== '@Izendadisplayname'.toLowerCase() && o.QuerySourceFieldName.toLowerCase() !== '@reportspname'.toLowerCase()) : [];\r\n this.setState({ selectedFilters: extraFilters && extraFilters.length > 0 ? extraFilters : [] })\r\n return this.selectedFilters;\r\n }\r\n }\r\n\r\n\r\n getInitialValues = () => {\r\n let obj = {\r\n reportDetailName: this.state.reportDetail.reportDetailName,\r\n reportDetailDescription: this.state.reportDetail.reportDetailDescription,\r\n reportLibraryId: this.state.reportDetail.reportLibraryId,\r\n finalDisposition: this.state.reportDetail.finalDisposition,\r\n finalDispositionDate: DataService.isNullOrUndefined(this.state.reportDetail.finalDispositionDate) ? this.state.reportDetail.finalDispositionDate : DataService.getDateStringForDisplay(this.state.reportDetail.finalDispositionDate),\r\n dispositionComments: this.state.reportDetail.dispositionComments\r\n\r\n\r\n };\r\n return obj;\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema = () => {\r\n this.validationSchema = Yup.object({\r\n reportDetailName: Yup.string().required(\"Enter a Report Name\").max(256, \"Must be 256 characters or less\"),\r\n reportDetailDescription: Yup.string().max(256, \"Must be 256 characters or less\"),\r\n reportLibraryId: Yup.number().min(1, \"Select a Report Library\"),\r\n finalDisposition: Yup.number().nullable(true).min(0, \"Select a Final Disposition\"),\r\n finalDispositionDate: Yup.date().nullable(true).min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n dispositionComments: Yup.string().nullable(true).max(256, \"Must be 256 characters or less\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n this.updateReportDetails(_formikProps);\r\n })\r\n .catch((errorObj) => {\r\n console.log(errorObj.message);\r\n ToastService.showError(\"Please recheck your input.\");\r\n errorObj.inner && errorObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n updateReportDetails = async (_formikProps) => {\r\n this.setState({ fetchResult: ResultStatus.SAVING, });\r\n try {\r\n const obj = JSON.stringify({\r\n reportDetailID: this.state.reportDetail.reportDetailID,\r\n reportDetailName: _formikProps.values.reportDetailName,\r\n reportDetailDescription: _formikProps.values.reportDetailDescription,\r\n reportLibraryId: _formikProps.values.reportLibraryId,\r\n finalDisposition: _formikProps.values.finalDisposition,\r\n finalDispositionDate: DataService.getDateFromDateTimeStamp(_formikProps.values.finalDispositionDate, null),\r\n dispositionComments: _formikProps.values.dispositionComments,\r\n //Passing additional values below as they are mandatory\r\n fileType: this.props.modalAgNode.fileType,\r\n isActive: true, //this.state.reportDetail.isActive,: TODO\r\n genStatus: this.state.reportDetail.genStatus,\r\n isComplianceSave: this.state.reportDetail.isComplianceSave,\r\n reportType: this.state.reportDetail.reportType\r\n });\r\n\r\n this.apiSubscriptions.add(\r\n EditReportDetailDialogService.updateReportDetails(this.context.user.tenantId, obj, this.context.user.userId)\r\n .subscribe((successResult) => {\r\n ToastService.showSuccess(\"Report details updated successfully\");\r\n ReportSaveService.reportSavedSubject.next('true');\r\n this.props.refreshReportLibrary(true);\r\n this.props.onClose(false);\r\n },\r\n (errors) => {\r\n console.error(\"Error while saving report\", errors);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n ));\r\n } catch (error) {\r\n console.log(error);\r\n this.setState({ fetchResult: ResultStatus.ERROR, });\r\n }\r\n }\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n const componentType = \"Report Details\"\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n Edit {componentType}\r\n\r\n {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })}\r\n \r\n \r\n \r\n\r\n {/* Dialog Content */}\r\n \r\n \r\n\r\n \r\n\r\n \r\n {!izendaTrue ? (\r\n \r\n {this.state.selectedFilters ? this.state.selectedFilters.map((item) => (\r\n \r\n \r\n \r\n \r\n )) : }\r\n \r\n ) : (\r\n \r\n {this.state.selectedFilters ? this.state.selectedFilters.map((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\r\n

    \r\n \r\n \r\n \r\n \r\n
    Compliance Report{this.state.reportDetail.isComplianceSave ? \"Yes\" : \"No\"}
    Porzio Analysis Report{this.state.reportDetail.isCompanionSave ? \"Yes\" : \"No\"}
    FileType{this.state.reportDetail.fileType}
    \r\n\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"reportLibraryId\", \"Report Library\",\r\n this.state.reportLibraryLov, \"lovId\", \"lovKey\", \"95%\")}\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"finalDisposition\", \"Final Disposition\",\r\n [{ lovId: 0, lovKey: \"Select\" }, ...this.state.finalDispositionLov], \"lovId\", \"lovKey\", \"95%\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(true); }} />);\r\n }\r\n }\r\n\r\n //---\r\n}\r\n/** HOC */\r\nexport default withStyles(MatClassService)(EditReportDetailDialogComponent);\r\n","import React from \"react\";\r\nimport { Dialog, DialogTitle, DialogContent, DialogContentText, Grid, Box, Typography, AppBar, Toolbar, IconButton, InputBase } from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { CrudAction, ENTITY_TYPE, ResultStatus, ReportLibrary } from \"../../../../shared/types/enums\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ReportLibraryViewService from \"./reportLibraryViewService\";\r\nimport ReportSaveService from \"../../report-save/reportSaveService\";\r\nimport DownloadReportViaImageCellRenderer from \"./downloadReportViaImageCellRenderer\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { AgGridErroredCheckboxCellRenderer } from \"../../../../shared/components/ag-grid/error-cell-renderers/agGridErroredCheckboxCellRenderer\";\r\nimport { AgGridBulkEditUtil } from \"../../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport ChildMessageRendererComponent from \"./childMessageRendererComponent\";\r\nimport EditReportDetailDialogComponent from \"../edit-report-detail/editReportDetailDialogComponent\";\r\nimport OktaAuthService from \"../../../../public/authentication/oktaAuthService\";\r\n\r\nclass ReportLibraryViewComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n reportLibraryLov: null,\r\n selectedReportLibraries: [],\r\n editReportDetailDialogShow: false,\r\n modalAgNode: null,\r\n //isReadOnly: true,//this.props.inputAction === CrudAction.UPDATE,//TODO : handle props.readOnly too\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"reportDetailName\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n erroredCheckboxCellRenderer: AgGridErroredCheckboxCellRenderer,\r\n downloadReportViaImageCellRenderer: DownloadReportViaImageCellRenderer,\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.getReportLibraryId();\r\n\r\n ReportSaveService.reportSavedSubject.subscribe(\r\n (_reportSaved) => {\r\n this.getReportLibraryId();\r\n },\r\n (error) => {\r\n console.log(error);\r\n }\r\n );\r\n }\r\n\r\n getReportLibraryId = () => {\r\n this.apiSubscriptions.add(\r\n LookupService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 304)\r\n .subscribe(\r\n (_reportLibraryLov) => {\r\n this.setState({\r\n reportLibraryLov: _reportLibraryLov,\r\n }, () => {\r\n this.fetchData();\r\n });\r\n },\r\n (error) => {\r\n console.log(error);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n ));\r\n }\r\n\r\n handleDeleteClick = () => {\r\n this.setState({\r\n openDeleteConfirm: true\r\n });\r\n }\r\n\r\n handleReloadClick = () => {\r\n this.getReportLibraryId();\r\n }\r\n\r\n handleDeleteConfirm = () => {\r\n this.setState({ openDeleteConfirm: false });\r\n let idsToDelete = this.state.selectedReportLibraries.map(r => r.reportDetailID)?.join(\",\");\r\n this.apiSubscriptions.add(ReportLibraryViewService.deleteReportLibrary(this.context.user.tenantId, this.context.user.userId, idsToDelete.toString())\r\n .subscribe(\r\n (_successResult) => {\r\n ToastService.showSuccess(\"Report library/libraries deleted successfully\");\r\n this.fetchData();\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while deleting\");\r\n }\r\n ));\r\n this.setState({ selectedReportLibraries: [] });\r\n }\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n let hasSelected = false;\r\n let selectedReportLibraries = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedReportLibraries.push(rowNode.data);\r\n }\r\n });\r\n }\r\n\r\n this.setState({\r\n selectedReportLibraries: selectedReportLibraries,\r\n isReadOnly: !hasSelected,\r\n });\r\n }\r\n\r\n methodFromParent = (cell, node) => {\r\n this.setState({ editReportDetailDialogShow: true });\r\n this.setState({ modalAgNode: node });\r\n };\r\n\r\n handleDownloadAg = async (\r\n agNodeData,\r\n fileExtension,\r\n fileType\r\n ) => {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_REPORTS_HTTP}/Reports/Download/${this.context.user.tenantId}/${agNodeData.reportDetailID}/${fileExtension}?fileType=${fileType}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n );\r\n const blob = await result.blob();\r\n return blob;\r\n };\r\n\r\n fetchData = () => {\r\n let reportLibraryId = this.props.reportLibraryType == ReportLibrary.IN_REVIEW ?\r\n this.state.reportLibraryLov.find(l => l.lovKey === \"In Review\")?.lovId :\r\n this.state.reportLibraryLov.find(l => l.lovKey === \"Approved\")?.lovId;\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n this.apiSubscriptions.add(ReportLibraryViewService.getReportsByLibraryId(this.context.user.tenantId, this.context.user.userId, reportLibraryId)\r\n .subscribe(\r\n (success) => {\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n data: success,\r\n });\r\n },\r\n (error) => {\r\n console.log(error);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n ));\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n this.props.tabConfig.ref = this; // 1/4) required by parent component\r\n const componentType = this.props.reportLibraryType == ReportLibrary.IN_REVIEW ? \"In Review Library\" : \"Approved Library\";\r\n this.state.agGridUtils.setEditingMode(this.props.isReadOnly);\r\n\r\n const cannotDelete = this.props.isReadOnly || this.state.selectedReportLibraries.length === 0;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SAVING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getIconButton(false, MatIconService.RELOAD, \"Reload\", () => { this.handleReloadClick() }, \"secondary\")}\r\n \r\n {LayoutService.getIconButton(cannotDelete, cannotDelete ? MatIconService.DELETE : MatIconService.DELETE_RED, \"Delete\", () => { this.handleDeleteClick() }, \"default\")}\r\n \r\n
    \r\n {\r\n event.api.closeToolPanel();\r\n // event.api.sizeColumnsToFit();\r\n this.state.agGridUtils.setGridParams(event, true);\r\n this.state.agGridUtils.pinColumn(AgGridBulkEditUtil.selectColumnName); // pin the edit column to the left\r\n }}\r\n sideBar={true}\r\n >\r\n
    \r\n\r\n
    \r\n
    \r\n {/* Delete dialog */}\r\n {this.state.openDeleteConfirm ?\r\n this.setState({ openDeleteConfirm: false })} aria-labelledby=\"alert-dialog-title\" aria-describedby=\"alert-dialog-description\">\r\n \r\n \r\n \r\n Delete Confirmation\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"Delete\", this.handleDeleteConfirm, \"inherit\", \"keyActionDelete\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Cancel\", () => this.setState({ openDeleteConfirm: false }), \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Are you sure you want to delete the selected report library/libraries? This action cannot be reversed.\r\n \r\n \r\n {this.state.selectedReportLibraries.map(r => r.reportDetailName).join(\",\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n : <>}\r\n\r\n {/* Edit dialog */}\r\n {this.state.editReportDetailDialogShow ?\r\n \r\n this.setState({ editReportDetailDialogShow: false })} modalAgNode={this.state.modalAgNode} refreshReportLibrary={this.fetchData} inputAction={CrudAction.UPDATE} />\r\n \r\n : <>}\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n // TODO : add proper close calls\r\n { this.props.onClose(false); }} onRetry={() => { this.fetchData(); }} />\r\n );\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ReportLibraryViewComponent);\r\n","import React, { Component } from \"react\";\r\nimport { Dialog, withStyles, Tabs, Tab, Divider, Box } from \"@material-ui/core\";\r\nimport { withRouter } from 'react-router-dom'\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport MatThemeService from \"../../shared/services/theme/matThemeService\";\r\nimport \"./reportCenterStyles.css\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport ComplianceTemplatesComponent from \"./report-detail/compliance-templates/complianceTemplatesComponent\";\r\nimport StandardTemplatesComponent from \"./report-detail/standard-templates/standardTemplatesComponenet\";\r\nimport ReportLibraryViewComponent from \"./report-detail/report-library-view/reportLibraryViewComponent\";\r\nimport { ReportLibrary } from \"../../shared/types/enums\";\r\n\r\nclass ReportsCenterComponent extends Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.tabIndexMap = new Map();\r\n this.tabIndexMap.set(0, { ref: null });\r\n this.tabIndexMap.set(1, { ref: null });\r\n this.tabIndexMap.set(2, { ref: null });\r\n this.tabIndexMap.set(3, { ref: null });\r\n\r\n this.state = {\r\n selectedTabIndex: 0,\r\n isReadOnly: true,\r\n isDialog: true, //this.props.standAloneProps ? false : true,\r\n derivedProps: { fullWidth: true, maxWidth: \"lg\" },//this.props.standAloneProps ? this.props.standAloneProps : { fullWidth: true, maxWidth: \"lg\" },\r\n };\r\n }\r\n\r\n _changeTab = (_newTabIndex) => {\r\n this.setState({\r\n selectedTabIndex: _newTabIndex,\r\n isReadOnly: true // on tab change make it readonly\r\n });\r\n }\r\n\r\n onTabChange = (event, _newTabIndex) => {//TODO\r\n const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this._changeTab(_newTabIndex);\r\n });\r\n };\r\n\r\n componentDidMount() {\r\n }\r\n\r\n //TODO\r\n onClose = (_reloadRequired) => {\r\n this.setState({ isReadOnly: true }, () => {\r\n //this.props.onClose(_reloadRequired);\r\n });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n\r\n {/* DialogContent */}\r\n \r\n \r\n \r\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(MatClassService)(withRouter(ReportsCenterComponent));\r\n","import Cache from \"../../shared/store/cache\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\n\r\nexport default class AgreementListService {\r\n // subscriptions\r\n static oSUBSCRIPTIONS = new SubscriptionArray();\r\n\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, context) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(context);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(context) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n return ApiService.fetchObs2(`/Agreement/GetAgreements/${context.user.tenantId}/${context.user.userId}`);\r\n }\r\n\r\n /** API Fetch */\r\n static fetchData(_component, _ignoreCache = false) {\r\n this.oSUBSCRIPTIONS.cancelAll();\r\n _component.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSUBSCRIPTIONS.add(\r\n this.getObs(_ignoreCache).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.CACHE.SET(o);\r\n _component.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n // onResultStatus.ERROR\r\n _component.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static dateFormatter(params) {\r\n return new Date(params.value).toLocaleDateString();\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Porzio GST Agreement ID\",\r\n field: \"porzioGstAgreementId\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n cellRenderer: \"agreementDetailCellRendererComponent\",\r\n },\r\n {\r\n headerName: \"Company Agreement ID\",\r\n field: \"companyAgreementId\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n },\r\n {\r\n headerName: \"Agreement Type\",\r\n field: \"agreementType\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n },\r\n {\r\n headerName: \"Last Name\",\r\n field: \"lastName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"First Name\",\r\n field: \"firstName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Organization Name\",\r\n field: \"organizationName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Country\",\r\n width: 150,\r\n field: \"country\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Start Date\",\r\n width: 150,\r\n field: \"startDate\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"End Date\",\r\n width: 150,\r\n field: \"endDate\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Agreement Disclosure Consent\",\r\n width: 150,\r\n field: \"consentValues\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Last Modified Date\",\r\n width: 150,\r\n field: \"lastModifiedDate\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport { CrudAction } from \"../../shared/types/enums\";\r\nimport AgreementListService from \"./agreementListService\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport AgreementDetailCellRendererComponent from \"./agreementDetailCellRendererComponent\";\r\nimport AgreementDetailDialogComponent from \"./agreement-detail/agreementDetailDialogComponent\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\n\r\nclass AgreementListComponent extends Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = AgreementListService;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.fetchData.bind(this);\r\n\r\n this.state = {\r\n searchText: \"\",\r\n rowData: [],\r\n frameworkComponents: {\r\n agreementDetailCellRendererComponent: AgreementDetailCellRendererComponent\r\n },\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, rowData: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) { o = new Array(o); }\r\n o.sort(this.compareFn);\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({ rowData: o, fetchResult: ResultStatus.SUCCESS });\r\n },\r\n (o) => {\r\n ToastService.showError(\"Error Occured.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (params) => {\r\n var defaultSortModel = [{colId: 'reportIdentifierId', sort: 'asc', sortIndex : 0},];\r\n this.gridApi = params.api;\r\n params.columnApi.applyColumnState({state: defaultSortModel});\r\n //this.gridApi.setDomLayout(\"autoHeight\");\r\n this.gridApi.sizeColumnsToFit();\r\n };\r\n\r\n methodFromParent = (row_col, node) => {\r\n this.setState({ modalAgNode: node });\r\n //if (this.state.agGridUtils.isNotEditing()) {\r\n this.setState({ showAgreementDetailDialog: true, inputAction: CrudAction.UPDATE });\r\n //}\r\n };\r\n\r\n onAddClick = () => { this.setState({ showAgreementDetailDialog: true, inputAction: CrudAction.CREATE }); }\r\n\r\n handleSearch = (e) => {\r\n const newValue = e.target.value;\r\n this.setState({ searchText: newValue });\r\n this.gridApi.setQuickFilter(newValue);\r\n }\r\n\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.AGREEMENTS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n\r\n
    \r\n {/* Header Componenet */}\r\n { { this.fetchData(true); }, },\r\n ]}\r\n rightActions={[\r\n { jsxElement: LayoutService.getSearchText(classes, \"search\", this.state.searchText, this.handleSearch) },\r\n { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"Add New\", iconColor: \"secondary\", onClick: this.onAddClick, isReadOnly: RolePermissionService.AGREEMENT_DETAIL.cannotCreate },\r\n ]}\r\n />}\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n {/* AgreementDetailDialogComponent */}\r\n {/* */}\r\n {this.state.showAgreementDetailDialog ?\r\n {\r\n this.setState({ showAgreementDetailDialog: false });\r\n if (_reloadRequired) { this.fetchData(true); }\r\n }}\r\n /> : null}\r\n {/* */}\r\n\r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.fetchData(true); }} />\r\n );\r\n }\r\n }\r\n }\r\n}\r\nexport default withStyles(MatClassService)(AgreementListComponent);","import ApiService from \"../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../shared/types/enums\";\r\n\r\nexport default class SelectedRulesService {\r\n\r\n static getBusinessRuleListAsOBS = (_tenantId,) => {\r\n return ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/BusinessRules/FetchBusinessRules?tenantId=${_tenantId}`,\r\n JSON.stringify({\r\n entityId: 0,\r\n fileStatus: false,\r\n isPorzio: true,\r\n pageNumber: 0,\r\n pageSize: 1000,\r\n searchText: \"\",\r\n tenantId: 0,\r\n }),\r\n );\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Ruleapp Name\",\r\n headerHeight: 35,\r\n field: \"ruleName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 250,\r\n height: 30,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Description\",\r\n headerHeight: 35,\r\n field: \"description\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 450,\r\n height: 30,\r\n pivot: true,\r\n pivotMode: true,\r\n groupDefaultExpanded: 4,\r\n enableRowGroup: true,\r\n },\r\n {\r\n headerName: \"Entity\",\r\n headerHeight: 35,\r\n field: \"entityName\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 250,\r\n height: 30,\r\n },\r\n {\r\n headerName: \"Active\",\r\n headerHeight: 35,\r\n field: \"active\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n height: 30,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n {\r\n headerName: \"Rule Last Modified\",\r\n headerHeight: 35,\r\n field: \"rulesLastModified\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 250,\r\n height: 30,\r\n },\r\n ];\r\n }\r\n\r\n}","import { of, ReplaySubject } from \"rxjs\";\r\nimport { DataService } from \"../../../shared/services/dataService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, TenantSelectList } from \"../../../shared/types/enums\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\n\r\nexport default class EditRulesService {\r\n /** Step-1/3\r\n * make sure the lookup observable is mentioned here,\r\n * this is used to fetch commonly used observables after the user logs in,\r\n * using the rxJs's combine latest operator\r\n * */\r\n static fetchEditRulesLookupsOBS() {\r\n return [\r\n EditRulesService.getBusinessRuleAsOBS(),\r\n EditRulesService.getJurisdictionAsOBS(),\r\n EditRulesService.getRuleCategoryAsOBS(),\r\n EditRulesService.getRuleFieldAsOBS(),\r\n ];\r\n }\r\n\r\n /** STEP-2/3\r\n * Clear the cache\r\n * This function should be called after the user Login/Logout,\r\n * The reson for clering the cache on user login is the lookups are populated for context.user.tenantId,\r\n */\r\n static clearAll() {\r\n EditRulesService._BUSINESSRULE = [];\r\n EditRulesService._JURISDICTION = [];\r\n EditRulesService._RULECATEGORY = [];\r\n EditRulesService._RULEFIELDPORZIO = [];\r\n EditRulesService._RULEFIELDCUSTOM = [];\r\n }\r\n\r\n /** STEP 3/3\r\n * Define the fetch logic below\r\n */\r\n // _BUSINESSRULE\r\n static _BUSINESSRULE = [];\r\n static getBusinessRuleAsOBS = (_context, ruleId) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(EditRulesService._BUSINESSRULE)) {\r\n oSubject.next(EditRulesService._BUSINESSRULE);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/BusinessRules/FetchBusinessRuleByID?tenantId=${_context.user.tenantId}&ruleId=${ruleId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n EditRulesService._BUSINESSRULE = _data;\r\n oSubject.next(EditRulesService._BUSINESSRULE);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _JURISDICTION\r\n static _JURISDICTION = [];\r\n static getJurisdictionAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(EditRulesService._JURISDICTION)) {\r\n oSubject.next(EditRulesService._JURISDICTION); // 2nd\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.COUNTRY}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n EditRulesService._JURISDICTION = _data;\r\n oSubject.next(EditRulesService._JURISDICTION);\r\n });\r\n }\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n // _RULECATEGORY\r\n static _RULECATEGORY = [];\r\n static getRuleCategoryAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(EditRulesService._RULECATEGORY)) {\r\n oSubject.next(EditRulesService._RULECATEGORY);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.CURRENCY}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n EditRulesService._RULECATEGORY = _data;\r\n oSubject.next(EditRulesService._RULECATEGORY);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n //AVAILABLESOURCES\r\n static _AVAILABLESOURCES = [];\r\n static getAvailableSourcesAsOBS = (_context, _entityId) => {\r\n var oSubject = new ReplaySubject();\r\n ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/SourceSystems/GetSourceByEntity/${_context.user.tenantId}/${_entityId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n EditRulesService._AVAILABLESOURCES = _data;\r\n oSubject.next(EditRulesService._AVAILABLESOURCES);\r\n });\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n // _RULEFIELDPORZIO\r\n static _RULEFIELDPORZIO = [];\r\n static getRuleFieldPorzioAsOBS = (_context, _entityId) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/EntityField/FetchPagedFields?tenantId=${_context.user.tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 200,\r\n entityId: _entityId,\r\n searchText: \"\",\r\n isCustom: false,\r\n companyId: 0,\r\n })\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n EditRulesService._RULEFIELDPORZIO = _data;\r\n oSubject.next(EditRulesService._RULEFIELDPORZIO);\r\n });\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _RULEFIELDCUSTOM\r\n static _RULEFIELDCUSTOM = [];\r\n static getRuleFieldCustomAsOBS = (_context, _entityId) => {\r\n var oSubject = new ReplaySubject();\r\n\r\n // if local_cache is Empty\r\n // if (DataService.hasElements(EditRulesService._RULEFIELDCUSTOM)) {\r\n // oSubject.next(EditRulesService._RULEFIELDCUSTOM);\r\n // } else {\r\n // fetch and subscribe to the result\r\n ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/EntityField/FetchPagedFields?tenantId=${_context.user.tenantId}`,\r\n JSON.stringify({\r\n pageNumber: 1,\r\n pageSize: 200,\r\n entityId: _entityId,\r\n searchText: \"\",\r\n isCustom: true,\r\n companyId: 0,\r\n })\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n EditRulesService._RULEFIELDCUSTOM = _data;\r\n oSubject.next(EditRulesService._RULEFIELDCUSTOM);\r\n });\r\n //}\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // UTILS\r\n static getValuesByKey(_array, _key = \"id\") {\r\n let oRET = [];\r\n _array.forEach((obj) => {\r\n oRET.push(obj[_key]);\r\n });\r\n return oRET;\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n FormControlLabel,\r\n TextField,\r\n Grid,\r\n Switch,\r\n} from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport {\r\n ResultStatus,\r\n CrudAction,\r\n API_ENDPOINT,\r\n} from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport EditRulesService from \"./editRulesService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport SectionComponent from \"../../../shared/components/sectionComponent\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\n\r\nclass EditRulesComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n tempRuleCategoryList: [\r\n { id: 1, text: \"Data Processing\" },\r\n { id: 2, text: \"Field Values\" },\r\n { id: 3, text: \"Notifications\" },\r\n { id: 4, text: \"Required Fields\" },\r\n { id: 5, text: \"Internal\" },\r\n { id: 6, text: \"File Validation\" },\r\n ],\r\n switchPLSRequired: this.props.modalAgNode.plsRequired,\r\n switchActive: this.props.modalAgNode.active,\r\n };\r\n this.handleSwitch = this.handleSwitch.bind(this);\r\n }\r\n\r\n changeSelectedJurisdictionsToAll = (selJur, allJur) => {\r\n if (selJur.length === allJur.length) {\r\n return [{ id: 0, text: \"All\" }];\r\n } else {\r\n return selJur;\r\n }\r\n };\r\n\r\n getSelectedSources = (selSource, allSource) => {\r\n let selected =\r\n selSource.length !== 0\r\n ? allSource.filter((sr) => selSource.includes(sr.sourceId))\r\n : [];\r\n this.setState({\r\n selectedSourceNames: selected.map((x) => {\r\n return x.sourceName;\r\n }),\r\n });\r\n console.log(selected);\r\n return selected;\r\n };\r\n combineRuleFieldLists = (porzioList, customList) => {\r\n return [...porzioList, ...customList].sort((a, b) =>\r\n a.fielD_ALIASNAME > b.fielD_ALIASNAME\r\n ? 1\r\n : b.fielD_ALIASNAME > a.fielD_ALIASNAME\r\n ? -1\r\n : 0\r\n );\r\n };\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their reusult in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n EditRulesService.getBusinessRuleAsOBS(this.context, this.props.modalAgNode.businessruleid),\r\n LookupService.getEntityListAsOBS(this.context.user.tenantId),\r\n EditRulesService.getJurisdictionAsOBS(this.context),\r\n EditRulesService.getRuleCategoryAsOBS(this.context),\r\n EditRulesService.getRuleFieldPorzioAsOBS(this.context, this.props.modalAgNode.entityId),\r\n EditRulesService.getRuleFieldCustomAsOBS(this.context, this.props.modalAgNode.entityId),\r\n EditRulesService.getAvailableSourcesAsOBS(this.context, this.props.modalAgNode.entityId)\r\n ]).subscribe(\r\n ([_businessRuleList, _entityList, _jurisdictionList, _ruleCategoryList, _ruleFieldPorzioList, _ruleFieldCustomList, _availableSourcesList]) => {\r\n this.setState(\r\n {\r\n businessRuleList: _businessRuleList,\r\n selectedSourceIds:\r\n _businessRuleList.selectedSourceIds.length !== 0\r\n ? _businessRuleList.selectedSourceIds\r\n .split(\",\")\r\n .map((item) => {\r\n return parseInt(item);\r\n })\r\n : [],\r\n entityList: _entityList,\r\n jurisdictionList: [\r\n ...[{ id: 0, text: \"All\" }],\r\n ..._jurisdictionList.map((el) => ({\r\n id: el.id,\r\n text: el.value,\r\n })),\r\n ],\r\n //selectedJurisdictionList: this.changeSelectedJurisdictionsToAll(_businessRuleList.selectedCountryList.map(el => ({ id: el, text: _jurisdictionList.find(x => x.id === el).value })), _jurisdictionList.map(el => ({ id: el.id, text: el.value }))),\r\n selectedJurisdictionList: this.changeSelectedJurisdictionsToAll(\r\n _businessRuleList.selectedCountryList.map((el) => ({\r\n id: el,\r\n text: [\r\n ...[{ id: 0, value: \"All\" }],\r\n ..._jurisdictionList,\r\n ].find((x) => x.id === el).value,\r\n })),\r\n _jurisdictionList.map((el) => ({ id: el.id, text: el.value }))\r\n ),\r\n ruleCategoryList: this.state.tempRuleCategoryList,\r\n selectedRuleCategoryList: _businessRuleList.ruleCategory\r\n .split(\",\")\r\n .map((el) => Number(el))\r\n .map((el) => ({\r\n id: el,\r\n text: this.state.tempRuleCategoryList.find(\r\n (x) => Number(x.id) === el\r\n ).text,\r\n })),\r\n ruleFieldList: this.combineRuleFieldLists(\r\n _ruleFieldPorzioList,\r\n _ruleFieldCustomList\r\n ),\r\n availableSourcesList: _availableSourcesList,\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n console.log(this.state.selectedSourceIds);\r\n this.setState({\r\n selectedSourcesList: this.getSelectedSources(\r\n this.state.selectedSourceIds,\r\n _availableSourcesList\r\n ),\r\n });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n handleSubmit = (_formikProps) => {\r\n if (_formikProps.isSubmitting || !_formikProps.isValid) {\r\n return;\r\n } else {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n tenantId: this.context.user.tenantId,\r\n active: this.state.switchActive,\r\n ruleName: _formikProps.values.ruleName,\r\n description: _formikProps.values.description,\r\n entityName: _formikProps.values.description,\r\n entityId: _formikProps.values.entityId,\r\n jurisdiction: this.state.selectedJurisdictionList\r\n .map((el) => el.id)\r\n .toString(),\r\n plsRequired: this.state.switchPLSRequired,\r\n rulesLastModified: new Date().toISOString(),\r\n searchText: \"\",\r\n entities: \"\",\r\n guid: _formikProps.values.guid,\r\n startDate: _formikProps.values.startDate,\r\n endDate: _formikProps.values.endDate,\r\n createdBy: this.context.user.userId,\r\n\r\n publicRevisionID: this.state.businessRuleList.publicRevisionID,\r\n countryIds: this.state.selectedJurisdictionList\r\n .map((el) => el.id)\r\n .toString(),\r\n ruleOrder: Number(_formikProps.values.ruleOrder),\r\n wasbPath: \"\",\r\n selectedCountryList: this.state.selectedJurisdictionList.some(\r\n (el) => el.id === 0\r\n )\r\n ? this.state.jurisdictionList\r\n .map((el) => el.id)\r\n .filter((e) => e !== 0)\r\n : this.state.selectedJurisdictionList.map((el) => el.id),\r\n isDeleted: false,\r\n isCustomField: false,\r\n ruleCategory: this.state.selectedRuleCategoryList\r\n .map((el) => el.id)\r\n .toString(),\r\n ruleFieldId: this.state.businessRuleList.ruleFieldId,\r\n activeText: this.state.businessRuleList.activeText,\r\n version: this.state.businessRuleList.version,\r\n selectedSourceIds: this.state.selectedSourcesList\r\n .map((x) => x.sourceId)\r\n .toString(),\r\n selectedSourceNames: this.state.selectedSourcesList\r\n .map((x) => x.sourceName)\r\n .toString(),\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n var actionVerb = \"\";\r\n if (this.state.isEditing) {\r\n // UPDATE\r\n actionVerb = \"POST\";\r\n mappedObj.businessruleid = this.props.modalAgNode.businessruleid;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n } else {\r\n // CREATE\r\n actionVerb = \"POST\";\r\n mappedObj.businessruleid = 0;\r\n mappedObj.createdBy = this.context.user.userId;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n `/BusinessRules/UpdateBusinessRule?tenantId=${this.context.user.tenantId}`,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshParentGrid(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Porzio Rule details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n };\r\n handleSwitch(event) {\r\n console.log(event.target.checked);\r\n if (!this.state.isReadOnly)\r\n this.setState({ [event.target.name]: event.target.checked });\r\n }\r\n getInitialValues() {\r\n return {\r\n ruleName: this.props.modalAgNode.ruleName,\r\n guid: this.props.modalAgNode.guid,\r\n description: this.props.modalAgNode.description,\r\n\r\n entityId: this.props.modalAgNode.entityId,\r\n selectedJurisdictionList: this.state.businessRuleList.selectedCountryList,\r\n selectedRuleCategoryList: this.props.modalAgNode.ruleCategory.split(\",\"),\r\n ruleFieldId: this.props.modalAgNode.ruleFieldId,\r\n\r\n ruleOrder: this.props.modalAgNode.ruleOrder,\r\n startDate: this.props.modalAgNode.startDate,\r\n endDate: this.props.modalAgNode.endDate,\r\n };\r\n }\r\n\r\n getValidationSchema() {\r\n return Yup.object({\r\n ruleName: Yup.string()\r\n .required(\"Required\")\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\"),\r\n guid: Yup.string()\r\n .required(\"Required\")\r\n .min(32, \"Must be at least 32 characters long\")\r\n .max(36, \"Must be 36 characters or less\"),\r\n description: Yup.string()\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\"),\r\n\r\n ruleOrder: Yup.number()\r\n .required(\"Required\")\r\n .min(0, \"Must be above 0\")\r\n .max(100, \"Must be below 100\"),\r\n // startDate: Yup.date()\r\n // .required(\"Required\")\r\n // .min(\"1/1/2011\", \"On or after 1/1/2011\")\r\n // .max(\"1/1/2050\", \"On or before 1/1/2050\"),\r\n // endDate: Yup.date()\r\n // .required(\"Required\")\r\n // .min(\"1/1/2011\", \"On or after 1/1/2011\")\r\n // .max(\"1/1/2050\", \"On or before 1/1/2050\"),\r\n });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n {this.state.fetchResult === ResultStatus.SUCCESS ? (\r\n

    Your Business Rule has been updated!!

    \r\n ) : null}\r\n \r\n \r\n {\" \"}\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"entityId\",\r\n \"Entity\",\r\n this.state.entityList,\r\n \"entityid\",\r\n \"entityname\",\r\n \"98%\"\r\n )}\r\n \r\n \r\n {\" \"}\r\n \r\n {this.props.modalAgNode.ruleFieldId !== 0 ? (\r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"ruleFieldId\",\r\n \"Rule Field\",\r\n this.state.ruleFieldList,\r\n \"fieldId\",\r\n \"fielD_ALIASNAME\",\r\n \"98%\"\r\n )}\r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n }\r\n label=\"Active\"\r\n />\r\n \r\n \r\n {LayoutService.getChipSelect2(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"ruleCategoryLayoutId\",\r\n \"Rule Category\",\r\n this.state.ruleCategoryList,\r\n \"id\",\r\n \"text\",\r\n this.state.selectedRuleCategoryList,\r\n (newVal) =>\r\n this.setState({\r\n selectedRuleCategoryList: newVal,\r\n }),\r\n \"98%\"\r\n )}\r\n \r\n \r\n {LayoutService.getChipSelect2(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"sourceId\",\r\n \"Available Sources\",\r\n this.state.availableSourcesList,\r\n \"sourceId\",\r\n \"sourceName\",\r\n this.state.selectedSourcesList,\r\n (newVal) =>\r\n this.setState({ selectedSourcesList: newVal }),\r\n \"98%\"\r\n )}\r\n \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.props.onClose(false);\r\n }}\r\n onRetry={() => {\r\n console.log(\"Retry Clicked\");\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(EditRulesComponent);\r\n","import React from \"react\";\r\nimport {\r\n withStyles,\r\n DialogTitle,\r\n DialogContent,\r\n Tabs,\r\n Tab,\r\n Box,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n Divider,\r\n} from \"@material-ui/core\";\r\nimport EditRulesComponent from \"./editRulesComponent\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass EditRulesDialogComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED\r\n };\r\n }\r\n componentWillUnmount() { }\r\n componentDidMount() {\r\n this.setState({\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n }\r\n\r\n /**Render */\r\n render() {\r\n const { classes } = this.props;\r\n console.log(this.props.modalAgNode);\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {/* Header */}\r\n \r\n \r\n \r\n Rule Details\r\n { this.props.onClose(false); }}>{MatIconService.CANCEL}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n //this.SERVICE.fetchData(this, true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(EditRulesDialogComponent);","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport SelectedRulesService from \"./selectedRulesService\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport IsActiveIconRendererComponent from \"../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport EditRulesDialogComponent from \"./edit-rules/editRulesDialogComponent\";\r\nimport ChildMessageRendererComponent from \"../field-management/childMessageRendererComponent\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport LookupService from \"../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass SelectedRulesComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.state = {\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n selectedEntityId: 0,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchRulesData(this);\r\n }\r\n\r\n fetchRulesData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n // ProfileExpandedViewService.getObs(true, this.props.modalAgNode, this.context),\r\n SelectedRulesService.getBusinessRuleListAsOBS(this.context.user.tenantId,),\r\n LookupService.getEntityListAsOBS(this.context.user.tenantId)\r\n ]).subscribe(\r\n // success\r\n ([_data, _entityList]) => {\r\n this.setState(\r\n {\r\n data: _data.map(o => { return { ...o, selectedCountryListString: o.selectedCountryList.length === 0 ? \"All\" : o.selectedCountryList.join() } }),\r\n entityList: [{ entityid: 0, entityname: \"-- All --\" }, ..._entityList.filter(x => x.isPorzioEntity === true)],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n\r\n onEntitySelectClick = (event) => {\r\n this.setState({ selectedEntityId: event.target.value });\r\n this.gridApi.setFilterModel({\r\n entityName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === 0 ? null : this.state.entityList.find(x => x.entityid === event.target.value).entityname,\r\n },\r\n });\r\n }\r\n\r\n getFileName() {\r\n return `Porzio_Business_Rules Entity-${(Object.keys(this.gridApi.getFilterModel()).length > 0 ? this.gridApi.getFilterModel().entityName.filter : `All`)} ${new Date().toDateString()}`;\r\n }\r\n\r\n onDownloadClick = () => {\r\n let api = this.gridApi, params = this.getParams();\r\n api.exportDataAsExcel(params);\r\n }\r\n\r\n getParams() {\r\n return {\r\n // allColumns: true,\r\n columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n fileName: this.getFileName()\r\n };\r\n }\r\n\r\n methodFromParent = (cell, data) => {\r\n if (RolePermissionService.BUSINESS_RULE_DETAIL.cannotView) {\r\n RolePermissionService.showAccessDeniedToast();\r\n } else {\r\n this.setState({ modalShow: true });\r\n this.setState({ modalAgNode: data });\r\n }\r\n };\r\n\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.BUSINESS_RULE_LIST.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n\r\n {/* Header Componenet */}\r\n { this.onEntitySelectClick(event); }}\r\n download onDownloadClick={this.onDownloadClick} isDownloadReadOnly={RolePermissionService.BUSINESS_RULE_LIST_EXPORT.cannotView}\r\n reload onReloadClick={() => { this.fetchRulesData(true); }}\r\n />\r\n\r\n {/* Grid */}\r\n
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n sideBar={true}\r\n >\r\n \r\n \r\n \r\n
    \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.fetchRulesData(true); }} />\r\n );\r\n }\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(SelectedRulesComponent);\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class SalesRepLinkRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import { of, ReplaySubject } from \"rxjs\";\r\nimport { DataService } from \"../../../shared/services/dataService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, TenantSelectList } from \"../../../shared/types/enums\";\r\n\r\nexport default class SalesRepService {\r\n /** Step-1/3\r\n * make sure the lookup observable is mentioned here,\r\n * this is used to fetch commonly used observables after the user logs in,\r\n * using the rxJs's combine latest operator\r\n * */\r\n static fetchEditRulesLookupsOBS() {\r\n return [\r\n SalesRepService.getSalesRepsAsOBS(),\r\n SalesRepService.getCountriesAsOBS(),\r\n ];\r\n }\r\n\r\n /** STEP-2/3\r\n * Clear the cache\r\n * This function should be called after the user Login/Logout,\r\n * The reson for clering the cache on user login is the lookups are populated for context.user.tenantId,\r\n */\r\n static clearAll() {\r\n SalesRepService._SALESREPS = [];\r\n SalesRepService._COUNTRIES = [];\r\n }\r\n\r\n /** STEP 3/3\r\n * Define the fetch logic below\r\n */\r\n // _BUSINESSRULE\r\n static _SALESREPS = [];\r\n static getSalesRepsAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject();\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(SalesRepService._SALESREPS)) {\r\n oSubject.next(SalesRepService._SALESREPS);\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/SalesRep/GetAllSalesRep/${_context.user.tenantId}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n SalesRepService._SALESREPS = _data;\r\n oSubject.next(SalesRepService._SALESREPS);\r\n });\r\n }\r\n // return the subject as observable\r\n return oSubject.asObservable();\r\n };\r\n\r\n // _JURISDICTION\r\n static _COUNTRIES = [];\r\n static getCountriesAsOBS = (_context) => {\r\n var oSubject = new ReplaySubject(); // 1st\r\n\r\n // if local_cache is not Empty\r\n if (DataService.hasElements(SalesRepService._COUNTRIES)) {\r\n oSubject.next(SalesRepService._COUNTRIES); // 2nd\r\n } else {\r\n // fetch and subscribe to the result\r\n ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetMasterSubSet/${_context.user.tenantId}/${TenantSelectList.COUNTRY}`\r\n ).subscribe((_data) => {\r\n // store it in the local cache, then trigger the subscription at the client side\r\n SalesRepService._COUNTRIES = _data;\r\n oSubject.next(SalesRepService._COUNTRIES);\r\n });\r\n }\r\n\r\n // return the subject as observable\r\n return oSubject.asObservable(); // 3rd\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"SalesRep Id\",\r\n field: \"companySalesRepId\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n cellRenderer: \"salesRepLinkRendererComponent\",\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"First Name\",\r\n field: \"salesrepfirstname\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Last Name\",\r\n field: \"salesreplastname\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Province\",\r\n field: \"province\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Country\",\r\n field: \"countryName\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"License Oregon\",\r\n field: \"licenseOregon\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"License Chicago\",\r\n field: \"licenseChicago\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"License Connecticut\",\r\n field: \"licenseConnecticut\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"License DC\",\r\n field: \"licenseDC\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"License Nevada\",\r\n field: \"licenseNevada\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"License Miami Indicator\",\r\n field: \"licenseMiamiIndicator\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 50,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n {\r\n headerName: \"Active\",\r\n field: \"isActive\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 50,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { AllCommunityModules } from \"ag-grid-community\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport SalesRepLinkRendererComponent from \"./salesRepLinkRendererComponent\";\r\nimport PageHeaderComponent from \"../../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport IsActiveIconRendererComponent from \"../../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../../shared/types/enums\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-community/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-community/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-community/dist/styles/ag-theme-balham-dark.css\";\r\nimport { Dialog } from \"@material-ui/core\";\r\n\r\nimport SalesRepDetailsComponent from \"./sales-rep-details/salesRepDetailsComponent.jsx\";\r\nimport SalesRepService from \"./salesRepService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass SalesRepComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = SalesRepService;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n modules: AllCommunityModules,\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n salesRepLinkRendererComponent: SalesRepLinkRendererComponent,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n\r\n }\r\n\r\n formatSalesRepList = (_salesRepList, _countryList) => {\r\n let countryList = [{ id: 0, value: \"\" }, ..._countryList];\r\n\r\n let salesRepList = _salesRepList.map(sr => {\r\n const found = countryList.find(c => c.id === sr.countryId);\r\n return found ? { ...sr, countryName: countryList.find(c2 => c2.id === sr.countryId).value, } : { ...sr, countryId: 0, countryName: \"\", };\r\n });\r\n\r\n console.log(\"_salesRepList\", _salesRepList);\r\n console.log(\"salesRepList\", salesRepList);\r\n return (salesRepList);\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n this.STORE.clearAll();\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their reusult in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n SalesRepService.getSalesRepsAsOBS(this.context),\r\n SalesRepService.getCountriesAsOBS(this.context),\r\n ]).subscribe(([_salesRepList, _countryList]) => {\r\n this.setState(\r\n {\r\n // salesRepList: _salesRepList.map(el => ({ ...el, countryName: [{ id: 0, value: \"\" }, ..._countryList].find(c => c.id === el.countryId).value })),\r\n salesRepList: this.formatSalesRepList(_salesRepList, _countryList),\r\n countryList: _countryList,\r\n },\r\n () => { // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n })\r\n );\r\n }\r\n\r\n methodFromParent = (cell, node) => {\r\n this.setState({ modalShow: true, });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node });\r\n };\r\n\r\n handleCreateModal = () => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n this.setState({ modalAgNode: { srId: 0, }, });\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.SALESREP.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/* Header Componenet */}\r\n { { this.fetchData(true); }, },\r\n ]}\r\n />}\r\n
    \r\n
    \r\n {\r\n event.api.sizeColumnsToFit();\r\n }}\r\n >\r\n
    \r\n {this.state.modalShow ?\r\n \r\n this.setState({ modalShow: false })}\r\n modalAgNode={this.state.modalAgNode}\r\n inputAction={this.state.inputAction}\r\n refreshGrid={() => { this.fetchData(true) }}\r\n />\r\n \r\n\r\n : null}\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(SalesRepComponent);\r\n","import Cache from \"../../shared/store/cache\";\r\nimport { ResultStatus, GST_API } from \"../../shared/types/enums\";\r\nimport { SubscriptionArray, DataService } from \"../../shared/services/dataService\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\n\r\n\r\nexport default class MaterialsListService {\r\n // subscriptions\r\n static oSUBSCRIPTIONS = new SubscriptionArray();\r\n\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, context) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(context);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(context) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n return ApiService.fetchHTTP_API(\r\n GST_API.TenantConfig,\r\n `/Materials/GetAllMaterials/${context.user.tenantId}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n );\r\n }\r\n\r\n /** API Fetch */\r\n static fetchData(_component, _ignoreCache = false) {\r\n this.oSUBSCRIPTIONS.cancelAll();\r\n _component.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSUBSCRIPTIONS.add(\r\n this.getObs(_ignoreCache).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.CACHE.SET(o);\r\n _component.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n // onResultStatus.ERROR\r\n _component.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static dateFormatter(params) {\r\n return new Date(params.value).toLocaleDateString();\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Material Name\",\r\n field: \"materialName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Description\",\r\n field: \"description\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Unit Cost\",\r\n field: \"unitCost\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Currency\",\r\n field: \"currencyName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Created Date\",\r\n field: \"createdDate\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Active?\",\r\n field: \"isActive\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n ];\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n TextField,\r\n Grid,\r\n FormGroup,\r\n} from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport {\r\n ResultStatus,\r\n CrudAction,\r\n API_ENDPOINT,\r\n} from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass MaterialDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n lastValidatedMaterialName = null;\r\n lastValidatedMaterialResult = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([LookupService.getFormattedCurrenciesAsOBS(this.context, null)]).subscribe(\r\n ([_currencyList]) => {\r\n this.setState(\r\n {\r\n currencyList: [{ id: 0, value: \"Select\" }, ..._currencyList],\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n getInitialValues() {\r\n return {\r\n materialName: this.props.modalAgNode.materialName,\r\n description: this.props.modalAgNode.description,\r\n unitCost: this.props.modalAgNode.unitCost,\r\n currencyId: this.props.inputAction === CrudAction.UPDATE ? this.props.modalAgNode.currencyId : 0,\r\n isActive:\r\n this.props.inputAction === CrudAction.UPDATE\r\n ? this.props.modalAgNode.isActive\r\n : true,\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n materialName: Yup.string()\r\n .required(\"Required\")\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .test(\r\n \"checkDuplicateMaterialName\",\r\n \"Material name already exists\",\r\n async (_formikValue) => {\r\n if (this.lastValidatedMaterialName === _formikValue) {\r\n return this.lastValidatedMaterialResult;\r\n } else {\r\n this.lastValidatedMaterialName = _formikValue;\r\n if (\r\n this.state.isEditing &&\r\n _formikValue === this.props.modalAgNode.materialName\r\n ) {\r\n this.lastValidatedMaterialResult = true;\r\n return this.lastValidatedMaterialResult; // vendor name edited but okay\"\r\n } else {\r\n // new vendor name (or) vendorName updated\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Materials/MaterialExists/${this.context.user.tenantId}/${_formikValue}`\r\n );\r\n const isExists = await result.json();\r\n console.log(\"is material name exists: \", isExists);\r\n this.lastValidatedMaterialResult = !isExists;\r\n return this.lastValidatedMaterialResult;\r\n }\r\n }\r\n }\r\n ),\r\n description: Yup.string()\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\"),\r\n unitCost: Yup.number().required(\"Required\").typeError(\"Must be a valid number formatted as 0.00\"),\r\n currencyId: Yup.number().required(\"Required\").min(1, \"Required\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // 0) clear the CACHE,so next time if requried this new object will also be fetched\r\n LookupService.clearMATERIAL_ITEM_NAMES();\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n materialName: _formikProps.values.materialName,\r\n description: _formikProps.values.description,\r\n unitCost: parseFloat(_formikProps.values.unitCost),\r\n currencyId: _formikProps.values.currencyId,\r\n isActive: _formikProps.values.isActive,\r\n createdBy: this.props.modalAgNode.createdBy,\r\n updatedBy: this.props.modalAgNode.updatedBy,\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let apiUrl = \"\";\r\n var actionVerb = \"\";\r\n if (this.state.isEditing) {\r\n // UPDATE\r\n actionVerb = \"PUT\";\r\n apiUrl = `/Materials/EditMaterial/${this.context.user.tenantId}`;\r\n mappedObj.materialId = this.props.modalAgNode.materialId;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n } else {\r\n // CREATE\r\n actionVerb = \"POST\";\r\n apiUrl = `/Materials/AddMaterial/${this.context.user.tenantId}`;\r\n mappedObj.materialId = 0;\r\n mappedObj.createdBy = this.context.user.userId;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n apiUrl,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshGrid(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Material Details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(erroObj);\r\n if (erroObj.inner) {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n }\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.MATERIAL_DETAIL.cannotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n Material Details\r\n {this.props.inputAction === CrudAction.UPDATE ? RolePermissionService.MATERIAL_DETAIL.cannotEdit ? LayoutService.getIconButton(false, MatIconService.CLOSE, \"close\",\r\n () => { this.props.onClose(false) }, \"secondary\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n {this.state.fetchResult === ResultStatus.SUCCESS ? (\r\n

    Your Material has been updated!!

    \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 {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"currencyId\",\r\n \"Currency *\",\r\n this.state.currencyList,\r\n \"id\",\r\n \"value\",\r\n \"98%\"\r\n )}\r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"isActive\",\r\n \"Active\"\r\n )}\r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.props.onClose(false);\r\n }}\r\n onRetry={() => {\r\n console.log(\"Retry Clicked\");\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(MaterialDetailsComponent);\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { ResultStatus, CrudAction } from \"../../shared/types/enums\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { withStyles } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport MaterialsListService from \"./materialsListService\";\r\nimport IsActiveIconRendererComponent from \"../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport ChildMessageRendererComponent from \"../../shared/components/childMessageRendererComponent\";\r\nimport { Dialog } from \"@material-ui/core\";\r\nimport MaterialDetailsComponent from \"./material-details/materialDetailsComponent\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport LookupService from \"../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\n\r\nclass MaterialsListComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = MaterialsListService;\r\n constructor(props) {\r\n super(props);\r\n this.fetchData.bind(this);\r\n this.handleHide = this.handleHide.bind(this);\r\n\r\n this.state = {\r\n rowData: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n };\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, rowData: [] });\r\n\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n this.STORE.getObs(_ignoreCache, this.context),\r\n LookupService.getFormattedCurrenciesAsOBS(this.context, null),\r\n ]).subscribe(\r\n ([_data, _currencyList]) => {\r\n if (!Array.isArray(_data)) {\r\n _data = new Array(_data);\r\n }\r\n _data.sort(this.compareFn);\r\n this.STORE.CACHE.SET(_data, 0);\r\n this.setState(\r\n {\r\n rowData: _data.map(r => (parseInt(r.currencyId) ? { ...r, currencyName: _currencyList.find(c => c.id === r.currencyId).value } : \"\")),\r\n currencyList: [{ id: 0, value: \"Select\" }, ..._currencyList],\r\n },\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n () => {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n\r\n }));\r\n }\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n\r\n this.gridApi.sizeColumnsToFit();\r\n };\r\n methodFromParent = (cell, node) => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node });\r\n };\r\n\r\n handleCreateModal = () => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n this.setState({ modalAgNode: { srId: 0 } });\r\n };\r\n\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.MATERIAL.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n { { this.fetchData(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 case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(MaterialsListComponent);\r\n","import ApiService from \"../../shared/services/apiService\";\r\nimport { DataService } from \"../../shared/services/dataService\";\r\nimport { API_ENDPOINT } from \"../../shared/types/enums\";\r\n\r\nexport default class StudiesListService {\r\n\r\n static getAllStudiesAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Study/GetAllStudies/${_tenantId}`\r\n );\r\n };\r\n \r\n\r\n static getNonEntityLOVsByIDAsOBS = (_tenantId, _lovEntityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetNonEntityLOVsByID/${_tenantId}/${_lovEntityId}`\r\n );\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static dateFormatter(params) {\r\n return new Date(params.value).toLocaleDateString();\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Study Id\",\r\n field: \"companyStudyId\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Study Name\",\r\n field: \"studyName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Info Link\",\r\n field: \"infoLink\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Delay Indicator\",\r\n field: \"delayIndicatorName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Research Type\",\r\n field: \"researchType\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Start Date\",\r\n field: \"startDate\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n valueFormatter: (params) => {\r\n return DataService.formatDateString(params.data.startDate)\r\n }\r\n },\r\n {\r\n headerName: \"FDA Approval Date\",\r\n field: \"approvalDate\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n valueFormatter: (params) => {\r\n return DataService.formatDateString(params.data.approvalDate)\r\n }\r\n },\r\n {\r\n headerName: \"Early Termination Date\",\r\n field: \"researchDate\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n valueFormatter: (params) => {\r\n return DataService.formatDateString(params.data.researchDate)\r\n }\r\n },\r\n {\r\n headerName: \"Clinical Trial Id\",\r\n field: \"clinicalTrailId\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Comments\",\r\n field: \"comments\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n comparator: DataService.caseInsensitiveComparator,\r\n },\r\n {\r\n headerName: \"Active?\",\r\n field: \"isActive\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n ];\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class ComplianceReportMappingService {\r\n\r\n static getNonEntityLOVsByIDAsOBS = (_tenantId, _lovEntityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetNonEntityLOVsByID/${_tenantId}/${_lovEntityId}`\r\n );\r\n };\r\n\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n TextField,\r\n Grid,\r\n FormGroup,\r\n} from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider, DatePicker } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport {\r\n ResultStatus,\r\n CrudAction,\r\n API_ENDPOINT,\r\n} from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport StudyDetailsService from \"./studyDetailsService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\n\r\nclass StudyDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n lastValidatedCompanyStudyId = null;\r\n lastValidatedCompanyStudyResult = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n StudyDetailsService.getNonEntityLOVsByIDAsOBS(this.context.user.tenantId, 5),\r\n StudyDetailsService.getNonEntityLOVsByIDAsOBS(this.context.user.tenantId, 4),\r\n ]).subscribe(\r\n // success\r\n ([_researchTypeData, _delayIndicatorData,]) => {\r\n this.setState(\r\n {\r\n researchTypeData: _researchTypeData,\r\n delayIndicatorData: _delayIndicatorData,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n handleSubmit = async (_formikProps) => {\r\n console.log(\"_formikProps\", _formikProps);\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema\r\n .validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n companyStudyId: _formikProps.values.companyStudyId,\r\n studyName: _formikProps.values.studyName,\r\n delayIndicator: String(_formikProps.values.delayIndicator - 9),\r\n researchType: _formikProps.values.researchType,\r\n clinicalTrailId: _formikProps.values.clinicalTrailId,\r\n isActive: _formikProps.values.isActive,\r\n infoLink: _formikProps.values.infoLink,\r\n comments: _formikProps.values.comments,\r\n startDate: _formikProps.values.startDate,\r\n approvalDate: _formikProps.values.approvalDate,\r\n researchDate: _formikProps.values.researchDate, // RESEARCHTERMDATE is the corresponding Database name\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let apiUrl = \"\";\r\n var actionVerb = \"\";\r\n const dtNow = new Date();\r\n if (this.state.isEditing) {\r\n // UPDATE\r\n actionVerb = \"PUT\";\r\n apiUrl = `/Study/EditStudy/${this.context.user.tenantId}`;\r\n mappedObj.studyId = this.props.modalAgNode.studyId;\r\n mappedObj.createdDate = this.props.modalAgNode.createdDate;\r\n mappedObj.createdBy = this.props.modalAgNode.createdBy;\r\n mappedObj.updatedDate = dtNow;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n } else {\r\n // CREATE\r\n actionVerb = \"POST\";\r\n apiUrl = `/Study/AddStudy/${this.context.user.tenantId}`;\r\n mappedObj.studyId = 0;\r\n mappedObj.createdDate = dtNow;\r\n mappedObj.createdBy = this.context.user.userId;\r\n mappedObj.updatedDate = dtNow;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n apiUrl,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshGrid(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Study Details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(erroObj);\r\n if (erroObj.inner) {\r\n erroObj.inner.forEach((err) => {\r\n _formikProps.setFieldError(err.path, err.message);\r\n });\r\n }\r\n });\r\n }\r\n };\r\n\r\n formatDate = (_strDate) => {\r\n console.log(\"_strDate\", _strDate);\r\n if (Date.parse(_strDate)) {\r\n const dt = new Date(_strDate);\r\n console.log(\"dt1\", dt);\r\n return dt.toISOString();\r\n } else {\r\n const dt = new Date();\r\n console.log(\"dt2\", dt);\r\n return dt.toISOString();\r\n }\r\n }\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n return {\r\n studyName: this.props.modalAgNode.studyName,\r\n companyStudyId: this.props.modalAgNode.companyStudyId,\r\n delayIndicator: Number(this.props.modalAgNode.delayIndicator) + 9,\r\n researchType: this.props.modalAgNode.researchType,\r\n clinicalTrailId: this.props.modalAgNode.clinicalTrailId,\r\n infoLink: this.props.modalAgNode.infoLink,\r\n comments: this.props.modalAgNode.comments,\r\n startDate: this.formatDate(this.props.modalAgNode.startDate),\r\n approvalDate: this.props.modalAgNode.approvalDate !== undefined ? this.formatDate(this.props.modalAgNode.approvalDate) : null,\r\n researchDate: this.props.modalAgNode.researchDate !== undefined ? this.formatDate(this.props.modalAgNode.researchDate) : null,\r\n isActive: this.props.modalAgNode.isActive,\r\n };\r\n } else {\r\n return {\r\n studyName: \"\",\r\n companyStudyId: this.props.modalAgNode.companyStudyId,\r\n delayIndicator: \"\",\r\n researchType: \"\",\r\n clinicalTrailId: \"\",\r\n infoLink: \"\",\r\n comments: \"\",\r\n startDate: null,\r\n approvalDate: null,\r\n researchDate: null,\r\n isActive: true,\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n studyName: Yup.string()\r\n .required(\"Required\")\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(500, \"Must be 500 characters or less\"),\r\n companyStudyId: Yup.string()\r\n .required(\"Required\")\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .test(\r\n \"checkDuplicateCompanyStudyId\",\r\n \"Company Study Id already exists\",\r\n async (_formikValue) => {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n if (_formikValue === this.props.modalAgNode.companyStudyId) {\r\n return true;\r\n }\r\n }\r\n try {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_TENANT_HTTP}/Study/CompanyStudyExists/${this.context.user.tenantId}/${_formikValue}`\r\n );\r\n const isExists = await result.json();\r\n return !isExists;\r\n } catch (error) {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n }\r\n ),\r\n delayIndicator: Yup.number().required(\"Required\").typeError('Required'),\r\n researchType: Yup.string().required(\"Required\").typeError('Required'),\r\n startDate: Yup.date().required(\"Required\").typeError('Required').min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n clinicalTrailId: Yup.string()\r\n .test(\r\n \"checkLengthOfClinicalTrialId\",\r\n \"Must be exactly 11 characters or empty\",\r\n (val) => {\r\n console.log(\"val\", val);\r\n if (val === undefined) {\r\n return true\r\n } else {\r\n if (val === \"\" || val.length === 11) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n }\r\n }),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.STUDY_DETAIL.cannotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n Study Details\r\n {this.props.inputAction === CrudAction.UPDATE ? RolePermissionService.STUDY_DETAIL.cannotEdit ? LayoutService.getIconButton(false, MatIconService.CLOSE, \"close\",\r\n () => { this.props.onClose(false) }, \"secondary\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n {this.state.fetchResult === ResultStatus.SUCCESS ? (\r\n

    Your Study has been updated!!

    \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 {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"delayIndicator\",\r\n \"Delay Indicator *\",\r\n this.state.delayIndicatorData,\r\n \"lovId\",\r\n \"lovKey\",\r\n \"98%\"\r\n )}\r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"researchType\",\r\n \"Research Type *\",\r\n this.state.researchTypeData.sort((a, b) => a.lovKey.localeCompare(b.lovKey)),\r\n \"lovKey\",\r\n \"lovKey\",\r\n \"98%\"\r\n )}\r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"isActive\",\r\n \"Active\"\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n {/*
    {JSON.stringify(this.props.modalAgNode,null,2)}
    */}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.props.onClose(false);\r\n }}\r\n onRetry={() => {\r\n console.log(\"Retry Clicked\");\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(StudyDetailsComponent);\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { ResultStatus, CrudAction } from \"../../shared/types/enums\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { withStyles } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport StudiesListService from \"./studiesListService\";\r\nimport IsActiveIconRendererComponent from \"../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport ChildMessageRendererComponent from \"../../shared/components/childMessageRendererComponent\";\r\nimport { Dialog } from \"@material-ui/core\";\r\nimport StudyDetailsComponent from \"./study-details/studyDetailsComponent\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\n\r\nclass StudiesListComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = StudiesListService;\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n };\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n formatStudyList = (_studyList, _delayIndicatorData) => {\r\n let delayIndicatorData = [\r\n { lovId: 0, lovKey: \"\" },\r\n { lovId: 1, lovKey: \"1-R&D on a New Product or New Use/Indication of an Existing Product\" },\r\n { lovId: 2, lovKey: \"2-Clinical Investication on a New Product\" },\r\n { lovId: 3, lovKey: \"3-No delay\" },\r\n ..._delayIndicatorData\r\n ];\r\n\r\n let studyList = _studyList.map(sl => {\r\n const found = delayIndicatorData.find(d => String(d.lovId) === sl.delayIndicator);\r\n return found ? { ...sl, delayIndicatorName: delayIndicatorData.find(d2 => String(d2.lovId) === sl.delayIndicator).lovKey, } : { ...sl, delayIndicator: \"\", delayIndicatorName: \"\", };\r\n });\r\n\r\n return (studyList);\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n StudiesListService.getAllStudiesAsOBS(this.context.user.tenantId),\r\n StudiesListService.getNonEntityLOVsByIDAsOBS(this.context.user.tenantId, 5),\r\n StudiesListService.getNonEntityLOVsByIDAsOBS(this.context.user.tenantId, 4),\r\n ]).subscribe(\r\n ([_studyList, _researchTypeData, _delayIndicatorData,]) => {\r\n this.setState(\r\n {\r\n studyList: this.formatStudyList(_studyList, _delayIndicatorData),\r\n researchTypeData: _researchTypeData,\r\n delayIndicatorData: _delayIndicatorData,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n (_exception) => {\r\n console.log(_exception);\r\n }\r\n )\r\n );\r\n }\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n\r\n this.gridApi.sizeColumnsToFit();\r\n };\r\n methodFromParent = (cell, node) => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node });\r\n };\r\n\r\n handleCreateModal = () => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n this.setState({ modalAgNode: { srId: 0 } });\r\n };\r\n\r\n handleHide = () => {\r\n this.setState({ modalShow: false });\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (RolePermissionService.STUDY.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n { { this.fetchData(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 case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(StudiesListComponent);\r\n","import Cache from \"../../../shared/store/cache\";\r\nimport { ResultStatus, GST_API } from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\n\r\nexport default class DocumentListService {\r\n // subscriptions\r\n static oSUBSCRIPTIONS = new SubscriptionArray();\r\n\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, context, _documentType) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(context, _documentType);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(context, _documentType) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n return ApiService.fetchHTTP_API(\r\n GST_API.Core,\r\n `/Document/GetDocuments/${context.user.tenantId}/${_documentType}/false`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n );\r\n }\r\n\r\n /** API Fetch */\r\n static fetchData(_component, _ignoreCache = false) {\r\n this.oSUBSCRIPTIONS.cancelAll();\r\n _component.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSUBSCRIPTIONS.add(\r\n this.getObs(_ignoreCache).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.CACHE.SET(o);\r\n _component.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n // onResultStatus.ERROR\r\n _component.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static dateFormatter(params) {\r\n return new Date(params.value).toLocaleDateString();\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Document\",\r\n field: \"fileType\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n cellRenderer: \"agGridDownloadFileViaImageCellRenderer\",\r\n width: 100,\r\n },\r\n {\r\n headerName: \"Document Name\",\r\n field: \"documentName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Document Description\",\r\n field: \"documentDescription\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n },\r\n {\r\n headerName: \"File Name\",\r\n field: \"fileName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 200,\r\n },\r\n {\r\n headerName: \"File Type\",\r\n field: \"fileType\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 100,\r\n },\r\n ];\r\n }\r\n}\r\n","import React, { Component, createRef } from \"react\";\r\nimport csv_icon from \"../../../public/images/csv-export-icon.png\";\r\nimport excel_icon from \"../../../public/images/xls-export-icon.png\";\r\nimport pdf_icon from \"../../../public/images/pdf-icon.png\";\r\nimport ms_word_icon from \"../../../public/images/ms-word-icon.png\";\r\nimport unknown_file from \"../../../public/images/UnknownFile.png\";\r\n\r\nexport default class AgGridDownloadFileViaImageCellRenderer extends Component {\r\n link = createRef();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod = async () => {\r\n\r\n console.log(\"RowCol\", `Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`,);\r\n console.log(\"this.props.node.data\", this.props.node.data,);\r\n console.log(\"this.props.value\", this.props.value,);\r\n console.log(\"this.link\", this.link,);\r\n console.log(\"window.URL\", window.URL);\r\n\r\n if (this.link.current.href) { return }\r\n let blob = await this.props.context.componentParent.handleDownloadAg(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data, this.props.value, this.link, window.URL);\r\n const href = window.URL.createObjectURL(blob);\r\n this.link.current.download = this.props.node.data.blobName;\r\n this.link.current.href = href;\r\n this.link.current.click();\r\n }\r\n\r\n render() {\r\n let imageSrc = excel_icon;\r\n let imageAlt = \"Excel Icon\";\r\n\r\n switch (this.props.value) {\r\n case \"csv\":\r\n imageSrc = csv_icon;\r\n imageAlt = \"CSV\";\r\n break;\r\n case \"xls\":\r\n case \"xlsx\":\r\n imageSrc = excel_icon;\r\n imageAlt = \"Excel\";\r\n break;\r\n case \"pdf\":\r\n imageSrc = pdf_icon;\r\n imageAlt = \"PDF\";\r\n break;\r\n case \"doc\":\r\n case \"docx\":\r\n imageSrc = ms_word_icon;\r\n imageAlt = \"MS Word\";\r\n break;\r\n default:\r\n imageSrc = unknown_file;\r\n imageAlt = \"Unknown File\";\r\n }\r\n\r\n return (\r\n // eslint-disable-next-line\r\n \r\n {imageAlt}\r\n \r\n );\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class ComplianceReportMappingService {\r\n\r\n static getFieldLOVByIdsAsOBS = (_tenantId, _fieldId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetFieldLOVByIds/${_tenantId}/${_fieldId}`\r\n );\r\n };\r\n\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n IconButton,\r\n TextField,\r\n Grid,\r\n FormHelperText,\r\n Input,\r\n} from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport DocumentDetailsService from \"./documentDetailsService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport OktaAuthService from \"../../../public/authentication/oktaAuthService\";\r\n\r\nclass DocumentDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n lastValidatedCompanyStudyId = null;\r\n lastValidatedCompanyStudyResult = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n this.checkPermissionsToViewDocDetails();\r\n }\r\n checkPermissionsToViewDocDetails = () => {\r\n if (this.props.documentType === \"SystemDocuments\") {\r\n this.setState({\r\n canNotView: RolePermissionService.SYSTEM_DOCUMENTS_DETAILS.cannotView,\r\n canNotEdit: RolePermissionService.SYSTEM_DOCUMENTS_DETAILS.cannotEdit\r\n });\r\n } else if (this.props.documentType === \"ComplianceDocuments\") {\r\n this.setState({\r\n canNotView: RolePermissionService.COMPLIANCE_DOCUMENTS_DETAILS.cannotView,\r\n canNotEdit: RolePermissionService.COMPLIANCE_DOCUMENTS_DETAILS.cannotEdit\r\n });\r\n } else {\r\n this.setState({\r\n canNotView: RolePermissionService.CUSTOMER_DOCUMENTS_DETAILS.cannotView,\r\n canNotEdit: RolePermissionService.CUSTOMER_DOCUMENTS_DETAILS.cannotEdit\r\n });\r\n }\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n DocumentDetailsService.getFieldLOVByIdsAsOBS(this.context.user.tenantId, 268),\r\n ]).subscribe(\r\n // success\r\n ([_documentCategoryList]) => {\r\n this.setState(\r\n {\r\n documentCategoryList: _documentCategoryList,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING, });\r\n\r\n // 2) extract the formik values into a FormData object\r\n const formData = new FormData();\r\n\r\n // 3) determine the action and assign the appropriate props\r\n let actionVerb = \"\";\r\n let targetUrl = \"\";\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n // CREATE\r\n formData.append(\"documentId\", 0);\r\n formData.append(\"documentCategoryId\", _formikProps.values.documentCategory);\r\n formData.append(\"fileType\", \"csv\");\r\n formData.append(\"documentName\", _formikProps.values.documentName);\r\n formData.append(\"documentDescription\", _formikProps.values.documentDescription);\r\n formData.append(\"isDeleted\", false);\r\n formData.append(\"isActive\", true);\r\n formData.append(\"startDate\", \"2020-08-19T20:06:07Z\");\r\n formData.append(\"endDate\", \"2021-08-19T20:06:07Z\");\r\n formData.append(\"filePath\", this.state.selectedFileName);\r\n formData.append(\"efile\", this.state.selectedFile);\r\n actionVerb = \"POST\";\r\n targetUrl = `/Document/SaveDocument/${this.context.user.tenantId}?userId=${this.context.user.userId}`;\r\n } else {\r\n // UPDATE\r\n // formData.append(\"TransactionId\", 0); //int\r\n // formData.append(\"TenantId\", this.context.user.tenantId); //int\r\n // formData.append(\"TransactionDocumentId\", String(this.props.modalAgNode.documentID)); //string\r\n // formData.append(\"PorzioGSTDocumentID\", \"0\"); //string\r\n // formData.append(\"EntityId\", 0); //int\r\n // formData.append(\"DocumentName\", _formikProps.values.documentName); //string\r\n // formData.append(\"DocumentDescription\", _formikProps.values.documentDescription); //string\r\n // formData.append(\"DocumentType\", \"csv\"); //string\r\n // formData.append(\"DocumentTypeId\", _formikProps.values.documentCategory); //int\r\n\r\n // formData.append(\"CreatedBy\", this.context.user.userId); //int\r\n // formData.append(\"ModifiedDate\", \"2020-12-28\"); //string\r\n\r\n // // formData.append(\"DocumentTypes\", this.props.modalAgNode.documentID); //array\r\n // // formData.append(\"Document\", this.props.modalAgNode.documentID); //string\r\n // // formData.append(\"ContainerType\", this.props.modalAgNode.documentID); //string\r\n\r\n // if (this.state.selectedFileName) {\r\n // formData.append(\"FilePath\", this.state.selectedFileName);\r\n // formData.append(\"BlobName\", this.state.selectedFileName);\r\n // formData.append(\"efile\", this.state.selectedFile);\r\n // } else {\r\n // formData.append(\"FilePath\", \"\");\r\n // formData.append(\"BlobName\", \"\");\r\n // formData.append(\"efile\", \"\");\r\n // }\r\n // actionVerb = \"POST\";\r\n // targetUrl = `/Document/SaveDocument/${this.context.user.tenantId}`;\r\n formData.append(\"documentId\", this.props.modalAgNode.documentID);\r\n formData.append(\"documentCategoryId\", _formikProps.values.documentCategory);\r\n formData.append(\"fileType\", this.state.selectedFileName.split(\".\").pop());\r\n formData.append(\"documentName\", _formikProps.values.documentName);\r\n formData.append(\"documentDescription\", _formikProps.values.documentDescription);\r\n formData.append(\"isDeleted\", false);\r\n formData.append(\"isActive\", true);\r\n formData.append(\"startDate\", \"2020-08-19T20:06:07Z\");\r\n formData.append(\"endDate\", \"2021-08-19T20:06:07Z\");\r\n formData.append(\"filePath\", this.state.selectedFileName);\r\n formData.append(\"fileName\", this.props.modalAgNode.fileName);\r\n formData.append(\"blobName\", this.props.modalAgNode.blobName);\r\n formData.append(\"efile\", this.state.selectedFile);\r\n actionVerb = \"POST\";\r\n targetUrl = `/Document/SaveDocument/${this.context.user.tenantId}?userId=${this.context.user.userId}`;\r\n }\r\n\r\n // Do not set the Content-type in the headers below. Let the browser set it. For example\r\n // Content-Type: multipart/form-data; boundary=----WebKitFormBoundary3sy40ozPAfPAnNRy\r\n // The browser handles and controls the random string at the end of the boundary\r\n const headers = {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n };\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.CORE,\r\n targetUrl,\r\n formData,\r\n headers\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshGrid(true);\r\n this.props.onClose(false);\r\n } else {\r\n console.error(\"Error: falsey successResult while saving Document Details\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Document Details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n getInitialValues() {\r\n return {\r\n documentName: this.props.modalAgNode.documentName,\r\n documentDescription: this.props.modalAgNode.documentDescription,\r\n documentCategory: this.props.modalAgNode.documentCategoryId,\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n documentName: Yup.string()\r\n .required(\"Required\")\r\n .min(3, \"Must be at least 3 characters long\")\r\n .max(256, \"Must be 256 characters or less\"),\r\n documentCategory: Yup.number().required(\"Required\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n if (this.state.canNotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n \r\n Document Details\r\n \r\n {this.props.inputAction === CrudAction.UPDATE ? this.state.canNotEdit ? LayoutService.getIconButton(false, MatIconService.CLOSE, \"close\",\r\n () => { this.props.onClose(false) }, \"secondary\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"documentCategory\",\r\n \"Document Category\",\r\n this.state.documentCategoryList,\r\n \"lovId\",\r\n \"lovKey\",\r\n \"98%\"\r\n )}\r\n \r\n \r\n Attachment\r\n \r\n this.setState({\r\n selectedFile: event.target.files[0],\r\n selectedFileName: event.target.files[0].name,\r\n })\r\n }\r\n fullWidth\r\n />\r\n
    \r\n \r\n Attached File:\r\n \r\n \r\n {this.props.inputAction === CrudAction.UPDATE\r\n ? this.props.modalAgNode.fileName\r\n : \"\"}\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.props.onClose(false);\r\n }}\r\n onRetry={() => {\r\n console.log(\"Retry Clicked\");\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(DocumentDetailsComponent);\r\n","import React, { Component } from \"react\";\r\nimport { Dialog } from \"@material-ui/core\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport PageHeaderComponent from \"../../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport { withStyles } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../../shared/services/theme/matClassService\";\r\nimport DocumentListService from \"./documentListService\";\r\nimport ChildMessageRendererComponent from \"../../../shared/components/childMessageRendererComponent\";\r\nimport AgGridDownloadFileViaImageCellRenderer from \"../../../shared/components/ag-grid/agGridDownloadFileViaImageCellRenderer\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport DocumentDetailsComponent from \"../document-details/documentDetailsComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport OktaAuthService from \"../../../public/authentication/oktaAuthService\";\r\n\r\nclass DocumentListComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = DocumentListService;\r\n constructor(props) {\r\n super(props);\r\n this.fetchData.bind(this);\r\n this.handleHide = this.handleHide.bind(this);\r\n\r\n this.state = {\r\n rowData: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n agGridDownloadFileViaImageCellRenderer: AgGridDownloadFileViaImageCellRenderer,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n };\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n this.checkPermissionForCreateDocument();\r\n }\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n checkPermissionForCreateDocument = () => {\r\n if (this.props.documentType === \"SystemDocuments\") {\r\n this.setState({\r\n canNotCreate: RolePermissionService.SYSTEM_DOCUMENTS_DETAILS.cannotCreate,\r\n canNotDownload: RolePermissionService.DOWNLOAD_SYSTEM_DOCUMENTS.cannotView\r\n });\r\n } else if (this.props.documentType === \"ComplianceDocuments\") {\r\n this.setState({\r\n canNotCreate: RolePermissionService.COMPLIANCE_DOCUMENTS_DETAILS.cannotCreate,\r\n canNotDownload: RolePermissionService.DOWNLOAD_COMPLIANCE_DOCUMENTS.cannotView\r\n });\r\n } else {\r\n this.setState({\r\n canNotCreate: RolePermissionService.CUSTOMER_DOCUMENTS_DETAILS.cannotCreate,\r\n canNotDownload: RolePermissionService.DOWNLOAD_CUSTOMER_DOCUMENTS.cannotView\r\n });\r\n }\r\n }\r\n fetchData = (_ignoreCache = true) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, rowData: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(\r\n _ignoreCache,\r\n this.context,\r\n this.props.documentType\r\n ).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n o.sort(this.compareFn);\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({\r\n rowData: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.sizeColumnsToFit();\r\n console.log(\"fit\");\r\n };\r\n methodFromParent = (cell, node) => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node });\r\n };\r\n\r\n handleDownloadAg = async (\r\n cell,\r\n agNodeData,\r\n filename,\r\n linkRefAg,\r\n windowUrl\r\n ) => {\r\n //ToastService.showInfo(\"Under Construction\");\r\n if (this.state.canNotDownload) {\r\n this.setState({ accessDenied: this.state.canNotDownload });\r\n return;\r\n } else {\r\n const result = await fetch(\r\n `${process.env.REACT_APP_CORE_HTTP}/Document/DownloadDocument/${this.context.user.tenantId}?filename=${agNodeData.blobName}`,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Authorization: `Bearer ` + OktaAuthService.getAccessToken(),\r\n },\r\n }\r\n );\r\n const blob = await result.blob();\r\n return blob;\r\n }\r\n\r\n };\r\n\r\n handleCreateModal = () => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n this.setState({ modalAgNode: { srId: 0 } });\r\n };\r\n\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n { { this.fetchData(true); }, },\r\n ]}\r\n />}\r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n {RolePermissionService.getAccessDeniedComponent(classes, () => { this.setState({ accessDenied: false }) })};\r\n \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default withStyles(MatClassService)(DocumentListComponent);\r\n","import React, { Component } from \"react\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { withStyles } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport { Tabs, Tab, Divider } from \"@material-ui/core\";\r\nimport DocumentListComponent from \"./document-list/documentListComponent\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\n\r\nclass DocumentComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n //STORE = StudiessListService;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n selectedTabIndex: 0,\r\n };\r\n }\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n onTabChange = (event, newValue) => {\r\n this.setState({\r\n selectedTabIndex: newValue,\r\n });\r\n };\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.selectedTabIndex === 0 ?\r\n RolePermissionService.SYSTEM_DOCUMENTS.cannotView ? RolePermissionService.getAccessDeniedComponent(classes, () => { }, false)\r\n : \r\n :\r\n null\r\n }\r\n\r\n {this.state.selectedTabIndex === 1 ?\r\n RolePermissionService.COMPLIANCE_DOCUMENTS.cannotView ? RolePermissionService.getAccessDeniedComponent(classes, () => { }, false)\r\n : \r\n :\r\n null\r\n }\r\n {this.state.selectedTabIndex === 2 ?\r\n RolePermissionService.CUSTOMER_DOCUMENTS.cannotView ? RolePermissionService.getAccessDeniedComponent(classes, () => { }, false)\r\n : \r\n :\r\n null\r\n }\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default withStyles(MatClassService)(DocumentComponent);\r\n","import React, { Component } from \"react\";\r\nimport { withStyles, Typography, Grid } from \"@material-ui/core\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { ResultStatus, } from \"../../shared/types/enums\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\n\r\nclass ContactUsComponent extends Component {\r\n static contextType = AuthContext;\r\n\r\n state = {\r\n fetchResult: ResultStatus.SUCCESS,\r\n };\r\n\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {/* Header Componenet */}\r\n \r\n \r\n \r\n Porzio Life Sciences, LLC | Porzio Life Sciences, LLC is an RLDatix Company.\r\n \r\n \r\n The Help Desk is open 8 a.m. to 8 p.m. ET.\r\n \r\n \r\n For assistance, please contact your Customer Service Liaison.\r\n \r\n \r\n You can also reach us at:\r\n \r\n \r\n Phone: 877-477-7411\r\n \r\n \r\n Email: gstsupport@porziols.com\r\n \r\n \r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport default withStyles(MatClassService)(ContactUsComponent);\r\n","import React from \"react\";\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { ROLE_CELL_TYPE } from \"../../types/enums\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport { DataService } from \"../../services/dataService\";\r\nimport { AgGridUtil } from \"../../services/ag-grid/agGridUtil\";\r\n\r\nexport default class AgGridDynamicCheckboxCellRendererComponent extends React.Component {\r\n\r\n // indeterminate is always triggered by the childrens\r\n // if most of the child are true, then this is true & indeterminate\r\n // else if most of the child are false, then this is false & indeterminate\r\n constructor(props) {\r\n super(props);\r\n this.state = { reRender: false, isIndeterminate: false };\r\n }\r\n\r\n render() {\r\n const { classes, data, colDef } = this.props;\r\n let _disabled = AgGridUtil.isEditingDisabled(this.props);\r\n if (this.props.getIsReadonly && !_disabled) {\r\n _disabled = this.props.getIsReadonly(this, data);\r\n }\r\n\r\n const colName = colDef.headerName;\r\n const cellActionData = DataService.getFirstOrDefault((data.actionsList || []).filter((x) => x.actionName === colName));\r\n\r\n var roleType = ROLE_CELL_TYPE.NONE;\r\n if (!cellActionData) { return (<>); }\r\n else if (!cellActionData.isApplicable) { roleType = ROLE_CELL_TYPE.NONE; }\r\n else {\r\n // determine parent or child here\r\n roleType = cellActionData.isDriveChilds ? ROLE_CELL_TYPE.PARENT : ROLE_CELL_TYPE.CHILD;\r\n }\r\n\r\n switch (roleType) {\r\n case ROLE_CELL_TYPE.PARENT:\r\n return ( { this.onStateChangeRequest(false, cellActionData); }}\r\n />);\r\n case ROLE_CELL_TYPE.CHILD:\r\n return ( { this.onStateChangeRequest(true, cellActionData); }}\r\n />);\r\n case ROLE_CELL_TYPE.NONE:\r\n default:\r\n return (MatIconService.DASH);\r\n }\r\n }\r\n\r\n onStateChangeRequest = (_isChild, _cellActionData) => {\r\n const { colDef, node, api, agGridReact } = this.props;\r\n\r\n // 1/2) update the current cells data\r\n _cellActionData.hasAccess = !_cellActionData.hasAccess;\r\n\r\n var rowsToRefersh = [];\r\n if (_isChild) {\r\n // find the prev node whose permissionId is this node's parentId\r\n const parentNodeInfo = this.getParentNodeInfo();\r\n if (parentNodeInfo) {\r\n // get all childrens of the parent\r\n const childrenNodesInfo = this.getChildrenInfo(parentNodeInfo);\r\n // if all children are checked: set the hasAccess of Parent to true else false\r\n parentNodeInfo.nodeAction.hasAccess = childrenNodesInfo.isAllChecked;\r\n // prepare the rows to referesh\r\n rowsToRefersh = [parentNodeInfo.node, ...childrenNodesInfo.nodes];\r\n } else {\r\n // if no parent then refresh only this\r\n rowsToRefersh = [node];\r\n }\r\n } else {\r\n // set this node as parent node info\r\n const parentNodeInfo = { rowIndex: node.rowIndex, node: node, nodeAction: _cellActionData };\r\n // get all childrens of this node (parent)\r\n const childrenNodesInfo = this.getChildrenInfo(parentNodeInfo);\r\n // if this is checked : check all children\r\n childrenNodesInfo.nodeActions.forEach(nodeAction => { nodeAction.hasAccess = _cellActionData.hasAccess; });\r\n // prepare the rows to referesh\r\n rowsToRefersh = [parentNodeInfo.node, ...childrenNodesInfo.nodes];\r\n }\r\n\r\n // 2/2) refresh the specific cells only\r\n api.refreshCells({\r\n rowNodes: rowsToRefersh, // specify rows, or all rows by default\r\n columns: [_cellActionData.actionName], // specify columns, or all columns by default\r\n force: true,\r\n });\r\n };\r\n\r\n getParentNodeInfo = () => {\r\n const { data, colDef, node, api, agGridReact } = this.props;\r\n\r\n let oRET = null;\r\n for (var _rowIndex = node.rowIndex - 1; _rowIndex >= 0; _rowIndex--) {\r\n const _prevNode = api.getRowNode(_rowIndex);\r\n if (_prevNode.data.permissionId === data.parentId) {\r\n oRET = {\r\n rowIndex: _rowIndex,\r\n node: _prevNode,\r\n nodeAction: DataService.getFirstOrDefault((_prevNode.data.actionsList || []).filter((x) => x.actionName === colDef.headerName))\r\n };\r\n _rowIndex = -1; // cancel forLoop\r\n }\r\n }\r\n return oRET;\r\n }\r\n\r\n getChildrenInfo = (_parentNodeInfo) => {\r\n const { colDef, node, api, agGridReact } = this.props;\r\n\r\n // true will be reset before returning, if the nodes are empty\r\n let oRET = { isAllChecked: true, nodes: [], nodeActions: [] };\r\n\r\n if (_parentNodeInfo) {\r\n var rowData = agGridReact.props.rowData;\r\n for (var _rowIndex = _parentNodeInfo.rowIndex; _rowIndex < rowData.length; _rowIndex++) {\r\n const _nextNode = api.getRowNode(_rowIndex);\r\n if (_nextNode.data.parentId === _parentNodeInfo.node.data.permissionId) {\r\n const _nodeAction = DataService.getFirstOrDefault((_nextNode.data.actionsList || []).filter((x) => x.actionName === colDef.headerName));\r\n\r\n oRET.nodes.push(_nextNode); // push the node\r\n oRET.nodeActions.push(_nodeAction); // push the node\r\n\r\n // also check the below in this same loop\r\n if (!_nodeAction.hasAccess) { oRET.isAllChecked = false; }\r\n\r\n } else if (oRET.nodes.length > 0) { // no need to go further\r\n _rowIndex = rowData.length; // break the forloop\r\n }\r\n }\r\n }\r\n\r\n // reset the if nodes are empty\r\n if (oRET.nodes.length === 0) { oRET.isAllChecked = false; }\r\n // return\r\n return oRET;\r\n }\r\n\r\n //---\r\n}\r\n","import RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport { AgGridColumnExt } from \"../../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport { DataService } from \"../../../../shared/services/dataService\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport { API_ENDPOINT, ReportCategory } from \"../../../../shared/types/enums\";\r\n\r\nexport class RolePermissionsService {\r\n\r\n static getPermissionsViewAsOBS = (_tenantId, _sectionId, _roleId) => {\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, `/Permission/FetchPermissionsView?tenantId=${_tenantId}§ionId=${_sectionId}&roleId=${_roleId}`);\r\n }\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs = (_componentThisRef) => {\r\n return [\r\n {\r\n headerName: \"Permission Name\",\r\n editable: false,\r\n resizable: true,\r\n flex: 1,\r\n cellRenderer: \"hierarchicalTextboxRendererComponent\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n },\r\n ...this.getPermissionActionsColumns(_componentThisRef.state.permissionActionsList)\r\n ]\r\n }\r\n\r\n static getPermissionActionsColumns = (_permissionActions) => {\r\n // excludes view-deleted column\r\n _permissionActions = (_permissionActions || []).filter(x => x.actionId !== 6);\r\n\r\n var oRET = [];\r\n let _isParent = false;\r\n if (DataService.hasElements(_permissionActions)) {\r\n _permissionActions.forEach(_action => {\r\n oRET.push({\r\n headerName: _action.actionName, //Create\r\n field: _action.actionName, //Create\r\n sortable: false,\r\n resizable: true,\r\n width: 65,\r\n cellRenderer: \"dynamicCheckBoxRendererComponent\",\r\n cellRendererParams: {\r\n getIsReadonly: (_cellRef, _data) => {\r\n return _data.refferenceId > 0;\r\n }\r\n },\r\n cellStyle: (_params) => {\r\n let _cellStyle = { \"border-right\": \"1px solid lightgray\", \"text-align\": \"center\" };\r\n const cellActionData = DataService.getFirstOrDefault((_params.data.actionsList || []).filter((x) => x.actionName === _params.colDef.headerName));\r\n if (cellActionData?.isDriveChilds === true) {\r\n _isParent = true;\r\n _cellStyle['background-color'] = MatThemeService.getCellHeaderBG();\r\n }\r\n\r\n if (_params.data.refferenceId > 0) {\r\n _cellStyle['background-color'] = MatThemeService.getCellHeaderBG();\r\n }\r\n return _cellStyle;\r\n }\r\n });\r\n });\r\n }\r\n return oRET;\r\n }\r\n\r\n\r\n static fetchTemplates(_selectedTabIndex, _currrentTenantId, _roleId) {\r\n /**\r\n * As per the discussion with the DB Team\r\n --#2--Report Role permission level (Master Data) -->Specific role\r\n EXEC USP_RPT_REPORTBYCATEGORYIDGET @CATEGORYID = 1, @PageNumber = 1, @RowsperPage = 1000, @IsViewable = 1, @IsSubcribe = 1, @RoleID = 2\r\n --#2.1--Report Role permission -->ADMIN ROLE (No Scenario in our Application)\r\n EXEC USP_RPT_REPORTBYCATEGORYIDGET @CATEGORYID = 1, @PageNumber = 1, @RowsperPage = 1000, @IsViewable = 1, @IsSubcribe = 0, @RoleID = NULL\r\n */\r\n\r\n const jsonObj = {\r\n \"tenantId\": _currrentTenantId,\r\n \"categoryId\": _selectedTabIndex === 1 ? ReportCategory.STANDARD_TEMPLATES : ReportCategory.COMPLIANCE_TEMPLATES,\r\n \"roleId\": _roleId, // handled at the api side\r\n \"isViewable\": true,\r\n \"isSubscribe\": true,\r\n \"pageNo\": 1,\r\n \"pageSize\": 1000,\r\n };\r\n\r\n return ApiService.postOBS(API_ENDPOINT.REPORTS, `/Reports/FetchReportPermissions`, JSON.stringify(jsonObj));\r\n }\r\n\r\n // save-api\r\n static saveReportTemplatesAsOBS(_selectedTabIndex, _currrentTenantId, _userId, _roleId, _selIdsAsString) {\r\n const jsonBody = JSON.stringify({\r\n \"tenantId\": _currrentTenantId,\r\n \"userId\": _userId,\r\n \"categoryId\": _selectedTabIndex === 1 ? ReportCategory.STANDARD_TEMPLATES : ReportCategory.COMPLIANCE_TEMPLATES,\r\n \"roleId\": _roleId,\r\n \"reportIds\": _selIdsAsString,\r\n \"reportLibIds\": \"\"\r\n });\r\n // TODO: ensure that this save is affecting ReportMaster Table for the seklected tenant\r\n return ApiService.postOBS(API_ENDPOINT.REPORTS, `/Reports/SaveReportSubscriptions`, jsonBody);\r\n }\r\n\r\n // column-definitions\r\n static getReportSubscriptionColumnDefs(_parentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(!_parentThisRef.state.isReadOnly, \"text\", \"isSubscription\", \"\").cellRenderer(\"isSubscriptionCellRenderer\").fixedWidth(56).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportName\", \"Template Name\").flexWeight(3).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"templateYear\", \"Template Year\").flexWeight(2).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"jurisdiction\", \"Jurisdiction\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"izendaDisplayName\", \"Template Description\").flexWeight(3).tooltip().SET(),\r\n\r\n ];\r\n }\r\n\r\n\r\n}","import React from \"react\";\r\nimport Checkbox from '@material-ui/core/Checkbox';\r\nimport { CHECK_STATE, ROLE_CELL_TYPE } from \"../../types/enums\";\r\nimport { MatIconService } from \"../../services/theme/matIconService\";\r\nimport { Typography } from \"@material-ui/core\";\r\n\r\nexport default class AgGridHierarchicalTextboxRendererComponent extends React.Component {\r\n\r\n // indeterminate is always triggered by the childrens\r\n // if most of the child are true, then this is true & indeterminate\r\n // else if most of the child are false, then this is false & indeterminate\r\n constructor(props) {\r\n super(props);\r\n this.state = {};\r\n }\r\n\r\n render() {\r\n const { classes, data } = this.props;\r\n const _leftPadding = data.hierarcyLevel <= 1 ? 0 : (data.hierarcyLevel * data.hierarcyLevel * 6);\r\n const _variant = data.hierarcyLevel > 1 ? 'body2' : 'subtitle2';\r\n\r\n return (\r\n \r\n {/* {data.permissionName} */}\r\n {`${data.permissionName} - (${data.permissionId})`}\r\n \r\n );\r\n\r\n }\r\n}\r\n","import { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ReportCategory } from \"../../../shared/types/enums\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nexport default class ReportTemplateSubscriptionService {\r\n\r\n \r\n\r\n //---\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, ReportCategory } from \"../../../shared/types/enums\";\r\n\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ReportTemplateSubscriptionService from \"./reportTemplateSubscriptionsService\"\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\n\r\nclass ReportTemplateSubscriptionsComponent extends Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isReadOnly: true,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n complianceTemplateRows: [],\r\n frameworkComponents: {\r\n isSubscriptionCellRenderer: AgGridCheckboxCellRendererComponent,\r\n },\r\n };\r\n }\r\n\r\n componentWillUnmount() { this.oSubscriptions.cancelAll(); }\r\n componentDidMount() { this.fetchData(); }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, complianceTemplateRows: [] });\r\n\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n ReportTemplateSubscriptionService.fetchTemplates(this.context.user.tenantId, this.props.roleId),\r\n ]).subscribe(\r\n ([_complianceTemplateRows]) => {\r\n this.setState({\r\n complianceTemplateRows: _complianceTemplateRows,\r\n fetchResult: ResultStatus.SUCCESS\r\n });\r\n },\r\n (_error) => {\r\n ToastService.showError(\"Error Occured.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n this.props.compInfo.ref = this;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n {/* Grid Componenet */}\r\n {\r\n this.gridApi = event.api;\r\n event.api.closeToolPanel();\r\n }}\r\n >\r\n
    \r\n\r\n\r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(); }} />);\r\n }\r\n }\r\n\r\n gridApi = null;\r\n postData = () => {\r\n this.oSubscriptions.cancelAll();\r\n let selectedIds = [];\r\n let allIds = [];\r\n this.gridApi.forEachNode((node) => {\r\n allIds.push(node.data[\"reportId\"]);\r\n if (node.data[\"isSubscription\"] === true) {\r\n selectedIds.push(node.data[\"reportId\"]);\r\n }\r\n });\r\n\r\n if (DataService.hasNoElements(allIds)) {\r\n // || DataService.hasNoElements(selectedIds)) { // excluding selectedId's since the admin may restrict a role not to view any reports\r\n ToastService.showWarning(\"No Data to Save\");\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n this.oSubscriptions.add(\r\n ReportTemplateSubscriptionService.saveComplianceTemplatesAsOBS(this.context.user.tenantId, this.context.user.userId,\r\n this.props.roleId, selectedIds.join()).subscribe(\r\n (success) => {\r\n ToastService.showSuccess(\"Successfully Saved\");\r\n this.fetchData();\r\n },\r\n (error) => {\r\n ToastService.showError(\"Save Failed\");\r\n this.setState({ fetchResult: ResultStatus.LOADED }); // just show the UI\r\n }\r\n )\r\n );\r\n }\r\n\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(ReportTemplateSubscriptionsComponent);","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\n\r\nimport { DataService, SubscriptionArray } from \"../../../../shared/services/dataService\";\r\nimport { AuthContext } from \"../../../../shared/store/authProvider\";\r\nimport { Grid, Tabs, Tab, Divider, Box } from \"@material-ui/core\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { AgGridUtil } from \"../../../../shared/services/ag-grid/agGridUtil\";\r\n\r\nimport { API_ENDPOINT, ResultStatus, SELECT_MODE } from \"../../../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../../shared/components/page/pageErrorComponent\";\r\nimport AgGridDynamicCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridDynamicCheckboxCellRendererComponent\";\r\nimport LayoutService from \"../../../../shared/services/layoutService\";\r\nimport { RolePermissionsService } from \"./rolePermissionsService\";\r\nimport LookupService from \"../../../../shared/services/lookupService\";\r\nimport MatThemeService from \"../../../../shared/services/theme/matThemeService\";\r\nimport AgGridHierarchicalTextboxRendererComponent from \"../../../../shared/components/elements/agGridHierarchicalTextboxRendererComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../../shared/components/page/dialogErrorFragmentComponent\"\r\nimport ApiService from \"../../../../shared/services/apiService\";\r\nimport PageDynamicHeaderComponent from \"../../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../../../shared/services/theme/matIconService\";\r\n\r\nimport RolePermissionService from \"../../../../shared/role-permissions/rolePermissionService\";\r\nimport ReportTemplateSubscriptionsComponent from \"../../../tenant-profile-setup/report-template-subscriptions/reportTemplateSubscriptionsComponent\";\r\nimport ToastService from \"../../../../shared/services/toastService\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport AgGridSelectMenuComponent from \"../../../../shared/components/agGridSelectMenuComponent\";\r\n\r\nclass RolePermissionsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = RolePermissionsService;\r\n\r\n reportSubscriptionComponentInfo = { ref: null };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isReadOnly: true,\r\n modalAgNode: null,\r\n\r\n lookupFetchResult: ResultStatus.NOT_LOADED,\r\n selRoleId: '',\r\n rolesList: [],\r\n selSectionId: '',\r\n sectionList: [],\r\n permissionActionsList: [],\r\n dataErrorMessage: '',\r\n\r\n dataFetchResult: ResultStatus.NOT_LOADED,\r\n data: [],\r\n agPermissionGridUtils: new AgGridUtil(\"permissionName\", {\r\n hierarchicalTextboxRendererComponent: AgGridHierarchicalTextboxRendererComponent,\r\n dynamicCheckBoxRendererComponent: AgGridDynamicCheckboxCellRendererComponent,\r\n }),\r\n\r\n anchorEl: null,\r\n openSelectMenu: false,\r\n reportFetchResult: ResultStatus.NOT_LOADED,\r\n reportTemplateRows: [],\r\n agReportGridUtils: new AgGridUtil(\"reportName\", {\r\n isSubscriptionCellRenderer: AgGridCheckboxCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentDidMount() { this.fetchLookups(); }\r\n\r\n getInitialValues() {\r\n return {\r\n sectionId: this.state.selSectionId,\r\n roleId: this.state.selRoleId,\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n sectionId: Yup.number().required(\"Required\"),\r\n roleId: Yup.number().required(\"Required\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n getSelectionIcon = () => {\r\n return this.state.selSectionId !== LookupService.reportTemplateSubscriptionId ? null : ({\r\n title: \"select\", icon: MatIconService.MENU, onClick: (e) => { this.setState({ anchorEl: e.currentTarget, openSelectMenu: true }); },\r\n isReadOnly: this.state.isReadOnly || !this.isGridReady\r\n });\r\n }\r\n\r\n onTabChange = (event, _newTabIndex) => {//TODO\r\n //const currentTabRef = this.tabIndexMap.get(this.state.selectedTabIndex).ref;\r\n this.setState({\r\n //showConfirmDialog: false,\r\n selectedRptSubscriptionTabIdx: _newTabIndex,\r\n isReadOnly: true\r\n }, () => this.fetchData());\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.ROLE_PERMISSIONS.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.onClose(false); });\r\n } else {\r\n switch (this.state.lookupFetchResult) {\r\n // Loading\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n // Good to Render the components\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n {/* Render the Header */}\r\n
    \r\n {/* Header Componenet */}\r\n { this.setState({ anchorEl: null, openSelectMenu: false }); }}\r\n />\r\n { this.props.history.goBack(); }, title: \"Go Back\" },\r\n { icon: MatIconService.RELOAD, iconColor: \"secondary\", title: \"Reload\", onClick: () => { this.setState({ isReadOnly: true }, () => { this.fetchData(); }); } },\r\n { ...this.getSelectionIcon() }\r\n ]}\r\n rightActions={\r\n // if not tenenat admin don't let them modify\r\n RolePermissionService.IS_NOT_TENANT_ADMIN ? [] : // TODO: Role Override 2/2 (enable/disable)\r\n [\r\n { icon: MatIconService.EDIT, iconColor: \"default\", onClick: () => { this.setState({ isReadOnly: false }) }, isReadOnly: !this.state.isReadOnly || RolePermissionService.ROLE_PERMISSIONS.cannotEdit, title: \"Edit\" },\r\n { icon: MatIconService.OK, iconColor: \"primary\", onClick: () => { this.postData(); }, isReadOnly: this.state.isReadOnly || RolePermissionService.ROLE_PERMISSIONS.cannotEdit, title: \"Save\" },\r\n ]}\r\n />\r\n\r\n
    \r\n {/* Render the Select */}\r\n \r\n \r\n {LayoutService.getDropDown(false, classes.dialogControl, classes.menuPaper, fProps, this.validationSchema, \"roleId\", \"Role\", this.state.roleList, \"id\", \"text\", null, true, \"48%\",\r\n (_formikProps, _newRoleId) => { this.setState({ selRoleId: _newRoleId }, () => { this.fetchData() }); })\r\n }\r\n {LayoutService.getDropDown(false, classes.dialogControl, classes.menuPaper, fProps, this.validationSchema, \"sectionId\", \"Section\", this.state.sectionList, \"id\", \"text\", null, true, \"48%\",\r\n (_formikProps, _newSectionId) => {\r\n this.setState({ selSectionId: _newSectionId }, () => { this.fetchData() });\r\n })\r\n }\r\n \r\n \r\n {/* Render the Grid */}\r\n {this.renderGrid(classes)}\r\n
    \r\n )}\r\n
    \r\n );\r\n // Error\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchLookups(); }} />);\r\n }\r\n }\r\n }\r\n\r\n isGridReady = false;\r\n renderGrid(_classes) {\r\n if (this.state.selSectionId === LookupService.reportTemplateSubscriptionId) {\r\n if (this.isGridReady) { this.state.agReportGridUtils.disableEditability(this.state.isReadOnly); }\r\n\r\n switch (this.state.reportFetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\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 params.api.closeToolPanel();\r\n this.isGridReady = true;\r\n this.state.agReportGridUtils.setGridParams(params, true);\r\n this.state.agReportGridUtils.disableEditability(this.state.isReadOnly);\r\n }}>\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(); }} />);\r\n }\r\n } else {\r\n if (this.isGridReady) { this.state.agPermissionGridUtils.disableEditability(this.state.isReadOnly); }\r\n\r\n switch (this.state.dataFetchResult) {\r\n case ResultStatus.NOT_LOADED: return (<>);\r\n case ResultStatus.LOADING: return ();\r\n // Good to Render the components\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n if (DataService.hasNoElements(this.state.data)) {\r\n return ();\r\n } else {\r\n return (\r\n
    \r\n
    \r\n {\r\n this.isGridReady = true;\r\n this.state.agPermissionGridUtils.setGridParams(params, true);\r\n this.state.agPermissionGridUtils.disableEditability(this.state.isReadOnly);\r\n }}\r\n />\r\n
    \r\n
    \r\n );\r\n }\r\n // Error\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(); }} />);\r\n }\r\n }\r\n\r\n }\r\n\r\n\r\n //---API---\r\n\r\n fetchLookups = () => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({\r\n lookupFetchResult: ResultStatus.LOADING,\r\n selRoleId: '',\r\n selSectionId: '',\r\n dataErrorMessage: '',\r\n selectedRptSubscriptionTabIdx :0,\r\n dataFetchResult: ResultStatus.NOT_LOADED,\r\n data: [],\r\n });\r\n\r\n // fetch the observables\r\n this.oSubscriptions.add(combineLatest([\r\n LookupService.getRolesAsOBS(this.context),\r\n LookupService.getPermissionSectionsAsOBS(),\r\n LookupService.getPermissionActionsAsOBS(this.context.user.tenantId)\r\n ]).subscribe(([_permissionRoles, _permissionSections, _permissionActionsList]) => {\r\n this.setState({\r\n // skip tenant role id\r\n roleList: DataService.getKeyValueCollection(_permissionRoles.filter(x => x.isActive && x.roleId !== RolePermissionService.TEANANT_ADMIN_ROLE_ID), \"roleId\", \"roleName\", false),\r\n sectionList: DataService.getKeyValueCollection(_permissionSections, \"sectionId\", \"sectionName\", false),\r\n permissionActionsList: _permissionActionsList,\r\n }, () => {\r\n this.setState({ lookupFetchResult: ResultStatus.LOADED });\r\n this.fetchData();\r\n });\r\n }),\r\n (error) => { this.setState({ lookupFetchResult: ResultStatus.ERROR, data: [] }); }\r\n );\r\n }\r\n\r\n fetchData = () => {\r\n this.oSubscriptions.cancelAll();\r\n this.isGridReady = false;\r\n\r\n // validate selection\r\n if (!(this.state.selRoleId > 0 && this.state.selSectionId > 0)) {\r\n var target = \"\";\r\n if (!(this.state.selRoleId > 0) && !(this.state.selSectionId > 0)) { target = \"Role & Section\" }\r\n else if (!(this.state.selRoleId > 0)) { target = \"Role\" }\r\n else { target = \"Section\" }\r\n\r\n this.setState({\r\n data: [],\r\n dataErrorMessage: `Select a valid ${target}`,\r\n dataFetchResult: ResultStatus.LOADED\r\n });\r\n } else {\r\n // if report template subscription is selected, then load the compontnt\r\n if (this.state.selSectionId === LookupService.reportTemplateSubscriptionId) {\r\n this.setState({ reportFetchResult: ResultStatus.LOADING, reportTemplateRows: [], data: [] });\r\n\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n this.STORE.fetchTemplates(this.state.selectedRptSubscriptionTabIdx, this.context.user.tenantId, this.state.selRoleId),\r\n ]).subscribe(\r\n ([_reportTemplateRows]) => {\r\n this.setState({\r\n reportTemplateRows: _reportTemplateRows,\r\n reportFetchResult: ResultStatus.SUCCESS\r\n });\r\n },\r\n (_error) => {\r\n ToastService.showError(\"Error Occured.\");\r\n this.setState({ reportFetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n } else {\r\n this.setState({ dataFetchResult: ResultStatus.LOADING, reportTemplateRows: [], data: [] });\r\n\r\n // fetch the observables\r\n this.oSubscriptions.add(combineLatest([\r\n this.STORE.getPermissionsViewAsOBS(this.context.user.tenantId, this.state.selSectionId, this.state.selRoleId)\r\n ]).subscribe(([_permissionsData]) => {\r\n // TODO: this temp, till the api is fixed\r\n if (DataService.hasElements(_permissionsData)) {\r\n _permissionsData = _permissionsData.filter(x => x.sectionId === this.state.selSectionId);\r\n // get the parent items in the root\r\n let _orderedPermissionData = _permissionsData.filter(x => x.parentId === 0) || [];\r\n // get all parentIds sorted\r\n let parentIds = DataService.getUniqueValues(_permissionsData, \"parentId\").sort((a, b) => { return a - b });\r\n parentIds.forEach(parentId => {\r\n const parentItem = _permissionsData.find(x => x.permissionId === parentId);\r\n if (parentItem) {\r\n const childItems = _permissionsData.filter(x => x.parentId === parentId);\r\n // check if parent is already inseted\r\n const parentsNewIndex = _orderedPermissionData.findIndex(x => x.permissionId === parentId);\r\n if (parentsNewIndex < 0) { // if parent is not inserted\r\n _orderedPermissionData.push(parentItem); // push the parent\r\n (childItems || []).forEach(childItem => { // and all its children after that\r\n _orderedPermissionData.push(childItem);\r\n });\r\n } else {\r\n const indexToInsert = parentsNewIndex + 1;\r\n _orderedPermissionData = DataService.insertItems(_orderedPermissionData, indexToInsert, childItems);\r\n }\r\n }\r\n });\r\n // sort it by the parent\r\n _permissionsData = _orderedPermissionData;\r\n }\r\n\r\n this.setState({\r\n data: _permissionsData //RolePermissionsService.transformObjectToRows(_permissionsData)\r\n }, () => { this.setState({ dataFetchResult: ResultStatus.LOADED }) });\r\n }),\r\n (error) => {\r\n this.setState({\r\n dataErrorMessage: \"Select a valid Role & Section\",\r\n dataFetchResult: ResultStatus.ERROR\r\n });\r\n }\r\n );\r\n }\r\n }\r\n }\r\n\r\n postData = () => {\r\n this.oSubscriptions.cancelAll();\r\n if (this.state.selSectionId === LookupService.reportTemplateSubscriptionId) {\r\n let selectedIds = [];\r\n let allIds = [];\r\n this.state.agReportGridUtils.gridApi.forEachNode((node) => {\r\n allIds.push(node.data[\"reportId\"]);\r\n if (node.data[\"isSubscription\"] === true) {\r\n selectedIds.push(node.data[\"reportId\"]);\r\n }\r\n });\r\n\r\n if (DataService.hasNoElements(allIds)) {\r\n ToastService.showWarning(\"No Data to Save\");\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n this.oSubscriptions.add(\r\n this.STORE.saveReportTemplatesAsOBS(this.state.selectedRptSubscriptionTabIdx, this.context.user.tenantId, this.context.user.userId,\r\n this.state.selRoleId, selectedIds.join()).subscribe(\r\n (success) => {\r\n ToastService.showSuccess(\"Successfully Saved\");\r\n this.fetchData();\r\n },\r\n (error) => {\r\n ToastService.showError(\"Save Failed\");\r\n this.setState({ fetchResult: ResultStatus.LOADED }); // just show the UI\r\n }\r\n )\r\n );\r\n }\r\n } else {\r\n if (this.state.selSectionId > 0 && this.state.selRoleId > 0) {\r\n this.setState({ dataFetchResult: ResultStatus.LOADING });\r\n this.oSubscriptions.add(\r\n ApiService.postOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Permission/SavePermissions?tenantId=${this.context.user.tenantId}§ionId=${this.state.selSectionId}&roleId=${this.state.selRoleId}`,\r\n JSON.stringify(this.state.data)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) { this.setState({ dataFetchResult: ResultStatus.SUCCESS }); }\r\n else {\r\n console.error(\"Error while saving vendor details\", successResult);\r\n this.setState({ dataFetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving vendor details\", errorResult);\r\n this.setState({ dataFetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n }\r\n }\r\n\r\n\r\n}\r\nexport default LayoutService.getHocComponenet(RolePermissionsComponent);","import React, { Component } from \"react\";\r\n\r\nexport default class ChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class WorkflowDetailsService {\r\n\r\n static getWorkflowDetailsAsOBS = (_tenantId, workflowTemplateId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Workflow/FetchWorkflowTemplateDetails/${_tenantId}/${workflowTemplateId}`\r\n );\r\n };\r\n\r\n static getAllUsersAsOBS = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/User/GetAllUsers/${_tenantId}`\r\n );\r\n };\r\n\r\n static GetFieldLOVByIds = (_tenantId, _fieldIds) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetFieldLOVByIds/${_tenantId}/${_fieldIds}`\r\n );\r\n };\r\n\r\n}\r\n","import React from \"react\";\r\nimport { of, combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { Box, DialogTitle, DialogContent, Typography, AppBar, Toolbar, IconButton, TextField, Grid, FormGroup } from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, } from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray, DataService } from \"../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport WorkflowDetailsService from \"./workflowDetailsService\";\r\n\r\nclass WorkflowDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n // vendor name validations\r\n lastValidatedVendorName = null;\r\n lastValidatedVendorResult = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE, // default state\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n fetchResult: ResultStatus.NOT_LOADED\r\n };\r\n }\r\n\r\n componentWillUnmount() { this.oSubscriptions.cancelAll(); }\r\n\r\n componentDidMount() {\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n (this.props.inputAction === CrudAction.CREATE ? of(null) : WorkflowDetailsService.getWorkflowDetailsAsOBS(this.context.user.tenantId, this.props.modalAgNode.workflowTemplateId)),\r\n WorkflowDetailsService.getAllUsersAsOBS(this.context.user.tenantId),\r\n LookupService.getFormattedCountriesAsOBS(this.context, -1),\r\n WorkflowDetailsService.GetFieldLOVByIds(this.context.user.tenantId, 283),\r\n ]).subscribe(([_workflowTemplateData, _userList, _countryList, _approvalOrderList]) => {\r\n this.setState(\r\n {\r\n workflowTemplateData: _workflowTemplateData,\r\n userList: _userList.map(v => ({ ...v, fullName: `${v.firstName} ${v.lastName}` })).filter(f => f.isActive === true).slice().sort((a,b) => (a.firstName > b.firstName) ? 1 : ((b.firstName > a.firstName) ? -1 : 0)),\r\n countryList: _countryList,\r\n approverList: _workflowTemplateData ? _workflowTemplateData.approvers.split(\",\") : [],\r\n selApproversList: _workflowTemplateData ? this.getApproversList(_userList, _workflowTemplateData.approvers.split(\",\")) : [],\r\n approvalOrderList: _approvalOrderList,\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n getApproversList = (allApprovers, selApprovers) => {\r\n const allFullName = allApprovers.map(v => ({ ...v, fullName: `${v.firstName} ${v.lastName}` }));\r\n const selFullName = selApprovers.map(s => ({ id: s, fullName: allFullName.find(a => Number(a.id) === Number(s)).fullName }));\r\n return (selFullName);\r\n };\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n workflowTemplateName: \"\",\r\n workflowName: \"\",\r\n selApproversList: [],\r\n approvalOrder: \"\",\r\n request: \"\",\r\n endOnFirstApproval: false,\r\n endOnFirstRejection: false,\r\n jurisdiction: 0,\r\n };\r\n } else {\r\n return {\r\n workflowTemplateName: this.state.workflowTemplateData.workflowTemplateName,\r\n workflowName: this.state.workflowTemplateData.workflowName,\r\n approvalOrder: this.state.workflowTemplateData.approvalOrder,\r\n selApproversList: this.state.selApproversList,\r\n request: this.state.workflowTemplateData.request,\r\n endOnFirstApproval: this.state.workflowTemplateData.endOnFirstApproval,\r\n endOnFirstRejection: this.state.workflowTemplateData.endOnFirstRejection,\r\n jurisdiction: this.state.workflowTemplateData.jurisdiction,\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n workflowTemplateName: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n workflowName: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n approvalOrder: Yup.number().required(\"Required\").typeError(\"Required\"),\r\n selApproversList: DataService.hasElements(this.state.userList) ? Yup.array().required(\"Required\") : Yup.array(),\r\n request: Yup.string().min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n jurisdiction: Yup.number().typeError(\"Must be a number\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n workflowTemplateName: _formikProps.values.workflowTemplateName,\r\n workflowName: _formikProps.values.workflowName,\r\n approvalOrder: _formikProps.values.approvalOrder,\r\n approversCommaSeparatedList: _formikProps.values.selApproversList.map(({ id }) => id).join(\",\"),\r\n daysPerTask: 0,\r\n dueDate: \"2020-10-30T17:19:04.003Z\",\r\n request: _formikProps.values.request,\r\n endOnFirstApproval: _formikProps.values.endOnFirstApproval,\r\n endOnFirstRejection: _formikProps.values.endOnFirstRejection,\r\n jurisdiction: String(_formikProps.values.jurisdiction),\r\n jurisdictionName: _formikProps.values.jurisdiction === -1 ? \"All\" : this.state.countryList[_formikProps.values.jurisdiction].value,\r\n searchText: \"\",\r\n tenantId: String(this.context.user.tenantId),\r\n userId: String(this.context.user.userId),\r\n sourcePorzioGSTId: \"\",\r\n sourceEntityId: 0,\r\n porzioWorkflowGSTId: \"\",\r\n tenantUID: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n middleName: \"\",\r\n rowsCount: 0,\r\n };\r\n\r\n // 3) determine the action and assign the appropriate props\r\n const actionVerb = \"POST\";\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n // CREATE\r\n mappedObj.workflowTemplateId = 0;\r\n mappedObj.workflowId = 0;\r\n } else {\r\n // UPDATE\r\n mappedObj.workflowTemplateId = this.props.modalAgNode.workflowTemplateId;\r\n mappedObj.workflowId = this.props.modalAgNode.workflowId;\r\n }\r\n\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.TENANT, `/Workflow/SaveWorkflowTemplate/${this.context.user.tenantId}`, JSON.stringify(mappedObj)).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ isReadOnly: true, fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshVendorList(true);\r\n this.props.onClose(false);\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving vendor details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(erroObj);\r\n if (erroObj.inner) {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n }\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const pageName = \"Workflow Templates Detail\";\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING: return ();\r\n case ResultStatus.SAVING: return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n {pageName}\r\n {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n {this.state.fetchResult === ResultStatus.SUCCESS ? (

    Your Vendor has been updated!!

    ) : null}\r\n \r\n \r\n {\" \"}\r\n \r\n {LayoutService.getChipSelect(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"selApproversList\",\r\n \"Approvers\",\r\n this.state.userList,\r\n \"id\",\r\n \"fullName\",\r\n (_formikProps, _newValues) => {\r\n this._clearOthersIfAllIsSelected(\r\n _newValues,\r\n _formikProps,\r\n \"selApproversList\"\r\n );\r\n },\r\n \"80%\"\r\n )}\r\n \r\n {/* {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"approvalOrder\", \"Approval Order\", [{ id: 0, name: \"All At Once (Parallel)\" }, { id: 1, name: \"One At A Time (Serial)\" }], \"id\", \"name\", \"98%\")} */}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"approvalOrder\", \"Approval Order\", this.state.approvalOrderList, \"lovId\", \"lovKey\", \"98%\")}\r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"endOnFirstApproval\", \"End on First Approval\")}\r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"endOnFirstRejection\", \"End on First Rejection\")}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"jurisdiction\", \"Jurisdiction\", this.state.countryList, \"id\", \"value\", \"98%\")}\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { console.log(\"Retry Clicked\"); }} />\r\n );\r\n }\r\n }\r\n\r\n _clearOthersIfAllIsSelected = async (_newValues, _formikProps, _propName) => {\r\n // check for Item\r\n const itemAll = DataService.getFirstOrDefault(\r\n _newValues.filter((x) => x.id === LookupService.allElement.id)\r\n );\r\n // if is selected and is not the only selected item, then clear others\r\n if (itemAll && _newValues.length !== 1) {\r\n // then clear the others except All\r\n await _formikProps.setFieldValue(_propName, [itemAll], true);\r\n this.setState({ [_propName]: [itemAll] });\r\n }\r\n };\r\n\r\n}\r\n\r\n\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(WorkflowDetailsComponent);","import ApiService from \"../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../shared/types/enums\";\r\n\r\nexport default class WorkflowTemplateListService {\r\n\r\n static getWorkflowTemplateListAsOBS = (_tenantId,) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/Workflow/FetchWorkflowList?tenantId=${_tenantId}&pageNumber=1&pageSize=1000`,\r\n );\r\n };\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Template Name\",\r\n field: \"workflowTemplateName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 225,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Approvers\",\r\n field: \"approvers\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n {\r\n headerName: \"Approval Order\",\r\n headerHeight: 35,\r\n field: \"approvalOrderName\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n height: 30,\r\n },\r\n {\r\n headerName: \"End On First Approval\",\r\n field: \"endOnFirstApproval\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n {\r\n headerName: \"End On First Rejection\",\r\n field: \"endOnFirstRejection\",\r\n sortable: true,\r\n filter: \"text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n cellRenderer: \"isActiveIconRendererComponent\",\r\n },\r\n {\r\n headerName: \"Jurisdiction\",\r\n field: \"jurisdictionName\",\r\n sortable: true,\r\n filter: \"agTextColumnFilter\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 150,\r\n },\r\n\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport ChildMessageRendererComponent from \"./childMessageRendererComponent\";\r\nimport IsActiveIconRendererComponent from \"./../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport WorkflowDetailsComponent from \"./workflow-details/workflowDetailsComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { DataService, SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../shared/types/enums\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport LookupService from \"../../shared/services/lookupService\";\r\nimport WorkflowTemplateListService from \"./workflowTemplateListService\";\r\n\r\n\r\nclass WorkflowTemplateListComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n STORE = WorkflowTemplateListService;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.state = {\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n isActiveIconRendererComponent: IsActiveIconRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n selectedCountryId: -1,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n WorkflowTemplateListService.getWorkflowTemplateListAsOBS(this.context.user.tenantId),\r\n LookupService.getFormattedCountriesAsOBS(this.context, -1),\r\n ]).subscribe(\r\n // success\r\n ([_data, _countryList]) => {\r\n this.setState(\r\n {\r\n data: _data,\r\n countryList: _countryList,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n setTimeout(() => {\r\n this.gridApi.setFilterModel({\r\n jurisdictionName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.selectedCountryId === -1 ? null : this.state.countryList.find(x => x.id === this.state.selectedCountryId).value,\r\n },\r\n });\r\n }, 150);\r\n };\r\n\r\n onCountrySelectClick = (event) => {\r\n this.setState({ selectedCountryId: event.target.value });\r\n this.gridApi.setFilterModel({\r\n jurisdictionName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: event.target.value === -1 ? null : this.state.countryList.find(x => x.id === event.target.value).value,\r\n },\r\n });\r\n }\r\n\r\n handleCreateModal = () => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n this.setState({\r\n modalAgNode: {\r\n workflowTemplateId: 0,\r\n },\r\n });\r\n };\r\n\r\n methodFromParent = (cell, data) => {\r\n this.setState({\r\n modalShow: true,\r\n modalAgNode: data,\r\n inputAction: CrudAction.UPDATE\r\n });\r\n };\r\n\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n {\r\n this.onCountrySelectClick(event);\r\n }}\r\n addCircle\r\n onAddClick={this.handleCreateModal}\r\n reload\r\n onReloadClick={() => {\r\n this.fetchData(true);\r\n }}\r\n />\r\n
    \r\n
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    {\" \"}\r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n default:\r\n return null;\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(WorkflowTemplateListComponent);\r\n","import ApiService from \"../../shared/services/apiService\";\r\nimport Cache from \"../../shared/store/cache\";\r\nimport { GST_API } from \"../../shared/types/enums\";\r\n\r\nexport default class PowerBIDemoService {\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n static fetchFromApiTokenObs(tenantId, workspaceId, reportId) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n return ApiService.fetchHTTP_API(GST_API.Identity, `/User/GePowerBIAccessToken?tenantID=${tenantId}&workspaceID=${workspaceId}&reportId=${reportId}`, {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { PowerBIEmbed } from 'powerbi-client-react';\r\nimport { models } from 'powerbi-client';\r\nimport { Grid } from \"@material-ui/core\";\r\n\r\nimport { DataService, SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport PowerBIDemoService from \"./powerBIDemoService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport DialogErrorFragmentComponent from \"../../shared/components/page/dialogErrorFragmentComponent\";\r\n\r\n\r\nclass PowerBIDemoComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = PowerBIDemoService;\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n reportOrDashboardId: \"\",\r\n embedUrl: \"\",\r\n accessToken: \"\",\r\n reportsList: []\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData(true);\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ reportOrDashboardId: \"\", reportsList: [], fetchResult: ResultStatus.NOT_LOADED }, () => {\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.fetchFromApiTokenObs(this.context.user.tenantId, this.context.user.workspaceID, \"\").subscribe(\r\n (o) => {\r\n if (!Array.isArray(o)) { o = new Array(o); }\r\n this.setState({\r\n reportsList: o[0].reports,\r\n reportOrDashboardId: \"\",\r\n });\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n });\r\n };\r\n\r\n /** API Fetch */\r\n fetchToken = (_reportOrDashboardId) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.fetchFromApiTokenObs(this.context.user.tenantId, this.context.user.workspaceID, _reportOrDashboardId).subscribe(\r\n (o) => {\r\n if (!Array.isArray(o)) { o = new Array(o); }\r\n let token = o[0].accessToken.replace(/\"([^\"]+(?=\"))\"/g, '$1');\r\n let embedUrl = o[0].embedURL.replace(/\"([^\"]+(?=\"))\"/g, '$1');\r\n let reportid = o[0].reportID.replace(/\"([^\"]+(?=\"))\"/g, '$1'); /// <--- WHY ON EARTH ?!?!?!?!\r\n this.setState({\r\n accessToken: token,\r\n embedUrl: embedUrl,\r\n reportOrDashboardId: _reportOrDashboardId,\r\n // reportsList: o[0].reports, // <--- WHY ON EARTH ?!?!?!?!\r\n });\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n reportOrDashboardId: Yup.string().required()\r\n });\r\n return this.validationSchema;\r\n }\r\n getInitialValues() {\r\n return {\r\n reportOrDashboardId: '',\r\n };\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n let powerBiEmbedType = \"report\"\r\n return (\r\n
    \r\n \r\n {(fProps) => (\r\n
    \r\n {/* INIT */}\r\n {this.state.fetchResult === ResultStatus.NOT_LOADED ? () : null}\r\n {/* Header Componenet */}\r\n {this.state.fetchResult !== ResultStatus.NOT_LOADED && (this.state.fetchResult === ResultStatus.LOADED || this.state.fetchResult === ResultStatus.LOADING ||\r\n this.state.fetchResult === ResultStatus.ERROR || this.state.fetchResult === ResultStatus.SUCCESS) ?\r\n { this.fetchToken(this.state.reportOrDashboardId); }, },\r\n ]}\r\n rightActions={[\r\n {\r\n jsxElement: LayoutService.getDropDown(false, classes.dialogControl, classes.menuPaper, fProps, this.getValidationSchema(), \"reportOrDashboardId\", null,\r\n this.state.reportsList, \"value\", \"key\", \"\", false, \"40%\", (_formikProps, _reportId) => this.fetchToken(_reportId)\r\n )\r\n },\r\n ]}\r\n /> : null\r\n }\r\n {/* Content Error */}\r\n {this.state.fetchResult !== ResultStatus.NOT_LOADED && this.state.fetchResult !== ResultStatus.LOADING && DataService.isStringNullOrEmpty(this.state.reportOrDashboardId) ?\r\n () : null}\r\n {/* Content Loader */}\r\n {this.state.fetchResult === ResultStatus.LOADING ? () : null}\r\n {/* Content Error */}\r\n {this.state.fetchResult === ResultStatus.ERROR ? () : null}\r\n {/* Content */}\r\n {this.state.fetchResult === ResultStatus.SUCCESS ?\r\n \r\n ',\r\n embedUrl: this.state.embedUrl, // '',\r\n accessToken: this.state.accessToken, // '',\r\n\r\n tokenType: models.TokenType.Embed, // Use models.TokenType.Aad if you're embedding for your organization.\r\n settings: {\r\n panes: {\r\n filters: {\r\n expanded: false,\r\n visible: true\r\n }\r\n },\r\n // background: models.BackgroundType.Transparent,\r\n // layoutType: models.LayoutType.Custom,\r\n // customLayout: {\r\n // displayOption: models.DisplayOption.FitToPage\r\n // }\r\n }\r\n }}\r\n eventHandlers={\r\n new Map([\r\n ['loaded', function () { console.log('Report loaded'); }],\r\n ['rendered', function () { console.log('Report rendered'); }],\r\n ['error', function (event) { console.log(event.detail); }]\r\n ])\r\n }\r\n cssClassName={\"report-style-class\"}\r\n // style={{ height: \"100%\", backgroundColor: \"green\" }}\r\n getEmbeddedComponent={(embeddedReport) => {\r\n // embeddedReport.fullscreen();\r\n window.report = embeddedReport;\r\n }}\r\n />\r\n \r\n : null\r\n }\r\n  \r\n \r\n )}
    \r\n
    \r\n )\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(PowerBIDemoComponent);\r\n\r\n","import React, { Component } from \"react\";\r\nimport { Box, Grid } from \"@material-ui/core\";\r\n\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport PowerBIDemoComponent from \"./powerBIDemoComponent\";\r\n\r\nclass PowerBIDemoContainerComponent extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showPowerBI: this.props.hide ?? true,\r\n };\r\n }\r\n\r\n render() {\r\n\r\n return (\r\n // \r\n // \r\n \r\n\r\n {this.state.showPowerBI ?\r\n \r\n : null}\r\n \r\n // \r\n // \r\n )\r\n }\r\n}\r\n\r\n// export default LayoutService.getHocComponenet(PowerBIDemoContainerComponent);\r\nexport default PowerBIDemoContainerComponent;\r\n\r\n\r\n","import { of } from \"rxjs\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ReportCategory } from \"../../../shared/types/enums\";\r\n\r\nexport default class TenantReportTemplateSubscriptionService {\r\n\r\n // static fetchTenants(_userId) {\r\n // return ApiService.getOBS(API_ENDPOINT.IDENTITY, `/User/GetUserTenants?userId=${_userId}`);\r\n // }\r\n\r\n static getActiveTenants = () => {\r\n const targetUrl = `/GetActiveTenants/true`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n );\r\n }\r\n\r\n static fetchTemplates(_selTenantId, _roleId) {\r\n /**\r\n * As per the discussion with the DB Team\r\n * --#1---Report subscription Link\r\n EXEC USP_RPT_REPORTBYCATEGORYIDGET @CATEGORYID = 1, @PageNumber = 1, @RowsperPage = 1000, @IsViewable = 0, @IsSusbcribe = 0, @RoleID = NULL\r\n */\r\n const jsonObj = {\r\n \"tenantId\": _selTenantId,\r\n \"categoryId\": ReportCategory.COMPLIANCE_TEMPLATES,\r\n \"roleId\": _roleId, // no need to pass null,... its handled at the api\r\n \"isViewable\": false,\r\n \"isSubscribe\": false,\r\n \"pageNo\": 1,\r\n \"pageSize\": 1000,\r\n };\r\n // TODO: ensure that this is fetching from ReportMaster Table for the selected tenant\r\n return ApiService.postOBS(API_ENDPOINT.REPORTS, `/Reports/FetchReportPermissions`, JSON.stringify(jsonObj));\r\n }\r\n\r\n // save-api\r\n static saveComplianceTemplatesAsOBS(_selTenantId, _userId, _allIdsAsString, _selectedIdsAsString) {\r\n const jsonBody = JSON.stringify({\r\n \"allIds\": _allIdsAsString,\r\n \"selectedIds\": _selectedIdsAsString,\r\n });\r\n // TODO: ensure that this save is affecting ReportMaster Table for the selected tenant\r\n return ApiService.postOBS(API_ENDPOINT.REPORTS, `/Reports/SaveReportPermissions?tenantId=${_selTenantId}&userId=${_userId}&categoryId=1`, jsonBody);\r\n }\r\n\r\n // column-definitions\r\n static getColumnDefs(_parentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(!_parentThisRef.state.isReadOnly, \"text\", \"isViewable\", \"\").cellRenderer(\"isViewableCellRenderer\").fixedWidth(56).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportName\", \"Template Name\").flexWeight(3).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"templateYear\", \"Template Year\").flexWeight(2).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"jurisdiction\", \"Jurisdiction\").flexWeight(1).tooltip().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"izendaDisplayName\", \"Template Description\").flexWeight(3).tooltip().SET(),\r\n\r\n ];\r\n }\r\n\r\n //---\r\n}\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { ResultStatus, SELECT_MODE } from \"../../../shared/types/enums\";\r\n\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\n\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport TenantReportTemplateSubscriptionService from \"./tenantReportTemplateSubscriptionService\"\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\n\r\nimport { FormControl, InputLabel, Select, MenuItem, Divider, } from \"@material-ui/core\";\r\nimport { AgGridUtil } from \"../../../shared/services/ag-grid/agGridUtil\";\r\nimport AgGridSelectMenuComponent from \"../../../shared/components/agGridSelectMenuComponent\";\r\n\r\nclass TenantReportTemplateSubscriptionComponent extends Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isReadOnly: true,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n complianceTemplateRows: [],\r\n\r\n anchorEl: null,\r\n openSelectMenu: false,\r\n agGridUtils: new AgGridUtil(\"reportName\", {\r\n isViewableCellRenderer: AgGridCheckboxCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() { this.fetchTenants(); }\r\n\r\n fetchTenants = () => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, selTenantId: '', complianceTemplateRows: [] });\r\n\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n TenantReportTemplateSubscriptionService.getActiveTenants(),\r\n ]).subscribe(\r\n ([_tenantList]) => {\r\n this.setState({\r\n tenantList: _tenantList,\r\n fetchResult: ResultStatus.SUCCESS\r\n });\r\n },\r\n (_error) => {\r\n ToastService.showError(\"Error Occured while fetching Tenant List.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n /** API Fetch */\r\n isGridReady = false;\r\n fetchData = (_tenantId) => {\r\n this.isGridReady = false;\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ isReadOnly: true, fetchResult: ResultStatus.LOADING, complianceTemplateRows: [] });\r\n if (this.state.selTenantId !== _tenantId) { this.setState({ selTenantId: _tenantId }) }\r\n\r\n if (DataService.isValidNumber(_tenantId)) {\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n TenantReportTemplateSubscriptionService.fetchTemplates(_tenantId, RolePermissionService.USER_ROLE_ID),\r\n ]).subscribe(\r\n ([_complianceTemplateRows]) => {\r\n this.setState({\r\n complianceTemplateRows: _complianceTemplateRows,\r\n fetchResult: ResultStatus.SUCCESS\r\n });\r\n },\r\n (_error) => {\r\n ToastService.showError(\"Error Occured while fetching reports for the tenant.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n };\r\n\r\n\r\n getStateIcon = () => {\r\n if (this.state.selTenantId > 0 && RolePermissionService.IS_TENANT_ADMIN) {\r\n return this.state.isReadOnly ?\r\n { title: \"edit\", icon: MatIconService.EDIT, onClick: () => { this.setState({ isReadOnly: false }) } }\r\n : { title: \"save\", icon: MatIconService.OK, iconColor: \"primary\", onClick: () => { this.postData(); } }\r\n } else {\r\n return {};\r\n }\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.isTenantReportSubscriptionsNotAllowed()) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.push(\"\"); },\r\n \"Access Denied\", \"Logged in Tenant/Role do not have the privileges to access this component. Please contact your Administrator.\");\r\n } else {\r\n if (this.isGridReady) { this.state.agGridUtils.disableEditability(this.state.isReadOnly); }\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SAVING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n { this.setState({ anchorEl: null, openSelectMenu: false }); }}\r\n />\r\n { this.props.history.goBack() } },\r\n { title: \"reload\", icon: MatIconService.RELOAD, iconColor: \"secondary\", onClick: () => { this.fetchData(this.state.selTenantId); } },\r\n {\r\n title: \"select\", icon: MatIconService.MENU, onClick: (e) => { this.setState({ anchorEl: e.currentTarget, openSelectMenu: true }); },\r\n isReadOnly: this.state.isReadOnly || !this.isGridReady\r\n }\r\n ]}\r\n rightActions={[\r\n {\r\n jsxElement: \r\n Tenant\r\n \r\n \r\n },\r\n { ...this.getStateIcon() },\r\n\r\n ]}\r\n />\r\n
    \r\n\r\n {!DataService.isValidNumber(this.state.selTenantId) ?\r\n (<>\r\n \r\n \r\n )\r\n :
    \r\n {/* Grid Componenet */}\r\n {\r\n params.api.closeToolPanel();\r\n this.isGridReady = true;\r\n this.state.agGridUtils.setGridParams(params, true);\r\n this.state.agGridUtils.disableEditability(this.state.isReadOnly);\r\n }}\r\n >\r\n
    \r\n }\r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.fetchData(this.state.selTenantId); }} />);\r\n }\r\n }\r\n }\r\n\r\n currentCategoryId = 1;\r\n postData = () => {\r\n this.oSubscriptions.cancelAll();\r\n let selectedIds = [];\r\n let allIds = [];\r\n this.state.agGridUtils.gridApi.forEachNode((node) => {\r\n allIds.push(node.data[\"reportId\"]);\r\n if (node.data[\"isViewable\"] === true) {\r\n selectedIds.push(node.data[\"reportId\"]);\r\n }\r\n });\r\n\r\n if (DataService.hasNoElements(allIds)) {\r\n ToastService.showWarning(\"No Data to Save\");\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n this.oSubscriptions.add(\r\n TenantReportTemplateSubscriptionService.saveComplianceTemplatesAsOBS(this.state.selTenantId, this.context.user.userId, allIds.join(), selectedIds.join()).subscribe(\r\n (success) => {\r\n ToastService.showSuccess(\"Successfully Saved\");\r\n this.fetchData(this.state.selTenantId);\r\n },\r\n (error) => {\r\n ToastService.showError(\"Save Failed\");\r\n this.setState({ fetchResult: ResultStatus.LOADED }); // just show the UI\r\n }\r\n )\r\n );\r\n }\r\n\r\n }\r\n}\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(TenantReportTemplateSubscriptionComponent);","import Cache from \"../../shared/store/cache\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\nimport { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\n\r\nexport default class TenantStatusService {\r\n // subscriptions\r\n static oSUBSCRIPTIONS = new SubscriptionArray();\r\n\r\n // cache\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, context) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(context);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromNewTenantStatusApiObs(context) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n return ApiService.fetchObsidentity(`/NewTenant/GetTenantStatus?tenantStatus=Create Tenant`);\r\n }\r\n\r\n\r\n static getColumnDefs() {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"timeStamp\", \"Date and Time\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"activity\", \"Activity\").flexWeight(1).headerClass(\"left-text\").leftAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"status\", \"Status\").flexWeight(1).headerClass(\"left-text\").leftAlignText().SET(),\r\n ]\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { Box, DialogTitle, DialogContent, Typography, AppBar, Toolbar, IconButton, TextField, Grid, FormGroup } from \"@material-ui/core\";\r\nimport { MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT, } from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\n\r\nclass NewTenantComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n // vendor name validations\r\n lastValidatedTenantName = null;\r\n lastValidatedTenantResult = false;\r\n lastValidatedUIDName = null;\r\n lastValidatedUIDResult = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: false,\r\n isEditing: true,\r\n fetchResult: ResultStatus.NOT_LOADED\r\n };\r\n }\r\n\r\n componentWillUnmount() { this.oSubscriptions.cancelAll(); }\r\n componentDidMount() {\r\n\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n LookupService.getLanguagesAsOBS(this.context),\r\n LookupService.getFormattedCurrenciesAsOBS(this.context, null),\r\n LookupService.getTimezonesAsOBS(this.context)\r\n ]).subscribe(([_countryList, _languageList, _currencyList, _timeZoneList]) => {\r\n this.setState(\r\n {\r\n countryList: _countryList,\r\n languageList: _languageList,\r\n currencyList: _currencyList,\r\n timeZoneList: _timeZoneList,\r\n },\r\n () => {\r\n // change the state after all the above are assigned\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n }\r\n )\r\n );\r\n }\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n var mappedObj = {\r\n tenantid: _formikProps.values.tenantid,\r\n tenantName: _formikProps.values.tenantName,\r\n tenantDescription: _formikProps.values.tenantDescription,\r\n uid: _formikProps.values.uid,\r\n tenantType: _formikProps.values.tenantType,\r\n tenantAddress1: _formikProps.values.tenantAddress1,\r\n tenantCity: _formikProps.values.tenantCity,\r\n tenantProvince: _formikProps.values.tenantProvince,\r\n tenantPostalcode: _formikProps.values.tenantPostalcode,\r\n tenantCountryid: _formikProps.values.tenantCountryid,\r\n tenantLanguageid: _formikProps.values.tenantLanguageid,\r\n tenantCurrencyid: _formikProps.values.tenantCurrencyid,\r\n tenantTimezoneid: _formikProps.values.tenantTimezoneid,\r\n createdBy: _formikProps.values.createdBy,\r\n };\r\n\r\n var actionVerb = \"\";\r\n // CREATE\r\n actionVerb = \"POST\";\r\n console.log(\"List of Object\"+JSON.stringify(mappedObj));\r\n ApiService.setOBS(actionVerb, API_ENDPOINT.IDENTITY, `/NewTenant/CreateNewTenant`, JSON.stringify(mappedObj)).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS }, () => {\r\n this.props.onClose(false);\r\n });\r\n } else {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving Tenant details\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n console.log(erroObj);\r\n if (erroObj.inner) {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n }\r\n });\r\n }\r\n }\r\n getInitialValues() {\r\n return {\r\n tenantid: 0,\r\n tenantName: \"\",\r\n tenantDescription: \"\",\r\n uid: \"\",\r\n tenantType: \"US\",\r\n tenantAddress1: \"\",\r\n tenantCity: \"\",\r\n tenantProvince: \"\",\r\n tenantPostalcode: \"\",\r\n tenantCountryid: 106,\r\n tenantLanguageid: 1,\r\n tenantCurrencyid: 35,\r\n tenantTimezoneid: 15,\r\n createdBy: this.context.user.userId,\r\n };\r\n }\r\n getListofTenantTypes()\r\n {\r\n return [{id:\"USGST\", value:\"USGST\"},\r\n ,{id:\"OUSGST\", value:\"OUSGST\"},\r\n ,{id:\"GLOBALGST\", value:\"GLOBALGST\"}]; \r\n }\r\n validatedTenantName = \"\";\r\n validatedUid = \"\";\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n tenantDescription: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n tenantAddress1: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n tenantCity: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n tenantProvince: Yup.string().required(\"Required\").min(2, \"Must be at least 2 characters long\").max(256, \"Must be 256 characters or less\"),\r\n tenantPostalcode: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\"),\r\n tenantName: Yup.string().matches(/^[a-zA-Z0-9 ]+$/, 'Cannot contain special characters').required(\"Required\").min(3, \"Must be at least 3 characters long\").max(256, \"Must be 256 characters or less\")\r\n .test(\"checkDuplicateTenantName\", \"Tenant name already exists\", async (_formikValue) => {\r\n if (_formikValue !== this.validatedTenantName) {\r\n // new tenant name (or) tenantName updated\r\n try {\r\n const result = await fetch(`${process.env.REACT_APP_IDENTITY_HTTP}/NewTenant/CheckTenantName/${_formikValue}`);\r\n const isExists = await result.json();\r\n console.log(\"is tenant name exists: \", !isExists);\r\n this.lastValidatedTenantResult = isExists;\r\n this.validatedTenantName = _formikValue;\r\n return this.lastValidatedTenantResult;\r\n } catch {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n return false;\r\n }\r\n } else { return true; }\r\n }),\r\n uid: Yup.string().required(\"Required\").min(3, \"Must be at least 3 characters long\").max(3, \"Must be 3 characters or less\")\r\n .test(\"checkDuplicateTenantAcronymName\", \"Tenant UID already exists\", async (_formikValue) => {\r\n try {\r\n const result = await fetch(`${process.env.REACT_APP_IDENTITY_HTTP}/NewTenant/CheckUID/${_formikValue}`);\r\n const isExists = await result.json();\r\n console.log(\"UID exists: \", !isExists);\r\n this.lastValidatedUIDResult = isExists;\r\n this.validatedUid = _formikValue;\r\n return this.lastValidatedUIDResult;\r\n } catch {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n return false;\r\n }\r\n } \r\n ),\r\n tenantCountryid: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n tenantType: Yup.string().required(\"Required\").typeError(\"Must be a string\"),\r\n tenantLanguageid: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n tenantCurrencyid: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n tenantTimezoneid: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING: return ();\r\n case ResultStatus.SAVING: return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n {/* Dialog Title */}\r\n \r\n \r\n \r\n Create New Tenant\r\n {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n \r\n {\" \"}\r\n {\" \"} \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"tenantType\", \"Type\", this.getListofTenantTypes(), \"id\", \"value\", \"98%\")}\r\n \r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"tenantCountryid\", \"Country Name*\", this.state.countryList, \"id\", \"value\", \"98%\")}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"tenantLanguageid\", \"Language*\", this.state.languageList, \"id\", \"value\", \"98%\",true)}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"tenantCurrencyid\", \"Currency*\", this.state.currencyList, \"id\", \"value\", \"98%\")}\r\n {LayoutService.getSelectControl(this.state.isReadOnly, classes, fProps, \"tenantTimezoneid\", \"Time Zone*\", this.state.timeZoneList, \"id\", \"value\", \"98%\")}\r\n \r\n \r\n \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.props.onClose(false); }} onRetry={() => { console.log(\"Retry Clicked\"); }} />\r\n );\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(NewTenantComponent);","import React, { Component } from \"react\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { TextField, Grid, Button } from \"@material-ui/core\";\r\n\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport { CrudAction } from \"../../shared/types/enums\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport TenantStatusService from \"./tenantStatusService\";\r\nimport NewTenantComponent from \"./new-tenant/newTenantDialog\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport LookupService from \"../../shared/services/lookupService\";\r\n\r\n\r\nclass TenantStatusComponent extends Component {\r\n\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = TenantStatusService;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n newTenantStatusData: [],\r\n deleteTenantStatusData: [],\r\n showPlusForNewStatus: false,\r\n showNewTenantStatusGrid: true,\r\n showPlusForDeleteStatus: true,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n // this.setState({ fetchResult: ResultStatus.LOADING, rowData: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n this.STORE.fetchFromNewTenantStatusApiObs(this.context),\r\n this.STORE.fetchFromNewTenantStatusApiObs(this.context),\r\n LookupService.getActiveTenantsAsObs(true)\r\n ])\r\n .subscribe(([_newTenantStatusData, _deleteTenantStatusData, _tenantData]) => {\r\n this.setState({\r\n newTenantStatusData: _newTenantStatusData,\r\n deleteTenantStatusData: _deleteTenantStatusData,\r\n fetchResult: ResultStatus.SUCCESS,\r\n tenantData: _tenantData,\r\n });\r\n },\r\n (error) => {\r\n ToastService.showError(\"Error Occured.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n //this.gridApi.setDomLayout(\"autoHeight\");\r\n this.gridApi.sizeColumnsToFit();\r\n };\r\n\r\n getInitialValues() {\r\n return {\r\n environmentId: 1,\r\n };\r\n }\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n environmentId: Yup.number().required(\"Required\").typeError(\"Must be a number\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n getTenantIdAndStatus = (tenantData) => {\r\n let tenantIdAndStatus = [];\r\n for (let i = 1; i < tenantData.length; i++) {\r\n tenantIdAndStatus.push({\r\n tenantid: tenantData[i].tenantid,\r\n tenantName: tenantData[i].tenantName,\r\n tenantDescription: tenantData[i].tenantDescription,\r\n tenantAddress1: tenantData[i].tenantAddress1,\r\n tenantCity: tenantData[i].tenantCity,\r\n tenantProvince: tenantData[i].tenantProvince,\r\n tenantStatus: tenantData[i].tenantStatus,\r\n });\r\n }\r\n return tenantIdAndStatus;\r\n };\r\n\r\n getTenantStatus = (tenantData) => {\r\n let tenantIdAndStatus = this.getTenantIdAndStatus(tenantData);\r\n return (\r\n \r\n \r\n {\r\n this.setState({\r\n tenantName: e.target.value,\r\n tenantStatus: tenantIdAndStatus.find((x) => x.tenantName === e.target.value).tenantStatus,\r\n tenantDescription: tenantIdAndStatus.find((x) => x.tenantName === e.target.value).tenantDescription,\r\n tenantAddress1: tenantIdAndStatus.find((x) => x.tenantName === e.target.value).tenantAddress1,\r\n tenantCity: tenantIdAndStatus.find((x) => x.tenantName === e.target.value).tenantCity,\r\n tenantProvince: tenantIdAndStatus.find((x) => x.tenantName === e.target.value).tenantProvince,\r\n });\r\n this.fetchData(true);\r\n }\r\n }\r\n SelectProps={{\r\n native: true,\r\n }}\r\n variant=\"outlined\"\r\n margin=\"normal\"\r\n fullWidth\r\n >\r\n {}\r\n {tenantIdAndStatus.map((option) => (\r\n \r\n ))}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n\r\n\r\n\r\n onAddClick = () => { this.setState({ showNewTenantDialog: true, inputAction: CrudAction.CREATE }); }\r\n handleHide = () => { this.setState({ showNewTenantDialog: false }); }\r\n onOpenNewStatusClick = () => { this.setState({ showPlusForNewStatus: false, showNewTenantStatusGrid: true }); }\r\n onCloseNewStatusClick = () => { this.setState({ showPlusForNewStatus: true, showNewTenantStatusGrid: false }); }\r\n onOpenDeleteStatusClick = () => { this.setState({ showPlusForDeleteStatus: false, showDeleteTenantStatusGrid: true }); }\r\n onCloseDeleteStatusClick = () => { this.setState({ showPlusForDeleteStatus: true, showDeleteTenantStatusGrid: false }); }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n {/* Header Componenet */}\r\n { { this.fetchData(true); }, },\r\n // ]}\r\n rightActions={[\r\n { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"Add New\", iconColor: \"secondary\", onClick: this.onAddClick, isReadOnly: false },\r\n ]}\r\n />}\r\n
    \r\n
    \r\n {this.getTenantStatus(this.state.tenantData)}\r\n


    \r\n
    \r\n
    \r\n {/* Header Componenet */}\r\n { { this.fetchData(true); }, },\r\n this.state.showPlusForNewStatus ? { icon: MatIconService.ADD_CIRCLE_OUTLINE, title: \"View New Status\", iconColor: \"secondary\", onClick: this.onOpenNewStatusClick, isReadOnly: false }\r\n : { icon: MatIconService.DASH, title: \"Minimize\", iconColor: \"secondary\", onClick: this.onCloseNewStatusClick, isReadOnly: false }\r\n ]}\r\n />}\r\n
    \r\n {this.state.showNewTenantStatusGrid ?
    \r\n \r\n
    : <>}\r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.fetchData(true); }} />\r\n );\r\n }\r\n }\r\n}\r\nexport default withStyles(MatClassService)(TenantStatusComponent);\r\n\r\n\r\n\r\n// for displaying delete status\r\n\r\n{/*
    \r\n{}\r\n
    \r\n{this.state.showDeleteTenantStatusGrid ?
    \r\n\r\n
    : <>} */}","import { ReplaySubject } from \"rxjs\";\r\nimport { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\nimport Cache from \"../../shared/store/cache\";\r\nimport { GST_API } from \"../../shared/types/enums\";\r\n\r\nexport default class UserMappingsService {\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n /**\r\n * Replace the static data inside of(...) with real ApiCall\r\n * @returns observable\r\n */\r\n static fetchFromApiObs(clientAuthContext) {\r\n // clear the cache before returning the actual subscription\r\n this.CACHE.CLEAR();\r\n // replace this._jsonData with reacl ApiCall\r\n return ApiService.fetchHTTP_API(GST_API.Identity, `/User/GetUsers`, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n });\r\n }\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"userName\", \"User Name\").flexWeight(1).minWidth(250).cellRenderer(\"childMessageRendererComponent\").headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(2).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(2).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"isPorzioUser\", \"Is Porzio User\").flexWeight(1).cellRenderer(\"isActiveCellRenderer\").headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\n\r\nexport default class AgGridChildMessageRendererComponent extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.invokeParentMethod = this.invokeParentMethod.bind(this);\r\n }\r\n\r\n invokeParentMethod() {\r\n this.props.context.componentParent.methodFromParent(`Row: ${this.props.node.rowIndex}, Col: ${this.props.colDef.headerName}`, this.props.node.data);\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n {this.props.value}\r\n \r\n );\r\n }\r\n}\r\n","import { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { ReplaySubject } from \"rxjs\";\r\n\r\nexport default class UserMappingDetailService {\r\n\r\n static getUserMappingDetailsAsOBS = (_userId) => {\r\n const targetUrl = `/User/GetUserTenants?userId=${_userId}`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.IDENTITY,\r\n targetUrl,\r\n );\r\n };\r\n static getActiveTenants = () => {\r\n const targetUrl = `/GetActiveTenants/true`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n );\r\n }\r\n\r\n /**\r\n * Refer url for more details: https://www.ag-grid.com/javascript-grid-column-properties/\r\n * @param _componentThisRef pass {this} keyword from the calling componenet\r\n */\r\n static getColumnDefs(_componentThisRef) {\r\n return [\r\n AgGridColumnExt.GET(false, \"text\", \"isSelected\", \"Select\").fixedWidth(88).flexWeight(1).headerClass(\"center-text\").cellRenderer(\"isCheckedCellRenderer\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"uid\", \"UID\").flexWeight(1).headerClass(\"center-text\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"tenantName\", \"Tenant Name\").flexWeight(1).headerClass(\"center-text\").SET(),\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { from, of, combineLatest, BehaviorSubject, } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged } from \"rxjs/operators\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n FormControl,\r\n Dialog,\r\n Divider,\r\n InputLabel,\r\n Select,\r\n MenuItem,\r\n Chip,\r\n Grid,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n LinearProgress\r\n} from \"@material-ui/core\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport UserMappingDetailService from \"./userMappingDetailService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\nimport { AgGridUtil } from \"../../../shared/services/ag-grid/agGridUtil\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport MatThemeService from \"../../../shared/services/theme/matThemeService\";\r\nimport ActionDialog from \"../../../shared/components/dialog/actionDialog\";\r\n\r\nlet searchSubject = new BehaviorSubject(\"\");\r\nlet SearchResultObservable = searchSubject.pipe(\r\n filter((val) => val.hasOwnProperty(\"newValue\")),\r\n debounceTime(200),\r\n distinctUntilChanged(),\r\n);\r\n\r\nclass UserMappingDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n scopedSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: true,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE,\r\n data: [],\r\n openDeleteConfirm: false,\r\n ndcWarning: \" \",\r\n availableTenantList: [],\r\n selTenantId: 0,\r\n selRoleId: 0,\r\n rolesList: [],\r\n tenantIdsToUnlink: [],\r\n agGridUtils: new AgGridUtil(\"tenantId\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n\r\n // search subscriptions\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n UserMappingDetailService.getUserMappingDetailsAsOBS(this.props.modalAgNode.id),\r\n UserMappingDetailService.getActiveTenants(),\r\n ]).subscribe(\r\n // success\r\n ([_userMappingDetailsData, _tenantsList]) => {\r\n var tenantIds = _userMappingDetailsData.map(x => x.tenantid);\r\n //if selected user is porzio user, only then Porzio can be seen on the tenant list\r\n _tenantsList = !this.props.modalAgNode.isPorzioUser ? _tenantsList.filter(x => x.tenantid !== 1) : _tenantsList;\r\n _tenantsList = _tenantsList.filter(x => !tenantIds.includes(x.tenantid))\r\n this.setState(\r\n {\r\n data: _userMappingDetailsData,\r\n availableTenantList: _tenantsList\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n fetchRolesByTenant = () => {\r\n this.apiSubscriptions.cancelAll();\r\n this.apiSubscriptions.add(ApiService.getOBS(API_ENDPOINT.TENANT, `/Role/GetAllRoles/${this.state.selTenantId}`).subscribe(\r\n // success\r\n (_rolesList) => {\r\n this.setState({ rolesList: _rolesList });\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n handleSubmit = () => {\r\n ToastService.showSuccess(\"Tenant Linked successfully.\");\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n // the below line has to be done on backend in future\r\n let userTypeId = this.state.selTenantId === 1 ? 3 : this.state.rolesList.filter(x => x.roleId === this.state.selRoleId)[0].roleName === \"Tenant Admin\" ? 3 : 2;\r\n let actionVerb = \"POST\";\r\n let targetUrl = `/LinkUserToTenant?tenantId=${this.state.selTenantId}&userId=${this.props.modalAgNode.id}&roleId=${this.state.selRoleId}&linkToTenant=true&loginUserId=${this.context.user.userId}&userTypeId=${userTypeId}`;\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.setState({ showTenantSelectionDialog: false });\r\n this.fetchData();\r\n this.setState({ isReadOnly: true });\r\n } else {\r\n console.error(\"Error: falsey successResult while mapping user to tenant\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while mapping user to tenant\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n }\r\n handleUnlinkTenant = () => {\r\n var ids = this.state.agGridUtils.getUpdatedRowData().filter(x => x.isSelected).map(x => x.tenantid);\r\n if (ids.length === 0) {\r\n ToastService.showWarning(\"Please select atleast one tenant.\");\r\n }\r\n else {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n let actionVerb = \"POST\";\r\n let mappedObj = ids.map(x => {\r\n return {\r\n tenantId: x,\r\n userId: this.props.modalAgNode.id,\r\n linktoTenant: false,\r\n loginUserId: this.context.user.userId,\r\n }\r\n })\r\n let targetUrl = `/UnLinkUserFromTenant`;\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.fetchData();\r\n } else {\r\n console.error(\"Error: falsey successResult while mapping user to tenant\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while mapping user to tenant\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n ToastService.showSuccess(\"Tenants unlinked successfully for \" + this.props.modalAgNode.userName);\r\n }\r\n this.setState({ isReadOnly: true });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n this.state.agGridUtils.setEditingMode(this.state.isReadOnly);\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n case ResultStatus.LOADED:\r\n return (\r\n \r\n \r\n \r\n \r\n Tenants List for {this.props.modalAgNode.userName}\r\n {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit() })}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n {LayoutService.getIconButton(this.state.isReadOnly, MatIconService.LINK, \"Link new tenant\", () => {\r\n this.setState({ showTenantSelectionDialog: true })\r\n }, \"inherit\")}\r\n {LayoutService.getIconButton(this.state.isReadOnly, MatIconService.UNLINK, \"Unlink tenant\", () => {\r\n if (this.state.agGridUtils.getUpdatedRowData().filter(x => x.isSelected).length > 0)\r\n this.setState({ showConfirmDialog: true });\r\n else\r\n ToastService.showWarning(\"Please select atleast one tenant.\");\r\n }, \"primary\")}\r\n \r\n
    \r\n {\r\n this.state.agGridUtils.setGridParams(params, true);\r\n this.state.agGridUtils.setEditingMode(this.state.isReadOnly);\r\n this.state.agGridUtils.sizeColumnsToFit();\r\n }}>\r\n
    \r\n
    \r\n
    \r\n {!this.state.showTenantSelectionDialog ? null :\r\n \r\n {/* Title */}\r\n \r\n \r\n \r\n Select Tenant and Role\r\n {LayoutService.getIconButton(this.state.selTenantId === 0 ? true : this.state.selTenantId === 1 ? false : this.state.selRoleId === 0, MatIconService.OK, \"Confirm\", () => {\r\n this.handleSubmit();\r\n }, \"inherit\", \"keyActionSave\")}\r\n {LayoutService.getIconButton(this.state.isReadOnly, MatIconService.CANCEL, \"Cancel\", () => { this.setState({ showTenantSelectionDialog: false }) }, \"secondary\", \"keyActionCancel1\")}\r\n \r\n {this.state.isTenantMapping ? : null}\r\n \r\n \r\n {/* Content */}\r\n \r\n \r\n {this.state.isTenantMapping ? \"Mapping user and tenant\" : \"This Action maps user to selected tenant.\"}\r\n \r\n \r\n \r\n {/*
    Please select a Profile Source
    */}\r\n \r\n Tenant\r\n \r\n \r\n \r\n Role Type\r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n }\r\n x.isSelected).map(x => x.tenantName).join() : \"\"}\r\n actions={[\r\n {\r\n color: \"secondary\", text: \"Continue\", icon: null,\r\n callback: () => {\r\n this.setState({ showConfirmDialog: false }, () => {\r\n this.handleUnlinkTenant()\r\n })\r\n }\r\n },\r\n {\r\n color: \"inherit\", text: \"Cancel\", icon: null,\r\n callback: () => { this.setState({ showConfirmDialog: false }, () => { }) }\r\n }\r\n ]} />\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return (\r\n {\r\n this.SERVICE.fetchData(this, true);\r\n }}\r\n onClose={this.props.onClose}\r\n />\r\n );\r\n default:\r\n return (null);\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(UserMappingDetailsComponent);","import React, { Component } from \"react\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../shared/types/enums\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AllCommunityModules } from \"ag-grid-enterprise\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport UserMappingsService from \"./userMappingsService\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport AgGridChildMessageRendererComponent from \"../../shared/components/ag-grid/agGridChildMessageRendererComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport UserMappingDetailComponent from \"./user-mapping-details/userMappingDetailComponent\";\r\nimport IsActiveIconRendererComponent from \"../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\n\r\nclass UserMappingsComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = UserMappingsService;\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.state = {\r\n modules: AllCommunityModules,\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n isActiveCellRenderer: IsActiveIconRendererComponent,\r\n childMessageRendererComponent: AgGridChildMessageRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({\r\n data: o.filter(x => x.isPorzioUser),\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n\r\n methodFromParent = (cell, node) => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node });\r\n };\r\n\r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/* Header Componenet */}\r\n { { this.fetchData(true); }, },\r\n ]}\r\n />}\r\n
    \r\n
    \r\n {/* */}\r\n { event.api.sizeColumnsToFit() }}\r\n >\r\n
    \r\n \r\n \r\n \r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n}\r\nexport default LayoutService.getHocComponenet(UserMappingsComponent);\r\n","import ApiService from \"../../../shared/services/apiService\"\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\"\r\nimport { Subject } from 'rxjs';\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridBulkEditUtil } from \"../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\n\r\nexport default class HCPSearchDialogService {\r\n static fetchFilterData = (_tenantId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.CORE,\r\n `/AdvancedSearch/FetchAdvSearchFilterDetails/${_tenantId}`\r\n );\r\n }\r\n\r\n static searchOBS = (_tenantId, _searchValue = \"\") => {\r\n return ApiService.setOBS(\"POST\", API_ENDPOINT.CORE, `/Profiles/FetchProfilesBySearch/${_tenantId}`, JSON.stringify({\r\n searchValue: _searchValue,\r\n porzioGSTId: \"\",\r\n firstName: \"\",\r\n lastName: \"\",\r\n organizationName: \"\",\r\n companyId: \"\",\r\n country: \"\",\r\n isAdvance: true\r\n }));\r\n }\r\n\r\n static getColumnDefs = (_componentThisRef, _onSelectCallback) => {\r\n return [\r\n AgGridColumnExt.GET(true, \"text\", AgGridBulkEditUtil.selectColumnName, \"Select\").fixedWidth(80).headerClass(\"center-text\")\r\n .cellRenderer(\"isCheckedCellRenderer\", { onChange: _componentThisRef.toggleSubmitButton }).SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"is_MiamiHcp\", \"Miami HCP\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"porziogstprofileid\", \"Porzio GST Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().cellRenderer(\"profileDetailCellRendererComponent\").SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"companyProfileId\", \"Company Profile ID\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileName\", \"File Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"affiliatedCompany\", \"Affiliated Company\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"sourceName\", \"Source\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileStatus\", \"Profile Status\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"lastName\", \"Last Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"firstName\", \"First Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"middleName\", \"Middle Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"organizationName\", \"Organization Name\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileCategory\", \"Profile Category\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"profileType\", \"Profile Type\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"credentials\", \"Credentials\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usnpinumber\", \"US NPI Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"uslicensestate\", \"US License State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usstatelicensenumber\", \"US License Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"usTaxIdNumber\", \"US Tax ID Number\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"profileConsent\", \"Profile Consent\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"city\", \"City\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"province\", \"Province/State\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, true, \"country\", \"Country\").flexWeight(1).minWidth(136).headerClass(\"center-text\").centerAlignText().SET(),\r\n ];\r\n }\r\n\r\n\r\n static saveProfiles = (tenantId, idsToSave, isChecked) => {\r\n return ApiService.postOBS(API_ENDPOINT.CORE,\r\n `/Profiles/UpdateUSMiamiHCPStatus/${tenantId}/${idsToSave}/${isChecked}`);\r\n }\r\n}","import React from \"react\";\r\nimport { AppBar, Box, Dialog, Tooltip, IconButton, DialogContent, DialogTitle, Divider, LinearProgress, Tab, Tabs, TextField, Toolbar, Typography, Accordion, AccordionSummary, AccordionDetails, Select, Grid, Chip, InputBase, makeStyles, Button, Menu, MenuItem, Paper, FormControl, FormHelperText } from \"@material-ui/core\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { DataService, SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport { FILTER_TYPE, ResultStatus } from \"../../../shared/types/enums\";\r\nimport { textFilterCriteria, lovFilterCriteria, valueFilterCriteria, dateFilterCriteria, usMiamiHcpValues } from \"../../../shared/types/constants\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { DatePicker, MuiPickersUtilsProvider } from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\nimport MatSpecService from \"../../../shared/services/theme/matSpecService\";\r\nimport HCPSearchDialogService from \"./hcpSearchDialogService\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport DialogErrorFragmentComponent from \"../../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport { AgGridColumnExt } from \"../../../shared/services/ag-grid/agGridColumnExt\";\r\nimport { AgGridUtil } from \"../../../shared/services/ag-grid/agGridUtil\";\r\nimport { combineLatest } from \"rxjs\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport { AgGridBulkEditUtil } from \"../../../shared/components/ag-grid/bluk-edit/agGridBulkEditUtil\";\r\nimport AgGridCheckboxCellRendererComponent from \"../../../shared/components/elements/agGridCheckboxCellRendererComponent\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport ToastService from \"../../../shared/services/toastService\";\r\n\r\nclass HCPSearchDialogComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.filterWithErrorValue = [5, 11, 118, 35, 36];\r\n\r\n this.state = {\r\n selectedTabIndex: 0,\r\n filterCriteria: [],\r\n savedFilterData: [],\r\n searchValue: \"\",\r\n hcpSearchResults: [],\r\n selectedProfiles: [],\r\n errorInfo: null,\r\n isUsMiamiHcp: null,\r\n //fetchResult: ResultStatus.NOT_LOADED,\r\n agGridBulkEditUtil: new AgGridBulkEditUtil(),\r\n agGridUtils: new AgGridUtil(\"lastname\", {\r\n isCheckedCellRenderer: AgGridCheckboxCellRendererComponent,\r\n //inlineEditButtonCellRendererComponent: AgGridEditButtonCellRendererComponent,\r\n //profileDetailCellRendererComponent: ProfileDetailCellRendererComponent,\r\n }),\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchFilterData();\r\n }\r\n\r\n /* Filter section Start */\r\n fetchFilterData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n HCPSearchDialogService.fetchFilterData(this.context.user.tenantId)\r\n .subscribe(\r\n (data) => {\r\n if (data) {\r\n data[\"filterFields\"].forEach(x => { x.isSelected = false; });\r\n let filterFields = data[\"filterFields\"];\r\n\r\n let operators = data[\"operators\"];\r\n\r\n let lovFilters = data[\"lovFilters\"];\r\n this.setState({\r\n fetchResult: ResultStatus.LOADED,\r\n filterFields: filterFields,\r\n operators: operators,\r\n lovFilters: lovFilters,\r\n });\r\n //TODO : add isSelected flag for hiding already selected filters\r\n }\r\n else {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n errorInfo: \"Error occurred while fetching filters\"\r\n });\r\n }\r\n },\r\n (error) => {\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n errorInfo: \"Error occurred while fetching filters. \" + error.message\r\n });\r\n }\r\n )\r\n );\r\n }\r\n\r\n handleDeleteChip = (chipToDelete) => () => {\r\n this.setState({\r\n savedFilterData: this.state.savedFilterData.filter((filter) => filter.fieldAliasName !== chipToDelete.fieldAliasName),\r\n hcpSearchResults: []\r\n });\r\n }\r\n\r\n clearAllChips = () => {\r\n this.setState({ savedFilterData: [], hcpSearchResults: [] });\r\n }\r\n\r\n async handleFieldSelectChange(value) {\r\n let filterType = this.state.filterFields.find(f => f.fieldName == value)?.fieldTypeID;\r\n let filterCriteria;\r\n switch (filterType) {\r\n case FILTER_TYPE.TEXT:\r\n default:\r\n filterCriteria = textFilterCriteria;\r\n break;\r\n case FILTER_TYPE.LOV:\r\n filterCriteria = lovFilterCriteria;\r\n break;\r\n case FILTER_TYPE.NUMERIC:\r\n filterCriteria = valueFilterCriteria;\r\n break;\r\n case FILTER_TYPE.DATE:\r\n filterCriteria = dateFilterCriteria;\r\n break;\r\n }\r\n await this.formikProps.setFieldValue('filterCriteria', filterCriteria[0].lovId, false);\r\n\r\n this.setState({\r\n filterCriteria: filterCriteria\r\n });\r\n }\r\n\r\n async handleCriteriaSelectChange(value) {\r\n // await this.formikProps.setFieldValue('filterCriteria', value, false);\r\n // await this.formikProps.setFieldTouched('filterCriteria', true, false);\r\n // this.formikProps.validateField('filterCriteria');\r\n }\r\n\r\n handleLOVValueChange(newValues) {\r\n }\r\n\r\n addFilter = async (fieldName, criteria, value) => {//TODO\r\n if (!this.formikProps.isSubmitting && this.formikProps.isValid) {\r\n await this.validationSchema.validate(this.formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n let selectedFilter = this.state.filterFields.find(f => f.fieldName == fieldName);\r\n\r\n let savedFilterData = {\r\n fieldId: selectedFilter?.fieldID,\r\n fieldText: fieldName,\r\n fieldAliasName: selectedFilter?.fieldAliasName,\r\n fieldTypeID: selectedFilter?.fieldTypeID,\r\n criteria: criteria,\r\n value: value,\r\n };\r\n\r\n this.setState({\r\n savedFilterData: this.state.savedFilterData.concat(savedFilterData)\r\n }, () => this.formikProps.resetForm());\r\n })\r\n .catch((errorObj) => {\r\n console.log(errorObj.message);\r\n if (errorObj.inner) {\r\n errorObj.inner.forEach(err => {\r\n this.formikProps.setFieldError(err.path, err.message);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n\r\n constructSearchString = () => {\r\n let searchValue = \"\";\r\n\r\n searchValue = this.state.savedFilterData.map(data => {\r\n let operator;\r\n switch (data.criteria) {\r\n case \"equals\":\r\n case \"notequals\":\r\n\r\n //Handle Null and Error filter values\r\n if (data.fieldTypeID == FILTER_TYPE.LOV) {//sample string: @SerachString='Country IN ('Belgium', 'United States') OR Country is NULL' \r\n let selectedValues = data.value.split(\",\");\r\n const nullStr = \"'Null'\";\r\n const errorStr = \"'Error/Warning'\";//sample string: if 'PURPOSE_FLAG='1'\r\n\r\n const hasNullValue = selectedValues.some(x => x == nullStr);\r\n const hasErrorValue = selectedValues.some(x => x == errorStr);\r\n\r\n let clause = '';\r\n if (selectedValues.some(x => x != nullStr && x != errorStr)) {\r\n operator = data.criteria == \"equals\" ? \" IN \" : \" NOT IN \";\r\n clause = `${data.fieldAliasName}${operator}(${selectedValues.filter(x => x != nullStr && x != errorStr).join()})`;\r\n }\r\n if (hasNullValue && hasErrorValue) {\r\n let addClause = `${data.fieldAliasName}_FLAG${(data.criteria == \"equals\") ? \"=\" : \"<>\"}1 OR ${data.fieldAliasName} ${(data.criteria == \"equals\") ? \"IS NULL\" : \"IS NOT NULL\"}`\r\n clause += selectedValues.some(x => x != errorStr && x != nullStr) ? ` OR ${addClause}` : `${addClause}`;\r\n } else if (hasNullValue) {\r\n let addClause = `${data.fieldAliasName} ${(data.criteria == \"equals\") ? \"IS NULL\" : \"IS NOT NULL\"}`;\r\n clause += selectedValues.some(x => x != nullStr) ? ` OR ${addClause}` : `${addClause}`;\r\n } else if (hasErrorValue) {\r\n let addClause = `${data.fieldAliasName}_FLAG${(data.criteria == \"equals\") ? \"=\" : \"<>\"}1`;\r\n clause += selectedValues.some(x => x != errorStr) ? ` OR ${addClause}` : `${addClause}`;\r\n }\r\n return clause;\r\n }\r\n\r\n\r\n if (data.fieldTypeID == FILTER_TYPE.TEXT) {\r\n if (data.value.indexOf(\",\") !== -1) { //Handle comma separated values\r\n operator = data.criteria == \"equals\" ? \" IN \" : \" NOT IN \";\r\n let clause = `${data.fieldAliasName}${operator}(${data.value})`;\r\n return clause;\r\n }\r\n operator = data.criteria == \"equals\" ? \"=\" : \"<>\";\r\n return `${data.fieldAliasName}${operator}N'${data.value}'`;\r\n }\r\n\r\n operator = data.criteria == \"equals\" ? \"=\" : \"<>\";\r\n break;\r\n case \"lessthan\":\r\n operator = \"<\";\r\n break;\r\n case \"greaterthan\":\r\n operator = \">\";\r\n break;\r\n case \"between\":\r\n operator = \" BETWEEN \";\r\n return `${data.fieldAliasName}${operator}${data.value}`;\r\n //break;\r\n case \"contains\":\r\n operator = \" LIKE \";\r\n return `${data.fieldAliasName}${operator}N'%${data.value}%'`;\r\n //break;\r\n default:\r\n operator = \"=\";\r\n }\r\n return `${data.fieldAliasName}${operator}'${data.value}'`;\r\n }).join(\" AND \");\r\n return searchValue;\r\n }\r\n\r\n applyFilter = () => {\r\n let searchedValue = this.constructSearchString();\r\n this.setState({\r\n searchValue: searchedValue\r\n }, () => {\r\n this.fetchData();\r\n });\r\n }\r\n\r\n getFilterValueContent(_formikProps, _classes) {\r\n this.formikProps = _formikProps;\r\n let filterType = this.state.filterFields.some(f => f.fieldName == _formikProps.values['filterFieldId']) ?\r\n this.state.filterFields.find(f => f.fieldName == _formikProps.values['filterFieldId']).fieldTypeID : FILTER_TYPE.TEXT;\r\n let selectedCriteriaValue = _formikProps.values['filterCriteria'] ? _formikProps.values['filterCriteria'] :\r\n this.state.filterCriteria[0];\r\n\r\n if (filterType === FILTER_TYPE.DATE) {\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 this.addFilter(_formikProps.values['filterFieldId'], _formikProps.values['filterCriteria'], `'${DataService.getDateFromDateTimeStamp(_formikProps.values['startDate']) + \"' and '\" + DataService.getDateFromDateTimeStamp(_formikProps.values['endDate'])}'`)\r\n }} color=\"primary\">{MatIconService.ADD_CIRCLE_OUTLINE}\r\n \r\n \r\n \r\n );\r\n } else if (filterType === FILTER_TYPE.LOV) {\r\n let selectedFilterFieldID = this.state.filterFields.find(f => f.fieldName == _formikProps.values['filterFieldId'])?.fieldID;\r\n return (<>\r\n {this.filterWithErrorValue.includes(selectedFilterFieldID) ?\r\n \r\n {LayoutService.getChipSelect(false, _classes, _formikProps, \"filterLOVValue\", \"Filter Value\", [{ fieldID: selectedFilterFieldID, lovKey: \"Error/Warning\", lovid: null }, { fieldID: selectedFilterFieldID, lovKey: \"Null\", lovid: 0 }, ...[this.state.lovFilters.filter(f => f.fieldID == selectedFilterFieldID)][0]].sort((a, b) => a.lovKey.localeCompare(b.lovKey)), \"lovid\", \"lovKey\", this.handleLOVValueChange, \"98%\")}\r\n \r\n :\r\n \r\n {LayoutService.getChipSelect(false, _classes, _formikProps, \"filterLOVValue\", \"Filter Value\", [{ fieldID: selectedFilterFieldID, lovKey: \"Null\", lovid: 0 }, ...[this.state.lovFilters.filter(f => f.fieldID == selectedFilterFieldID)][0]].sort((a, b) => a.lovKey.localeCompare(b.lovKey)), \"lovid\", \"lovKey\", this.handleLOVValueChange, \"98%\")}\r\n }\r\n \r\n \r\n {\r\n this.addFilter(_formikProps.values['filterFieldId'], _formikProps.values['filterCriteria'], \"'\" + _formikProps.values[\"filterLOVValue\"].map(lov => lov.lovKey).join(\"','\") + \"'\")\r\n }} color=\"primary\">{MatIconService.ADD_CIRCLE_OUTLINE}\r\n \r\n \r\n );\r\n } else {\r\n if (selectedCriteriaValue == \"between\") {\r\n //value type with range selected\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 this.addFilter(_formikProps.values['filterFieldId'], _formikProps.values['filterCriteria'], `'${_formikProps.values['filterRangeValue1'] + \"' and '\" + _formikProps.values['filterRangeValue2']}'`)\r\n }} color=\"primary\">{MatIconService.ADD_CIRCLE_OUTLINE}\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 let modValues = _formikProps.values['filterValue'];\r\n let selectedValues = _formikProps.values['filterValue'].split(\",\");\r\n if (selectedValues && selectedValues.length > 1) {\r\n modValues = \"'\" + selectedValues.join(\"','\") + \"'\";\r\n }\r\n this.addFilter(_formikProps.values['filterFieldId'], _formikProps.values['filterCriteria'], modValues);\r\n }} color=\"primary\">{MatIconService.ADD_CIRCLE_OUTLINE}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n /* Filter section End */\r\n\r\n onClose = (_reloadRequired = false) => {\r\n this.setState({\r\n savedFilterData: [],\r\n searchValue: \"\"\r\n }, () => this.props.close());\r\n }\r\n\r\n handleHcpChange = (_hcpValue) => {\r\n if (_hcpValue === \"yes\") {\r\n this.setState({ isUsMiamiHcp: true });\r\n } else {\r\n this.setState({ isUsMiamiHcp: false });\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = () => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ data: [], fetchResult: ResultStatus.LOADING });\r\n this.oSubscriptions.add(\r\n combineLatest([\r\n HCPSearchDialogService.searchOBS(this.context.user.tenantId, this.state.searchValue),\r\n LookupService.getFormattedCountriesAsOBS(this.context, null),\r\n ]).subscribe(\r\n // success\r\n ([_data, _countryList]) => {\r\n _data.forEach(x => x.is_USMiamiHCP === \"Y\" ? x.is_MiamiHcp = \"Yes\" : x.is_MiamiHcp = \"No\");\r\n this.setState(\r\n {\r\n hcpSearchResults: DataService.hasElements(_data) ? _data.map(r => ({ ...r, countryName: _countryList.find(c => c.id === r.country)?.value, })) : [],\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n //this.state.agGridUtils.sizeColumnsToFit();\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n toggleSubmitButton = (_cellRef, _data) => {\r\n var hasSelected = false;\r\n let selectedProfiles = [];\r\n if (this.state.agGridBulkEditUtil.hasUpdates()) {\r\n hasSelected = true;\r\n } else {\r\n this.state.agGridUtils.gridApi.forEachNode((rowNode) => {\r\n hasSelected = hasSelected || rowNode.data[AgGridBulkEditUtil.selectColumnName] === true;\r\n if (rowNode.data && rowNode.data[AgGridBulkEditUtil.selectColumnName]) {\r\n selectedProfiles.push(rowNode.data);\r\n }\r\n });\r\n }\r\n // set the state\r\n this.setState({\r\n selectedProfiles: selectedProfiles,\r\n isReadOnly: !hasSelected,\r\n //isInit: false // only true for the first time \r\n });\r\n }\r\n\r\n handleSubmit = () => {\r\n let selectedProfileIds = this.state.selectedProfiles.map(p => p.prid).join(\",\");\r\n HCPSearchDialogService.saveProfiles(this.context.user.tenantId, selectedProfileIds, this.state.isUsMiamiHcp).subscribe(\r\n (_successResult) => {\r\n if (_successResult) {\r\n this.setState({ selectedProfiles: [] })\r\n ToastService.showSuccess(\"Profile(s) updated successfully\");\r\n //this.fetchData(false);\r\n }\r\n\r\n },\r\n (_errorResult) => {\r\n ToastService.showError(\"Error occured while updating Profile(s)\");\r\n console.log(_errorResult);\r\n }\r\n );\r\n\r\n // this.setState({\r\n // savedFilterData: [],\r\n // //searchValue: \"\"\r\n // });\r\n }\r\n\r\n // formik\r\n getInitialValues() {\r\n return {\r\n filterFieldId: null,\r\n filterCriteria: '',\r\n startDate: new Date(),\r\n endDate: new Date(),\r\n //filterLOVValue: '',\r\n filterValue: '',\r\n filterRangeValue1: '',\r\n filterRangeValue2: '',\r\n //isUsMiamiHcp: ''\r\n };\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n let filterSchema = Yup.object().shape({\r\n filterFieldId: Yup.string().required(\"Select a Filter Name\").nullable(true).min(1, \"Select a Filter Name\"), //Yup.number().nullable(true)\r\n filterCriteria: Yup.string().required(\"Select a Filter Criteria\").nullable(true).min(1, \"Select a Filter Criteria\"),\r\n isUsMiamiHcp: Yup.string()\r\n // //filterLOVValue: Yup.string().nullable(true).min(1, \"Select a Filter Value\"),\r\n });\r\n\r\n if (this.formikProps && this.formikProps.values['filterFieldId']) {\r\n let filterType = this.state.filterFields.find(f => f.fieldName == this.formikProps.values['filterFieldId']).fieldTypeID;\r\n let filterDynamicSchema = Yup.object().shape({});\r\n if (filterType === FILTER_TYPE.DATE) {\r\n filterDynamicSchema = Yup.object().shape({\r\n startDate: Yup.date().required(\"Select a Start Date\").nullable(true).min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n endDate: Yup.date().required(\"Select an End Date\").nullable(true).min(\"1/1/2000\", \"On or after 1/1/2000\").max(\"1/1/2099\", \"On or before 1/1/2099\"),\r\n });\r\n } else if (filterType === FILTER_TYPE.LOV) {\r\n filterDynamicSchema = Yup.object().shape({\r\n filterLOVValue: Yup.string().required(\"Select a Filter Value\").nullable(true).min(1, \"Select a Filter Value\"),\r\n });\r\n } else {\r\n }\r\n\r\n this.validationSchema = filterSchema.concat(filterDynamicSchema);\r\n } else this.validationSchema = filterSchema;\r\n return this.validationSchema;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ;\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n <>\r\n \r\n
    \r\n
    \r\n
    \r\n { { this.fetchData(true); }, },\r\n ]}\r\n />}\r\n
    \r\n \r\n \r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n {LayoutService.getDropDown(false, classes.dialogControl, classes.menuPaper, fProps, this.validationSchema, \"filterFieldId\", \"Filter Name\",\r\n this.state.filterFields, \"fieldName\", \"fieldName\", null, false, \"98%\", (_formikProps, _newValue) => {\r\n this.handleFieldSelectChange(_newValue);\r\n }\r\n )}\r\n \r\n \r\n {LayoutService.getDropDown(false, classes.dialogControl, classes.menuPaper, fProps, this.validationSchema, \"filterCriteria\", \"Criteria\",\r\n this.state.filterCriteria, \"lovId\", \"lovKey\", null, false, \"98%\", (_formikProps, _newValue) => { this.handleCriteriaSelectChange(_newValue); }\r\n )}\r\n \r\n {this.getFilterValueContent(fProps, classes)}\r\n \r\n \r\n \r\n {this.state.savedFilterData.map((data) => {\r\n return (
  • \r\n \r\n {data.fieldText}\r\n {data.criteria}\r\n {data.value}\r\n } onDelete={this.handleDeleteChip(data)} style={{ margin: '4px' }} />\r\n
  • \r\n );\r\n })}\r\n {this.state.savedFilterData.length > 0 ?\r\n \r\n { this.clearAllChips() }} color=\"inherit\">{MatIconService.CLOSE}\r\n : null}\r\n
    \r\n
    \r\n \r\n \r\n \r\n {this.state.hcpSearchResults.length !== 0 ? \r\n {LayoutService.getDropDown(false, classes.dialogControl, classes.menuPaper, fProps, this.validationSchema, \"isUsMiamiHcp\", \"US Miami HCP\",\r\n usMiamiHcpValues, \"lovId\", \"lovKey\", null, false, \"98%\", (_formikProps, _newValue) => {\r\n this.handleHcpChange(_newValue);\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 this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.state.agGridUtils.setGridParams(params, false);\r\n this.state.agGridUtils.pinColumn(AgGridBulkEditUtil.selectColumnName);\r\n }}>\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n case ResultStatus.ERROR:\r\n return (\r\n \r\n \r\n { this.fetchFilterData(); }} />\r\n \r\n \r\n );\r\n default:\r\n return <>;\r\n }\r\n }\r\n}\r\n\r\nexport default LayoutService.getHocComponenet(HCPSearchDialogComponent);","import ApiService from \"../../shared/services/apiService\";\r\nimport Cache from \"../../shared/store/cache\";\r\nimport { API_ENDPOINT } from \"../../shared/types/enums\";\r\n\r\nexport default class NonEntityService {\r\n static CACHE = new Cache(this.fetchFromApiObs);\r\n\r\n static getObs(_ignoreCache, clientAuthContext) {\r\n if (_ignoreCache || this.CACHE.NOT_EXISTS()) {\r\n return this.fetchFromApiObs(clientAuthContext,0);\r\n } else {\r\n return this.CACHE.getOBS();\r\n }\r\n }\r\n\r\n static fetchFromApiObs = (clientAuthContext, _lovEntityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetNonEntityLOVsByID/${clientAuthContext.user.tenantId}/${6}`\r\n //`/Util/GetNonEntityLOVsByID/${clientAuthContext.user.tenantId}/${_lovEntityId}`\r\n );\r\n };\r\n\r\n\r\n static getRows() {\r\n return [];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"Entity Type\",\r\n field: \"lovEntityDesc\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 125,\r\n cellRenderer: \"childMessageRendererComponent\",\r\n },\r\n {\r\n headerName: \"Entity Name\",\r\n field: \"lovKey\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n width: 125,\r\n },\r\n // {\r\n // headerName: \"Ordinal\",\r\n // field: \"ordinal\",\r\n // sortable: true,\r\n // filter: \"agTextColumnFilter\",\r\n // cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n // resizable: true,\r\n // width: 125,\r\n // },\r\n {\r\n headerName: \"Active?\",\r\n field: \"isActive\",\r\n sortable: true,\r\n filter: true,\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n cellRenderer: \"nonEntityIsActiveRendererComponent\",\r\n width: 65,\r\n },\r\n ];\r\n }\r\n}\r\n","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class ComplianceReportMappingService {\r\n\r\n static getNonEntityLOVsByIDAsOBS = (_tenantId, _lovEntityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/GetNonEntityLOVsByID/${_tenantId}/${6}`\r\n );\r\n };\r\n static getNonEntityByTenantIdAsOBS = (_tenantId, _lovEntityId) => {\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n `/Util/NonEntityFields/${_tenantId}`\r\n );\r\n };\r\n};\r\n","import React from \"react\";\r\nimport { from, of, combineLatest, BehaviorSubject, } from \"rxjs\";\r\nimport { filter, mergeMap, debounceTime, distinctUntilChanged } from \"rxjs/operators\";\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport {\r\n Box,\r\n DialogTitle,\r\n DialogContent,\r\n FormGroup,\r\n Grid,\r\n Typography,\r\n AppBar,\r\n Toolbar,\r\n TextField,\r\n} from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { ResultStatus, CrudAction, API_ENDPOINT } from \"../../../shared/types/enums\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport ApiService from \"../../../shared/services/apiService\";\r\nimport NonEntityDetailsService from \"./nonEntityDetailsService\";\r\nimport LookupService from \"../../../shared/services/lookupService\";\r\nimport RolePermissionService from \"../../../shared/role-permissions/rolePermissionService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport { SubscriptionsOutlined } from \"@material-ui/icons\";\r\n\r\n\r\nclass NonEntityDetailsComponent extends React.Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n scopedSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n // init state\r\n this.state = {\r\n isReadOnly: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n isEditing: this.props.inputAction === CrudAction.UPDATE ? true : false,\r\n data: [],\r\n openDeleteConfirm: false,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n this.scopedSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n /**\r\n * rxjs operator takes multiple obs as argument and emits their result in the same order\r\n * this operator is very handy as we don't have to independently wait for each result\r\n */\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n NonEntityDetailsService.getNonEntityLOVsByIDAsOBS(this.context.user.tenantId, 0),\r\n NonEntityDetailsService.getNonEntityByTenantIdAsOBS(this.context.user.tenantId, 0),\r\n ]).subscribe(\r\n // success\r\n ([_nonEntityLovMaster, _nonEntity]) => {\r\n this.setState(\r\n {\r\n nonEntityLovMaster: _nonEntityLovMaster,\r\n nonEntity: _nonEntity,\r\n },\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n }\r\n\r\n getInitialValues() {\r\n if (this.props.inputAction === CrudAction.CREATE) {\r\n return {\r\n lovId: \"\",\r\n lovEntityId: 6,\r\n lovEntityDesc: \"\",\r\n lovKey: \"\",\r\n isActive: true,\r\n };\r\n\r\n } else {\r\n return {\r\n lovId: this.props.modalAgNode.lovId,\r\n lovEntityId: this.props.modalAgNode.lovEntityId,\r\n lovEntityDesc: this.props.modalAgNode.lovEntityDesc,\r\n lovKey: this.props.modalAgNode.lovKey,\r\n isActive: this.props.modalAgNode.isActive,\r\n };\r\n }\r\n }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n lovKey: Yup.string()\r\n .required(\"Required\")\r\n .max(256, \"Must be 256 characters or less\")\r\n .test(\r\n \"checkDuplicateNonEntityName\",\r\n \"NonEntity Name already exists\",\r\n async (_formikValue) => {\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n if (_formikValue === this.props.modalAgNode.lovKey) {\r\n return true;\r\n }\r\n }\r\n try {\r\n const isExists = this.checkDuplicateNonEntityName(this.state.nonEntityLovMaster, _formikValue);\r\n console.log(\"is Entity Name exists: \", isExists);\r\n return !isExists;\r\n } catch (error) {\r\n console.log(\"Product Exists Error:\", error);\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n }\r\n ),\r\n isActive: Yup.boolean().required(\"Required\"),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n\r\n\r\n handleSubmit = async (_formikProps) => {\r\n if (!_formikProps.isSubmitting && _formikProps.isValid) {\r\n await this.validationSchema.validate(_formikProps.values, { abortEarly: false })\r\n .then((x) => {\r\n // 0) clear the CACHE,so next time if requried this new object will also be fetched\r\n // LookupService.clearPRODUCTS();\r\n\r\n // 1) set the status\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n\r\n // 2) extract the formik values into an object\r\n var mappedObj = {\r\n lovEntityId: _formikProps.values.lovEntityId,\r\n lovEntityDesc: this.state.nonEntity.filter(a => a.nonentityid === 6)[0].fielD_NAME,\r\n lovKey: _formikProps.values.lovKey,\r\n isActive: _formikProps.values.isActive,\r\n }\r\n console.log(\"Test before mapped\");\r\n // 3) determine the action and assign the appropriate props\r\n let actionVerb = \"\";\r\n let targetUrl = \"\";\r\n if (this.props.inputAction === CrudAction.UPDATE) {\r\n // UPDATE\r\n actionVerb = \"POST\";\r\n targetUrl = `/Util/AddNonEntityLOVs/${this.context.user.tenantId}`;\r\n mappedObj.lovId = this.props.modalAgNode.lovId;\r\n mappedObj.createdBy = this.props.modalAgNode.createdBy;\r\n mappedObj.createdDate = this.props.modalAgNode.createdDate;\r\n mappedObj.updatedBy = this.context.user.userId;\r\n mappedObj.updatedDate = new Date().toISOString().slice(0, 10);\r\n } else {\r\n // CREATE\r\n actionVerb = \"POST\";\r\n targetUrl = `/Util/AddNonEntityLOVs/${this.context.user.tenantId}`;\r\n mappedObj.id = 0;\r\n mappedObj.createdBy = this.context.user.userId;\r\n mappedObj.createdDate = new Date().toISOString().slice(0, 10);\r\n }\r\n console.log(\"Before APi\");\r\n // 4) save to Api and subscribe for the result\r\n ApiService.setOBS(\r\n actionVerb,\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n JSON.stringify(mappedObj)\r\n ).subscribe(\r\n (successResult) => {\r\n if (successResult) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n this.props.refreshNonEntityList(true);\r\n this.props.onClose(false);\r\n } else {\r\n console.error(\"Error: falsey successResult while saving NonEntity\", successResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n },\r\n (errorResult) => {\r\n console.error(\"Error while saving NonEntity\", errorResult);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n );\r\n })\r\n .catch((erroObj) => {\r\n erroObj.inner.forEach(err => { _formikProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n PopulateType(nonEntity) {\r\n return nonEntity.filter(a => a.nonentityid === 6);\r\n }\r\n\r\n checkDuplicateNonEntityName(objNonEntity, lovKey) {\r\n if (lovKey === undefined) return false;\r\n\r\n for (const obj in objNonEntity) {\r\n if (objNonEntity[obj].lovKey === lovKey)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.PRODUCT_DETAIL.cannotView && this.props.inputAction === CrudAction.UPDATE) {\r\n return RolePermissionService.getAccessDeniedComponent(classes, () => { this.props.history.goBack() }); // this is required to prevent Url navigation\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SAVING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n case ResultStatus.LOADED:\r\n return (\r\n <>\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \r\n NonEntity Details\r\n {this.props.inputAction === CrudAction.UPDATE ? RolePermissionService.PRODUCT_DETAIL.cannotEdit ? LayoutService.getIconButton(false, MatIconService.CLOSE, \"close\",\r\n () => { this.props.onClose(false) }, \"secondary\")\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n : LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })\r\n }\r\n {/* {LayoutService.getReadOnlyActions(this, !this.state.isEditing, () => { this.props.onClose(false) }, () => { this.handleSubmit(fProps) })} */}\r\n \r\n \r\n \r\n {/* Dialog Content */}\r\n \r\n \r\n \r\n \r\n {LayoutService.getSelectControl(this.state.isReadOnly,\r\n classes,\r\n fProps,\r\n \"lovEntityId\",\r\n \"Entity Type\",\r\n this.PopulateType(this.state.nonEntity),\r\n \"nonentityid\",\r\n \"fielD_NAME\",\r\n \"95%\",\r\n false\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n {LayoutService.getSwitch(this.state.isReadOnly, classes, fProps, \"isActive\", \"Active\")}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n )}\r\n \r\n \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return (\r\n {\r\n this.SERVICE.fetchData(this, true);\r\n }}\r\n onClose={this.props.onClose}\r\n />\r\n );\r\n default:\r\n return (null);\r\n }\r\n }\r\n }\r\n}\r\n\r\n/** HOC */\r\nexport default LayoutService.getHocComponenet(NonEntityDetailsComponent);","import React, { Component } from \"react\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\n\r\nimport PageHeaderComponent from \"../../shared/components/page/pageHeaderComponent\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../shared/types/enums\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AllCommunityModules } from \"ag-grid-enterprise\";\r\nimport { withStyles, Dialog } from \"@material-ui/core\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport PageDynamicHeaderComponent from \"../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport NonEntityService from \"./nonEntityService\";\r\nimport ChildMessageRendererComponent from \"../../shared/components/childMessageRendererComponent\";\r\nimport NonEntityIsActiveRendererComponent from \"../../shared/components/ag-grid/isActiveIconRendererComponent\";\r\nimport NonEntityDetailsComponent from \"./nonentity-details/nonEntityDetailsComponent.jsx\";\r\n\r\n\r\nclass NonEntityComponent extends Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = NonEntityService;\r\n constructor(props) {\r\n super(props);\r\n this.handleHide = this.handleHide.bind(this);\r\n this.state = {\r\n modules: AllCommunityModules,\r\n data: [],\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n frameworkComponents: {\r\n childMessageRendererComponent: ChildMessageRendererComponent,\r\n nonEntityIsActiveRendererComponent: NonEntityIsActiveRendererComponent,\r\n },\r\n modalShow: false,\r\n modalAgNode: null,\r\n inputAction: CrudAction.NONE,\r\n };\r\n this.fetchData.bind(this);\r\n }\r\n \r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n componentDidMount() {\r\n this.fetchData();\r\n }\r\n \r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, data: [] });\r\n // save the subscription object\r\n this.oSubscriptions.add(\r\n this.STORE.getObs(_ignoreCache, this.context).subscribe(\r\n (o) => {\r\n // onResultStatus.SUCCESS\r\n if (!Array.isArray(o)) {\r\n o = new Array(o);\r\n }\r\n this.STORE.CACHE.SET(o, 0);\r\n this.setState({\r\n data: o,\r\n fetchResult: ResultStatus.SUCCESS,\r\n });\r\n },\r\n (o) => {\r\n console.log(\"Error:\", o);\r\n // onResultStatus.ERROR\r\n this.setState({\r\n fetchResult: ResultStatus.ERROR,\r\n });\r\n }\r\n )\r\n );\r\n };\r\n \r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n this.gridApi.setDomLayout(\"autoHeight\");\r\n };\r\n \r\n methodFromParent = (cell, node) => {\r\n console.log(node);\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.UPDATE });\r\n this.setState({ modalAgNode: node });\r\n };\r\n \r\n handleCreateNonEntityModal = () => {\r\n this.setState({ modalShow: true });\r\n this.setState({ inputAction: CrudAction.CREATE });\r\n };\r\n\r\n \r\n handleHide() {\r\n this.setState({ modalShow: false });\r\n }\r\n \r\n render() {\r\n const { classes } = this.props;\r\n if (RolePermissionService.PRODUCT.cannotView) {\r\n return RolePermissionService.getAccessDeniedComponent(classes);\r\n } else {\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return (\r\n \r\n );\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/* Header Componenet */}\r\n { { this.fetchData(true); }, },\r\n ]}\r\n />}\r\n
    \r\n
    \r\n {/* */}\r\n { event.api.sizeColumnsToFit() }}\r\n >\r\n
    \r\n {/* */}\r\n \r\n \r\n \r\n
    \r\n );\r\n \r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n {\r\n this.fetchData(true);\r\n }}\r\n />\r\n );\r\n }\r\n }\r\n }\r\n }\r\n export default LayoutService.getHocComponenet(NonEntityComponent);","import ApiService from \"../../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../../shared/types/enums\";\r\n\r\nexport default class FTPFolderService {\r\n\r\n static getFTPFilesByTenantId = (tenantId, sourceId) => {\r\n const targetUrl = `/Ftp/GetFTPFilesByTenantId/${tenantId}/${sourceId}`;\r\n return ApiService.getOBS(API_ENDPOINT.CORE, targetUrl);\r\n };\r\n\r\n static getSourceSystems = (tenantId, pageNumber, rowsPerPage) => {\r\n const targetUrl = `/SourceSystems?tenantId=${tenantId}&pageNumber=${pageNumber}&rowsPerPage=${rowsPerPage}`;\r\n return ApiService.getOBS(API_ENDPOINT.CORE, targetUrl);\r\n }\r\n\r\n static formatBytes = (fileSize) => {\r\n const units = ['B', 'KB', 'MB', 'GB', 'TB'];\r\n let bytes = fileSize, i;\r\n\r\n for (i = 0; bytes >= 1024 && i < 4; i++) {\r\n bytes /= 1024;\r\n }\r\n\r\n return bytes.toFixed(2) + units[i];\r\n }\r\n\r\n static getColumnDefs() {\r\n return [\r\n {\r\n headerName: \"File Name\",\r\n field: \"modifiedFileName\",\r\n sortable: true,\r\n filter: \"text\",\r\n flex: 1,\r\n headerClass: \"center-text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n minWidth: 300,\r\n },\r\n {\r\n headerName: \"Modified Date\",\r\n field: \"modifiedDate\",\r\n sortable: true,\r\n filter: \"text\",\r\n flex: 1,\r\n headerClass: \"center-text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n },\r\n {\r\n headerName: \"Size\",\r\n field: \"size\",\r\n sortable: true,\r\n filter: \"text\",\r\n flex: 1,\r\n headerClass: \"center-text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n valueFormatter: params => this.formatBytes(params.data.size),\r\n },\r\n {\r\n headerName: \"Extension\",\r\n field: \"extension\",\r\n sortable: true,\r\n filter: \"text\",\r\n flex: 1,\r\n headerClass: \"center-text\",\r\n cellStyle: { \"border-right\": \"1px solid lightgray\" },\r\n resizable: true,\r\n }\r\n ];\r\n }\r\n}","import React from \"react\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport { Grid, FormControl, InputLabel, Select, MenuItem, FormControlLabel, Switch, Divider } from \"@material-ui/core\";\r\nimport { AuthContext } from \"../../../shared/store/authProvider\";\r\nimport { SubscriptionArray } from \"../../../shared/services/dataService\";\r\nimport FTPFolderService from \"./ftpFolderService\";\r\nimport { ResultStatus } from \"../../../shared/types/enums\";\r\nimport LayoutService from \"../../../shared/services/layoutService\";\r\nimport { MatIconService } from \"../../../shared/services/theme/matIconService\";\r\nimport PageLoadingComponent from \"../../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../../shared/components/page/pageErrorComponent\";\r\nimport PageDynamicHeaderComponent from \"../../../shared/components/page/pageDynamicHeaderComponent\";\r\nimport \"./ftpFolderComponent.css\";\r\n\r\nclass FTPFolderComponent extends React.Component {\r\n static contextType = AuthContext;\r\n oSubscriptions = new SubscriptionArray();\r\n STORE = FTPFolderService;\r\n state = {\r\n sourceSystemData: [],\r\n ftpFiles: [],\r\n modifiedFtpFileData: [],\r\n selectedSourceId: null,\r\n showArchiveFiles: false,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n };\r\n\r\n componentDidMount() {\r\n this.fetchSourceSystems();\r\n }\r\n\r\n componentWillUnmount() {\r\n this.oSubscriptions.cancelAll();\r\n }\r\n\r\n fetchSourceSystems = () => {\r\n this.oSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, sourceSystemData: [] });\r\n\r\n const pageNumber = 1;\r\n const rowsPerPage = 250;\r\n\r\n this.oSubscriptions.add(\r\n this.STORE.getSourceSystems(this.context.user.tenantId, pageNumber, rowsPerPage).subscribe(\r\n (response) => {\r\n this.setState({\r\n sourceSystemData: response.filter(s => s.isFtpSource === 1),\r\n fetchResult: ResultStatus.SUCCESS\r\n });\r\n },\r\n (error) => {\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n console.log(error);\r\n }\r\n ));\r\n };\r\n\r\n handleSourceChange = (event) => {\r\n const selectedSourceId = event.target.value;\r\n this.setState({ selectedSourceId });\r\n if (selectedSourceId) {\r\n this.fetchFTPFiles(selectedSourceId);\r\n }\r\n };\r\n\r\n getFtpFileData = (ftpFileData, showArchiveFiles) => {\r\n const filteredFiles = showArchiveFiles\r\n ? ftpFileData.filter((ftpFile) => ftpFile.fileName.toLowerCase().includes(\"-archive\") )\r\n : ftpFileData.filter((ftpFile) => !ftpFile.fileName.toLowerCase().includes(\"-archive\") );\r\n\r\n const sortedFiles = filteredFiles.slice().sort((a, b) => new Date(b.modifiedDate).getTime() - new Date(a.modifiedDate).getTime());\r\n return sortedFiles;\r\n }\r\n\r\n fetchFTPFiles = (sourceId) => {\r\n this.STORE.getFTPFilesByTenantId(this.context.user.tenantId, sourceId).subscribe(\r\n (response) => {\r\n const ftpFileData = response;\r\n const modFtpFileData = (ftpFileData || []).map((data) => ({\r\n ...data,\r\n modifiedFileName: data.fileName.split('/').pop().split('.')[0],\r\n modifiedDate: new Date(data.modifiedDate).toUTCString()\r\n }));\r\n\r\n const filteredFtpData = this.getFtpFileData(modFtpFileData, this.state.showArchiveFiles);\r\n\r\n this.setState({\r\n ftpFiles: filteredFtpData,\r\n modifiedFtpFileData: modFtpFileData\r\n });\r\n },\r\n (error) => {\r\n console.log('Error fetching FTP Files:', error);\r\n }\r\n );\r\n };\r\n\r\n handleToggleChange = () => {\r\n this.setState({\r\n showArchiveFiles: !this.state.showArchiveFiles\r\n }, () => {\r\n const filteredFileData = this.getFtpFileData(this.state.modifiedFtpFileData, this.state.showArchiveFiles);\r\n this.setState({\r\n ftpFiles: filteredFileData\r\n });\r\n });\r\n };\r\n\r\n onGridReady = (params) => {\r\n this.gridApi = params.api;\r\n this.gridColumnApi = params.columnApi;\r\n };\r\n\r\n render() {\r\n const { classes } = this.props;\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n
    \r\n {/* Header Componenet */}\r\n {}\r\n
    \r\n \r\n \r\n \r\n Source System\r\n \r\n \r\n \r\n \r\n } label=\"Show Archive Files\" />\r\n \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n case ResultStatus.ERROR:\r\n default:\r\n return (\r\n { this.fetchData(true); }} />\r\n );\r\n }\r\n } \r\n}\r\n\r\nexport default LayoutService.getHocComponenet(FTPFolderComponent);\r\n","import React, { Component } from \"react\";\r\nimport PropTypes from 'prop-types';\r\nimport icon_bad from \"../../public/images/icon_bad.png\";\r\nimport icon_process from \"../../public/images/icon_process.png\";\r\nimport icon_verygood from \"../../public/images/icon_verygood.png\";\r\nimport icon_blank from \"../../public/images/icon_blank.png\";\r\nimport icon_inqueue from \"../../public/images/icon_inqueue.png\";\r\n//import UnknownFile from \"../../public/images/UnkownFile.png\";\r\n\r\nexport default class FileStatusImageRenderer extends Component {\r\n constructor(props){\r\n super(props);\r\n this.state = {};\r\n }\r\n debugger;\r\n render() {\r\n let imageUrl = null;\r\n // Determine image URL based on the status value\r\n switch (this.props.value) {\r\n case 'In Queue':\r\n imageUrl = icon_inqueue;\r\n break;\r\n case 'In Progress':\r\n imageUrl = icon_process;\r\n break;\r\n case 'Success':\r\n imageUrl = icon_verygood;\r\n break;\r\n case 'Failed':\r\n imageUrl = icon_bad;\r\n break;\r\n default:\r\n imageUrl = icon_blank; // Default i'mage for unknown statuses\r\n break;\r\n }\r\n\r\n return (\r\n {this.props.value}\r\n );\r\n};\r\n}\r\n\r\n// FileStatusImageRenderer.propTypes = {\r\n// value: PropTypes.string.isRequired, // Status value\r\n// };\r\n\r\n//export default FileStatusImageRenderer;","import { of } from \"rxjs\";\r\nimport { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ReportCategory, GST_API } from \"../../shared/types/enums\";\r\n\r\nexport default class FileStatusDetailsService {\r\n\r\n // static fetchTenants(_userId) {\r\n // return ApiService.getOBS(API_ENDPOINT.IDENTITY, `/User/GetUserTenants?userId=${_userId}`);\r\n // }\r\n\r\n static getActiveTenants = () => {\r\n const targetUrl = `/GetActiveTenants/false`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n );\r\n }\r\n\r\n\r\n static fetchFileDetails(_selTenantId) {\r\n /**\r\n * As per the discussion with the DB Team\r\n * \r\n */\r\n // const jsonObj = {\r\n // \"tenantId\": _selTenantId,\r\n \r\n // };\r\n // TODO: ensure that this is fetching from ReportMaster Table for the selected tenant\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/FetchTaskDetailsView/${_selTenantId}`);\r\n }\r\n \r\n \r\n\r\n // column-definitions\r\n static getFileColumnDefs = (_parentThisRef) => {\r\n \r\n let FileArr = [\r\n \r\n // AgGridColumnExt.GET(false, \"text\", \"systemid\", \"System Id\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"taskId\", \"Task Id\").flexWeight(1).headerClass(\"center-text\").leftAlignText().SET(),// AgGridColumnExt.GET(false, \"text\", \"azureDataFactoryName\", \"Azure Data Factory Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"filename\", \"Filename\").flexWeight(1).headerClass(\"center-text\").leftAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"fileStatus\", \"Status\").fixedWidth(100).flexWeight(1).headerClass(\"center-text\").tooltip().cellRenderer(\"FileStatusImageRenderer\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"date_Started\", \"StartedOn\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"date_Completed\", \"CompletedOn\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"createdUser\", \"Created User\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"createdDate\", \"CreatedOn\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"taskType\", \"Task Type\").flexWeight(1).headerClass(\"center-text\").leftAlignText().SET(),\r\n\r\n // AgGridColumnExt.GET(false, \"text\", \"resourceGroupName\", \"Resource GroupName\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),// AgGridColumnExt.GET(false, \"text\", \"azureDataFactoryName\", \"Azure Data Factory Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n // AgGridColumnExt.GET(false, \"text\", \"azureDataFactoryName\", \"Azure DataFactoryName\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n // AgGridColumnExt.GET(false, \"text\", \"pipelineName\", \"PipelineName\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n \r\n ];\r\n //return _sourceSelected ? sourceArr : [];\r\n return FileArr;\r\n }\r\n\r\n\r\n \r\n \r\n }\r\n\r\n //---\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport clsx from \"clsx\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../shared/types/enums\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport { Typography, Divider, Grid, Tooltip, IconButton, MenuItem, Select } from \"@material-ui/core\";\r\nimport MatSpecService from \"../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport FileStatusImageRenderer from \"./fileStatusImageRenderer\";\r\n\r\n\r\n//import ChildMessageRendererComponent from \"./compliance-default-details/childMessageRendererComponent\";\r\nimport FileStatusDetailsService from \"./fileStatusDetailsService\"\r\n\r\nclass FileStatusDetailsComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n frameworkComponents: {\r\n FileStatusImageRenderer: FileStatusImageRenderer,\r\n },\r\n \r\n selectedTenantId: 0,\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount(){\r\n this.fetchData();\r\n }\r\n \r\n\r\n componentDidUpdate(prevProps,prevState) {\r\n // Check if the selected option has changed\r\n if (prevState.selectedTenantId !== this.state.selectedTenantId ) {\r\n // Make API call when the selected option changes\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, tenantList: [], fileDetails: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n FileStatusDetailsService.getActiveTenants(),\r\n FileStatusDetailsService.fetchFileDetails(this.state.selectedTenantId !=1 ? this.state.selectedTenantId : this.context.user.tenantId),\r\n ]).subscribe(\r\n // success\r\n ([_tenantList, _fileDetails]) => {\r\n \r\n this.setState(\r\n {\r\n \r\n tenantList: _tenantList,\r\n fileDetails: _fileDetails,\r\n \r\n },\r\n\r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n };\r\n\r\n onTenantSelectClick = (event) => {\r\n this.setState({ selectedTenantId: event.target.value });\r\n this.gridApi.setFilterModel({\r\n fieldName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.tenantList.find(x => x.tenantid === event.target.value).tenantName,\r\n },\r\n });\r\n }\r\n\r\n // onDownloadClick = () => {\r\n // let api = this.gridApi, params = this.getParams();\r\n // api.exportDataAsExcel(params);\r\n // }\r\n\r\n // getParams() {\r\n // return {\r\n // // allColumns: true,\r\n // columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n // fileName: `Compliance_Default_Mapping ${new Date().toDateString()}`\r\n // };\r\n // }\r\n\r\n methodFromParent = (cell, data) => {\r\n this.setState({\r\n showDialog: true,\r\n modalAgNode: data,\r\n inputAction: CrudAction.UPDATE,\r\n });\r\n };\r\n\r\n // handleCreate = () => {\r\n // this.setState({\r\n // showDialog: true,\r\n // inputAction: CrudAction.CREATE,\r\n // });\r\n // }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const pageName = \" File Queue Status\";\r\n \r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n { this.fetchData(true); }} history={this.props.history} noDivider\r\n classes={classes} label={pageName} tenantSelect\r\n selectedTenantId={this.state.selectedTenantId}\r\n tenantSelectData={this.state.tenantList}\r\n onTenantSelectClick={(event) => { this.onTenantSelectClick(event); }}\r\n \r\n // download onDownloadClick={this.onDownloadClick}\r\n // addCircle onAddClick={this.handleCreate}\r\n />\r\n
    \r\n {/*
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    */}\r\n
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    \r\n\r\n {/* {this.state.showDialog ? this.setState({ showDialog: false })} refreshList={this.fetchData} />\r\n : <>} */}\r\n\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return ( { this.fetchData(true); }} />);\r\n default:\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n\r\nclass FileStatusDetailsPageHeaderComponent extends Component {\r\n render() {\r\n const { small, classes, history, label, back, menu, search, tenantSelect, sourceSystemSelect, countrySelect, importTemplate, uploadFile, save, add, addCircle, view, reload, ok, cancel, noDivider, noDividerSpacing, download } = this.props;\r\n const showButtons = back || menu || search || tenantSelect || sourceSystemSelect || countrySelect || importTemplate || uploadFile || save || add || addCircle || view || reload || ok || cancel || download;\r\n\r\n return (\r\n \r\n \r\n \r\n {back ? (\r\n \r\n { history.goBack(); }}>{MatIconService.BACK}\r\n \r\n ) : null}\r\n \r\n {reload ? (\r\n \r\n \r\n {MatIconService.RELOAD}\r\n \r\n \r\n ) : null}\r\n\r\n \r\n {label}\r\n \r\n\r\n {tenantSelect ? (\r\n <>\r\n Tenant:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.tenantSelectData.map((el) => (\r\n \r\n {el.tenantName}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n\r\n \r\n \r\n {noDivider || noDividerSpacing ? (\r\n {!noDivider && MatSpecService.showPageTitleDivider ? : null}\r\n ) : (\r\n {MatSpecService.showPageTitleDivider ? : null}\r\n )}\r\n \r\n \r\n\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default LayoutService.getHocComponenet(FileStatusDetailsComponent);\r\n","import { of } from \"rxjs\";\r\nimport { AgGridColumnExt } from \"../../shared/services/ag-grid/agGridColumnExt\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\nimport { API_ENDPOINT, ReportCategory, GST_API } from \"../../shared/types/enums\";\r\n\r\nexport default class ReportStatusDetailsService {\r\n\r\n\r\n static getActiveTenants = () => {\r\n const targetUrl = `/GetActiveTenants/false`;\r\n return ApiService.getOBS(\r\n API_ENDPOINT.TENANT,\r\n targetUrl,\r\n );\r\n }\r\n static fetchReportDetails(_selTenantId) {\r\n /**\r\n * As per the discussion with the DB Team\r\n * \r\n */\r\n // const jsonObj = {\r\n // \"tenantId\": _selTenantId,\r\n \r\n // };\r\n // TODO: ensure that this is fetching from ReportMaster Table for the selected tenant\r\n return ApiService.getOBS(API_ENDPOINT.REPORTS, `/Reports/FetchReportTaskDetailsView/${_selTenantId}`);\r\n }\r\n\r\n // column-definitions\r\n static getReportColumnDefs = (_parentThisRef) => {\r\n \r\n let ReportArr = [\r\n \r\n AgGridColumnExt.GET(false, \"text\", \"taskId\", \"Task Id\").flexWeight(1).headerClass(\"center-text\").leftAlignText().SET(),// AgGridColumnExt.GET(false, \"text\", \"azureDataFactoryName\", \"Azure Data Factory Name\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n //AgGridColumnExt.GET(false, \"text\", \"report_Metadata\", \"ReportMetadata\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportName\", \"ReportName\").flexWeight(1).headerClass(\"center-text\").leftAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"reportStatus\", \"Status\").fixedWidth(100).flexWeight(1).cellRenderer(\"FileStatusImageRenderer\").tooltip().headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"date_started\", \"StartedOn\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"date_Completed\", \"CompletedOn\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"createdUser\", \"Created User\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"createdDate\", \"CreatedOn\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"schedule_flag\", \"IsScheduled\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n AgGridColumnExt.GET(false, \"text\", \"schedule_timestamp\", \"ScheduledFor\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n \r\n //AgGridColumnExt.GET(false, \"text\", \"statusReason\", \"Status Reason\").flexWeight(1).headerClass(\"center-text\").tooltip().centerAlignText().SET(),\r\n // AgGridColumnExt.GET(false, \"text\", \"azureDataFactoryName\", \"Azure DataFactoryName\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n // AgGridColumnExt.GET(false, \"text\", \"pipelineName\", \"PipelineName\").flexWeight(1).headerClass(\"center-text\").centerAlignText().SET(),\r\n \r\n ];\r\n return ReportArr;\r\n }\r\n\r\n }\r\n","import React, { Component } from \"react\";\r\nimport { combineLatest, } from \"rxjs\";\r\nimport clsx from \"clsx\";\r\nimport { AgGridReact } from \"ag-grid-react\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-grid.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham.css\";\r\nimport \"ag-grid-enterprise/dist/styles/ag-theme-balham-dark.css\";\r\n\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport PageErrorComponent from \"../../shared/components/page/pageErrorComponent\";\r\nimport { SubscriptionArray } from \"../../shared/services/dataService\";\r\nimport { ResultStatus, CrudAction } from \"../../shared/types/enums\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport { Typography, Divider, Grid, Tooltip, IconButton, MenuItem, Select } from \"@material-ui/core\";\r\nimport MatSpecService from \"../../shared/services/theme/matSpecService\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\n\r\n//import ChildMessageRendererComponent from \"./compliance-default-details/childMessageRendererComponent\";\r\nimport ReportStatusDetailsService from \"./reportStatusDetailsService\"\r\nimport FileStatusImageRenderer from \"../admin-task-details/fileStatusImageRenderer\";\r\n\r\nclass ReportStatusDetailsComponent extends Component {\r\n static contextType = AuthContext;\r\n apiSubscriptions = new SubscriptionArray();\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n frameworkComponents: {\r\n FileStatusImageRenderer: FileStatusImageRenderer,\r\n },\r\n \r\n selectedTenantId: 0,\r\n \r\n //selectedOption: '',\r\n };\r\n }\r\n\r\n componentWillUnmount() {\r\n this.apiSubscriptions.cancelAll();\r\n }\r\n\r\n componentDidMount(){\r\n this.fetchData();\r\n }\r\n \r\n\r\n componentDidUpdate(prevProps,prevState) {\r\n // Check if the selected option has changed\r\n if (prevState.selectedTenantId !== this.state.selectedTenantId ) {\r\n // Make API call when the selected option changes\r\n this.fetchData();\r\n }\r\n }\r\n\r\n /** API Fetch */\r\n fetchData = (_ignoreCache = false) => {\r\n this.apiSubscriptions.cancelAll();\r\n this.setState({ fetchResult: ResultStatus.LOADING, tenantList: [], reportDetails: [] });\r\n\r\n this.apiSubscriptions.add(\r\n combineLatest([\r\n ReportStatusDetailsService.getActiveTenants(),\r\n ReportStatusDetailsService.fetchReportDetails(this.state.selectedTenantId),\r\n ]).subscribe(\r\n // success\r\n ([_tenantList, _reportDetails]) => {\r\n\r\n \r\n this.setState(\r\n {\r\n \r\n tenantList: _tenantList,\r\n reportDetails: _reportDetails,\r\n \r\n },\r\n \r\n \r\n \r\n // change the state after all the above are assigned\r\n () => {\r\n this.setState({ fetchResult: ResultStatus.LOADED });\r\n }\r\n );\r\n },\r\n // onError\r\n (error) => {\r\n console.log(\"Error:\", error);\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n )\r\n );\r\n };\r\n\r\n onGridReady = (event) => {\r\n event.api.closeToolPanel();\r\n event.api.sizeColumnsToFit();\r\n this.gridApi = event.api;\r\n this.gridColumnApi = event.columnApi;\r\n };\r\n\r\n onTenantSelectClick = (event) => {\r\n this.setState({ selectedTenantId: event.target.value });\r\n this.gridApi.setFilterModel({\r\n fieldName: {\r\n filterType: 'text',\r\n type: 'equals',\r\n filter: this.state.tenantList.find(x => x.tenantid === event.target.value).tenantName,\r\n },\r\n });\r\n }\r\n\r\n // onDownloadClick = () => {\r\n // let api = this.gridApi, params = this.getParams();\r\n // api.exportDataAsExcel(params);\r\n // }\r\n\r\n // getParams() {\r\n // return {\r\n // // allColumns: true,\r\n // columnKeys: this.gridColumnApi.getAllColumns().filter(c => c.colDef.headerName !== \"\"),\r\n // fileName: `Compliance_Default_Mapping ${new Date().toDateString()}`\r\n // };\r\n // }\r\n\r\n methodFromParent = (cell, data) => {\r\n this.setState({\r\n showDialog: true,\r\n modalAgNode: data,\r\n inputAction: CrudAction.UPDATE,\r\n });\r\n };\r\n\r\n // handleCreate = () => {\r\n // this.setState({\r\n // showDialog: true,\r\n // inputAction: CrudAction.CREATE,\r\n // });\r\n // }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n const pageName = \" Report Queue Status\";\r\n \r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n case ResultStatus.LOADED:\r\n case ResultStatus.SUCCESS:\r\n return (\r\n
    \r\n
    \r\n { this.fetchData(true); }} history={this.props.history} noDivider \r\n classes={classes} label={pageName} tenantSelect\r\n selectedTenantId={this.state.selectedTenantId}\r\n tenantSelectData={this.state.tenantList}\r\n onTenantSelectClick={(event) => { this.onTenantSelectClick(event); }}\r\n \r\n // download onDownloadClick={this.onDownloadClick}\r\n // addCircle onAddClick={this.handleCreate}\r\n />\r\n
    \r\n {/*
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    */}\r\n
    \r\n {\r\n this.onGridReady(event);\r\n }}\r\n >\r\n
    \r\n\r\n {/* {this.state.showDialog ? this.setState({ showDialog: false })} refreshList={this.fetchData} />\r\n : <>} */}\r\n\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n return ( { this.fetchData(true); }} />);\r\n default:\r\n return null;\r\n }\r\n }\r\n }\r\n\r\n\r\nclass ReportDetailsPageHeaderComponent extends Component {\r\n render() {\r\n const { small, classes, history, label, back, menu, search, tenantSelect, sourceSystemSelect, countrySelect, importTemplate, uploadFile, save, add, addCircle, view, reload, ok, cancel, noDivider, noDividerSpacing, download } = this.props;\r\n const showButtons = back || menu || search || tenantSelect || sourceSystemSelect || countrySelect || importTemplate || uploadFile || save || add || addCircle || view || reload || ok || cancel || download;\r\n\r\n return (\r\n \r\n \r\n \r\n {back ? (\r\n \r\n { history.goBack(); }}>{MatIconService.BACK}\r\n \r\n ) : null}\r\n\r\n {reload ? (\r\n \r\n \r\n {MatIconService.RELOAD}\r\n \r\n \r\n ) : null}\r\n\r\n \r\n {label}\r\n \r\n\r\n {tenantSelect ? (\r\n <>\r\n Tenant:{'\\u00A0'}{'\\u00A0'}{'\\u00A0'}\r\n \r\n {this.props.tenantSelectData.map((el) => (\r\n \r\n {el.tenantName}\r\n \r\n ))}\r\n \r\n \r\n ) : null}\r\n\r\n\r\n \r\n \r\n \r\n {noDivider || noDividerSpacing ? (\r\n {!noDivider && MatSpecService.showPageTitleDivider ? : null}\r\n ) : (\r\n {MatSpecService.showPageTitleDivider ? : null}\r\n )}\r\n \r\n \r\n\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default LayoutService.getHocComponenet(ReportStatusDetailsComponent);\r\n","import React, { Component } from \"react\";\r\nimport clsx from \"clsx\";\r\nimport { BrowserRouter, Switch, Route } from \"react-router-dom\";\r\nimport { withStyles } from \"@material-ui/core/styles\";\r\nimport MatSpecService from \"../../shared/services/theme/matSpecService\";\r\nimport TopBarComponent from \"./topBarComponent\";\r\nimport SideNavComponent from \"./sideNavComponent\";\r\nimport FooterComponent from \"./footerComponent\";\r\nimport HomeComponent from \"../home/homeComponent\";\r\nimport DataCenterComponent from \"../data-center/dataCenterComponent\";\r\nimport ProfileCenterComponent from \"../profile-center/profileCenterComponent\";\r\nimport TenantconfigurationComponent from \"../tenant/tenantConfigurationComponent\";\r\nimport SourceComponent from \"../source/sourceComponent\";\r\nimport UnderContructionComponent from \"../../public/under-construction/UnderContructionComponent\";\r\nimport UserListComponent from \"../user-management/users/userListComponent\";\r\nimport RoleManagementComponent from \"../user-management/roles/roleManagementComponent\";\r\nimport TransactionCenterComponent from \"../transaction-center/transactionCenterComponent\";\r\nimport ProductMasterComponent from \"../product-master/productMasterComponent\";\r\nimport PorzioFieldsListComponent from \"../field-management/porzio-fields/porzioFieldsListComponent\";\r\nimport CustomFieldsListComponent from \"../field-management/custom-fields/customFieldsListComponent\";\r\nimport CompanyAffiliateListComponent from \"../tenant-profile-setup/affiliate-companies/affiliateCompaniesListComponent\";\r\nimport VendorSetupComponent from \"../tenant-profile-setup/vendor-setup/vendorSetupComponent\";\r\nimport ComplianceDefaultMappingComponent from \"../tenant-profile-setup/compliance-mapping/complianceDefaultMappingComponent\";\r\nimport ComplianceReportMappingComponent from \"../tenant-profile-setup/compliance-mapping/complianceReportMappingComponent\";\r\nimport ComplianceConsentMappingComponent from \"../tenant-profile-setup/compliance-consent-mapping/complianceConsentMappingComponent\";\r\nimport ReportsCenterComponent from \"../reports-center/reportsCenterComponent\";\r\nimport AgreementListComponent from \"../agreements/agreementListComponent\";\r\nimport SelectedRulesComponent from \"../porzio-rules/selectedRulesComponent\";\r\nimport SalesRepComponent from \"../tenant-profile-setup/sales-rep/salesRepComponent\";\r\nimport MaterialsListComponent from \"../materials/materialsListComponent\";\r\nimport StudiesListComponent from \"../study-master/studiesListComponent\";\r\nimport DocumentComponent from \"../documents/documentComponent\";\r\nimport ContactUsComponent from \"../../public/contact-us/contactUsComponent\";\r\nimport RolePermissionsComponent from \"../user-management/roles/permissions/rolePermissionsComponent\";\r\nimport WorkflowTemplateListComponent from \"../workflow-template/workflowTemplateListComponent\";\r\n//import ReportingHome from \"../reporting/reportingHome\";\r\n//import ReportingViewer from \"../reporting/reportingViewer\";\r\n//import ReportingExport from \"../reporting/reportingExport\";\r\nimport PowerBIDemoContainerComponent from \"../power-bi/powerBIDemoContainerComponent\"\r\n\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\n\r\nimport ToastService from \"../../shared/services/toastService\";\r\n\r\nimport TenantReportTemplateSubscriptionComponent from \"../tenant-profile-setup/tenant-report-template-subscriptions/tenantReportTemplateSubscriptionComponent\";\r\nimport ProfileExpandedViewComponent from \"../profile-center/expanded-view/profileExpandedViewComponent\";\r\nimport RolePermissionService from \"../../shared/role-permissions/rolePermissionService\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport PageLoadingComponent from \"../../shared/components/page/pageLoadingComponent\";\r\nimport DialogErrorFragmentComponent from \"../../shared/components/page/dialogErrorFragmentComponent\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport SessionService from \"../../shared/services/sessionService\";\r\nimport TenantStatusComponent from \"../tenant-creation/tenantStatusComponent\";\r\nimport UserMappingsComponent from \"../user-mappings/userMappingsComponent\";\r\nimport { Typography, Grid, Box, Tooltip, Popper, Paper, Dialog, Button, DialogContent, DialogContentText, Toolbar, AppBar, DialogTitle } from \"@material-ui/core\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport { MatIconService } from \"../../shared/services/theme/matIconService\";\r\nimport UserActivityService from \"../../shared/services/userActivityService\";\r\nimport { withOktaAuth } from '@okta/okta-react';\r\nimport HcpSearchDialogComponent from \"../hcp-master/hcp-search-dialog/hcpSearchDialogComponent\";\r\nimport NonEntityComponent from \"../nonentity-master/nonEntityComponent\";\r\nimport FolderComponent from \"../security/email/ftpFolderComponent\";\r\nimport FileStatusDetailsComponent from \"../admin-task-details/fileStatusDetailsComponent\";\r\nimport ReportStatusDetailsComponent from \"../admin-report-task-details/reportStatusDetailsComponent\";\r\n\r\nclass ContainerComponent extends Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n expandSideNav: false,\r\n utcPopperAnchorEl: null,\r\n fetchResult: ResultStatus.NOT_LOADED,\r\n showSessionTimeoutDialog: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n ToastService.setComponentREF(this);\r\n this.setFetchStatus();\r\n UserActivityService.trackUserActivity(this, this.props.oktaAuth);\r\n }\r\n\r\n\r\n retry = () => {\r\n SessionService.configureOBS(this.context.user).subscribe((_result) => {\r\n this.setFetchStatus();\r\n })\r\n }\r\n\r\n setFetchStatus = () => {\r\n if (RolePermissionService.IS_CONFIGURED) {\r\n this.setState({ fetchResult: ResultStatus.SUCCESS });\r\n } else {\r\n ToastService.showError(\"Roles And Permissions are not configured.\");\r\n this.setState({ fetchResult: ResultStatus.ERROR });\r\n }\r\n }\r\n\r\n getHomeComponenet = () => {\r\n return RolePermissionService.hasOnlyPowerBIAccess ?\r\n \r\n : \r\n }\r\n\r\n handleContinueClick = () => {\r\n this.props.oktaAuth.session.refresh()\r\n .then(function (session) {\r\n console.log(\"Renewed session\", session);\r\n // existing session is now refreshed\r\n })\r\n .catch(function (err) {\r\n console.log(\"Error refreshing user session\", err);\r\n // not logged in\r\n });\r\n this.setState({\r\n showSessionTimeoutDialog: false\r\n }, () => {\r\n clearInterval(UserActivityService.sessionLogoutTimerRef);\r\n UserActivityService.startTracking();\r\n });\r\n }\r\n\r\n handleLogoutClick = () => {\r\n this.setState({\r\n showSessionTimeoutDialog: false\r\n }, () => {\r\n UserActivityService.logout();\r\n });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchResult) {\r\n case ResultStatus.NOT_LOADED:\r\n case ResultStatus.LOADING:\r\n return ();\r\n\r\n case ResultStatus.SUCCESS:\r\n return (\r\n \r\n {/* !!!.Don't Remove the Snack Bar!!! */}\r\n {/* It is required to show the Toast across the application */}\r\n \r\n {ToastService.message}\r\n \r\n\r\n {this.state.showSessionTimeoutDialog ?\r\n this.handleLogoutClick()}>\r\n \r\n \r\n \r\n Session Expire Warning\r\n {LayoutService.getIconButton(false, MatIconService.OK, \"OK\", this.handleContinueClick, \"inherit\", \"keyActionContinue\")}\r\n {LayoutService.getIconButton(false, MatIconService.CANCEL, \"Logout now\", this.handleLogoutClick, \"secondary\", \"keyActionCancel\")}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Your session will expire in {UserActivityService.sessionExpiryWarningTimeInSecs} seconds. Do you want to extend the session?\r\n \r\n \r\n \r\n \r\n \r\n \r\n : null}\r\n\r\n {/* TopBar */}\r\n { this.setState({ expandSideNav: !this.state.expandSideNav }); }} />\r\n\r\n {/* SideNav */}\r\n \r\n\r\n {/* Dynamic content Area */}\r\n
    \r\n
    \r\n
    \r\n \r\n {this.getHomeComponenet()}\r\n {this.getHomeComponenet()}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* Izenda Reporting Route */}\r\n {/* */} \r\n {/* Izenda Report Viewer Route */}\r\n {/* */}\r\n {/* Izenda Export Route. TODO GET THIS ROUTE TO TOP LEVEL */}\r\n {/* */}\r\n {/* Izenda Subreport Route. TODO GET THIS ROUTE TO THE TOP LEVEL */}\r\n {/* */}\r\n {/* default route */}\r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n {/* Footer Compoenent */}\r\n \r\n\r\n
    \r\n );\r\n\r\n case ResultStatus.ERROR:\r\n default:\r\n return ( { this.retry(); }} onClose={() => { }}\r\n />);\r\n }\r\n\r\n\r\n }\r\n}\r\n\r\nconst styles = (_theme) => ({\r\n drawerHeader: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n padding: _theme.spacing(0, 1),\r\n // necessary for content to be below app bar\r\n ..._theme.mixins.toolbar,\r\n justifyContent: \"flex-end\",\r\n },\r\n content: {\r\n flexGrow: 1,\r\n paddingLeft: _theme.spacing(0),\r\n paddingRight: _theme.spacing(2),\r\n paddingTop: _theme.spacing(3),\r\n paddingBottom: _theme.spacing(0),\r\n transition: _theme.transitions.create(\"margin\", {\r\n easing: _theme.transitions.easing.sharp,\r\n duration: _theme.transitions.duration.leavingScreen,\r\n }),\r\n marginLeft: _theme.spacing(12) + 1,\r\n },\r\n contentShift: {\r\n transition: _theme.transitions.create(\"margin\", {\r\n easing: _theme.transitions.easing.easeOut,\r\n duration: _theme.transitions.duration.enteringScreen,\r\n }),\r\n marginLeft: MatSpecService.drawerWidth,\r\n },\r\n});\r\n\r\nexport default withStyles(styles)(withOktaAuth(ContainerComponent));\r\n","import { API_ENDPOINT } from '../../shared/types/enums';\r\nimport ApiService from '../../shared/services/apiService';\r\n\r\nexport default class UserInfoService {\r\n\r\n static getByEmail = (userEmail) => {\r\n return ApiService.getOBS(API_ENDPOINT.IDENTITY, `/User/GetUserById/${userEmail}`);\r\n }\r\n\r\n static getUserTenants = (userId) => {\r\n return ApiService.getOBS(API_ENDPOINT.IDENTITY, `/User/GetUserTenants?userId=${userId}`);\r\n }\r\n\r\n static getUserTenantInfo = (userId, tenantid) => {\r\n return ApiService.getOBS(API_ENDPOINT.TENANT, `/User/GetTenantUserInfoById?userId=${userId}&tenantId=${tenantid}`);\r\n }\r\n\r\n static getSessionInfo = (userId, tenantid) => {\r\n return ApiService.getOBS(API_ENDPOINT.IDENTITY, `/User/GetTokenById/${tenantid}/${userId}`);\r\n }\r\n\r\n \r\n\r\n //---\r\n}","import React from \"react\";\r\nimport { combineLatest } from 'rxjs';\r\nimport { Formik } from \"formik\";\r\nimport * as Yup from \"yup\";\r\nimport { withRouter } from \"react-router\";\r\n\r\nimport { Grid, Paper, Divider, Typography, CircularProgress, Button, withStyles, Box } from \"@material-ui/core\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport porzio_gst_icon from \"../../public/images/porzio_global_spend_transparency_logo_small.png\";\r\nimport ContainerComponent from \"../../private/shell/containerComponent\";\r\nimport UserInfoService from \"./userInfoService\";\r\nimport { DataService } from \"../../shared/services/dataService\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport SessionService from \"../../shared/services/sessionService\";\r\nimport { AuthContext } from \"../../shared/store/authProvider\";\r\nimport LayoutService from \"../../shared/services/layoutService\";\r\nimport ApplicationService from \"../../shared/services/applicationService\";\r\nimport MatThemeService from \"../../shared/services/theme/matThemeService\";\r\nimport ApiService from \"../../shared/services/apiService\";\r\nimport { API_ENDPOINT } from \"../../shared/types/enums\";\r\n\r\n\r\nclass MultiTenantSelectionComponent extends React.Component {\r\n\r\n static contextType = AuthContext;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n statusMessage: '',\r\n userInfoObj: {},\r\n userTenantList: [],\r\n selTenantId: '',\r\n fetchState: ResultStatus.NOT_LOADED,\r\n }\r\n }\r\n\r\n getInitialValues() { return { selTenantId: this.state.selTenantId }; }\r\n\r\n validationSchema = Yup.object().shape({});\r\n getValidationSchema() {\r\n this.validationSchema = Yup.object().shape({\r\n selTenantId: Yup.number().required(\"Required\").typeError('Must select a Tenancy'),\r\n });\r\n return this.validationSchema;\r\n }\r\n\r\n componentDidMount() {\r\n this.loadTenants();\r\n }\r\n\r\n loadTenants = () => {\r\n this.setState({ statusMessage: 'Loading Tenants...', userTenantList: [], fetchState: ResultStatus.LOADING });\r\n UserInfoService.getByEmail(this.props.userEmail).subscribe(\r\n (_userInfoObj) => {\r\n this.setState({ userInfoObj: _userInfoObj }); // set the userObject \r\n //Updating the User Last Login info in DB \r\n this.updateLastLogin(_userInfoObj.id); \r\n if (DataService.stringNotEquals(_userInfoObj.userName, this.props.userEmail)) { this.showError('Applicaiton Login Error.'); }\r\n else if (!_userInfoObj.isActive) { this.showError('Please contact your Administrator for access.'); }\r\n else {\r\n UserInfoService.getUserTenants(_userInfoObj.id).subscribe(\r\n (_userTenantList) => {\r\n if (DataService.hasNoElements(_userTenantList)) {\r\n this.showError('No Tenants found for your Account.');\r\n } else if (_userTenantList.length === 1) {\r\n this.setTenancy(_userTenantList[0]);\r\n } else {\r\n\r\n this.setState({\r\n statusMessage: `Welcome ${_userInfoObj.firstName} ${_userInfoObj.lastName}`,\r\n userTenantList: _userTenantList,\r\n fetchState: ResultStatus.LOADED\r\n })\r\n }\r\n },\r\n (errorObj) => { this.showError('Error loading Tenants'); }\r\n );\r\n }\r\n },\r\n (errorObj) => { this.showError('Error loading Tenants'); }\r\n );\r\n }\r\n\r\n handleTenantChange = async (fProps) => {\r\n if (!fProps.isSubmitting && fProps.isValid) {\r\n await this.validationSchema.validate(fProps.values, { abortEarly: false })\r\n .then((x) => {\r\n this.setState({ fetchResult: ResultStatus.SAVING });\r\n const selTenantObj = this.state.userTenantList.find(o => o.tenantid === fProps.values.selTenantId);\r\n this.setTenancy(selTenantObj);\r\n })\r\n .catch((erroObj) => {\r\n ToastService.showError(\"Pick your Tenancy.\");\r\n erroObj.inner.forEach(err => { fProps.setFieldError(err.path, err.message); });\r\n });\r\n }\r\n }\r\n\r\n setTenancy = (selTenantObj) => {\r\n this.setState({ statusMessage: `Fetching ${selTenantObj.tenantName} Details...`, fetchState: ResultStatus.LOADING });\r\n\r\n combineLatest([\r\n UserInfoService.getUserTenantInfo(this.state.userInfoObj.id, selTenantObj.tenantid),\r\n UserInfoService.getSessionInfo(this.state.userInfoObj.id, selTenantObj.tenantid)\r\n ]).subscribe(\r\n ([tenantUserInfoByIdJson, sessionObjJson]) => {\r\n if (tenantUserInfoByIdJson && sessionObjJson) {\r\n SessionService.setLoginInfo(this.context, this.state.userInfoObj, selTenantObj, tenantUserInfoByIdJson, sessionObjJson, this.state.userTenantList)\r\n .subscribe((_result) => {\r\n if (_result) { this.setState({ fetchState: ResultStatus.SUCCESS }); }\r\n else { this.showError('Unspecified Error occured.'); }\r\n });\r\n } else { this.showError('Unspecified Error occured.'); }\r\n },\r\n (error) => { this.showError('Unspecified Error occured.'); }\r\n );\r\n }\r\n\r\n showError = (_message) => {\r\n ToastService.showError(_message);\r\n this.setState({ statusMessage: _message, fetchState: ResultStatus.ERROR });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n\r\n switch (this.state.fetchState) {\r\n case ResultStatus.SUCCESS:\r\n return \r\n default:\r\n return (\r\n \r\n {(fProps) => (\r\n
    \r\n \r\n \r\n \"Porzio\r\n \r\n {this.state.statusMessage}\r\n {this.state.fetchState === ResultStatus.ERROR ? : null}\r\n {this.state.fetchState === ResultStatus.LOADING ? : null}\r\n {this.state.fetchState === ResultStatus.LOADED ?\r\n \r\n {LayoutService.getSelectControlOutlined(this.state.fetchResult === ResultStatus.SAVING, classes, fProps, \"selTenantId\", \"Pick Your Tenancy\", this.state.userTenantList, \"tenantid\", \"tenantName\", \"80%\")}\r\n \r\n \r\n : null}\r\n\r\n {/* \r\n {ApplicationService.copyrightString}\r\n */}\r\n\r\n \r\n {ApplicationService.copyrightString}\r\n \r\n \r\n {ApplicationService.copyrightStringRLDatix}\r\n \r\n\r\n \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n }\r\n\r\n updateLastLogin = (_userId) => {\r\n const targetUrl = `/User/SaveUserLastLogin?userId=${_userId}`\r\n ApiService.postOBS(API_ENDPOINT.IDENTITY, targetUrl,)\r\n }\r\n \r\n\r\n\r\n\r\n //---\r\n}\r\nexport default withStyles(MatClassService)(withRouter(MultiTenantSelectionComponent));","import React from \"react\";\r\nimport { withRouter } from \"react-router\";\r\nimport '@okta/okta-signin-widget/dist/css/okta-sign-in.min.css';\r\nimport { Grid, withStyles } from \"@material-ui/core\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport OktaAuthService from \"./oktaAuthService\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\nimport MultiTenantSelectionComponent from \"./multiTenantSelectionComponent\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\n\r\nclass OktaLoginWidgetComponent extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n userEmail: null,\r\n fetchState: ResultStatus.NOT_LOADED,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n OktaAuthService.showSignInWidget(this.loginContainerRef,\r\n (successObj) => {\r\n //OktaAuthService.authWidget.authClient.handleLoginRedirect(successObj.tokens);\r\n this.setState({ userEmail: successObj.tokens.idToken.claims.email, fetchState: ResultStatus.SUCCESS });\r\n },\r\n (errorObj) => { ToastService.showError(\"Login Failed. Please try again.\"); }\r\n );\r\n }\r\n\r\n render() {\r\n switch (this.state.fetchState) {\r\n case ResultStatus.SUCCESS:\r\n return \r\n default:\r\n return (\r\n \r\n \r\n
    { this.loginContainerRef = div; }} />\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n //---\r\n}\r\nexport default withStyles(MatClassService)(withRouter(OktaLoginWidgetComponent));","import React from \"react\";\r\nimport { withRouter } from \"react-router-dom\";\r\nimport { withStyles, Grid, CircularProgress, Typography, Paper, Box, Divider } from \"@material-ui/core\";\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\n\r\nimport { ThemeProvider } from \"@material-ui/core/styles\";\r\nimport MatThemeService from \"../../shared/services/theme/matThemeService\";\r\nimport { MatClassService } from \"../../shared/services/theme/matClassService\";\r\nimport ToastService from \"../../shared/services/toastService\";\r\n\r\nimport AuthProvider, { useAuthState, AuthContext } from \"../../shared/store/authProvider\";\r\n\r\nimport porzio_gst_icon from \"../../public/images/porzio_global_spend_transparency_logo_small.png\";\r\nimport { ResultStatus } from \"../../shared/types/enums\";\r\nimport OktaAuthService from \"./oktaAuthService\";\r\nimport OktaLoginWidgetComponent from \"./oktaLoginWidgetComponent\";\r\nimport MultiTenantSelectionComponent from \"./multiTenantSelectionComponent\";\r\nimport ApplicationService from \"../../shared/services/applicationService\";\r\n\r\n\r\nclass OktaSingleSignOnComponent extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n // required;\r\n OktaAuthService.INIT();\r\n MatThemeService.setLightMode();\r\n\r\n this.state = {\r\n userEmail: null,\r\n showToast: false,\r\n currentTheme: MatThemeService.getTheme(),\r\n topBarColor: MatThemeService.getTopBarColor(),\r\n statusMessage: '',\r\n fetchState: ResultStatus.NOT_LOADED,\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({ userEmail: null, statusMessage: 'Initializing OKTA...', fetchState: ResultStatus.LOADING });\r\n OktaAuthService.checkSingleSignOn(\r\n (successObj) => {\r\n this.setState({\r\n userEmail: successObj.tokens.idToken.claims.email, statusMessage: 'Session Exists.!', fetchState: ResultStatus.SUCCESS\r\n });\r\n },\r\n (errorObj) => { this.setState({ statusMessage: 'Session Not Exists.!', fetchState: ResultStatus.ERROR }); }\r\n )\r\n }\r\n\r\n changeTheme = () => {\r\n this.setState({\r\n currentTheme: MatThemeService.getTheme(),\r\n topBarColor: MatThemeService.getTopBarColor(),\r\n });\r\n }\r\n\r\n render() {\r\n const { classes } = this.props;\r\n return (\r\n \r\n \r\n {this.renderAppEssentials()}\r\n {this.renderComponents()}\r\n \r\n \r\n );\r\n }\r\n\r\n renderComponents = () => {\r\n switch (this.state.fetchState) {\r\n case ResultStatus.SUCCESS:\r\n return \r\n case ResultStatus.ERROR:\r\n return \r\n default:\r\n return (\r\n \r\n \r\n \"Porzio\r\n \r\n {this.state.statusMessage}\r\n {this.state.fetchState === ResultStatus.LOADING ? : null}\r\n\r\n \r\n {ApplicationService.copyrightString}\r\n \r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n renderAppEssentials = () => {\r\n // !!!.Don't Remove the Snack Bar!!! \r\n // It is required to show the Toast across the application *\r\n ToastService.setComponentREF(this);\r\n return (\r\n \r\n {ToastService.message}\r\n \r\n );\r\n }\r\n\r\n\r\n //---\r\n}\r\nexport default withStyles(MatClassService)(withRouter(OktaSingleSignOnComponent));","import React, { useState } from \"react\";\r\nimport \"fontsource-roboto\";\r\nimport \"./App.css\";\r\nimport \"./AgGridStyles.css\";\r\nimport { BrowserRouter, Route, useHistory, Switch } from 'react-router-dom';\r\nimport { OktaAuth, toRelativeUrl } from '@okta/okta-auth-js';\r\nimport { Security, SecureRoute, LoginCallback } from '@okta/okta-react';\r\nimport config from './config'\r\nimport OktaSingleSignOnComponent from \"../src/public/authentication/oktaSingleSignOnComponent\";\r\n\r\nconst oktaAuth = new OktaAuth(config.oidc);\r\nconst App = (props) => {\r\n\r\n const history = useHistory(); // example from react-router\r\n\r\n const restoreOriginalUri = async (_oktaAuth, originalUri) => {\r\n history.replace(toRelativeUrl(originalUri || '', window.location.origin));\r\n };\r\n const customAuthHandler = () => {\r\n // Redirect to the /login page that has a CustomLoginComponent\r\n history.push('/login');\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\nexport default App;\r\n","import React, { Suspense } from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport * as serviceWorker from './serviceWorker';\r\nimport 'fontsource-roboto';\r\nimport App from './App';\r\nimport { LicenseManager } from \"ag-grid-enterprise\";\r\n// import * as Keycloak from 'keycloak-js'\r\n\r\nLicenseManager.setLicenseKey(process.env.REACT_APP_AG_GRID_LICENSE_KEY);\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n/**Below is the code to invoke keycloak from client side.\r\n * Configure initOptions as per you local setup to call keycloack api.\r\n **/\r\n// let initOptions = {\r\n// url: 'http://localhost:8080/auth/', realm: 'demo', clientId: 'react-test-app', onLoad: 'login-required'\r\n// }\r\n\r\n\r\n// let keycloak = Keycloak(initOptions);\r\n\r\n// keycloak.init({ onLoad: initOptions.onLoad }).success((auth) => {\r\n\r\n// if (!auth) {\r\n// window.location.reload();\r\n// } else {\r\n// console.info(\"Authenticated\");\r\n// }\r\n\r\n// //React Render\r\n\r\n// ReactDOM.render(\r\n// \r\n// \r\n// ,\r\n// document.getElementById('root')\r\n// );\r\n\r\n// localStorage.setItem(\"react-token\", keycloak.token);\r\n// localStorage.setItem(\"react-refresh-token\", keycloak.refreshToken);\r\n\r\n// setTimeout(() => {\r\n// keycloak.updateToken(70).success((refreshed) => {\r\n// if (refreshed) {\r\n// console.debug('Token refreshed' + refreshed);\r\n// } else {\r\n// console.warn('Token not refreshed, valid for '\r\n// + Math.round(keycloak.tokenParsed.exp + keycloak.timeSkew - new Date().getTime() / 1000) + ' seconds');\r\n// }\r\n// }).error(() => {\r\n// console.error('Failed to refresh token');\r\n// });\r\n\r\n\r\n// }, 60000)\r\n\r\n// }).error(() => {\r\n// console.error(\"Authenticated Failed\");\r\n// });\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","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAAD3klEQVRoge2ZT2zTdhTHv89OAnRslMIJiDNpJybEkIaEJg2BALXggBAanYRAcCzaUOPCgV463BscRl3EH2nHScAEJwp1CoLD2Mb4dyicQGxoSVpO06AMSksTvx3apEmWxj/HdmtEvyfnp5f33se/n/3ezz9gVrN6v0UiRo3fD0ZDcrYLQCNAH3oSmbnTbIvpbt3YAownn+sH0OA22P/kAYRkZzBx571PHgCIjqhdKX8BADS6CWArlxC2S0g10lz829QUoedG1F9eDDqW1KLtTv2JzMC0iMCHtxiZo07/FxgAoDaIQAEAziECBwA4gwgkACAOEVgAYBzCzibQACIKTXdAuzoyVZ2YSu/8DJTcDV+6Tpeym7HCEprsOsmfxs0nFZaQr12njyp+BvztOn1SEUDpmidg+8T6W5cfs4jXmppCzNiRHzM1hWzW6V8Ab3s7Mlafs2gREbcAeO0DQKkY3AlmMjXlJoCHAPf3JWK/6jpLROgUDcDMe0wtdmVOJLxSJlJ6E7EfwLAtUKKq8hqlVfHu9E4AYNBJsHQKAO4uTO8EsFLQ/8iaIeX3puOZBpbwM5H1S/MFlueEpZ/cJp5X1TrAIF3XWQrNk8/KdfK55gssg8nJ7inyYPHgwqsHo/8AOM/A/NfPMtnRrPW3u7QnZVfIPr2zYGDX5ZYlw5dblgwPPxvYBWC5E/+jWT6zXueQqSm7WZK+AHCv9nQrBLAzIIlf5a8tnrwWFzfX1Q/cjRvppmTrstsfvPj3SwA3nfupLLte6L7ZGu3ZQk8+Cr+p5x5t8SW1O3MfwGoh74QhMP4AuIGBPtVI/3hRU/apxzMHIPHDcRvqlXJouXIwOlgLQPUZIOoAEcOauzcbebMXRMxM3wl7ZzwxNWU1kbVnYmCHrrOUzYWfFkyI9teaPFAd4DczEe0DMxH4GxC+BTMl26JJgG6VG+frQVld+DzenV7Rm/j4FsCNkiVt0nWyIpGxQtFMti4bqDX5qgBEUgcAxI30Row/uMs3n0hvAADmXIegf2JGj2qktoZG627nQiOPVCPzlcV82k3SJQHyF6qRejkTHWh5FXf6Haq4lbjhZWLTpQKABbkdwPMZzKUmFQD6tKWPszn5M4AuAng5gzk5UkkduHZoaQbA18VjXn8b9Vrv/J54FmCmJXA+4Lo+3Hk7MtZ0vf2ToRK/XSkdREdq8lh0NCUwA67rw5rI3PDVTUf/XFA8aLbFdDAL7+wKKjtXswXwqD54A1HhUNAWwMP64A5iihPNwLzT40bqMIMqf04n0s1EtCJkYACAKSCqJA8EDAAog7BJPrBSu1K66Nnxf1TQipuvPGqzAAAAAElFTkSuQmCC\""],"sourceRoot":""}