{"version":3,"file":"main.js","mappings":"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","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/components/application-dashboard/application-dashboard.component.ts","./src/app/components/application-dashboard/application-dashboard.component.html","./src/app/components/application-environment/application-environment.component.ts","./src/app/components/application-environment/application-environment.component.html","./src/app/components/application-list/application-list.component.ts","./src/app/components/application-list/application-list.component.html","./src/app/components/application-user-registration/application-user-registration.component.ts","./src/app/components/application-user-registration/application-user-registration.component.html","./src/app/components/application-user-verification/application-user-verification.component.ts","./src/app/components/application-user-verification/application-user-verification.component.html","./src/app/components/application-user/application-user.component.ts","./src/app/components/application-user/application-user.component.html","./src/app/components/application/application.component.ts","./src/app/components/application/application.component.html","./src/app/components/approval-list/approval-list.component.ts","./src/app/components/approval-list/approval-list.component.html","./src/app/components/base-application-user-component/base-application-user-component.ts","./src/app/components/base-component/base-component.ts","./src/app/components/base-detail-component/base-detail-component.ts","./src/app/components/base-list-component/base-list.component.ts","./src/app/components/global-setup/global-setup.component.ts","./src/app/components/global-setup/global-setup.component.html","./src/app/components/help/help.component.ts","./src/app/components/help/help.component.html","./src/app/components/information-banner/information-banner.component.ts","./src/app/components/information-banner/information-banner.component.html","./src/app/components/landing/landing.component.ts","./src/app/components/landing/landing.component.html","./src/app/components/my-apps/my-apps.component.ts","./src/app/components/my-apps/my-apps.component.html","./src/app/components/on-behalf-of-terms-and-conditions/on-behalf-of-terms-and-conditions.component.ts","./src/app/components/on-behalf-of-terms-and-conditions/on-behalf-of-terms-and-conditions.component.html","./src/app/components/organisation-list/organisation-list.component.ts","./src/app/components/organisation-list/organisation-list.component.html","./src/app/components/organisation/organisation.component.ts","./src/app/components/organisation/organisation.component.html","./src/app/components/reference-data-list/reference-data-list.component.ts","./src/app/components/reference-data-list/reference-data-list.component.html","./src/app/components/reference-data/reference-data.component.ts","./src/app/components/reference-data/reference-data.component.html","./src/app/components/review-definition-list/review-definition-list.component.ts","./src/app/components/review-definition-list/review-definition-list.component.html","./src/app/components/review-definition/review-definition.component.ts","./src/app/components/review-definition/review-definition.component.html","./src/app/components/review-list/review-list.component.ts","./src/app/components/review-list/review-list.component.html","./src/app/components/user-legacy-profile-setup/user-legacy-profile-setup.component.ts","./src/app/components/user-legacy-profile-setup/user-legacy-profile-setup.component.html","./src/app/components/user-list/user-list.component.ts","./src/app/components/user-list/user-list.component.html","./src/app/components/user-request-list/user-request-list.component.ts","./src/app/components/user-request-list/user-request-list.component.html","./src/app/components/user-terms-and-conditions/user-terms-and-conditions.component.ts","./src/app/components/user-terms-and-conditions/user-terms-and-conditions.component.html","./src/app/constants/api-endpoints.constants.ts","./src/app/constants/app-data.constants.ts","./src/app/constants/filter-action.ts","./src/app/constants/request-save-result-status.ts","./src/app/constants/review-decision-result.ts","./src/app/constants/route.constants.ts","./src/app/constants/templates.constants.ts","./src/app/constants/user-purge-type.ts","./src/app/constants/user-request-source.ts","./src/app/interfaces/purge-user-result.interface.ts","./src/app/interfaces/sync-user-result.interface.ts","./src/app/services/app-data.service.ts","./src/app/services/application-user-service.ts","./src/app/services/collection.service.ts","./src/app/services/component-deactivation.service.ts","./src/app/services/dialog-helper.service.ts","./src/app/services/directory-lookup.service.ts","./src/app/services/error.service.ts","./src/app/services/excel-export.service.ts","./src/app/services/excel-import.service.ts","./src/app/services/excel-parser.service.ts","./src/app/services/footer-customisation.service.ts","./src/app/services/form-configuration-parser.service.ts","./src/app/services/form-data.service.ts","./src/app/services/format-html-details-service.ts","./src/app/services/header-customisation.service.ts","./src/app/services/html-helper.service.ts","./src/app/services/response-parser.service.ts","./src/app/services/session-storage.service.ts","./src/app/services/user-profile.service.ts","./src/app/types/duop-v2-autocomplete/duop-v2-autocomplete.type.ts","./src/app/types/duop-v2-autocomplete/duop-v2-autocomplete.html","./src/environments/environment.ts","./src/main.ts","ignored|C:\\a\\_work\\329\\s\\DH.UserManagementPortal\\DH.UserManagementPortal.Web\\ClientApp\\node_modules\\xlsx|crypto","ignored|C:\\a\\_work\\329\\s\\DH.UserManagementPortal\\DH.UserManagementPortal.Web\\ClientApp\\node_modules\\xlsx|fs","ignored|C:\\a\\_work\\329\\s\\DH.UserManagementPortal\\DH.UserManagementPortal.Web\\ClientApp\\node_modules\\xlsx|stream"],"sourcesContent":["import { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { DspxLogoutComponent } from 'dspx-core';\r\n\r\nimport { RouteConstants } from './constants/route.constants';\r\n\r\nimport { ApplicationUserComponent } from './components/application-user/application-user.component';\r\nimport { ReferenceDataComponent } from './components/reference-data/reference-data.component';\r\nimport { ApplicationComponent } from './components/application/application.component';\r\nimport { ApplicationDashboardComponent } from './components/application-dashboard/application-dashboard.component';\r\nimport { ApplicationEnvironmentComponent } from './components/application-environment/application-environment.component';\r\n\r\nimport { UserListComponent } from './components/user-list/user-list.component';\r\nimport { UserRequestListComponent } from './components/user-request-list/user-request-list.component';\r\nimport { ApprovalListComponent } from './components/approval-list/approval-list.component';\r\nimport { ReferenceDataListComponent } from './components/reference-data-list/reference-data-list.component';\r\nimport { ApplicationListComponent } from './components/application-list/application-list.component';\r\nimport { OrganisationListComponent } from './components/organisation-list/organisation-list.component';\r\nimport { LandingComponent } from './components/landing/landing.component';\r\nimport { OrganisationComponent } from './components/organisation/organisation.component';\r\nimport { ApplicationUserVerificationComponent } from './components/application-user-verification/application-user-verification.component';\r\nimport { ApplicationUserRegistrationComponent } from './components/application-user-registration/application-user-registration.component';\r\nimport { ReviewListComponent } from './components/review-list/review-list.component';\r\nimport { ReviewDefinitionComponent } from './components/review-definition/review-definition.component';\r\nimport { ReviewDefinitionListComponent } from './components/review-definition-list/review-definition-list.component';\r\nimport { MyAppsComponent } from './components/my-apps/my-apps.component';\r\nimport { UserLegacyProfileSetupComponent } from './components/user-legacy-profile-setup/user-legacy-profile-setup.component';\r\nimport { GlobalSetupComponent } from './components/global-setup/global-setup.component';\r\n\r\nimport { UserTermsAndConditionsComponent } from './components/user-terms-and-conditions/user-terms-and-conditions.component';\r\nimport { OnBehalfOfTermsAndConditionsComponent } from './components/on-behalf-of-terms-and-conditions/on-behalf-of-terms-and-conditions.component';\r\nimport { ComponentDeactivationService } from './services/component-deactivation.service';\r\nimport { HelpComponent } from './components/help/help.component';\r\n\r\nconst routes: Routes = [\r\n {\r\n path:'',\r\n component: LandingComponent\r\n },\r\n {\r\n path: RouteConstants.termsAndConditions.user,\r\n component: UserTermsAndConditionsComponent\r\n },\r\n {\r\n path: RouteConstants.termsAndConditions.onBehalfOf,\r\n component: OnBehalfOfTermsAndConditionsComponent\r\n },\r\n {\r\n path: RouteConstants.logout,\r\n component: DspxLogoutComponent\r\n },\r\n\r\n // Users\r\n {\r\n path: RouteConstants.user.verify,\r\n component: ApplicationUserVerificationComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.user.register,\r\n component: ApplicationUserRegistrationComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.user.myApps,\r\n component: MyAppsComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.user.list,\r\n component: UserListComponent\r\n },\r\n {\r\n path: RouteConstants.user.prefix,\r\n component: ApplicationUserComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.user.edit,\r\n component: ApplicationUserComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n\r\n // Users Legacy Profile Setup\r\n {\r\n path: RouteConstants.userLegacyProfileSetup.edit,\r\n component: UserLegacyProfileSetupComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.userLegacyProfileSetup.resetEdit,\r\n component: UserLegacyProfileSetupComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n\r\n // User Requests\r\n {\r\n path: RouteConstants.userRequest.list,\r\n component: UserRequestListComponent\r\n },\r\n\r\n // Approvals\r\n {\r\n path: RouteConstants.approval.list,\r\n component: ApprovalListComponent\r\n },\r\n\r\n // Reviews\r\n {\r\n path: RouteConstants.review.list,\r\n component: ReviewListComponent\r\n },\r\n\r\n // Reference Data\r\n {\r\n path: RouteConstants.referenceData.list,\r\n component: ReferenceDataListComponent\r\n },\r\n {\r\n path: RouteConstants.referenceData.prefix,\r\n component: ReferenceDataComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.referenceData.edit,\r\n component: ReferenceDataComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n\r\n // Organisations\r\n {\r\n path: RouteConstants.organisation.list,\r\n component: OrganisationListComponent\r\n },\r\n {\r\n path: RouteConstants.organisation.prefix,\r\n component: OrganisationComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.organisation.edit,\r\n component: OrganisationComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n\r\n // Applications\r\n {\r\n path: RouteConstants.application.list,\r\n component: ApplicationListComponent\r\n },\r\n {\r\n path: RouteConstants.application.prefix,\r\n component: ApplicationComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.application.edit,\r\n component: ApplicationComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.applicationDashboard.edit,\r\n component: ApplicationDashboardComponent\r\n },\r\n {\r\n path: RouteConstants.application.applicationDashboard,\r\n component: ApplicationDashboardComponent\r\n },\r\n {\r\n path: RouteConstants.applicationEnvironment.edit,\r\n component: ApplicationEnvironmentComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.application.applicationEnvironment,\r\n component: ApplicationEnvironmentComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n\r\n // Review Definitions\r\n {\r\n path: RouteConstants.reviewDefinition.list,\r\n component: ReviewDefinitionListComponent\r\n },\r\n {\r\n path: RouteConstants.reviewDefinition.prefix,\r\n component: ReviewDefinitionComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.reviewDefinition.edit,\r\n component: ReviewDefinitionComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n {\r\n path: RouteConstants.reviewDefinition.reviewOccurrenceList,\r\n component: ReviewListComponent\r\n },\r\n\r\n // Global Setup\r\n {\r\n path: RouteConstants.globalSetup.edit,\r\n component: GlobalSetupComponent,\r\n canDeactivate: [ComponentDeactivationService]\r\n },\r\n\r\n // Help\r\n {\r\n path: RouteConstants.help,\r\n component: HelpComponent\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule { }\r\n","import { take } from 'rxjs';\r\n\r\nimport { Component, ViewEncapsulation, OnInit, AfterViewInit } from '@angular/core';\r\n\r\nimport {\r\n CardSetHeaderConfiguration,\r\n CardSetFooterConfiguration,\r\n CardSetMenuConfiguration,\r\n MenuConfigService,\r\n MenuService,\r\n HeaderService,\r\n AddressService,\r\n CoreService,\r\n UserService,\r\n FormConfigurationService\r\n} from 'dspx-core';\r\n\r\nimport { ApiEndpoints } from './constants/api-endpoints.constants';\r\nimport { AppDataKeys, AppSelector } from './constants/app-data.constants';\r\n\r\nimport { GetGlobalSettingsResponse } from './interfaces/get-global-settings-response.interface';\r\nimport { InformationBannerConfig } from './interfaces/information-banner-config.interface';\r\n\r\nimport { AppDataService } from './services/app-data.service';\r\nimport { HeaderCustomisationService } from './services/header-customisation.service';\r\nimport { FooterCustomisationService } from './services/footer-customisation.service';\r\n\r\n@Component({\r\n selector: AppSelector,\r\n templateUrl: './app.component.html',\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AppComponent implements OnInit, AfterViewInit {\r\n\r\n environmentBannerMessage: string;\r\n environmentBannerBgColor: string;\r\n environmentBannerColor: string;\r\n informationBannerConfig: InformationBannerConfig;\r\n headerConfig: CardSetHeaderConfiguration;\r\n footerConfig: CardSetFooterConfiguration;\r\n menuConfig: CardSetMenuConfiguration;\r\n\r\n constructor(\r\n private appDataService: AppDataService,\r\n private headerCustomisationService: HeaderCustomisationService,\r\n private footerCustomisationService: FooterCustomisationService,\r\n private coreService: CoreService,\r\n private addressService: AddressService,\r\n private userService: UserService,\r\n private formConfigurationService: FormConfigurationService,\r\n public menuConfigService: MenuConfigService,\r\n private menuService: MenuService,\r\n private headerService: HeaderService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.menuService.menuLoaded$.subscribe(\r\n config => {\r\n if (config){\r\n this.menuConfig = config;\r\n }\r\n }\r\n );\r\n\r\n this.headerService.headerUpdated$.subscribe(\r\n config => {\r\n if (config){\r\n this.headerConfig = config;\r\n }\r\n }\r\n )\r\n\r\n this.menuConfigService.styleConfigService.layoutMode = 'static'; /*'overlay';*/ /*'horizontal';*/ /*'slim';*/\r\n this.menuConfigService.styleConfigService.layoutColor = /*'dark';*/ 'light';\r\n this.menuConfigService.styleConfigService.darkMenu = /*true;*/ false;\r\n this.menuConfigService.styleConfigService.ripple = true; /*false;*/\r\n this.menuConfigService.styleConfigService.inputStyle = 'filled'; /*'outlined';*/\r\n\r\n this.menuConfigService.primengConfig.ripple = this.menuConfigService.styleConfigService.ripple;\r\n\r\n // Set up the various global endpoints and functions for the dspx framework\r\n this.formConfigurationService.endpoints = this.formConfigurationService.endpoints ?? {\r\n getFormConfig: ApiEndpoints.configuration.default,\r\n getReferenceDataConfigAndResponse: ApiEndpoints.referenceData.getConfigAndResponse,\r\n getOrganisationConfigAndResponse: ApiEndpoints.organisation.getConfigAndResponse,\r\n getApplicationConfigAndResponse: ApiEndpoints.application.getConfigAndResponse,\r\n getApplicationDashboardConfigAndResponse: ApiEndpoints.applicationDashboard.getConfigAndResponse,\r\n getEnvironmentDefinitionConfigAndResponse: ApiEndpoints.applicationEnvironment.getConfigAndResponse,\r\n getReviewDefinitionConfigAndResponse: ApiEndpoints.reviewDefinition.getConfigAndResponse,\r\n getReviewDecisionsAdminModeConfigAndResponse: ApiEndpoints.reviewDecision.getAdminModeConfigAndResponse,\r\n getGlobalSetupConfigAndResponse: ApiEndpoints.globalSetup.getConfigAndResponse,\r\n getApplicationUserEmptyConfigAndResponse: ApiEndpoints.applicationUser.getEmptyConfigAndResponse,\r\n getApplicationUserConfigAndResponse: ApiEndpoints.applicationUser.getConfigAndResponse,\r\n getMyAppsConfigAndResponse: ApiEndpoints.applicationUser.getMyAppsConfigAndResponse,\r\n getUserRegistrationConfigAndResponse: ApiEndpoints.applicationUser.getRegistrationConfigAndResponse,\r\n getApplicationUserDraftConfigAndResponse: ApiEndpoints.applicationUser.getDraftConfigAndResponse,\r\n getMyAppsDraftConfigAndResponse: ApiEndpoints.applicationUser.getMyAppsDraftConfigAndResponse,\r\n getUserRegistrationDraftConfigAndResponse: ApiEndpoints.applicationUser.getRegistrationDraftConfigAndResponse,\r\n getUserLegacyProfileSetupConfigAndResponse: ApiEndpoints.userLegacyProfileSetup.getConfigAndResponse,\r\n getUserLegacyProfileSetupResetConfigAndResponse: ApiEndpoints.userLegacyProfileSetup.getResetConfigAndResponse\r\n };\r\n this.addressService.endpoints = {\r\n // Note: do not change the 'addressApiSearchEndpoint' and 'addressApiLgaEndpoint' key names, these are used within dspx-core.\r\n addressApiSearchEndpoint: ApiEndpoints.address.search,\r\n addressApiLgaEndpoint: ApiEndpoints.address.lga\r\n }\r\n this.coreService.applicationFunctions = {\r\n }\r\n this.coreService.conditionFunctions = {\r\n };\r\n this.coreService.pageFunctions = {\r\n };\r\n this.coreService.repeatingPageFunctions = {\r\n };\r\n this.coreService.repeatingSectionFunctions = {\r\n };\r\n\r\n // Configure application keys by copying from HTML element attributes into AppDataService\r\n const getFromHtmlAndSaveToAppData = (htmlElementIdAndAppDataKey: string, htmlAttributeName = 'value') =>\r\n this.appDataService.setAppData(\r\n htmlElementIdAndAppDataKey,\r\n this.appDataService.getAttributeFromHtmlElement(htmlElementIdAndAppDataKey, htmlAttributeName));\r\n getFromHtmlAndSaveToAppData(AppDataKeys.applicationTitle);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.applicationUrl);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.environmentName);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.environmentBannerBgColor);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.environmentBannerColor);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.maxGridRowCount);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.maxBulkOperationItemCount);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.googleRecaptchaSiteKey, 'key');\r\n getFromHtmlAndSaveToAppData(AppDataKeys.userTermsAndConditions);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.onBehalfOfTermsAndConditions);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.ldapNotFederatedAccountSignInUrl);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.ldapNotFederatedAccountResetUrl);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.ldapLegacyUserOnboardingPortalName);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.privateIndividualOrganisationId);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.fileDownloadMetadataHeaderName);\r\n getFromHtmlAndSaveToAppData(AppDataKeys.technicalSupportEmail);\r\n\r\n // Configure the environment banner\r\n const environmentName = this.appDataService.getAppData(AppDataKeys.environmentName);\r\n if (environmentName) {\r\n this.environmentBannerMessage = `You are using the ${environmentName} environment`;\r\n }\r\n const environmentBannerBgColor = this.appDataService.getAppData(AppDataKeys.environmentBannerBgColor);\r\n if (environmentBannerBgColor) {\r\n this.environmentBannerBgColor = environmentBannerBgColor;\r\n }\r\n const environmentBannerColor = this.appDataService.getAppData(AppDataKeys.environmentBannerColor);\r\n if (environmentBannerColor) {\r\n this.environmentBannerColor = environmentBannerColor;\r\n }\r\n\r\n // Configure the header\r\n this.userService.endpoints = { getLoggedInUser: ApiEndpoints.users.getLoggedInUser };\r\n this.userService.logout = () => {\r\n // We are using MS Identity so redirect to MicrosoftIdentity Web UI Account Controller action\r\n window.open('MicrosoftIdentity/Account/SignOut', '_self');\r\n };\r\n this.headerConfig = this.headerCustomisationService.getHeaderConfiguration();\r\n\r\n // Configure the footer\r\n this.footerConfig = this.footerCustomisationService.getFooterConfiguration();\r\n\r\n this.appDataService.post(ApiEndpoints.globalSetup.getGlobalSettings, null)\r\n .pipe(take(1))\r\n .subscribe((response: GetGlobalSettingsResponse) => {\r\n this.informationBannerConfig = response.informationBannerConfig;\r\n this.appDataService.setAppData(AppDataKeys.globalSettings, response);\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.headerCustomisationService.disableMenu();\r\n }\r\n}\r\n","\r\n
\r\n\r\n \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n","// Angular imports\r\n\r\nimport { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { CommonModule } from '@angular/common';\r\nimport { HttpClientModule } from '@angular/common/http'; // Required by PrimeNg file upload control.\r\n\r\n// ngx-formly imports\r\n\r\nimport { FormlyModule } from '@ngx-formly/core';\r\nimport { FormlyPrimeNGModule } from '@ngx-formly/primeng';\r\n\r\n// prime-ng imports - move this to dspx\r\n\r\nimport { DividerModule } from \"primeng/divider\";\r\nimport { CardModule } from 'primeng/card';\r\nimport { ButtonModule } from 'primeng/button';\r\nimport { MessagesModule } from 'primeng/messages';\r\nimport { ToggleButtonModule } from 'primeng/togglebutton';\r\nimport { AccordionModule } from 'primeng/accordion';\r\nimport { AutoCompleteModule } from 'primeng/autocomplete';\r\n\r\n// dspx-core imports\r\n\r\nimport {\r\n DspxCoreModule,\r\n CheckboxFieldType,\r\n SwitchFieldType,\r\n ButtonFieldType,\r\n DateFieldType,\r\n DateTimeFieldType,\r\n FileUploadFieldType,\r\n AddressFieldType,\r\n MaskedInputFieldType,\r\n SelectButtonFieldType,\r\n TextAreaFieldType,\r\n MultiselectFieldType,\r\n ParagraphFieldType,\r\n PasswordFieldType,\r\n StepsFieldType,\r\n TabsFieldType,\r\n PageFieldType,\r\n PageRepeatingFieldType,\r\n SectionFieldType,\r\n SectionRepeatingFieldType,\r\n TableFieldType,\r\n FormNavigationFieldType,\r\n dspxRequiredValidator,\r\n whitespaceValidator,\r\n sameAsValidator,\r\n differentToValidator,\r\n eitherMandatoryValidator,\r\n dateLessThanValidator,\r\n dateLessThanOrEqualToValidator,\r\n dateGreaterThanValidator,\r\n dateGreaterThanOrEqualToValidator,\r\n numberGreaterThanValidator,\r\n numberLessThanValidator,\r\n verificationRequiredValidator,\r\n urlValidator,\r\n SearchBoxFieldType,\r\n FormSummaryFieldType,\r\n TimeFieldType,\r\n SingleCheckboxFieldType,\r\n RadioFieldType,\r\n DspxWrapperFormField,\r\n DspxWrapperContainer,\r\n DspxRadioWrapperFormField,\r\n PBIEmbeddedFieldType,\r\n HtmlHeadingFieldType,\r\n DspxWrapperFilter,\r\n FilterFieldType,\r\n CardSectionFieldType,\r\n CardSectionRepeatingFieldType,\r\n CardSetPageFieldType,\r\n CardSetPageRepeatingFieldType,\r\n CardSetTabsFieldType,\r\n CardSetTabsFlatFieldType,\r\n InputFieldType,\r\n SelectFieldType\r\n} from 'dspx-core';\r\n\r\n// app imports\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { ApplicationUserComponent } from './components/application-user/application-user.component';\r\nimport { ReferenceDataComponent } from './components/reference-data/reference-data.component';\r\nimport { ApplicationComponent } from './components/application/application.component';\r\nimport { ApplicationDashboardComponent } from './components/application-dashboard/application-dashboard.component';\r\nimport { ApplicationEnvironmentComponent } from './components/application-environment/application-environment.component';\r\n\r\nimport { UserListComponent } from './components/user-list/user-list.component';\r\nimport { UserRequestListComponent } from './components/user-request-list/user-request-list.component';\r\nimport { ApprovalListComponent } from './components/approval-list/approval-list.component';\r\nimport { ReferenceDataListComponent } from './components/reference-data-list/reference-data-list.component';\r\nimport { ApplicationListComponent } from './components/application-list/application-list.component';\r\nimport { OrganisationListComponent } from './components/organisation-list/organisation-list.component';\r\nimport { OrganisationComponent } from './components/organisation/organisation.component';\r\nimport { ApplicationUserVerificationComponent } from './components/application-user-verification/application-user-verification.component';\r\nimport { ApplicationUserRegistrationComponent } from './components/application-user-registration/application-user-registration.component';\r\nimport { UserLegacyProfileSetupComponent } from './components/user-legacy-profile-setup/user-legacy-profile-setup.component';\r\nimport { ReviewListComponent } from './components/review-list/review-list.component';\r\nimport { ReviewDefinitionComponent } from './components/review-definition/review-definition.component';\r\nimport { ReviewDefinitionListComponent } from './components/review-definition-list/review-definition-list.component';\r\nimport { GlobalSetupComponent } from './components/global-setup/global-setup.component';\r\nimport { MyAppsComponent } from './components/my-apps/my-apps.component';\r\n\r\nimport { LandingComponent } from './components/landing/landing.component';\r\nimport { HelpComponent } from './components/help/help.component';\r\nimport { InformationBannerComponent } from './components/information-banner/information-banner.component';\r\nimport { UserTermsAndConditionsComponent } from './components/user-terms-and-conditions/user-terms-and-conditions.component';\r\nimport { OnBehalfOfTermsAndConditionsComponent } from './components/on-behalf-of-terms-and-conditions/on-behalf-of-terms-and-conditions.component';\r\nimport { DuopV2AutoCompleteFieldType } from './types/duop-v2-autocomplete/duop-v2-autocomplete.type';\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n\r\n ApplicationUserComponent,\r\n ReferenceDataComponent,\r\n ApplicationComponent,\r\n ApplicationDashboardComponent,\r\n UserListComponent,\r\n UserRequestListComponent,\r\n ApprovalListComponent,\r\n ReferenceDataListComponent,\r\n ApplicationListComponent,\r\n OrganisationListComponent,\r\n ApplicationEnvironmentComponent,\r\n OrganisationComponent,\r\n ApplicationUserVerificationComponent,\r\n ApplicationUserRegistrationComponent,\r\n UserLegacyProfileSetupComponent,\r\n ReviewListComponent,\r\n ReviewDefinitionComponent,\r\n ReviewDefinitionListComponent,\r\n GlobalSetupComponent,\r\n MyAppsComponent,\r\n LandingComponent,\r\n HelpComponent,\r\n InformationBannerComponent,\r\n UserTermsAndConditionsComponent,\r\n OnBehalfOfTermsAndConditionsComponent,\r\n\r\n DuopV2AutoCompleteFieldType\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n CommonModule,\r\n FormsModule,\r\n DspxCoreModule,\r\n DividerModule,\r\n CardModule,\r\n ButtonModule,\r\n MessagesModule,\r\n ToggleButtonModule,\r\n AppRoutingModule,\r\n ReactiveFormsModule,\r\n FormlyPrimeNGModule,\r\n HttpClientModule,\r\n AccordionModule,\r\n AutoCompleteModule,\r\n FormlyModule.forRoot(\r\n {\r\n wrappers: [\r\n { name: 'dspx-form-field', component: DspxWrapperFormField },\r\n { name: 'dspx-container', component: DspxWrapperContainer },\r\n {​​​ name: 'dspx-radio-wrapper', component:DspxRadioWrapperFormField }​​​,\r\n { name: 'dspx-filter-wrapper', component: DspxWrapperFilter}\r\n ],\r\n types: [\r\n { name: 'input', component: InputFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'checkbox', component: SingleCheckboxFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'radio', component: RadioFieldType, wrappers: ['dspx-radio-wrapper'] },\r\n { name: 'select', component: SelectFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'multicheckbox', component: CheckboxFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'switch', component: SwitchFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'button', component: ButtonFieldType },\r\n { name: 'date', component: DateFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'datetime', component: DateTimeFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'file', component: FileUploadFieldType, wrappers: ['dspx-form-field'] },\r\n\r\n // We are replacing the standard DSPX AutoCompleteFieldType FieldType with a custom one with slightly different behaviour\r\n { name: 'autocomplete', component: DuopV2AutoCompleteFieldType, wrappers: ['dspx-form-field'] },\r\n\r\n { name: 'address', component: AddressFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'maskinput', component: MaskedInputFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'textarea', component: TextAreaFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'multiselect', component: MultiselectFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'selectbutton', component: SelectButtonFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'paragraph', component: ParagraphFieldType },\r\n { name: 'password', component: PasswordFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'steps', component: StepsFieldType },\r\n { name: 'tabs', component: TabsFieldType },\r\n { name: 'page', component: PageFieldType },\r\n { name: 'page-repeating', component: PageRepeatingFieldType },\r\n { name: 'section', component: SectionFieldType },\r\n { name: 'section-repeating', component: SectionRepeatingFieldType },\r\n { name: 'formnavigation', component: FormNavigationFieldType },\r\n { name: 'data-grid', component: TableFieldType },\r\n { name: 'search', component: SearchBoxFieldType, wrappers: ['dspx-container']},\r\n { name: 'summary', component: FormSummaryFieldType },\r\n { name: 'time', component: TimeFieldType, wrappers: ['dspx-form-field'] },\r\n { name: 'powerbi', component: PBIEmbeddedFieldType, wrappers: ['dspx-container'] },\r\n { name: 'heading', component: HtmlHeadingFieldType },\r\n { name: 'filter', component: FilterFieldType },\r\n\r\n // 'card-set' layout\r\n { name: 'card-set-tabs', component: CardSetTabsFieldType },\r\n { name: 'card-set-tabs-flat', component: CardSetTabsFlatFieldType },\r\n { name: 'card-set-page', component: CardSetPageFieldType },\r\n { name: 'card-set-page-repeating', component: CardSetPageRepeatingFieldType },\r\n { name: 'card-section', component: CardSectionFieldType },\r\n { name: 'card-section-repeating', component: CardSectionRepeatingFieldType }\r\n ],\r\n validators: [\r\n { name: 'dspxRequired', validation: dspxRequiredValidator },\r\n { name: 'whitespace', validation: whitespaceValidator },\r\n { name: 'sameAs', validation: sameAsValidator },\r\n { name: 'differentTo', validation: differentToValidator },\r\n { name: 'eitherMandatory', validation: eitherMandatoryValidator },\r\n { name: 'anyOneMandatory', validation: eitherMandatoryValidator },\r\n { name: 'mandatoryPartialDate', validation: eitherMandatoryValidator },\r\n { name: 'dateLessThan', validation: dateLessThanValidator },\r\n { name: 'dateLessThanOrEqualTo', validation: dateLessThanOrEqualToValidator },\r\n { name: 'dateGreaterThan', validation: dateGreaterThanValidator },\r\n { name: 'dateGreaterThanOrEqualTo', validation: dateGreaterThanOrEqualToValidator },\r\n { name: 'numberGreaterThan', validation: numberGreaterThanValidator },\r\n { name: 'numberLessThan', validation: numberLessThanValidator },\r\n { name: 'verificationRequired', validation: verificationRequiredValidator },\r\n { name: 'url', validation: urlValidator }\r\n ],\r\n extras: {\r\n resetFieldOnHide: true,\r\n checkExpressionOn: 'modelChange',\r\n lazyRender: true\r\n }\r\n })\r\n ],\r\n providers: [],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { SpinnerService, DialogService, CoreService, CardSetTransformationService } from 'dspx-core';\r\n\r\nimport { ComponentSelectors, FormActions, NavTabNumbers, PageNumbers, QuestionCodes, ReadOnlyAccessPageActionButtons } from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\nimport { Templates } from '../../constants/templates.constants';\r\n\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ExcelExportService } from '../../services/excel-export.service';\r\nimport { ExcelImportService } from '../../services/excel-import.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseListComponent } from '../base-list-component/base-list.component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.ApplicationDashboardForm.ApplicationDashboard,\r\n templateUrl: './application-dashboard.component.html'\r\n})\r\nexport class ApplicationDashboardComponent extends BaseListComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n id: string;\r\n templateId: number = Templates.applicationDashboard;\r\n\r\n private isNavigatingFromApplicationDetail: boolean = false;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService,\r\n private coreService: CoreService,\r\n private excelExportService: ExcelExportService,\r\n private excelImportService: ExcelImportService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(\r\n route,\r\n router,\r\n spinnerService,\r\n dialogService,\r\n responseParserService,\r\n htmlHelperService,\r\n appDataService);\r\n\r\n this.initialise(\r\n [NavTabNumbers.ApplicationDashboardForm.environments, PageNumbers.ApplicationDashboardForm.environments],\r\n () => `${ApiEndpoints.dashboard.getApplicationEnvironments}/${this.id}`);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.route.paramMap.subscribe((paramMap: ParamMap) => {\r\n this.id = paramMap.get('id');\r\n if (!this.id) {\r\n this.id = paramMap.get('applicationId');\r\n if (this.id) {\r\n this.isNavigatingFromApplicationDetail = true;\r\n }\r\n }\r\n if (this.id) {\r\n this.formServiceEndpoint = ApiEndpointKeys.getApplicationDashboardConfigAndResponse;\r\n }\r\n });\r\n\r\n this.coreService.applicationFunctions['alwaysFalse'] = () => false; // This ensures that all the other buttons have the same \"secondary\" styling\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel();\r\n }\r\n\r\n formLoad(event: any) {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.ApplicationDashboardForm);\r\n\r\n this.loadGridDataOnFormLoad();\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ApplicationDashboardForm.environmentPlaceholder:\r\n switch (event.event.type) {\r\n case FormActions.ApplicationDashboardForm.View:\r\n case FormActions.ApplicationDashboardForm.Edit: {\r\n this.navigateToApplicationEnvironmentDetail(event.event.data.id);\r\n break;\r\n }\r\n case FormActions.ApplicationDashboardForm.Export: {\r\n this.excelExportService.exportApplicationEnvironmentToXlsx({ entityIds: [event.event.data.id] });\r\n break;\r\n }\r\n case FormActions.ApplicationDashboardForm.Import: {\r\n const clickedRow = event.event.data;\r\n this.importApplicationEnvironmentFromXlsx(clickedRow.id);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n importApplicationEnvironmentFromXlsx(entityId: string): void {\r\n this.excelImportService.importApplicationEnvironmentFromXlsx(entityId)\r\n .pipe(take(1))\r\n .subscribe(excelImportResult => {\r\n if (!excelImportResult.isCancelled) {\r\n this.loadGridData();\r\n }\r\n });\r\n }\r\n\r\n cancel() {\r\n if (this.isNavigatingFromApplicationDetail) {\r\n this.navigateBackToApplicationDetail();\r\n }\r\n else {\r\n this.navigateBackToApplicationList();\r\n }\r\n }\r\n\r\n private navigateBackToApplicationList(): void {\r\n this.router.navigate(['/', RouteConstants.application.list]);\r\n }\r\n\r\n private navigateBackToApplicationDetail(): void {\r\n this.router.navigate(['/', RouteConstants.application.prefix, this.id]);\r\n }\r\n\r\n private navigateToApplicationEnvironmentDetail(id: string): void {\r\n if (this.isNavigatingFromApplicationDetail) {\r\n this.router.navigate(['/', RouteConstants.application.prefix, this.id, RouteConstants.application.applicationEnvironmentFragment, id]);\r\n }\r\n else {\r\n this.router.navigate(['/', RouteConstants.applicationEnvironment.prefix, id]);\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { CoreService, DataService, DialogService, CardSetTransformationService, SpinnerService } from 'dspx-core';\r\n\r\nimport {\r\n ComponentSelectors,\r\n NavTabNumbers,\r\n PageNumbers,\r\n PopupCodes,\r\n QuestionCodes,\r\n ReadOnlyAccessPageActionButtons,\r\n SectionCodes,\r\n ServerErrorPopupCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\nimport { Templates, Versions } from '../../constants/templates.constants';\r\n\r\nimport { SaveRequest } from '../../interfaces/save-request.interface';\r\nimport { SaveResult } from '../../interfaces/save-result.interface';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { FormDataService } from '../../services/form-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\nimport { QuestionPath, ResponseParserService } from '../../services/response-parser.service';\r\n\r\nimport { BaseDetailComponent } from '../base-detail-component/base-detail-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.ApplicationEnvironmentForm.ApplicationEnvironment,\r\n templateUrl: './application-environment.component.html'\r\n})\r\nexport class ApplicationEnvironmentComponent extends BaseDetailComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n id = '';\r\n formServiceEndpoint: string = ApiEndpointKeys.getFormConfig;\r\n templateId: number = Templates.applicationEnvironment;\r\n versionNo: number = Versions.latest;\r\n activeDialog: string;\r\n applicationId = '';\r\n editing = false;\r\n\r\n private isViewModeForEnvironment = true;\r\n\r\n private isNavigatingFromApplicationDetail: boolean = false;\r\n\r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n private route: ActivatedRoute,\r\n private errorService: ErrorService,\r\n private coreService: CoreService,\r\n private dataService: DataService,\r\n private spinnerService: SpinnerService,\r\n private formDataService: FormDataService,\r\n private userProfileService: UserProfileService,\r\n private responseParserService: ResponseParserService ) {\r\n super(dialogService, appDataService, dialogHelperService, htmlHelperService, componentDeactivationService, router);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.route.paramMap.subscribe((paramMap: ParamMap) => {\r\n this.id = paramMap.get('id');\r\n if (!this.id) {\r\n this.id = paramMap.get('environmentId');\r\n if (this.id) {\r\n this.isNavigatingFromApplicationDetail = true;\r\n }\r\n }\r\n if (this.id) {\r\n this.formServiceEndpoint = ApiEndpointKeys.getEnvironmentDefinitionConfigAndResponse;\r\n this.editing = true;\r\n }\r\n });\r\n\r\n this.coreService.conditionFunctions['isEditing'] = () => this.editing;\r\n this.coreService.conditionFunctions['isEditingCustomOrganisationApproval'] = (pageIndex: number, sectionIndex: number) =>\r\n this.formDataService.environmentFormIsEditingCustomOrganisationApproval(this.baseForm.model, pageIndex, sectionIndex);\r\n this.coreService.conditionFunctions['isEditingEnvironmentCustomOrganisationApproval'] = (pageIndex: number, sectionIndex: number) =>\r\n this.formDataService.environmentFormIsEditingEnvironmentCustomOrganisationApproval(this.baseForm.model, sectionIndex);\r\n\r\n this.coreService.conditionFunctions['isApplicationNameReadOnly'] = () => true;\r\n this.coreService.conditionFunctions['isEnvironmentNameReadOnly'] = () => true;\r\n\r\n this.coreService.applicationFunctions['canSave'] = () => this.isFormEditable;\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel(null);\r\n\r\n this.formDataService.configureEnvironmentFormViewMode(\r\n () => this.baseForm.fields,\r\n () => this.isFormEditable,\r\n () => this.editing,\r\n (enabled: boolean) => this.isViewModeForEnvironment = enabled,\r\n () => this.isViewModeForEnvironment);\r\n\r\n this.formDataService.configureEnvironmentFormRepeatingPage(\r\n () => this.isFormEditable,\r\n () => this.forceRenderAsync());\r\n }\r\n\r\n formLoaded(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.isFormEditable = !!event?.isFormEditable;\r\n if (!this.isFormEditable) {\r\n // If the form is being shown as read-only, then switch to Edit mode (all fields will be disabled anyway), because View mode does not display all fields.\r\n this.isViewModeForEnvironment = false;\r\n }\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.ApplicationEnvironmentForm);\r\n\r\n if (event) {\r\n this.applicationId = event.applicationId;\r\n }\r\n\r\n this.handlePostFormLoadActions(event);\r\n }\r\n\r\n modelChanged(event: any): void {\r\n this.handleSingleCheckBoxChanges();\r\n }\r\n\r\n save(event: any): void {\r\n const saveDataRequest: SaveRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.id,\r\n response: event.model,\r\n expectedLastUpdateTime: event.lastUpdatedTime,\r\n isSubmit: false\r\n }\r\n if (!event.isFormValid) {\r\n this.baseForm.markAllFieldsAsTouched();\r\n if (!this.baseForm.fields[0]?.formControl.valid) {\r\n this.baseForm.showValidationSummary(true);\r\n this.dialogService.showDialog(PopupCodes.Common.ValidationError);\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n\r\n private saveData(request: SaveRequest): void {\r\n this.spinnerService.showSpinner();\r\n this.dataService.saveData(ApiEndpoints.applicationEnvironment.save, request)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe((data: SaveResult) => {\r\n this.spinnerService.hideSpinner();\r\n if (this.handleWarnings(request, data, r => this.saveData(r))) {\r\n return;\r\n }\r\n if (ServerErrorPopupCodes.SaveApplicationEnvironment.includes(data.message)) {\r\n this.activeDialog = data.message;\r\n }\r\n else {\r\n this.id = data.id;\r\n this.activeDialog = PopupCodes.ApplicationEnvironmentForm.SaveSuccessful;\r\n }\r\n this.dialogHelperService.showDialog(this.activeDialog, null, data.details);\r\n });\r\n }\r\n\r\n cancel(event: any): void {\r\n this.navigateBackToApplicationDashboard();\r\n }\r\n\r\n dialogSubmitted(event: any): void {\r\n if (this.activeDialog === PopupCodes.ApplicationEnvironmentForm.SaveSuccessful) {\r\n this.navigateBackToApplicationDashboard(true);\r\n }\r\n }\r\n\r\n private handleSingleCheckBoxChanges(): void {\r\n const environmentSkipOrganisationApprovalQuestionPath: QuestionPath = [\r\n NavTabNumbers.ApplicationEnvironmentForm.environmentCustomOrganisationApproval,\r\n PageNumbers.ApplicationEnvironmentForm.environmentCustomOrganisationApproval,\r\n SectionCodes.ApplicationEnvironmentForm.environmentCustomOrganisationApproval,\r\n QuestionCodes.ApplicationEnvironmentForm.environmentSkipOrganisationApproval\r\n ];\r\n const skipOrganisationApprovalQuestionPath: QuestionPath = [\r\n NavTabNumbers.ApplicationEnvironmentForm.role,\r\n PageNumbers.ApplicationEnvironmentForm.role,\r\n SectionCodes.ApplicationEnvironmentForm.customOrganisationApproval,\r\n QuestionCodes.ApplicationEnvironmentForm.skipOrganisationApproval\r\n ];\r\n this.responseParserService.handleSingleCheckBoxQuestionChanges(\r\n () => this.baseForm.model,\r\n model => this.baseForm.model = model,\r\n [\r\n environmentSkipOrganisationApprovalQuestionPath,\r\n skipOrganisationApprovalQuestionPath\r\n ]);\r\n }\r\n\r\n private navigateBackToApplicationDashboard(ignoreUnsavedChanges = false): void {\r\n if (this.isNavigatingFromApplicationDetail) {\r\n this.navigate(['/', RouteConstants.application.prefix, this.applicationId, RouteConstants.application.applicationDashboardFragment], ignoreUnsavedChanges);\r\n }\r\n else {\r\n this.navigate(['/', RouteConstants.applicationDashboard.prefix, this.applicationId], ignoreUnsavedChanges);\r\n }\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { CardSetTransformationService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport {\r\n FormActions,\r\n FormCustomActions,\r\n NavTabNumbers,\r\n PageNumbers,\r\n SectionCodes,\r\n QuestionCodes,\r\n FilterQuestionDefaults,\r\n FilterQuestionCodes,\r\n ComponentSelectors,\r\n DashboardNames,\r\n AppSelector,\r\n FilterQuestionLabels,\r\n PopupCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates } from '../../constants/templates.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\n\r\nimport { ApplicationGridFilterRequest } from '../../interfaces/application-grid-filter-request.interface';\r\nimport { ExportToDataTablesRequest } from '../../interfaces/export-to-data-tables-request.interface';\r\n\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ExcelExportService } from '../../services/excel-export.service';\r\nimport { ExcelImportService } from '../../services/excel-import.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseListComponent } from '../base-list-component/base-list.component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.ApplicationListForm.ApplicationList,\r\n templateUrl: './application-list.component.html'\r\n})\r\nexport class ApplicationListComponent extends BaseListComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n templateId: number = Templates.applicationList;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService,\r\n private excelExportService: ExcelExportService,\r\n private excelImportService: ExcelImportService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(\r\n route,\r\n router,\r\n spinnerService,\r\n dialogService,\r\n responseParserService,\r\n htmlHelperService,\r\n appDataService);\r\n\r\n this.initialise(\r\n [NavTabNumbers.ApplicationListForm.applications, PageNumbers.ApplicationListForm.applications],\r\n () => ApiEndpoints.dashboard.getApplications,\r\n {\r\n getFilterName: () => DashboardNames.ApplicationList,\r\n sectionPath: [NavTabNumbers.ApplicationListForm.applications, PageNumbers.ApplicationListForm.applications, SectionCodes.ApplicationListForm.application],\r\n searchQuestionCode: QuestionCodes.ApplicationListForm.applicationSearch,\r\n customQuestionCode: QuestionCodes.ApplicationListForm.applicationFilter,\r\n customModelVisibleKeys: ['active', 'environment', 'authenticationTypes'],\r\n getFilterRequestFromModels: (searchModel: any, customModel: any) => ({\r\n searchTerm: searchModel,\r\n active: customModel?.[FilterQuestionCodes.ApplicationListForm.applicationFilterActive],\r\n environment: customModel?.[FilterQuestionCodes.ApplicationListForm.applicationFilterEnvironment],\r\n authenticationTypes: customModel?.[FilterQuestionCodes.ApplicationListForm.applicationFilterAuthenticationType]\r\n }),\r\n getDefaultFilterRequest: () => ({\r\n active: FilterQuestionDefaults.ApplicationListForm.applicationFilterActive\r\n })\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.filterHandler.setInitialFilterRequest();\r\n }\r\n\r\n formLoad(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.loadGridDataOnFormLoad(this.filterHandler.getInitialFilterRequest());\r\n if (this.filterHandler.hasNonEmptyCustomProperties(this.filterHandler.getInitialFilterRequest())) {\r\n this.htmlHelperService.clickButtonByTitle(AppSelector, ComponentSelectors.ApplicationListForm.ApplicationList, FilterQuestionLabels.ApplicationListForm);\r\n }\r\n }\r\n\r\n filterData(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ApplicationListForm.applicationSearch:\r\n case QuestionCodes.ApplicationListForm.applicationFilter: {\r\n this.loadGridData(this.filterHandler.saveFilterRequest(event.action));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n dialogButtonClicked(event: any): void {\r\n // No dialog buttons are implemented in this dashboard\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ApplicationListForm.applicationPlaceholder: {\r\n switch (event.event.type) {\r\n case FormActions.ApplicationListForm.View:\r\n case FormActions.ApplicationListForm.Edit: {\r\n this.router.navigate(['/', RouteConstants.application.prefix, event.event.data.id]);\r\n break;\r\n }\r\n case FormActions.ApplicationListForm.ManageEnvironments: {\r\n this.router.navigate(['/', RouteConstants.applicationDashboard.prefix, event.event.data.id]);\r\n break;\r\n }\r\n case FormActions.ApplicationListForm.Delete: {\r\n const entity = event.event.data;\r\n this.deleteEntity(\r\n entity.id,\r\n entity.name,\r\n ApiEndpoints.application.delete,\r\n PopupCodes.ApplicationListForm.DeleteConfirmation,\r\n PopupCodes.ApplicationListForm.DeleteSuccess);\r\n break;\r\n }\r\n case FormActions.ApplicationListForm.Custom: {\r\n switch (event.event.data.buttonType) {\r\n case FormCustomActions.ApplicationListForm.Add: {\r\n this.router.navigate(['/', RouteConstants.application.prefix]);\r\n break;\r\n }\r\n case FormCustomActions.ApplicationListForm.BulkExport: {\r\n const applicationExportToDataTablesRequest = this.getApplicationExportToDataTablesRequest();\r\n this.excelExportService.exportApplicationsToXlsx(applicationExportToDataTablesRequest);\r\n break;\r\n }\r\n case FormCustomActions.ApplicationListForm.BulkImport: {\r\n this.importApplicationsFromXlsx();\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n importApplicationsFromXlsx(): void {\r\n this.excelImportService.importApplicationsFromXlsx()\r\n .pipe(take(1))\r\n .subscribe(excelImportResult => {\r\n if (!excelImportResult.isCancelled) {\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n }\r\n });\r\n }\r\n\r\n private getApplicationExportToDataTablesRequest(): ExportToDataTablesRequest {\r\n const entities = this.getQuestionValue(\r\n this.baseForm.model,\r\n NavTabNumbers.ApplicationListForm.applications,\r\n PageNumbers.ApplicationListForm.applications,\r\n SectionCodes.ApplicationListForm.application,\r\n QuestionCodes.ApplicationListForm.applicationPlaceholder);\r\n const entityIds = entities.map(entity => entity.id);\r\n const applicationExportToDataTablesRequest: ExportToDataTablesRequest = { entityIds };\r\n return applicationExportToDataTablesRequest;\r\n }\r\n}\r\n","\r\n\r\n","import { Component } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { NgRecaptcha3Service } from 'ng-recaptcha3';\r\n\r\nimport { CoreService, DataService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport { ComponentSelectors, PopupCodes } from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys } from '../../constants/api-endpoints.constants';\r\n\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { FormDataService } from '../../services/form-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ApplicationUserService } from '../../services/application-user-service';\r\nimport { FormatHtmlDetailsService } from '../../services/format-html-details-service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseApplicationUserComponent } from '../base-application-user-component/base-application-user-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.UserForm.UserRegistration,\r\n templateUrl: './application-user-registration.component.html'\r\n})\r\nexport class ApplicationUserRegistrationComponent extends BaseApplicationUserComponent {\r\n\r\n constructor(\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n protected route: ActivatedRoute,\r\n protected recaptchaService: NgRecaptcha3Service,\r\n protected errorService: ErrorService,\r\n protected coreService: CoreService,\r\n protected dataService: DataService,\r\n protected dialogService: DialogService,\r\n protected spinnerService: SpinnerService,\r\n protected appDataService: AppDataService,\r\n protected formDataService: FormDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected applicationUserService: ApplicationUserService,\r\n protected formatHtmlDetailsService: FormatHtmlDetailsService,\r\n protected userProfileService: UserProfileService) {\r\n\r\n super(\r\n componentDeactivationService,\r\n router,\r\n route,\r\n recaptchaService,\r\n errorService,\r\n coreService,\r\n dataService,\r\n dialogService,\r\n spinnerService,\r\n appDataService,\r\n formDataService,\r\n dialogHelperService,\r\n htmlHelperService,\r\n applicationUserService,\r\n formatHtmlDetailsService,\r\n userProfileService);\r\n\r\n this.settings = {\r\n isMyApps: false,\r\n hasAnonymousAccess: true,\r\n\r\n draftModeEndpointKey: ApiEndpointKeys.getUserRegistrationDraftConfigAndResponse,\r\n editModeEndpointKey: '',\r\n insertModeEndpointKey: ApiEndpointKeys.getUserRegistrationConfigAndResponse,\r\n\r\n getIdForDraftMode: (paramMap, navigationState) => navigationState?.draftId,\r\n getIdForEditMode: (paramMap, navigationState) => '',\r\n getIdForInsertMode: (paramMap, navigationState) => paramMap.get('id'),\r\n\r\n getIsDraftMode: (paramMap, navigationState) => !!navigationState?.draftId,\r\n getIsEditMode: (paramMap, navigationState) => false,\r\n\r\n getIsEmailReadOnly: (isDraftMode, isEditMode) => true,\r\n\r\n getApplicationUserId: (event, navigationState, isDraftMode, isEditMode) => '',\r\n getApplicationUserRegistrationId: (event, navigationState, isDraftMode, isEditMode) => isDraftMode ? navigationState?.applicationUserRegistrationId : event.id,\r\n\r\n navigateOnCancel: () => this.navigate(['/']),\r\n navigateAfterSave: () => this.navigate(['/'], true),\r\n\r\n saveSuccessfulPopup: PopupCodes.UserForm.SaveSuccessfulRegistration,\r\n customErrorPopups: null,\r\n\r\n showUserRequestDetailsEndpoint: '',\r\n withdrawUserRequestEndpoint: '',\r\n\r\n componentSelector: ComponentSelectors.UserForm.UserRegistration\r\n };\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { NgRecaptcha3Service } from 'ng-recaptcha3';\r\n\r\nimport { CardSetTransformationService, CoreService, DataService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport { AppDataKeys, ComponentSelectors, PopupCodes, ReadOnlyAccessPageActionButtons } from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates, Versions } from '../../constants/templates.constants';\r\n\r\nimport { UserVerificationSaveRequest } from '../../interfaces/user-verification-save-request.interface';\r\nimport { UserVerificationSaveResult } from '../../interfaces/user-verification-save-result.interface';\r\n\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\n\r\nimport { BaseDetailComponent } from '../base-detail-component/base-detail-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.UserVerificationForm.UserVerification,\r\n templateUrl: './application-user-verification.component.html'\r\n})\r\nexport class ApplicationUserVerificationComponent extends BaseDetailComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n id = '';\r\n formServiceEndpoint: string = ApiEndpointKeys.getFormConfig;\r\n templateId: number = Templates.userVerification;\r\n versionNo: number = Versions.latest;\r\n activeDialog: string;\r\n\r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n private coreService: CoreService,\r\n private errorService: ErrorService,\r\n private dataService: DataService,\r\n private spinnerService: SpinnerService,\r\n private recaptchaService: NgRecaptcha3Service) {\r\n super(dialogService, appDataService, dialogHelperService, htmlHelperService, componentDeactivationService, router);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.coreService.applicationFunctions['canSave'] = () => this.isFormEditable;\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel(null);\r\n }\r\n\r\n formLoaded(event: any) {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n const recaptchaSiteKey = this.appDataService.getAppData(AppDataKeys.googleRecaptchaSiteKey);\r\n this.recaptchaService.init(recaptchaSiteKey).then(status => {\r\n console.log('reCAPTCHA service init: ' + status);\r\n });\r\n\r\n this.isFormEditable = !!event?.isFormEditable;\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.UserVerificationForm);\r\n }\r\n\r\n save(event: any) {\r\n this.recaptchaService.getToken().then(\r\n token => {\r\n const saveDataRequest: UserVerificationSaveRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.id,\r\n response: event.model,\r\n expectedLastUpdateTime: event.lastUpdatedTime,\r\n isSubmit: false,\r\n recaptchaToken: token\r\n }\r\n if (!event.isFormValid) {\r\n this.baseForm.markAllFieldsAsTouched();\r\n if (!this.baseForm.fields[0]?.formControl.valid) {\r\n this.baseForm.showValidationSummary(true);\r\n this.dialogService.showDialog(PopupCodes.Common.ValidationError);\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n },\r\n error => {\r\n console.log('reCAPTCHA service getToken error: ' + error);\r\n });\r\n }\r\n\r\n saveData(request: UserVerificationSaveRequest) {\r\n this.spinnerService.showSpinner();\r\n this.dataService.saveData(ApiEndpoints.applicationUser.verifyUserRegistration, request)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe((data: UserVerificationSaveResult) => {\r\n this.spinnerService.hideSpinner();\r\n this.activeDialog = PopupCodes.UserVerificationForm.VerificationCompleted;\r\n this.dialogService.showDialog(this.activeDialog);\r\n });\r\n }\r\n\r\n cancel(event: any) {\r\n this.navigateBackToLandingPage();\r\n }\r\n\r\n dialogSubmitted(event: any) {\r\n if (this.activeDialog === PopupCodes.UserVerificationForm.VerificationCompleted) {\r\n this.navigateBackToLandingPage(true);\r\n }\r\n }\r\n\r\n private navigateBackToLandingPage(ignoreUnsavedChanges = false): void {\r\n this.navigate(['/'], ignoreUnsavedChanges);\r\n }\r\n}\r\n","\r\n\r\n","import { Component } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { NgRecaptcha3Service } from 'ng-recaptcha3';\r\n\r\nimport { CoreService, DataService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport { RouteConstants } from '../../constants/route.constants';\r\nimport { ComponentSelectors, PopupCodes } from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\n\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { FormDataService } from '../../services/form-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ApplicationUserService } from '../../services/application-user-service';\r\nimport { FormatHtmlDetailsService } from '../../services/format-html-details-service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseApplicationUserComponent } from '../base-application-user-component/base-application-user-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.UserForm.User,\r\n templateUrl: './application-user.component.html'\r\n})\r\nexport class ApplicationUserComponent extends BaseApplicationUserComponent {\r\n\r\n constructor(\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n protected route: ActivatedRoute,\r\n protected recaptchaService: NgRecaptcha3Service,\r\n protected errorService: ErrorService,\r\n protected coreService: CoreService,\r\n protected dataService: DataService,\r\n protected dialogService: DialogService,\r\n protected spinnerService: SpinnerService,\r\n protected appDataService: AppDataService,\r\n protected formDataService: FormDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected applicationUserService: ApplicationUserService,\r\n protected formatHtmlDetailsService: FormatHtmlDetailsService,\r\n protected userProfileService: UserProfileService) {\r\n\r\n super(\r\n componentDeactivationService,\r\n router,\r\n route,\r\n recaptchaService,\r\n errorService,\r\n coreService,\r\n dataService,\r\n dialogService,\r\n spinnerService,\r\n appDataService,\r\n formDataService,\r\n dialogHelperService,\r\n htmlHelperService,\r\n applicationUserService,\r\n formatHtmlDetailsService,\r\n userProfileService);\r\n\r\n this.settings = {\r\n isMyApps: false,\r\n hasAnonymousAccess: false,\r\n\r\n draftModeEndpointKey: ApiEndpointKeys.getApplicationUserDraftConfigAndResponse,\r\n editModeEndpointKey: ApiEndpointKeys.getApplicationUserConfigAndResponse,\r\n insertModeEndpointKey: ApiEndpointKeys.getApplicationUserEmptyConfigAndResponse,\r\n\r\n getIdForDraftMode: (paramMap, navigationState) => navigationState?.draftId,\r\n getIdForEditMode: (paramMap, navigationState) => paramMap.get('id'),\r\n getIdForInsertMode: (paramMap, navigationState) => '',\r\n\r\n getIsDraftMode: (paramMap, navigationState) => !!navigationState?.draftId,\r\n getIsEditMode: (paramMap, navigationState) => !!paramMap.get('id'),\r\n\r\n getIsEmailReadOnly: (isDraftMode, isEditMode) => isEditMode,\r\n\r\n getApplicationUserId: (event, navigationState, isDraftMode, isEditMode) => isDraftMode ? navigationState?.applicationUserId : (isEditMode ? event.id : ''),\r\n getApplicationUserRegistrationId: (event, navigationState, isDraftMode, isEditMode) => '',\r\n\r\n navigateOnCancel: () => this.navigate(['/', RouteConstants.user.list]),\r\n navigateAfterSave: () => this.navigate(['/', RouteConstants.user.list], true),\r\n\r\n saveSuccessfulPopup: PopupCodes.UserForm.SaveSuccessful,\r\n customErrorPopups: null,\r\n\r\n showUserRequestDetailsEndpoint: ApiEndpoints.userRequest.getDetails,\r\n withdrawUserRequestEndpoint: ApiEndpoints.userRequest.withdraw,\r\n\r\n componentSelector: ComponentSelectors.UserForm.User\r\n };\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { CardSetTransformationService, CoreService, DataService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport { ComponentSelectors, PopupCodes, ReadOnlyAccessPageActionButtons, ServerErrorPopupCodes } from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\nimport { Templates, Versions } from '../../constants/templates.constants';\r\n\r\nimport { SaveRequest } from '../../interfaces/save-request.interface';\r\nimport { SaveResult } from '../../interfaces/save-result.interface';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { FormDataService } from '../../services/form-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseDetailComponent } from '../base-detail-component/base-detail-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.ApplicationForm.Application,\r\n templateUrl: './application.component.html'\r\n})\r\nexport class ApplicationComponent extends BaseDetailComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n id = '';\r\n formServiceEndpoint: string = ApiEndpointKeys.getFormConfig;\r\n templateId: number = Templates.application;\r\n versionNo: number = Versions.latest;\r\n activeDialog: string;\r\n editing = false;\r\n\r\n private isViewModeForDetails = true;\r\n\r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n private route: ActivatedRoute,\r\n private errorService: ErrorService,\r\n private coreService: CoreService,\r\n private dataService: DataService,\r\n private spinnerService: SpinnerService,\r\n private formDataService: FormDataService,\r\n private userProfileService: UserProfileService) {\r\n super(dialogService, appDataService, dialogHelperService, htmlHelperService, componentDeactivationService, router);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.route.paramMap.subscribe((paramMap: ParamMap) => {\r\n const id = paramMap.get('id');\r\n if (id) {\r\n this.id = id;\r\n this.formServiceEndpoint = ApiEndpointKeys.getApplicationConfigAndResponse;\r\n this.editing = true;\r\n }\r\n });\r\n\r\n const isEditingFunctionalRole = (sectionIndex: number) => this.formDataService.applicationFormIsEditingFunctionalRole(this.baseForm.model, sectionIndex);\r\n const isEditingReviewDefinition = (sectionIndex: number) => this.formDataService.applicationFormIsEditingReviewDefinition(this.baseForm.model, sectionIndex);\r\n\r\n this.coreService.conditionFunctions['isEditing'] = () =>\r\n this.editing;\r\n this.coreService.conditionFunctions['isFunctionalRoleCodeReadOnly'] = (pageIndex: number, sectionIndex: number) =>\r\n isEditingFunctionalRole(sectionIndex);\r\n this.coreService.conditionFunctions['isReviewDefinitionNameReadOnly'] = (pageIndex: number, sectionIndex: number) =>\r\n isEditingReviewDefinition(sectionIndex);\r\n this.coreService.conditionFunctions['isReviewDefinitionEnvironmentReadOnly'] = (pageIndex: number, sectionIndex: number) =>\r\n isEditingReviewDefinition(sectionIndex);\r\n\r\n this.coreService.applicationFunctions['canSave'] = () => this.isFormEditable;\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel(null);\r\n this.coreService.applicationFunctions['manageEnvironments'] = () => this.manageEnvironments(null);\r\n\r\n this.formDataService.configureApplicationFormViewMode(\r\n () => this.baseForm.fields,\r\n () => this.isFormEditable,\r\n () => this.editing,\r\n (enabled: boolean) => this.isViewModeForDetails = enabled,\r\n () => this.isViewModeForDetails);\r\n\r\n this.formDataService.configureApplicationFormRepeatingSection(\r\n () => this.isFormEditable);\r\n }\r\n\r\n formLoaded(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.isFormEditable = !!event?.isFormEditable;\r\n if (!this.isFormEditable) {\r\n // If the form is being shown as read-only, then switch to Edit mode (all fields will be disabled anyway), because View mode does not display all fields.\r\n this.isViewModeForDetails = false;\r\n }\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.ApplicationForm);\r\n\r\n this.handlePostFormLoadActions(event);\r\n}\r\n\r\n save(event: any): void {\r\n const saveDataRequest: SaveRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.id,\r\n response: event.model,\r\n expectedLastUpdateTime: event.lastUpdatedTime,\r\n isSubmit: false\r\n }\r\n if (!event.isFormValid) {\r\n this.baseForm.markAllFieldsAsTouched();\r\n if (!this.baseForm.fields[0]?.formControl.valid) {\r\n this.baseForm.showValidationSummary(true);\r\n this.dialogService.showDialog(PopupCodes.Common.ValidationError);\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n\r\n private saveData(request: SaveRequest): void {\r\n this.spinnerService.showSpinner();\r\n this.dataService.saveData(ApiEndpoints.application.save, request)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe((data: SaveResult) => {\r\n this.spinnerService.hideSpinner();\r\n if (this.handleWarnings(request, data, r => this.saveData(r))) {\r\n return;\r\n }\r\n if (ServerErrorPopupCodes.SaveApplication.includes(data.message)) {\r\n this.activeDialog = data.message;\r\n }\r\n else {\r\n this.id = data.id;\r\n this.activeDialog = PopupCodes.ApplicationForm.SaveSuccessful;\r\n }\r\n this.dialogHelperService.showDialog(this.activeDialog, null, data.details);\r\n });\r\n }\r\n\r\n cancel(event: any): void {\r\n this.navigateBackToApplicationList();\r\n }\r\n\r\n manageEnvironments(event: any): void {\r\n this.navigateToApplicationDashboard();\r\n }\r\n\r\n dialogSubmitted(event: any): void {\r\n if (this.activeDialog === PopupCodes.ApplicationForm.SaveSuccessful) {\r\n this.navigateBackToApplicationList(true);\r\n }\r\n }\r\n\r\n private navigateBackToApplicationList(ignoreUnsavedChanges = false): void {\r\n this.navigate(['/', RouteConstants.application.list], ignoreUnsavedChanges);\r\n }\r\n\r\n private navigateToApplicationDashboard(ignoreUnsavedChanges = false): void {\r\n this.navigate(['/', RouteConstants.application.prefix, this.id, RouteConstants.application.applicationDashboardFragment], ignoreUnsavedChanges);\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { SpinnerService, DialogService, MessagePlaceholders, CardSetTransformationService } from 'dspx-core';\r\n\r\nimport {\r\n AppDataKeys,\r\n AppSelector,\r\n ComponentSelectors,\r\n DashboardNames,\r\n FilterQuestionCodes,\r\n FilterQuestionLabels,\r\n FormActions,\r\n FormCustomActions,\r\n NavTabNumbers,\r\n PageNumbers,\r\n PopupCodes,\r\n QuestionCodes,\r\n SectionCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates } from '../../constants/templates.constants';\r\nimport { UserRequestSource } from '../../constants/user-request-source';\r\n\r\nimport { ApprovalGridFilterRequest } from '../../interfaces/approval-grid-filter-request.interface';\r\nimport { UserRequestUniqueKey } from '../../interfaces/user-request-unique-key.interface';\r\nimport { GetUserRequestDetailsResponse } from '../../interfaces/get-user-request-details-response.interface';\r\nimport { ExportToDataTablesRequest } from '../../interfaces/export-to-data-tables-request.interface';\r\n\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { ExcelExportService } from '../../services/excel-export.service';\r\nimport { FormatHtmlDetailsService } from '../../services/format-html-details-service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseListComponent } from '../base-list-component/base-list.component';\r\n\r\ntype BulkOperationSettings = {\r\n additionalFields?: any,\r\n apiEndpoint: string,\r\n completionPopupCode: string\r\n};\r\n\r\n@Component({\r\n selector: ComponentSelectors.ApprovalListForm.ApprovalList,\r\n templateUrl: './approval-list.component.html'\r\n})\r\nexport class ApprovalListComponent extends BaseListComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n templateId: number = Templates.approvalList;\r\n\r\n private activeDialog: string;\r\n \r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService,\r\n private errorService: ErrorService,\r\n private excelExportService: ExcelExportService,\r\n private formatHtmlDetailsService: FormatHtmlDetailsService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(\r\n route,\r\n router,\r\n spinnerService,\r\n dialogService,\r\n responseParserService,\r\n htmlHelperService,\r\n appDataService);\r\n\r\n this.initialise(\r\n [NavTabNumbers.ApprovalListForm.approvals, PageNumbers.ApprovalListForm.approvals],\r\n () => ApiEndpoints.dashboard.getUserAccessRequestsForApproval,\r\n {\r\n getFilterName: () => DashboardNames.ApprovalList,\r\n sectionPath: [NavTabNumbers.ApprovalListForm.approvals, PageNumbers.ApprovalListForm.approvals, SectionCodes.ApprovalListForm.approvals],\r\n searchQuestionCode: QuestionCodes.ApprovalListForm.approvalSearch,\r\n customQuestionCode: QuestionCodes.ApprovalListForm.approvalFilter,\r\n customModelVisibleKeys: ['type', 'application', 'environment', 'role', 'organisation', 'escalationLevels'],\r\n getFilterRequestFromModels: (searchModel: any, customModel: any) => ({\r\n searchTerm: searchModel,\r\n type: customModel?.[FilterQuestionCodes.ApprovalListForm.approvalFilterRequestType],\r\n application: customModel?.[FilterQuestionCodes.ApprovalListForm.approvalFilterApplication],\r\n environment: customModel?.[FilterQuestionCodes.ApprovalListForm.approvalFilterEnvironment],\r\n roles: customModel?.[FilterQuestionCodes.ApprovalListForm.approvalFilterFunctionalRole],\r\n organisation: customModel?.[FilterQuestionCodes.ApprovalListForm.approvalFilterOrganisation],\r\n escalationLevels: customModel?.[FilterQuestionCodes.ApprovalListForm.approvalFilterEscalationLevel]\r\n }),\r\n getDefaultFilterRequest: () => null,\r\n progressiveModelUpdate: {\r\n filterQuestionPath: [NavTabNumbers.ApprovalListForm.approvals, PageNumbers.ApprovalListForm.approvals, SectionCodes.ApprovalListForm.approvals, QuestionCodes.ApprovalListForm.approvalFilter],\r\n filterSubQuestionCodeAncestorGroup: [FilterQuestionCodes.ApprovalListForm.approvalFilterApplication],\r\n filterSubQuestionCodeDescendantGroups: [[FilterQuestionCodes.ApprovalListForm.approvalFilterEnvironment], [FilterQuestionCodes.ApprovalListForm.approvalFilterFunctionalRole]]\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.filterHandler.setInitialFilterRequest();\r\n }\r\n\r\n formLoad(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.loadGridDataOnFormLoad(this.filterHandler.getInitialFilterRequest());\r\n if (this.filterHandler.hasNonEmptyCustomProperties(this.filterHandler.getInitialFilterRequest())) {\r\n this.htmlHelperService.clickButtonByTitle(AppSelector, ComponentSelectors.ApprovalListForm.ApprovalList, FilterQuestionLabels.ApprovalListForm);\r\n }\r\n }\r\n\r\n filterData(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ApprovalListForm.approvalSearch:\r\n case QuestionCodes.ApprovalListForm.approvalFilter: {\r\n this.loadGridData(this.filterHandler.saveFilterRequest(event.action));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n dialogButtonClicked(event: any): void {\r\n\r\n const activeDialog = this.activeDialog;\r\n delete this.activeDialog;\r\n\r\n switch (activeDialog) {\r\n case PopupCodes.ApprovalListForm.RequestDetails: {\r\n // No action needed on submission of this dialog\r\n break;\r\n }\r\n case PopupCodes.ApprovalListForm.ApprovalsApprovalConfirmation: {\r\n this.approveAccessRequests(event?.accessRequests);\r\n break;\r\n }\r\n case PopupCodes.ApprovalListForm.ApprovalsRejectionConfirmation: {\r\n this.rejectAccessRequests(event?.accessRequests, event?.reasonForRejection);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n this.registerSelectedItems(event);\r\n switch (event.field.key) {\r\n case QuestionCodes.ApprovalListForm.approvalPlaceholder: {\r\n switch (event.event.type) {\r\n case FormActions.ApprovalListForm.Details: {\r\n const request = event.event.data;\r\n const requestUniqueKey = { userRequestSource: UserRequestSource.Access, id: request.id };\r\n this.showUserRequestDetails(requestUniqueKey);\r\n break;\r\n }\r\n case FormActions.ApprovalListForm.Custom: {\r\n switch (event.event.data.buttonType) {\r\n case FormCustomActions.ApprovalListForm.Approve: {\r\n const selectedItems = this.getSelectedItems(event);\r\n this.confirmApproveAccessRequests(selectedItems);\r\n break;\r\n }\r\n case FormCustomActions.ApprovalListForm.Reject: {\r\n const selectedItems = this.getSelectedItems(event);\r\n this.confirmRejectAccessRequests(selectedItems);\r\n break;\r\n }\r\n case FormCustomActions.ApprovalListForm.BulkExport: {\r\n const approvalExportToDataTablesRequest = this.getApprovalExportToDataTablesRequest();\r\n this.excelExportService.exportApprovalsToXlsx(approvalExportToDataTablesRequest);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private showUserRequestDetails(requestUniqueKey: UserRequestUniqueKey): void {\r\n this.appDataService.post(ApiEndpoints.userRequest.getDetails, requestUniqueKey)\r\n .pipe(take(1))\r\n .subscribe((response: GetUserRequestDetailsResponse) => {\r\n this.activeDialog = PopupCodes.ApprovalListForm.RequestDetails;\r\n this.showSimpleInformationPopup(this.activeDialog, { message: this.formatHtmlDetailsService.formatUserRequestDetailsHtml(response) });\r\n });\r\n }\r\n\r\n private confirmApproveAccessRequests(accessRequests: any[]): void {\r\n this.confirmBulkOperation(PopupCodes.ApprovalListForm.ApprovalsApprovalConfirmation, accessRequests);\r\n }\r\n\r\n private confirmRejectAccessRequests(accessRequests: any[]): void {\r\n this.confirmBulkOperation(PopupCodes.ApprovalListForm.ApprovalsRejectionConfirmation, accessRequests);\r\n }\r\n\r\n private confirmBulkOperation(popupCode: string, accessRequests: any[]): void {\r\n\r\n if (accessRequests.length === 0) {\r\n this.dialogService.showDialog(PopupCodes.ApprovalListForm.ApprovalsNoneSelected);\r\n return;\r\n }\r\n\r\n const maxBulkOperationItemCount = this.appDataService.getAppData(AppDataKeys.maxBulkOperationItemCount);\r\n if (accessRequests.length > parseInt(maxBulkOperationItemCount, 10)) {\r\n this.dialogService.showDialog(PopupCodes.ApprovalListForm.ApprovalsTooManyItems, null, { maxBulkOperationItemCount });\r\n return;\r\n }\r\n\r\n const popupModel = { accessRequests };\r\n const popupMessagePlaceholders = { itemCount: accessRequests.length.toString() };\r\n this.openDialog(popupCode, popupModel, popupMessagePlaceholders);\r\n }\r\n\r\n private openDialog(popupCode: string, popupModel?: any, popupMessagePlaceholders?: MessagePlaceholders): void {\r\n this.activeDialog = popupCode;\r\n this.dialogService.showDialog(popupCode, popupModel, popupMessagePlaceholders);\r\n };\r\n\r\n private approveAccessRequests(accessRequests: any[]): void {\r\n const settings: BulkOperationSettings = {\r\n apiEndpoint: ApiEndpoints.approval.approve,\r\n completionPopupCode: PopupCodes.ApprovalListForm.ApprovalsApprovalCompleted\r\n };\r\n this.performBulkOperation(accessRequests, settings);\r\n }\r\n\r\n private rejectAccessRequests(accessRequests: any[], reasonForRejection: string): void {\r\n const settings: BulkOperationSettings = {\r\n additionalFields: { reasonForRejection },\r\n apiEndpoint: ApiEndpoints.approval.reject,\r\n completionPopupCode: PopupCodes.ApprovalListForm.ApprovalsRejectionCompleted\r\n };\r\n this.performBulkOperation(accessRequests, settings);\r\n }\r\n\r\n private performBulkOperation(\r\n accessRequests: any[],\r\n settings: BulkOperationSettings): void {\r\n\r\n const accessRequestIds = accessRequests.map(accessRequest => accessRequest.id);\r\n this.appDataService.post(settings.apiEndpoint, { accessRequestIds, ...settings.additionalFields })\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe(() => {\r\n const onComplete = () => this.dialogService.showDialog(settings.completionPopupCode);\r\n this.loadGridDataAfterSave(this.filterHandler.getFilterRequest(), onComplete);\r\n });\r\n }\r\n\r\n private getApprovalExportToDataTablesRequest(): ExportToDataTablesRequest {\r\n const entities = this.getQuestionValue(\r\n this.baseForm.model,\r\n NavTabNumbers.ApprovalListForm.approvals,\r\n PageNumbers.ApprovalListForm.approvals,\r\n SectionCodes.ApprovalListForm.approvals,\r\n QuestionCodes.ApprovalListForm.approvalPlaceholder);\r\n const entityIds = entities.map(entity => entity.id);\r\n const approvalExportToDataTablesRequest: ExportToDataTablesRequest = { entityIds };\r\n return approvalExportToDataTablesRequest;\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { NgRecaptcha3Service } from 'ng-recaptcha3';\r\n\r\nimport { CardSetTransformationService, CoreService, DataService, DialogResult, DialogService, RepeaterElementType, SpinnerService } from 'dspx-core';\r\n\r\nimport {\r\n AppDataKeys,\r\n AppSelector,\r\n FormActions,\r\n NavTabNumbers,\r\n OptionSetCodes,\r\n PageNumbers,\r\n PopupCodes,\r\n QuestionCodes,\r\n ReadOnlyAccessPageActionButtons,\r\n SectionCodes,\r\n ServerCallDebounceTimeMs,\r\n ServerErrorPopupCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates, Versions } from '../../constants/templates.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\nimport { RequestSaveResultStatus } from '../../constants/request-save-result-status';\r\n\r\nimport { UserSaveRequest } from '../../interfaces/user-save-request.interface';\r\nimport { UserSaveResult } from '../../interfaces/user-save-result.interface';\r\nimport { UserOrganisationChangeRequest } from '../../interfaces/user-organisation-change-request.interface';\r\nimport { UserOrganisationChangeResponse } from '../../interfaces/user-organisation-change-response.interface';\r\nimport { UserOrganisation } from '../../interfaces/user-organisation.interface';\r\nimport { UserRequestUniqueKey } from '../../interfaces/user-request-unique-key.interface';\r\nimport { GetUserRequestDetailsResponse } from '../../interfaces/get-user-request-details-response.interface';\r\nimport { GetInternalUserProfileRequest } from '../../interfaces/get-internal-user-profile-request.interface';\r\nimport { GetInternalUserProfileResponse } from '../../interfaces/get-internal-user-profile-response.interface';\r\nimport { WithdrawUserRequestResponse } from '../../interfaces/withdraw-user-request-response.interface';\r\nimport { AccessDefinitionsByRequiredProperty } from '../../interfaces/access-definitions-by-required-property.interface';\r\nimport { AccessDefinitionAdditionalInfo } from '../../interfaces/access-definition-additional-info.interface';\r\nimport { PopupInfo } from '../../interfaces/popup-info.interface';\r\n\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { FormDataService } from '../../services/form-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ApplicationUserService } from '../../services/application-user-service';\r\nimport { FormatHtmlDetailsService } from '../../services/format-html-details-service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseDetailComponent, ReadOnlyGrid } from '../base-detail-component/base-detail-component';\r\n\r\ntype NavigationState = { [k: string]: any; };\r\ntype GetModeIdFunction = (paramMap: ParamMap, navigationState: NavigationState) => string;\r\ntype GetIsModeFunction = (paramMap: ParamMap, navigationState: NavigationState) => boolean;\r\ntype GetIsEmailReadOnlyFunction = (isDraftMode: boolean, isEditMode: boolean) => boolean;\r\ntype GetIdAfterFormLoadFunction = (event: any, navigationState: NavigationState, isDraftMode: boolean, isEditMode: boolean) => string;\r\ntype NavigateFunction = () => void;\r\n\r\ntype Settings =\r\n{\r\n isMyApps: boolean;\r\n hasAnonymousAccess: boolean;\r\n\r\n draftModeEndpointKey: string;\r\n editModeEndpointKey: string;\r\n insertModeEndpointKey: string;\r\n\r\n getIdForDraftMode: GetModeIdFunction;\r\n getIdForEditMode: GetModeIdFunction;\r\n getIdForInsertMode: GetModeIdFunction;\r\n\r\n getIsDraftMode: GetIsModeFunction;\r\n getIsEditMode: GetIsModeFunction;\r\n\r\n getIsEmailReadOnly: GetIsEmailReadOnlyFunction;\r\n\r\n getApplicationUserId: GetIdAfterFormLoadFunction;\r\n getApplicationUserRegistrationId: GetIdAfterFormLoadFunction;\r\n\r\n navigateOnCancel: NavigateFunction;\r\n navigateAfterSave: NavigateFunction;\r\n\r\n saveSuccessfulPopup: string;\r\n customErrorPopups: Map;\r\n\r\n showUserRequestDetailsEndpoint: string;\r\n withdrawUserRequestEndpoint: string;\r\n\r\n componentSelector: string;\r\n};\r\n\r\n@Component({ template: '' })\r\nexport class BaseApplicationUserComponent extends BaseDetailComponent implements OnInit {\r\n\r\n id: string;\r\n formServiceEndpoint: string;\r\n\r\n templateId: number = Templates.user;\r\n versionNo: number = Versions.latest;\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n protected settings: Settings;\r\n\r\n private activeDialog: string;\r\n\r\n private isDraftMode: boolean;\r\n private isEditMode: boolean;\r\n\r\n private isViewModeForUserProfile: boolean;\r\n \r\n private internalDomains: Set = new Set();\r\n private email: string;\r\n private isInternalUser: boolean;\r\n private handleEmailChangeDebounceTimeout: ReturnType;\r\n\r\n private accessDefinitionCodesByRequiredProperty: AccessDefinitionsByRequiredProperty = {\r\n requiringReasonForRequest: new Set(),\r\n requiringUserOrganisationRoleType: new Set()\r\n };\r\n private additionalInfoByAccessDefinitionCode: Map = new Map();\r\n private allowLegacyAccountOperations: boolean;\r\n\r\n private organisationUpdateIsNotAllowed: boolean;\r\n private organisation: UserOrganisation = { hasOrganisation: null, optionalOrganisation: null, organisationId: null };\r\n private applicationBeingEdited: string;\r\n private environmentBeingEdited: string\r\n\r\n private draftId: string;\r\n private applicationUserId: string;\r\n private applicationUserRegistrationId: string;\r\n \r\n private navigationState: NavigationState;\r\n\r\n private changeUserOrganisationEndpoint: string;\r\n private saveEndpoint: string;\r\n\r\n private ldapNotFederatedAccountSignInUrl: string;\r\n\r\n private readOnlyGridControlGroupNames = {\r\n userRequests: 'userRequestVisibility',\r\n appSupportAssignments: 'appSupportAssignmentVisibility',\r\n appAdministratorAssignments: 'appAdministratorAssignmentVisibility',\r\n orgAuthorityAssignments: 'orgAuthorityAssignmentVisibility',\r\n orgSupportAssignments: 'orgSupportAssignmentVisibility'\r\n };\r\n\r\n constructor(\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n protected route: ActivatedRoute,\r\n protected recaptchaService: NgRecaptcha3Service,\r\n protected errorService: ErrorService,\r\n protected coreService: CoreService,\r\n protected dataService: DataService,\r\n protected dialogService: DialogService,\r\n protected spinnerService: SpinnerService,\r\n protected appDataService: AppDataService,\r\n protected formDataService: FormDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected applicationUserService: ApplicationUserService,\r\n protected formatHtmlDetailsService: FormatHtmlDetailsService,\r\n protected userProfileService: UserProfileService) {\r\n\r\n super(dialogService, appDataService, dialogHelperService, htmlHelperService, componentDeactivationService, router);\r\n\r\n this.navigationState = this.router.getCurrentNavigation()?.extras?.state;\r\n\r\n this.readOnlyGridRegistry = {\r\n [this.readOnlyGridControlGroupNames.userRequests]: new ReadOnlyGrid(),\r\n [this.readOnlyGridControlGroupNames.appSupportAssignments]: new ReadOnlyGrid(),\r\n [this.readOnlyGridControlGroupNames.appAdministratorAssignments]: new ReadOnlyGrid(),\r\n [this.readOnlyGridControlGroupNames.orgAuthorityAssignments]: new ReadOnlyGrid(),\r\n [this.readOnlyGridControlGroupNames.orgSupportAssignments]: new ReadOnlyGrid()\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n this.changeUserOrganisationEndpoint = this.settings.hasAnonymousAccess\r\n ? ApiEndpoints.applicationUser.changeUserOrganisationAnonymous\r\n : ApiEndpoints.applicationUser.changeUserOrganisation;\r\n\r\n this.saveEndpoint = this.settings.hasAnonymousAccess\r\n ? ApiEndpoints.applicationUser.saveAnonymous\r\n : ApiEndpoints.applicationUser.save;\r\n\r\n if (!this.settings.hasAnonymousAccess) {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n }\r\n\r\n this.route.paramMap.subscribe((paramMap: ParamMap) => {\r\n const idForDraftMode = this.settings.getIdForDraftMode(paramMap, this.navigationState);\r\n const idForEditMode = this.settings.getIdForEditMode(paramMap, this.navigationState);\r\n const idForInsertMode = this.settings.getIdForInsertMode(paramMap, this.navigationState);\r\n\r\n const isDraftMode = this.settings.getIsDraftMode(paramMap, this.navigationState);\r\n const isEditMode = this.settings.getIsEditMode(paramMap, this.navigationState);\r\n\r\n this.draftId = idForDraftMode;\r\n this.isDraftMode = isDraftMode;\r\n this.isEditMode = isEditMode;\r\n\r\n if (isDraftMode) {\r\n // New or existing record after a reload due to organisation change\r\n this.setDirtyFlagAfterLoading();\r\n this.formServiceEndpoint = this.settings.draftModeEndpointKey;\r\n this.id = idForDraftMode;\r\n }\r\n else if (isEditMode) {\r\n // Existing record on first load\r\n this.resetDirtyFlagAfterLoading();\r\n this.formServiceEndpoint = this.settings.editModeEndpointKey;\r\n this.id = idForEditMode;\r\n }\r\n else {\r\n // New record on first load\r\n this.resetDirtyFlagAfterLoading();\r\n this.formServiceEndpoint = this.settings.insertModeEndpointKey;\r\n this.id = idForInsertMode;\r\n }\r\n });\r\n\r\n const isEditingAccessDefinition = (sectionIndex: number) =>\r\n this.formDataService.userFormIsEditingAccessDefinition(this.baseForm.model, sectionIndex);\r\n\r\n const showReasonForRequest = (sectionIndex: number) =>\r\n this.accessDefinitionCodesByRequiredProperty.requiringReasonForRequest.has(this.getAccessDefinitionCode(sectionIndex));\r\n const showUserOrganisationRoleType = (sectionIndex: number) =>\r\n this.accessDefinitionCodesByRequiredProperty.requiringUserOrganisationRoleType.has(this.getAccessDefinitionCode(sectionIndex)); \r\n\r\n this.coreService.conditionFunctions['isOrganisationReadOnly'] = () => this.organisationUpdateIsNotAllowed;\r\n this.coreService.conditionFunctions['isEmailReadOnly'] = () => this.settings.getIsEmailReadOnly(this.isDraftMode, this.isEditMode);\r\n this.coreService.conditionFunctions['isOtherEmailsReadOnly'] = () => true;\r\n this.coreService.conditionFunctions['isUserProfileReadOnly'] = () => this.isInternalUser;\r\n this.coreService.conditionFunctions['isLegacyUserProfileReadOnly'] = () => true;\r\n this.coreService.conditionFunctions['isEditing'] = () => this.isEditMode;\r\n this.coreService.conditionFunctions['isEditingAccessDefinition'] = (pageIndex: number, sectionIndex: number) => isEditingAccessDefinition(sectionIndex);\r\n this.coreService.conditionFunctions['showReasonForRequest'] = (args: string[]) => showReasonForRequest(parseInt(args[1]));\r\n this.coreService.conditionFunctions['showUserOrganisationRoleType'] = (args: string[]) => showUserOrganisationRoleType(parseInt(args[1])); \r\n this.coreService.conditionFunctions['shouldShowGridControl'] = (args: string[]) => this.shouldShowReadOnlyGrid(args[0], args[1]);\r\n\r\n this.coreService.applicationFunctions['canSave'] = () => this.isFormEditable;\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel(null);\r\n\r\n this.formDataService.configureUserFormViewMode(\r\n () => this.baseForm.fields,\r\n () => this.isFormEditable,\r\n () => this.isEditMode,\r\n (enabled: boolean) => this.isViewModeForUserProfile = enabled,\r\n () => this.isViewModeForUserProfile,\r\n () => this.allowLegacyAccountOperations,\r\n () => this.legacyAccountLogin(),\r\n () => this.legacyAccountReset());\r\n\r\n this.formDataService.configureUserFormReadOnlyGridViewMode(\r\n () => this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.userRequests),\r\n () => this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.appAdministratorAssignments),\r\n () => this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.appSupportAssignments),\r\n () => this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.orgAuthorityAssignments),\r\n () => this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.orgSupportAssignments));\r\n\r\n const isEditItemAllowed = (sectionIndex?: number) =>\r\n !isEditingAccessDefinition(sectionIndex)\r\n const isBrowseApplicationAllowed = (sectionIndex?: number) =>\r\n this.settings.isMyApps && isEditingAccessDefinition(sectionIndex)\r\n\r\n this.formDataService.configureUserFormRepeatingSection(\r\n () => this.isFormEditable,\r\n (sectionIndex: number) => isEditItemAllowed(sectionIndex),\r\n (sectionIndex: number) => isBrowseApplicationAllowed(sectionIndex),\r\n (sectionIndex: number) => this.browseApplication(sectionIndex),\r\n (sectionIndex: number, onComplete: (cancel: boolean) => void) => this.confirmRevokeUserAccess(sectionIndex, onComplete));\r\n\r\n this.ldapNotFederatedAccountSignInUrl = this.appDataService.getAppData(AppDataKeys.ldapNotFederatedAccountSignInUrl);\r\n }\r\n\r\n formLoaded(event: any): void {\r\n\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n if (this.settings.hasAnonymousAccess) {\r\n const recaptchaSiteKey = this.appDataService.getAppData(AppDataKeys.googleRecaptchaSiteKey);\r\n this.recaptchaService.init(recaptchaSiteKey).then(status => {\r\n console.log('reCAPTCHA service init: ' + status);\r\n });\r\n }\r\n\r\n this.isFormEditable = !!event?.isFormEditable;\r\n if (!this.isFormEditable) {\r\n // If the form is being shown as read-only, then switch to Edit mode (all fields will be disabled anyway), because View mode does not display all fields.\r\n this.isViewModeForUserProfile = false;\r\n\r\n // If the form is being shown as read-only, then toggle all read-only grids to \"show\" mode.\r\n this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.userRequests);\r\n this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.appAdministratorAssignments);\r\n this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.appSupportAssignments);\r\n this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.orgAuthorityAssignments);\r\n this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.orgSupportAssignments);\r\n }\r\n else if (this.isDraftMode) {\r\n // If it is new or existing record after a reload due to organisation change, then switch to Edit mode, because it was in Edit mode already before the reload.\r\n this.isViewModeForUserProfile = false;\r\n }\r\n else {\r\n this.isViewModeForUserProfile = true;\r\n }\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.UserForm);\r\n\r\n this.internalDomains = new Set(event.internalDomains ?? []);\r\n this.email = this.getEmailFromModel();\r\n this.isInternalUser = this.isInternalEmail(this.email);\r\n\r\n this.accessDefinitionCodesByRequiredProperty = {\r\n requiringReasonForRequest: new Set(event.accessDefinitionCodesByRequiredProperty?.requiringReasonForRequest ?? []),\r\n requiringUserOrganisationRoleType: new Set(event.accessDefinitionCodesByRequiredProperty?.requiringUserOrganisationRoleType ?? [])\r\n };\r\n this.additionalInfoByAccessDefinitionCode = new Map(Object.entries(event.additionalInfoByAccessDefinitionCode ?? {}));\r\n this.allowLegacyAccountOperations = event.allowLegacyAccountOperations;\r\n\r\n this.organisationUpdateIsNotAllowed = event.organisationUpdateIsNotAllowed;\r\n this.organisation = this.applicationUserService.getUserOrganisation(this.baseForm.model);\r\n\r\n this.applicationUserId = this.settings.getApplicationUserId(event, this.navigationState, this.isDraftMode, this.isEditMode);\r\n this.applicationUserRegistrationId = this.settings.getApplicationUserRegistrationId(event, this.navigationState, this.isDraftMode, this.isEditMode);\r\n\r\n event.popupCode = event.popupCode ? event.popupCode : this.navigationState?.popupCode;\r\n const onPopupClosed = (popupCode: string, dialogResult: DialogResult) => {\r\n switch (popupCode) {\r\n case PopupCodes.UserForm.CannotChangeOrganisation: {\r\n this.scrollToAccessDefinitionSection();\r\n break;\r\n }\r\n }\r\n }\r\n this.handlePostFormLoadActions(event, onPopupClosed);\r\n\r\n this.forceRenderAsync();\r\n }\r\n\r\n modelChanged(event: any): void {\r\n this.handleSingleCheckBoxChanges();\r\n this.handleOrganisationChange();\r\n this.handleEmailChangeWithDebounce();\r\n this.preSelectSingleEnvironmentAndRoleByUserSelection();\r\n }\r\n\r\n save(event: any): void {\r\n if (this.internalUserNotFound()) {\r\n this.showInternalUserProfileNotification();\r\n return;\r\n }\r\n const saveDataRequest: UserSaveRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.applicationUserId,\r\n response: event.model,\r\n expectedLastUpdateTime: event.lastUpdatedTime,\r\n isSubmit: false,\r\n organisationId: this.organisation.organisationId,\r\n isMyApps: this.settings.isMyApps,\r\n recaptchaToken: null, // to be set later\r\n applicationUserRegistrationId: this.applicationUserRegistrationId\r\n }\r\n if (!event.isFormValid) {\r\n this.baseForm.markAllFieldsAsTouched();\r\n if (!this.baseForm.fields[0]?.formControl.valid) {\r\n this.baseForm.showValidationSummary(true);\r\n this.dialogService.showDialog(PopupCodes.Common.ValidationError);\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n\r\n cancel(event: any): void {\r\n this.settings.navigateOnCancel();\r\n }\r\n\r\n dialogSubmitted(event: any): void {\r\n\r\n const activeDialog = this.activeDialog;\r\n delete this.activeDialog;\r\n\r\n switch (activeDialog) {\r\n case PopupCodes.UserForm.RequestDetails: {\r\n // No action needed on submission of this dialog\r\n break;\r\n }\r\n case PopupCodes.UserForm.NoUserAccessDefinitions:\r\n case PopupCodes.UserForm.DuplicateUserAccessDefinition: {\r\n this.scrollToAccessDefinitionSection();\r\n break;\r\n }\r\n case this.settings.saveSuccessfulPopup: {\r\n this.settings.navigateAfterSave();\r\n break;\r\n }\r\n case PopupCodes.UserForm.RevokeUserRequestConfirmation: {\r\n this.revokeUserRequest(event?.sectionIndex, event?.onComplete, event?.reasonForRequestRevoke);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.UserForm.userRequestGrid: {\r\n switch (event.event.type) {\r\n case FormActions.UserForm.Details: {\r\n const request = event.event.data;\r\n const requestUniqueKey = { userRequestSource: request.userRequestSource, id: request.id };\r\n this.showUserRequestDetails(requestUniqueKey);\r\n break;\r\n }\r\n case FormActions.UserForm.Withdraw: {\r\n const request = event.event.data;\r\n const requestUniqueKey = { userRequestSource: request.userRequestSource, id: request.id };\r\n this.withdrawUserRequest(requestUniqueKey);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n private saveData(request: UserSaveRequest): void {\r\n\r\n const saveDataFunction = (request: UserSaveRequest) => {\r\n this.spinnerService.showSpinner();\r\n this.dataService.saveData(this.saveEndpoint, request)\r\n .pipe(take(1), this.errorService.errorHandler(this.settings.customErrorPopups))\r\n .subscribe((data: UserSaveResult) => {\r\n this.spinnerService.hideSpinner();\r\n if (this.handleWarnings(request, data, r => this.saveData(r))) {\r\n return;\r\n }\r\n if (ServerErrorPopupCodes.SaveUser.includes(data.message)) {\r\n this.activeDialog = data.message;\r\n }\r\n else {\r\n this.activeDialog = this.settings.saveSuccessfulPopup;\r\n }\r\n this.dialogHelperService.showDialog(this.activeDialog, null, data.details);\r\n });\r\n };\r\n\r\n if (this.settings.hasAnonymousAccess) {\r\n this.recaptchaService.getToken().then(\r\n token => {\r\n request.recaptchaToken = token;\r\n saveDataFunction(request);\r\n },\r\n error => console.log('reCAPTCHA service getToken error: ' + error));\r\n }\r\n else {\r\n saveDataFunction(request);\r\n }\r\n }\r\n\r\n private scrollToAccessDefinitionSection(): void {\r\n const accessDefinitionTopOfAddButtonId = this.formDataService.getSectionRepeaterHtmlElementId(\r\n this.baseForm.fields,\r\n [NavTabNumbers.UserForm.applicationAccess, PageNumbers.UserForm.applicationAccess, SectionCodes.UserForm.applicationRef],\r\n RepeaterElementType.TopOfAddButton);\r\n if (accessDefinitionTopOfAddButtonId) {\r\n this.htmlHelperService.setFocusToHtmlElementById(accessDefinitionTopOfAddButtonId, null);\r\n }\r\n }\r\n\r\n private showUserRequestDetails(requestUniqueKey: UserRequestUniqueKey): void {\r\n this.appDataService.post(this.settings.showUserRequestDetailsEndpoint, requestUniqueKey)\r\n .pipe(take(1))\r\n .subscribe((response: GetUserRequestDetailsResponse) => {\r\n this.activeDialog = PopupCodes.UserForm.RequestDetails;\r\n this.showSimpleInformationPopup(this.activeDialog, { message: this.formatHtmlDetailsService.formatUserRequestDetailsHtml(response) });\r\n });\r\n }\r\n\r\n private withdrawUserRequest(requestUniqueKey: UserRequestUniqueKey): void {\r\n this.dialogService\r\n .showConfirm(PopupCodes.UserForm.WithdrawUserRequestConfirmation)\r\n .pipe(take(1))\r\n .subscribe(data => {\r\n switch (data as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n this.appDataService.post(this.settings.withdrawUserRequestEndpoint, requestUniqueKey)\r\n .pipe(take(1))\r\n .subscribe((response: WithdrawUserRequestResponse) => {\r\n this.applicationUserService.replaceUserRequestGrid(this.baseForm.model, response.userRequestGridModel);\r\n this.forceRender();\r\n });\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private getAccessDefinitionCode(sectionIndex: number): string {\r\n const accessDefinitionCode = this.applicationUserService.getAccessDefinitionCode(this.baseForm.model, sectionIndex);\r\n return accessDefinitionCode;\r\n };\r\n\r\n private getAccessDefinitionAdditionalInfo(sectionIndex: number): AccessDefinitionAdditionalInfo {\r\n const accessDefinitionCode = this.getAccessDefinitionCode(sectionIndex);\r\n const accessDefinitionAdditionalInfo = this.additionalInfoByAccessDefinitionCode.get(accessDefinitionCode);\r\n return accessDefinitionAdditionalInfo;\r\n }\r\n\r\n private confirmRevokeUserAccess(sectionIndex: number, onComplete: (cancel: boolean) => void): void {\r\n const popupModel = { sectionIndex, onComplete };\r\n this.activeDialog = PopupCodes.UserForm.RevokeUserRequestConfirmation;\r\n this.dialogService.showDialog(this.activeDialog, popupModel);\r\n };\r\n\r\n private revokeUserRequest(sectionIndex: number, onComplete: (cancel: boolean) => void, reasonForRequestRevoke: string) {\r\n this.applicationUserService.addToRevokedAccessDefinitions(this.baseForm.model, sectionIndex, reasonForRequestRevoke);\r\n onComplete(false);\r\n }\r\n\r\n private browseApplication(sectionIndex: number): void {\r\n const applicationUrl = this.getAccessDefinitionAdditionalInfo(sectionIndex)?.applicationUrl;\r\n if (!applicationUrl) {\r\n return;\r\n }\r\n this.openInNewTabAbsoluteUrl(applicationUrl);\r\n }\r\n\r\n private legacyAccountLogin(): void {\r\n this.openInNewTabAbsoluteUrl(this.ldapNotFederatedAccountSignInUrl);\r\n }\r\n\r\n private legacyAccountReset(): void {\r\n this.navigate(['/', RouteConstants.userLegacyProfileSetup.resetEdit]);\r\n }\r\n\r\n private handleSingleCheckBoxChanges(): void {\r\n this.applicationUserService.handleSingleCheckBoxQuestionChanges(\r\n () => this.baseForm.model,\r\n model => this.baseForm.model = model);\r\n }\r\n \r\n private handleOrganisationChange(): void {\r\n const model = this.baseForm.model;\r\n const lastUpdatedTime = this.baseForm.lastUpdatedTime;\r\n const organisation = this.applicationUserService.getUserOrganisation(model);\r\n if (organisation.hasOrganisation === OptionSetCodes.UserForm.YesNo.Yes && !organisation.optionalOrganisation) {\r\n return;\r\n }\r\n if (organisation.organisationId !== this.organisation.organisationId) {\r\n\r\n const previousOrganisation = this.organisation;\r\n this.organisation = organisation;\r\n\r\n const changeOrganisationFunction = (token: string) => {\r\n const userOrganisationChangeRequest: UserOrganisationChangeRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.applicationUserId,\r\n response: JSON.stringify(model),\r\n expectedLastUpdateTime: lastUpdatedTime,\r\n isSubmit: false,\r\n organisationId: organisation.organisationId,\r\n isMyApps: this.settings.isMyApps,\r\n recaptchaToken: token,\r\n applicationUserRegistrationId: this.applicationUserRegistrationId,\r\n draftId: this.draftId,\r\n previousOrganisation: previousOrganisation\r\n };\r\n this.dataService.saveData(this.changeUserOrganisationEndpoint, userOrganisationChangeRequest)\r\n .pipe(take(1))\r\n .subscribe((data: UserOrganisationChangeResponse) => {\r\n const newNavigationState: NavigationState = {\r\n draftId: data.draftId,\r\n applicationUserId: this.applicationUserId,\r\n applicationUserRegistrationId: this.applicationUserRegistrationId,\r\n popupCode: data.popupCode\r\n };\r\n this.reloadPage(true, { state: newNavigationState });\r\n });\r\n }\r\n\r\n if (this.settings.hasAnonymousAccess) {\r\n this.recaptchaService.getToken().then(\r\n token => changeOrganisationFunction(token),\r\n error => console.log('reCAPTCHA service getToken error: ' + error));\r\n }\r\n else {\r\n changeOrganisationFunction(null);\r\n }\r\n }\r\n }\r\n\r\n private handleEmailChangeWithDebounce(): void {\r\n clearTimeout(this.handleEmailChangeDebounceTimeout);\r\n this.handleEmailChangeDebounceTimeout = setTimeout(() => this.handleEmailChange(), ServerCallDebounceTimeMs);\r\n }\r\n\r\n private preSelectSingleEnvironmentAndRoleByUserSelection(): void {\r\n const accessBeingEdited = this.applicationUserService.getAccessBeingEdited(this.baseForm.model);\r\n \r\n if (!accessBeingEdited) {\r\n return;\r\n }\r\n \r\n if (accessBeingEdited[QuestionCodes.UserForm.applicationName] !== this.applicationBeingEdited) {\r\n this.applicationBeingEdited = accessBeingEdited[QuestionCodes.UserForm.applicationName];\r\n this.updateAccessBeingEditedInModel(accessBeingEdited, QuestionCodes.UserForm.envName, accessBeingEdited[QuestionCodes.UserForm.applicationName]);\r\n // we have to delay the update of the role selection, as it depends on the environment selection\r\n // and the options are not yet loaded into the role drop down\r\n const RoleDropdownLoadMs = 200;\r\n setTimeout(() => this.updateAccessBeingEditedInModel(accessBeingEdited, QuestionCodes.UserForm.roleName, accessBeingEdited[QuestionCodes.UserForm.envName]), RoleDropdownLoadMs);\r\n }\r\n else if (accessBeingEdited[QuestionCodes.UserForm.envName] !== this.environmentBeingEdited) {\r\n this.environmentBeingEdited = accessBeingEdited[QuestionCodes.UserForm.envName];\r\n this.updateAccessBeingEditedInModel(accessBeingEdited, QuestionCodes.UserForm.roleName, accessBeingEdited[QuestionCodes.UserForm.envName]);\r\n }\r\n }\r\n\r\n private updateAccessBeingEditedInModel(accessBeingEdited: any, questionCode: string, optionSetId: string): void {\r\n if (!accessBeingEdited) {\r\n return;\r\n }\r\n\r\n if(!optionSetId || !this.hasSingleOption(questionCode, optionSetId)) {\r\n return;\r\n }\r\n\r\n let optionSet = this.getOptionSet(questionCode, optionSetId);\r\n\r\n const firstOption = optionSet[0]\r\n if (!firstOption) {\r\n return;\r\n }\r\n\r\n accessBeingEdited[questionCode] = firstOption.code;\r\n \r\n this.forceRenderByModelChange();\r\n }\r\n\r\n private getOptionSet(questionCode: string, optionSetId: string) {\r\n switch (questionCode) {\r\n case QuestionCodes.UserForm.envName:\r\n return this.baseForm.optionSets[`${OptionSetCodes.UserForm.Environment.OptionSetCode}-${QuestionCodes.UserForm.applicationName}-${optionSetId}`];\r\n case QuestionCodes.UserForm.roleName:\r\n return this.baseForm.optionSets[`${OptionSetCodes.UserForm.Role.OptionSetCode}-${QuestionCodes.UserForm.envName}-${optionSetId}`];\r\n }\r\n return null;\r\n }\r\n\r\n private hasSingleOption(questionCode: string, optionSetId: string): boolean {\r\n const optionSet = this.getOptionSet(questionCode, optionSetId);\r\n if (!optionSet) {\r\n return false;\r\n }\r\n\r\n return optionSet.length === 1;\r\n }\r\n\r\n private getEmailFromModel(): string {\r\n const email = this.applicationUserService\r\n .getUserEmail(this.baseForm.model)\r\n ?.trim()\r\n ?.toUpperCase();\r\n return email;\r\n }\r\n\r\n private isInternalEmail(email: string): boolean {\r\n if (this.internalDomains.size === 0 || !email || email.length < 3) {\r\n return false;\r\n }\r\n const indexOfAtSymbol = email.indexOf('@');\r\n if (indexOfAtSymbol <= 0) {\r\n return false;\r\n }\r\n const domain = email.substring(indexOfAtSymbol + 1);\r\n if (domain.length === 0) {\r\n return false;\r\n }\r\n const isInternalEmail = this.internalDomains.has(domain);\r\n return isInternalEmail;\r\n }\r\n\r\n private getInternalUserProfile(request: GetInternalUserProfileRequest, callback: (response: GetInternalUserProfileResponse) => void): void {\r\n this.appDataService.post(ApiEndpoints.applicationUser.getInternalUserProfile, request)\r\n .pipe(take(1))\r\n .subscribe((response: GetInternalUserProfileResponse) => callback(response));\r\n }\r\n\r\n private internalUserNotFound(): boolean {\r\n return this.isInternalUser && !this.applicationUserService.isUserProfileValid(this.baseForm.model);\r\n }\r\n\r\n private showInternalUserProfileNotification(): void {\r\n const showNotification = (severity: string, message: string) => {\r\n const isClosable = true;\r\n const isSticky = false;\r\n const durationMs = 5000;\r\n this.dialogService.showSimpleNotification(severity, message, isClosable, isSticky, durationMs);\r\n }\r\n this.internalUserNotFound()\r\n ? showNotification('error', `Internal user '${this.email}' was not found in the departmental authentication system.`)\r\n : showNotification('success', `Internal user '${this.email}' was found in the departmental authentication system.`);\r\n }\r\n\r\n private handleEmailChange(): void {\r\n\r\n const email = this.getEmailFromModel();\r\n if (this.email === email) {\r\n return;\r\n }\r\n\r\n const isInternalUser = this.isInternalEmail(email);\r\n\r\n const handleChange = (response: GetInternalUserProfileResponse) => {\r\n if (response) {\r\n this.applicationUserService.replaceUserProfile(this.baseForm.model, response);\r\n this.forceRenderByModelChange();\r\n }\r\n this.email = email;\r\n this.isInternalUser = isInternalUser;\r\n };\r\n\r\n if (isInternalUser) {\r\n // Scenario #1: the email has changed AND is internal (it doesn't matter if it was internal or external before):\r\n // - call the backend to retrieve the user profile\r\n // - set the user profile in the form\r\n // - make the user profile fields read-only\r\n // - show appropriate notification in the UI\r\n this.getInternalUserProfile({ email }, response => {\r\n handleChange(response ?? {});\r\n this.showInternalUserProfileNotification();\r\n });\r\n }\r\n else if (this.isInternalUser) {\r\n // Scenario #2: the email has changed AND went from internal to external:\r\n // - clear the user profile in the form\r\n // - make the user profile fields read-write\r\n handleChange({});\r\n }\r\n else {\r\n // Scenario #3: the email has changed AND remained external\r\n // - make no changes to the form\r\n handleChange(null);\r\n }\r\n }\r\n}\r\n","import { Component, ViewChild } from \"@angular/core\";\r\n\r\nimport { DialogService, DspxCardSetBaseFormComponent, MessagePlaceholders } from \"dspx-core\";\r\n\r\nimport { AppDataKeys } from \"../../constants/app-data.constants\";\r\n\r\nimport { AppDataService } from \"../../services/app-data.service\";\r\nimport { HtmlHelperService, PageActionButtonPath } from \"../../services/html-helper.service\";\r\n\r\n@Component({ template: '' })\r\nexport class BaseComponent {\r\n\r\n @ViewChild(DspxCardSetBaseFormComponent)\r\n protected baseForm: DspxCardSetBaseFormComponent;\r\n\r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected htmlHelperService: HtmlHelperService) {\r\n\r\n this.appDataService.setAppData(AppDataKeys.getPopupRegistryFunction, () => this.baseForm.popups);\r\n }\r\n\r\n protected showSimpleInformationPopup(popupCode: string, data?: MessagePlaceholders): void {\r\n // NOTE:\r\n // We do not use \"this.dialogService.showSimplePopup\" here, because that would render the HTML as a with role=\"alertDialog\",\r\n // whereas \"this.dialogService.showDialog\" renders the HTML as a with role=\"dialog\".\r\n // For accessibility, role=\"alertDialog\" should only be used to notify a user of urgent information that demands their immediate attention.\r\n // Therefore, for dialogs that only output some information and do not require any choice, role=\"dialog\" is more appropriate.\r\n this.dialogService.showDialog(popupCode, null, data);\r\n }\r\n\r\n // This ensures that a button is enabled even when the entire form is not editable.\r\n // For example, a Cancel button should always be enabled.\r\n protected ensurePageActionButtonsAreEnabledOnFormLoad(pageActionButtonPaths: PageActionButtonPath[]): void {\r\n setTimeout(\r\n () => {\r\n this.htmlHelperService.ensurePageActionButtonsAreEnabled(pageActionButtonPaths);\r\n });\r\n }\r\n\r\n protected overrideHtmlTitleSetByDspxFramework(): void {\r\n this.appDataService.overrideHtmlTitleSetByDspxFramework(this.baseForm.formName);\r\n }\r\n}\r\n","import { Component, HostListener } from \"@angular/core\";\r\nimport { NavigationExtras, Router } from \"@angular/router\";\r\n\r\nimport { Observable } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { DialogResult, DialogService } from \"dspx-core\";\r\n\r\nimport { AppDataKeys } from \"../../constants/app-data.constants\";\r\n\r\nimport { SaveRequest } from \"../../interfaces/save-request.interface\";\r\nimport { SaveResult } from \"../../interfaces/save-result.interface\";\r\nimport { DeactivationGuard } from \"../../interfaces/deactivation-guard.interface\";\r\nimport { BaseResponseAndConfigResponseDto } from '../../interfaces/base-response-and-config-response.interface';\r\n\r\nimport { AppDataService } from \"../../services/app-data.service\";\r\nimport { DialogHelperService } from \"../../services/dialog-helper.service\";\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { HtmlHelperService } from \"../../services/html-helper.service\";\r\n\r\nimport { BaseComponent } from \"../base-component/base-component\";\r\n\r\ntype FileUploadQuestion = { getQuestionModel: (formModel: any) => any };\r\n\r\nexport type ReadOnlyGridRegistry = { [key: string]: ReadOnlyGrid; };\r\n\r\nexport class ReadOnlyGrid {\r\n\r\n private isVisible: boolean;\r\n\r\n showButton: boolean;\r\n hideButton: boolean;\r\n statusBar: boolean;\r\n grid: boolean;\r\n\r\n constructor(isVisible: boolean = false) {\r\n this.setVisibility(isVisible);\r\n }\r\n\r\n setVisibility(isVisible: boolean): void {\r\n this.isVisible = isVisible;\r\n\r\n this.showButton = !isVisible;\r\n this.hideButton = isVisible;\r\n this.statusBar = isVisible;\r\n this.grid = isVisible;\r\n }\r\n\r\n toggleVisibility(): void {\r\n this.setVisibility(!this.isVisible);\r\n }\r\n\r\n static isButtonControl(controlName: string): boolean {\r\n return controlName === 'showButton' || controlName === 'hideButton';\r\n }\r\n}\r\n\r\n@Component({ template: '' })\r\nexport class BaseDetailComponent extends BaseComponent implements DeactivationGuard {\r\n\r\n protected readOnlyGridRegistry: ReadOnlyGridRegistry;\r\n\r\n protected fileUploadQuestions: FileUploadQuestion[];\r\n protected isFormEditable = false;\r\n\r\n private ignoreCanDeactivateGuard = false;\r\n\r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router) {\r\n\r\n super(\r\n dialogService,\r\n appDataService,\r\n htmlHelperService);\r\n }\r\n\r\n canDeactivate = () => this.ignoreCanDeactivateGuard || !this.formHasUpdates();\r\n\r\n protected handleWarnings(\r\n request: TSaveRequest,\r\n data: TSaveResult,\r\n saveDataFunction: (request: TSaveRequest) => void): boolean {\r\n\r\n if (!data.warnings?.length) {\r\n return false;\r\n }\r\n\r\n this.dialogHelperService.showWarnings(data.warnings)\r\n .pipe(take(1))\r\n .subscribe(data => {\r\n switch (data as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n request.ignoreWarnings = true;\r\n saveDataFunction(request);\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n break;\r\n }\r\n }\r\n });\r\n\r\n return true;\r\n }\r\n\r\n protected handlePostFormLoadActions(\r\n responseAndConfig: BaseResponseAndConfigResponseDto,\r\n onPopupClosed: (popupCode: string, dialogResult: DialogResult) => void = null) {\r\n\r\n const showDialogIfRequired = (popupCode: string) => {\r\n return new Observable(subscriber => {\r\n const nextAndComplete = () => {\r\n subscriber.next();\r\n subscriber.complete();\r\n };\r\n if (popupCode) {\r\n this.dialogService.showConfirm(popupCode)\r\n .pipe(take(1))\r\n .subscribe(data => {\r\n onPopupClosed?.(popupCode, data as DialogResult);\r\n nextAndComplete();\r\n });\r\n }\r\n else {\r\n nextAndComplete();\r\n }\r\n })\r\n };\r\n\r\n const navigateIfRequired = (clientRoute: string) => {\r\n const ignoreUnsavedChanges = true;\r\n if (clientRoute) {\r\n this.navigate(['/', ...clientRoute.split('/')], ignoreUnsavedChanges);\r\n }\r\n };\r\n\r\n showDialogIfRequired(responseAndConfig.popupCode)\r\n .subscribe(() => navigateIfRequired(responseAndConfig.forwardClientRoute));\r\n }\r\n\r\n protected openInNewTabAbsoluteUrl(absoluteUrl: string) {\r\n window.open(absoluteUrl, '_blank');\r\n }\r\n\r\n protected navigateToAbsoluteUrl(absoluteUrl: string, ignoreUnsavedChanges = false) {\r\n this.ignoreCanDeactivateGuard = ignoreUnsavedChanges;\r\n window.location.href = absoluteUrl;\r\n }\r\n\r\n protected navigate(commands: any[], ignoreUnsavedChanges = false, extras?: NavigationExtras) {\r\n this.ignoreCanDeactivateGuard = ignoreUnsavedChanges;\r\n this.router.navigate(commands, extras);\r\n }\r\n\r\n protected reloadPage(ignoreUnsavedChanges = false, extras?: NavigationExtras) {\r\n\r\n const executeReloadIgnoringUnsavedChanges = () => {\r\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\r\n this.router.onSameUrlNavigation = 'reload';\r\n this.navigate([this.router.url], true, extras);\r\n };\r\n\r\n // We need to call ComponentDeactivationService.canDeactivate manually because navigating with reload option does not trigger the call automatically\r\n this.ignoreCanDeactivateGuard = ignoreUnsavedChanges;\r\n const canDeactivateResult = this.componentDeactivationService.canDeactivate(this);\r\n if (canDeactivateResult === true) {\r\n executeReloadIgnoringUnsavedChanges();\r\n }\r\n else {\r\n canDeactivateResult\r\n .pipe(take(1))\r\n .subscribe((canDeactivate: boolean) => {\r\n if (canDeactivate) {\r\n executeReloadIgnoringUnsavedChanges();\r\n }\r\n });\r\n }\r\n }\r\n\r\n protected shouldShowReadOnlyGrid(controlGroupName: string, controlName: string): boolean {\r\n if (!this.isFormEditable && ReadOnlyGrid.isButtonControl(controlName)) {\r\n // If the form is being shown as read-only, then hide all buttons (because the read-only grid is set to \"show\" mode).\r\n return false;\r\n }\r\n const readOnlyGrid = this.readOnlyGridRegistry?.[controlGroupName];\r\n return readOnlyGrid?.[controlName] ?? false;\r\n }\r\n\r\n protected toggleReadOnlyGridVisibility(controlGroupName: string, forceRender: boolean = true): void {\r\n const readOnlyGrid = this.readOnlyGridRegistry?.[controlGroupName];\r\n if (readOnlyGrid) {\r\n readOnlyGrid.toggleVisibility();\r\n if (forceRender) {\r\n this.forceRenderByModelChange();\r\n }\r\n }\r\n }\r\n\r\n protected forceRenderByModelChange(): void {\r\n this.baseForm.model = { ...this.baseForm.model };\r\n }\r\n\r\n // This is just a workaround to force the rendering of controls within a form.\r\n // This can be necessary in the following scenarios:\r\n //\r\n // - Due to a framework issue, when loading a form, any empty repeating page/section with \"repeatingItemRequired\" = true\r\n // will not be displayed until the next time the form is rendered.\r\n //\r\n // - For some controls (e.g. data-grids), an update to the model does not automatically trigger the rendering of the control.\r\n //\r\n protected forceRender(): void {\r\n if (this.baseForm.form.dirty) {\r\n this.baseForm.form.markAsPristine();\r\n this.baseForm.form.markAsDirty();\r\n }\r\n else {\r\n this.baseForm.form.markAsDirty();\r\n this.baseForm.form.markAsPristine();\r\n }\r\n }\r\n protected forceRenderAsync(): void {\r\n setTimeout(() => this.forceRender(), 200);\r\n }\r\n\r\n protected setDirtyFlagAfterLoading() {\r\n setTimeout(() => this.baseForm.form.markAsDirty(), 200);\r\n }\r\n\r\n protected resetDirtyFlagAfterLoading() {\r\n // This is just a lame workaround to address the fact that empty forms containing repeating pages/sections,\r\n // if they are configured to expand the first empty element on load, then they will cause the dirty flag to be set even if the user has not touched the form yet.\r\n setTimeout(() => this.baseForm.form.markAsPristine(), 200);\r\n }\r\n\r\n // @HostListener allows us to also guard against browser refresh, close, etc.\r\n @HostListener('window:beforeunload', ['$event'])\r\n protected unloadNotification = (event: any) => {\r\n if (!this.canDeactivate()) {\r\n // When showing the \"confirm\" popup on navigating without using Angular routing (i.e. type another URL / close the browser / etc.),\r\n // some browsers (e.g. Internet Explorer, the old non-Chromium version of Edge) will use the message below,\r\n // whereas other browsers (e.g. Chrome, Firefox) will override it with their own message\r\n event.returnValue = \"WARNING: You have unsaved changes. Press Cancel to go back and save these changes, or OK to discard these changes.\";\r\n }\r\n }\r\n\r\n protected savePreviousModel(): void {\r\n if (this.baseForm && this.baseForm.model) {\r\n const clonedModel = JSON.parse(JSON.stringify(this.baseForm.model));\r\n this.appDataService.setAppData(AppDataKeys.previousModel, clonedModel);\r\n }\r\n }\r\n\r\n private getPreviousModel(): any {\r\n return this.appDataService.getAppData(AppDataKeys.previousModel);\r\n }\r\n\r\n private formHasUpdates(): boolean {\r\n return this.baseForm.form.dirty || this.formHasUpdatesToFileUploadQuestions();\r\n }\r\n\r\n // Questions of type \"fileUpload\" do not trigger the dirty flag of the form, so we need to check them manually.\r\n private formHasUpdatesToFileUploadQuestions(): boolean {\r\n for (const fileUploadQuestion of this.fileUploadQuestions ?? []) {\r\n const currentQuestionModel = fileUploadQuestion.getQuestionModel(this.baseForm.model) ?? '';\r\n const previousQuestionModel = fileUploadQuestion.getQuestionModel(this.getPreviousModel()) ?? '';\r\n if (currentQuestionModel !== previousQuestionModel) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n}\r\n","import { Component } from '@angular/core';\r\nimport { ActivatedRoute, Params, Router } from '@angular/router';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n\r\nimport { catchError, EMPTY, OperatorFunction, throwError } from \"rxjs\";\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { SpinnerService, DialogService, DialogResult } from 'dspx-core';\r\n\r\nimport { ApiEndpointKeys } from '../../constants/api-endpoints.constants';\r\nimport { Versions } from '../../constants/templates.constants';\r\nimport { AppDataKeys, AppSelector, CustomStatusBarSelector, PopupCodes, QueryStringParameters } from '../../constants/app-data.constants';\r\nimport { FilterAction } from '../../constants/filter-action';\r\n\r\nimport { DashboardResponse } from '../../interfaces/dashboard-response.interface';\r\nimport { DeleteEntityRequest } from '../../interfaces/delete-entity-request.interface';\r\nimport { DeleteEntityResponse } from '../../interfaces/delete-entity-response.interface';\r\n\r\nimport { PagePath, QuestionPath, ResponseParserService, SectionPath } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\n\r\nimport { BaseComponent } from '../base-component/base-component';\r\n\r\ntype ProgressiveModelUpdate = {\r\n filterQuestionPath: QuestionPath;\r\n filterSubQuestionCodeAncestorGroup: string[];\r\n filterSubQuestionCodeDescendantGroups: string[][];\r\n};\r\n\r\ntype GridDataFilterSettings = {\r\n getFilterName: () => string; // function to get the name of the filter (it is used as a unique key when setting/getting the filter model into/from session storage)\r\n sectionPath: SectionPath; // path to the section - within the response JSON - that contains both \"search\" and \"custom\" models\r\n searchQuestionCode: string; // question code - within the sectionPath - that contains the \"search\" model\r\n customQuestionCode: string; // question code - within the sectionPath - that contains the \"custom\" model\r\n customModelVisibleKeys: string[]; // property names in the \"custom\" model that are associated to a UI control (some properties are not associated to a UI control)\r\n getFilterRequestFromModels: (searchModel: any, customModel: any) => TFilterRequest; // function to get the filter request from the \"search\" and \"custom\" model\r\n getDefaultFilterRequest: () => TFilterRequest; // function to get the default filter request\r\n progressiveModelUpdate?: ProgressiveModelUpdate;\r\n};\r\n\r\nclass GridDataFilterHandler {\r\n\r\n private readonly searchQuestionPath: QuestionPath;\r\n private readonly customQuestionPath: QuestionPath;\r\n\r\n private initialFilterRequest: TFilterRequest;\r\n\r\n constructor(\r\n private route: ActivatedRoute,\r\n private responseParserService: ResponseParserService,\r\n private appDataService: AppDataService,\r\n private settings: GridDataFilterSettings,\r\n private getModel: () => any) {\r\n\r\n this.searchQuestionPath = [...this.settings.sectionPath, this.settings.searchQuestionCode];\r\n this.customQuestionPath = [...this.settings.sectionPath, this.settings.customQuestionCode];\r\n }\r\n\r\n getInitialFilterRequest(): TFilterRequest {\r\n return this.initialFilterRequest;\r\n }\r\n\r\n setInitialFilterRequest(): void {\r\n const filterFromSessionStorage = this.getFromSessionStorage()\r\n if (filterFromSessionStorage) {\r\n this.initialFilterRequest = filterFromSessionStorage;\r\n }\r\n else {\r\n this.route.queryParams.subscribe((queryStringParameters: Params) => {\r\n const filterFromQueryString = this.getGridDataFilterFromQueryString(queryStringParameters);\r\n if (filterFromQueryString) {\r\n this.setIntoSessionStorage(filterFromQueryString);\r\n this.initialFilterRequest = filterFromQueryString;\r\n }\r\n else {\r\n const defaultFilterRequest = this.settings.getDefaultFilterRequest();\r\n if (defaultFilterRequest) {\r\n this.initialFilterRequest = defaultFilterRequest;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n getFilterRequest(): TFilterRequest {\r\n return this.settings.getFilterRequestFromModels(this.getQuestionValue(...this.searchQuestionPath), this.getQuestionValue(...this.customQuestionPath));\r\n }\r\n\r\n saveFilterRequest(filterAction: FilterAction): TFilterRequest {\r\n const isClearFilters = filterAction === FilterAction.ClearFilters;\r\n if (isClearFilters) {\r\n this.setQuestionValue(...this.searchQuestionPath, null);\r\n this.setQuestionValue(...this.customQuestionPath, null);\r\n }\r\n const filterRequest = isClearFilters ? this.settings.getDefaultFilterRequest() : this.getFilterRequest();\r\n this.setIntoSessionStorage(filterRequest);\r\n return filterRequest;\r\n }\r\n\r\n hasNonEmptyCustomProperties(filterRequest: TFilterRequest): boolean {\r\n return filterRequest && this.settings.customModelVisibleKeys?.map(key => filterRequest[key])?.some(value => value != null && !(Array.isArray(value) && value.length === 0));\r\n }\r\n\r\n private getQuestionValue(navTabNumber: number, pageNumber: number, sectionCode: string, questionCode: string): any {\r\n return this.responseParserService.findQuestionModel(this.getModel(), navTabNumber, pageNumber, null, sectionCode, null, questionCode);\r\n }\r\n\r\n private setQuestionValue(navTabNumber: number, pageNumber: number, sectionCode: string, questionCode: string, newQuestionModel: any): boolean {\r\n return this.responseParserService.replaceQuestionModel(this.getModel(), navTabNumber, pageNumber, null, sectionCode, null, questionCode, newQuestionModel);\r\n }\r\n\r\n private getGridDataFilterFromQueryString(queryStringParameters: Params): TFilterRequest {\r\n try { return JSON.parse(queryStringParameters[QueryStringParameters.GridDataFilter]) as TFilterRequest; }\r\n catch { return null; }\r\n }\r\n\r\n private getFromSessionStorage() {\r\n return this.appDataService.getFromSessionStorage(this.settings.getFilterName());\r\n }\r\n\r\n private setIntoSessionStorage(filterRequest: TFilterRequest) {\r\n this.appDataService.setIntoSessionStorage(this.settings.getFilterName(), filterRequest);\r\n }\r\n}\r\n\r\n@Component({ template: '' })\r\nexport abstract class BaseListComponent extends BaseComponent {\r\n\r\n formServiceEndpoint: string = ApiEndpointKeys.getFormConfig;\r\n versionNo: number = Versions.latest;\r\n\r\n private hasMoreItemsMessage: string;\r\n\r\n protected gridPagePath: PagePath;\r\n protected getListApiEndpoint: () => string;\r\n protected filterSettings: GridDataFilterSettings;\r\n protected filterHandler: GridDataFilterHandler;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService) {\r\n\r\n super(\r\n dialogService,\r\n appDataService,\r\n htmlHelperService);\r\n }\r\n\r\n protected initialise(\r\n gridPagePath: PagePath,\r\n getListApiEndpoint: () => string,\r\n filterSettings: GridDataFilterSettings = null): void {\r\n\r\n this.gridPagePath = gridPagePath;\r\n this.getListApiEndpoint = getListApiEndpoint;\r\n this.filterSettings = filterSettings;\r\n\r\n const hasFilters = !!this.filterSettings;\r\n this.filterHandler = hasFilters\r\n ? new GridDataFilterHandler(this.route, this.responseParserService, this.appDataService, this.filterSettings, () => this.baseForm.model)\r\n : null;\r\n\r\n const maxGridRowCount = this.appDataService.getAppData(AppDataKeys.maxGridRowCount);\r\n const extraMessage = hasFilters\r\n ? `Please use the filters to refine your search criteria.`\r\n : `Only the first ${maxGridRowCount} items are being displayed.`;\r\n this.hasMoreItemsMessage = `The search results have exceeded the ${maxGridRowCount} item limit. ${extraMessage}`;\r\n }\r\n\r\n protected loadGridDataOnFormLoad(filterRequest?: T): void {\r\n // This guarantees that the spinner is displayed during the execution of loadGridData, when loadGridData is called from within the onFormLoad event handler.\r\n // The caller of the onFormLoad event handler calls hideSpinner after the event handler returns.\r\n // This causes the call to showSpinner inside loadGridData to be useless because it is immediately followed by a call to hideSpinner.\r\n // To work around the issue, we call loadGridData on the next event cycle, so that the call to showSpinner inside loadGridData happens after call to hideSpinner.\r\n this.loadGridDataAsync(filterRequest, () => { }, false);\r\n }\r\n\r\n protected loadGridDataAfterSave(filterRequest?: T, onComplete = () => { }): void {\r\n // This guarantees that the spinner is displayed during the execution of loadGridData, when loadGridData is called after a save operation.\r\n // It also allows to specify an action to be executed after the completion of loadGridData (for example, showing a dialog popup to confirm saving succeeded).\r\n // Finally, it suppress any error handling (e.g. showing an error popup) that might happen if loadGridData fails, to avoid interfering with onComplete.\r\n this.loadGridDataAsync(filterRequest, onComplete, true);\r\n }\r\n\r\n protected loadGridDataAsync(filterRequest?: T, onComplete = () => { }, suppressErrorHandler = false): void {\r\n setTimeout(() => {\r\n this.loadGridData(filterRequest, onComplete, suppressErrorHandler);\r\n });\r\n }\r\n\r\n protected loadGridData(filterRequest?: T, onComplete = () => { }, suppressErrorHandler = false): void {\r\n const errorHandler = () => \r\n >(catchError((error: HttpErrorResponse) => {\r\n this.spinnerService.hideSpinner();\r\n onComplete();\r\n if (suppressErrorHandler) {\r\n return EMPTY;\r\n }\r\n return throwError(() => error);\r\n }));\r\n this.spinnerService.showSpinner();\r\n this.appDataService.post(this.getListApiEndpoint(), filterRequest ?? {})\r\n .pipe(take(1), errorHandler())\r\n .subscribe((data: DashboardResponse) => {\r\n this.spinnerService.hideSpinner();\r\n if (this.responseParserService.findPageModel(data?.response, ...this.gridPagePath, null)) {\r\n this.clearSelectedItemsOfAllControls();\r\n this.updateModel(data.response, (model: any) => this.baseForm.model = model);\r\n\r\n const statusBarHtmlElement = document.querySelector(`${AppSelector} ${CustomStatusBarSelector}`);\r\n if (statusBarHtmlElement) {\r\n const statusBarContent = data?.hasMoreItems ? this.hasMoreItemsMessage : '';\r\n statusBarHtmlElement.innerHTML = statusBarContent;\r\n }\r\n }\r\n onComplete();\r\n });\r\n }\r\n\r\n protected deleteEntity(\r\n entityId: string,\r\n entityDescription: string,\r\n deleteEndpoint: string,\r\n deleteConfirmationPopupCode: string,\r\n deleteSuccessPopupCode: string): void {\r\n\r\n const popupMessagePlaceholders = { entityDescription };\r\n this.dialogService.showConfirm(deleteConfirmationPopupCode, popupMessagePlaceholders)\r\n .pipe(take(1))\r\n .subscribe(dialogResult => {\r\n switch (dialogResult as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n this.spinnerService.showSpinner();\r\n const request: DeleteEntityRequest = { entityId };\r\n this.appDataService.post(deleteEndpoint, request)\r\n .pipe(take(1))\r\n .subscribe((response: DeleteEntityResponse) => {\r\n this.spinnerService.hideSpinner();\r\n if (response?.isSuccess === true) {\r\n this.dialogService.showDialog(deleteSuccessPopupCode, null, popupMessagePlaceholders);\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n }\r\n else if (response?.errorCode) {\r\n this.dialogService.showDialog(response.errorCode, null, { ...popupMessagePlaceholders, ...response?.errorData });\r\n }\r\n else {\r\n this.dialogService.showDialog(PopupCodes.Common.ServerError);\r\n }\r\n });\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n break;\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n // This is a register of the selected items of all the grid controls in the component\r\n // (typically there is only one grid control per component, but better be generic).\r\n // FieldKey is the questionCode of the grid control, and the value is the array of selected items.\r\n private _selectedItemsRegister: { [fieldKey: string]: any[] } = {};\r\n\r\n // Register the original object containing the selected items, so that it can be cleared later if needed.\r\n protected registerSelectedItems(event: any): any[] {\r\n const fieldKey = event?.field?.key;\r\n const selectedItems = event?.event?.data?.selectedItems;\r\n if (fieldKey && selectedItems) {\r\n this._selectedItemsRegister[fieldKey] = selectedItems;\r\n }\r\n return selectedItems;\r\n }\r\n\r\n // Clear the selected items of all registered grid controls\r\n protected clearSelectedItemsOfAllControls(): void {\r\n for (const fieldKey in this._selectedItemsRegister) {\r\n this.clearSelectedItems(fieldKey);\r\n }\r\n }\r\n\r\n // Clear the selected items of a registered grid control\r\n protected clearSelectedItems(fieldKey: string): void {\r\n if (fieldKey) {\r\n const selectedItems = this._selectedItemsRegister[fieldKey];\r\n if (selectedItems) {\r\n selectedItems.length = 0; // Clear the array in place to ensure the selected items are cleared\r\n }\r\n }\r\n }\r\n\r\n // Get a copy of the selected items which excludes any invalid items.\r\n protected getSelectedItems(event: any): any[] {\r\n const selectedItems = this.registerSelectedItems(event); // Ensure the grid control is registered, just to be sure\r\n return selectedItems\r\n ?.filter(item => !!item) // Double-clicking on rows results in items containing an empty string being added, which we need to remove.\r\n ?? [];\r\n }\r\n\r\n // NOTE: these methods only work for questions inside non-repeating sections inside non-repeating pages\r\n protected getQuestionValue(model: any, navTabNumber: number, pageNumber: number, sectionCode: string, questionCode: string): any {\r\n return this.responseParserService.findQuestionModel(model, navTabNumber, pageNumber, null, sectionCode, null, questionCode);\r\n }\r\n protected setQuestionValue(model: any, navTabNumber: number, pageNumber: number, sectionCode: string, questionCode: string, newQuestionModel: any): boolean {\r\n return this.responseParserService.replaceQuestionModel(model, navTabNumber, pageNumber, null, sectionCode, null, questionCode, newQuestionModel);\r\n }\r\n\r\n // This method updates the model and, if required, performs successive model updates to ensure dependent filter dropdowns are initialised correctly.\r\n private updateModel(model: any, setModel: (m: any) => void): void {\r\n\r\n let isProgressiveModelUpdateRequired = false;\r\n\r\n const progressiveModelUpdate = this.filterSettings?.progressiveModelUpdate;\r\n if (progressiveModelUpdate && progressiveModelUpdate.filterQuestionPath) {\r\n\r\n const filterQuestionModel = this.getQuestionValue(model, ...progressiveModelUpdate.filterQuestionPath);\r\n if (filterQuestionModel) {\r\n\r\n const ancestorGroup = progressiveModelUpdate.filterSubQuestionCodeAncestorGroup ?? [];\r\n if (ancestorGroup.some(ancestor => filterQuestionModel[ancestor])) {\r\n\r\n const descendantGroups = (progressiveModelUpdate.filterSubQuestionCodeDescendantGroups ?? []).map(descendantGroup => descendantGroup ?? []);\r\n if (descendantGroups.some(descendantGroup => descendantGroup.length > 0)) {\r\n\r\n isProgressiveModelUpdateRequired = true;\r\n\r\n // Store all values of descendant filters for later and update the model to clear all values of descendant filters.\r\n const storedFilterQuestionModel = JSON.parse(JSON.stringify(filterQuestionModel));\r\n for (let groupIndex = 0; groupIndex < descendantGroups.length; groupIndex++) {\r\n const descendantGroup = descendantGroups[groupIndex];\r\n for (let descendantIndex = 0; descendantIndex < descendantGroup.length; descendantIndex++) {\r\n const descendant = descendantGroup[descendantIndex];\r\n delete filterQuestionModel[descendant];\r\n }\r\n }\r\n setModel(model);\r\n\r\n // Recursively go through all descendant groups and update the model with the stored values.\r\n const updateModelForNextDescendantGroup = (filterQuestionModel: any, groupIndex: number) => {\r\n if (groupIndex < descendantGroups.length) {\r\n const descendantGroup = descendantGroups[groupIndex];\r\n setTimeout(() => {\r\n for (let descendantIndex = 0; descendantIndex < descendantGroup.length; descendantIndex++) {\r\n const descendant = descendantGroup[descendantIndex];\r\n filterQuestionModel[descendant] = storedFilterQuestionModel[descendant];\r\n }\r\n setModel({...model});\r\n updateModelForNextDescendantGroup(filterQuestionModel, groupIndex + 1);\r\n });\r\n }\r\n };\r\n updateModelForNextDescendantGroup(filterQuestionModel, 0);\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!isProgressiveModelUpdateRequired) {\r\n // If no dependent questions are configured, then simply update the model once.\r\n setModel(model);\r\n }\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { Guid } from 'guid-typescript';\r\n\r\nimport { CardSetTransformationService, CoreService, DataService, DialogService, FileService, SpinnerService } from 'dspx-core';\r\n\r\nimport {\r\n ComponentSelectors,\r\n NavTabNumbers,\r\n PageNumbers,\r\n PopupCodes,\r\n QuestionCodes,\r\n ReadOnlyAccessPageActionButtons,\r\n SectionCodes,\r\n ServerErrorPopupCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates, Versions } from '../../constants/templates.constants';\r\nimport { RequestSaveResultStatus } from '../../constants/request-save-result-status';\r\n\r\nimport { SaveRequest } from '../../interfaces/save-request.interface';\r\nimport { SaveResult } from '../../interfaces/save-result.interface';\r\nimport { PopupInfo } from '../../interfaces/popup-info.interface';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseDetailComponent } from '../base-detail-component/base-detail-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.GlobalSetupForm.GlobalSetup,\r\n templateUrl: './global-setup.component.html'\r\n})\r\nexport class GlobalSetupComponent extends BaseDetailComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n id = '';\r\n formServiceEndpoint: string = ApiEndpointKeys.getGlobalSetupConfigAndResponse;\r\n templateId: number = Templates.globalSetup;\r\n versionNo: number = Versions.latest;\r\n activeDialog: string;\r\n \r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n private fileService: FileService,\r\n private errorService: ErrorService,\r\n private coreService: CoreService,\r\n private dataService: DataService,\r\n private spinnerService: SpinnerService,\r\n private responseParserService: ResponseParserService,\r\n private userProfileService: UserProfileService) {\r\n super(dialogService, appDataService, dialogHelperService, htmlHelperService, componentDeactivationService, router);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.coreService.applicationFunctions['canSave'] = () => this.isFormEditable;\r\n\r\n this.fileService.endpoints = {\r\n fileUploadEndpoint: 'GlobalSetup/UploadDocument',\r\n fileRemoveEndpoint: 'GlobalSetup/RemoveDocument',\r\n fileDownloadEndpoint: 'api/GlobalSetup/DownloadDocument'\r\n }\r\n this.coreService.fileUploadFormIdentifiers = {\r\n [QuestionCodes.GlobalSetupForm.userGuidesForAnonymousUser]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForUser]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForOrganisationSupport]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForOrganisationAuthority]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForApplicationSupport]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForApplicationAdministrator]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForAdminReadOnly]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForIdamReviewer]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForIdamOnboarder]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForIdamApprover]: Guid.EMPTY,\r\n [QuestionCodes.GlobalSetupForm.userGuidesForIdamAdministrator]: Guid.EMPTY\r\n };\r\n\r\n const getUserGuidesQuestionModel = (model: any, questionCode: string) =>\r\n this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.GlobalSetupForm.userGuides,\r\n PageNumbers.GlobalSetupForm.userGuides,\r\n null,\r\n SectionCodes.GlobalSetupForm.userGuides,\r\n null,\r\n questionCode);\r\n this.fileUploadQuestions = [\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForAnonymousUser) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForUser) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForOrganisationSupport) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForOrganisationAuthority) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForApplicationSupport) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForApplicationAdministrator) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForAdminReadOnly) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForIdamReviewer) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForIdamOnboarder) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForIdamApprover) },\r\n { getQuestionModel: model => getUserGuidesQuestionModel(model, QuestionCodes.GlobalSetupForm.userGuidesForIdamAdministrator) }\r\n ];\r\n }\r\n\r\n formLoaded(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.isFormEditable = !!event?.isFormEditable;\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.GlobalSetupForm);\r\n\r\n this.savePreviousModel();\r\n\r\n this.handlePostFormLoadActions(event);\r\n }\r\n\r\n save(event: any): void {\r\n const saveDataRequest: SaveRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.id,\r\n response: event.model,\r\n expectedLastUpdateTime: event.lastUpdatedTime,\r\n isSubmit: false\r\n }\r\n if (!event.isFormValid) {\r\n this.baseForm.markAllFieldsAsTouched();\r\n if (!this.baseForm.fields[0]?.formControl.valid) {\r\n this.baseForm.showValidationSummary(true);\r\n this.dialogService.showDialog(PopupCodes.Common.ValidationError);\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n\r\n private saveData(request: SaveRequest): void {\r\n const customErrorPopups = new Map([\r\n [RequestSaveResultStatus.UpdatedSinceReadTime, { popupCode: 'customConcurrencyError' }]\r\n ]);\r\n this.spinnerService.showSpinner();\r\n this.dataService.saveData(ApiEndpoints.globalSetup.save, request)\r\n .pipe(take(1), this.errorService.errorHandler(customErrorPopups))\r\n .subscribe((data: SaveResult) => {\r\n this.spinnerService.hideSpinner();\r\n if (this.handleWarnings(request, data, r => this.saveData(r))) {\r\n return;\r\n }\r\n if (ServerErrorPopupCodes.SaveGlobalSetup.includes(data.message)) {\r\n this.activeDialog = data.message;\r\n }\r\n else {\r\n this.id = data.id;\r\n this.activeDialog = PopupCodes.GlobalSetupForm.SaveSuccessful;\r\n }\r\n this.dialogHelperService.showDialog(this.activeDialog, null, data.details);\r\n });\r\n }\r\n\r\n cancel(event: any): void {\r\n this.reloadPage();\r\n }\r\n\r\n dialogSubmitted(event: any): void {\r\n if (this.activeDialog === PopupCodes.GlobalSetupForm.SaveSuccessful) {\r\n this.reloadPage(true);\r\n }\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { FileSaverService } from 'ngx-filesaver';\r\n\r\nimport { Guid } from 'guid-typescript';\r\n\r\nimport { DialogService, Dialogs, FileService, LoggedInUser } from 'dspx-core';\r\n\r\nimport { AppDataKeys, ComponentSelectors, DepartmentOfFamiliesFairnessAndHousing, DepartmentOfHealth } from '../../constants/app-data.constants';\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\n\r\nimport { FileModel } from '../../interfaces/file-upload-question-model.interface';\r\nimport { UserGuideConfig } from '../../interfaces/user-guide-config.interface';\r\nimport { GetGlobalSettingsResponse } from '../../interfaces/get-global-settings-response.interface';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\n\r\n@Component({\r\n selector: ComponentSelectors.Other.Help,\r\n templateUrl: './help.component.html'\r\n})\r\nexport class HelpComponent implements OnInit {\r\n\r\n htmlTitle: string = 'Help';\r\n\r\n dhWebsitePrivacyStatementUrl: string;\r\n dffhWebsitePrivacyStatementUrl: string;\r\n technicalSupportEmail: string;\r\n eBusinessPortalName: string;\r\n eBusinessPortalUrl: string;\r\n\r\n constructor(\r\n private fileSaverService: FileSaverService,\r\n private fileService: FileService,\r\n private dialogService: DialogService,\r\n private appDataService: AppDataService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appDataService.overrideHtmlTitleSetByDspxFramework(this.htmlTitle);\r\n\r\n this.dhWebsitePrivacyStatementUrl = `${DepartmentOfHealth.url}privacy`;\r\n this.dffhWebsitePrivacyStatementUrl = `${DepartmentOfFamiliesFairnessAndHousing.url}privacy-statement`;\r\n this.technicalSupportEmail = this.appDataService.getAppData(AppDataKeys.technicalSupportEmail);\r\n this.eBusinessPortalName = this.appDataService.getAppData(AppDataKeys.ldapLegacyUserOnboardingPortalName);\r\n this.eBusinessPortalUrl = this.appDataService.getAppData(AppDataKeys.ldapNotFederatedAccountSignInUrl)\r\n }\r\n\r\n onClickUserGuide(id: string): boolean {\r\n this.downloadUserGuide(id);\r\n return false; // this is to ensure that the anchor tag does not navigate to the href\r\n }\r\n\r\n get userGuides(): FileModel[] {\r\n return (this.isUserLoggedIn ? this.userGuideConfig?.loggedInUserGuides : this.userGuideConfig?.anonymousUserGuides)?.files ?? [];\r\n }\r\n\r\n get userGuidesAreAvailable(): boolean {\r\n return this.userGuides.length > 0;\r\n }\r\n\r\n private downloadUserGuide(id: string): void {\r\n const apiEndpoint = this.isUserLoggedIn ? ApiEndpoints.help.downloadUserGuide : ApiEndpoints.help.downloadUserGuideAnonymous;\r\n this.fileService.endpoints = {\r\n fileUploadEndpoint: null,\r\n fileRemoveEndpoint: null,\r\n fileDownloadEndpoint: `api/${apiEndpoint}`\r\n }\r\n this.fileService.download(Guid.EMPTY, id)\r\n .pipe(take(1))\r\n .subscribe({\r\n next: response => {\r\n const dispositionHeader = response.headers.get('content-disposition');\r\n const fileName = this.appDataService.getContentFileName(dispositionHeader);\r\n this.fileSaverService.save(response.body, fileName);\r\n },\r\n error: error => {\r\n this.dialogService.showDialog(Dialogs.SERVER_ERROR);\r\n }\r\n });\r\n }\r\n\r\n private get isUserLoggedIn(): boolean {\r\n return !!this.userProfile;\r\n }\r\n\r\n private get userGuideConfig(): UserGuideConfig {\r\n return this.globalSettings?.userGuideConfig;\r\n }\r\n\r\n private get userProfile(): LoggedInUser {\r\n return this.appDataService.getAppData(AppDataKeys.userProfile);\r\n }\r\n\r\n private get globalSettings(): GetGlobalSettingsResponse {\r\n return this.appDataService.getAppData(AppDataKeys.globalSettings);\r\n }\r\n}\r\n","\r\n
\r\n

{{htmlTitle}}

\r\n
\r\n
\r\n \r\n \r\n Depending on your access, registered users representing funded agencies have access to an increasing number of applications that assist them to carry out their service delivery functions and day to day dealings with the Department.\r\n \r\n \r\n

\r\n To request access you need to complete the following steps:\r\n

\r\n
    \r\n
  1. \r\n Access a New User Registration form by clicking 'Register' button on the Login page.\r\n
  2. \r\n
  3. \r\n All mandatory fields (displayed with a star) must be completed.\r\n
  4. \r\n
  5. \r\n Please read and accept the Department's 'Conditions of Use'.\r\n
  6. \r\n
\r\n
\r\n \r\n

This site supports the following web browsers:

\r\n
    \r\n
  • Edge
  • \r\n
  • Chrome
  • \r\n
  • While other browsers may work with this site, their compatibility is not guaranteed.
  • \r\n
\r\n

Cookies

\r\n

\r\n This site requires your browser to accept cookies from this site.\r\n

\r\n

\r\n All cookies from the Department's site will remain active for the current browser session only. Once you terminate the current browser session, the cookies will be removed.\r\n

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

\r\n The Request Registration form requires you to complete in full the following:\r\n

\r\n

\r\n Individuals and/or representatives from funded Agencies of the Department and personnel within business areas of the Department are able to request access to applications through the Departments' website.\r\n

\r\n

\r\n To complete the Registration form, please fill in all mandatory details (with a star) under each heading as per instructions below:\r\n

\r\n
    \r\n
  • \r\n User's Organisation Details - Specify the details of the organisation of the user requesting access.\r\n
  • \r\n
  • \r\n User's Personal Details - Specify the details of the user requesting access.\r\n
  • \r\n
  • \r\n Conditions Of Use - As a mandatory requirement you are required to read, accept, and acknowledge the 'Conditions of Use' before submitting your registration.\r\n
  • \r\n
  • \r\n Current Application Access - Please specify the Department's application(s), environment and the role that you wish to request access to.\r\n
  • \r\n
\r\n
\r\n \r\n

\r\n The Department of Health / Department of Families, Fairness and Housing endorses fair information handling practices. Any information provided, including identification of individuals, will be used only for the purpose intended and where the intention includes confidentiality, information will be retained as such unless otherwise required by law.\r\n

\r\n Please refer to the below Privacy links for further information\r\n \r\n
\r\n \r\n

\r\n Email addresses provided via this site will only be used to respond to specific user queries and will not be added to any mailing lists, nor disclosed to any other party without the user's knowledge and consent and as intended, unless required by law.\r\n

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

\r\n Some of the older departmental applications are managed by a separate portal: the {{eBusinessPortalName}}.\r\n If you still need to access that portal, click here.\r\n

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

\r\n Please refer to these user guides for more information\r\n

\r\n \r\n

\r\n If you have further questions, please contact the support team via Technical Support\r\n

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

\r\n Please contact the support team via Technical Support\r\n

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n","import { Component, Input, SecurityContext, ViewEncapsulation } from '@angular/core';\r\nimport { DomSanitizer } from '@angular/platform-browser';\r\n\r\nimport { ComponentSelectors } from '../../constants/app-data.constants';\r\n\r\nimport { InformationBannerConfig } from '../../interfaces/information-banner-config.interface';\r\n\r\ntype DividerDisplay = 'always' | 'auto' | 'never';\r\ntype DividerConfig = { top: DividerDisplay; bottom: DividerDisplay; }\r\n\r\n@Component({\r\n selector: ComponentSelectors.Other.InformationBanner,\r\n templateUrl: './information-banner.component.html',\r\n styleUrls: ['./information-banner.component.scss'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class InformationBannerComponent {\r\n\r\n private readonly defaultConfig: InformationBannerConfig = {\r\n message: '',\r\n foregroundColour: 'black',\r\n backgroundColour: 'khaki'\r\n };\r\n private _config: InformationBannerConfig = this.defaultConfig;\r\n @Input()\r\n get config(): InformationBannerConfig {\r\n return this._config;\r\n };\r\n set config(config: InformationBannerConfig) {\r\n this._config = config ?? this.defaultConfig;\r\n this._config.message = this.sanitiseHtml(this._config.message ?? this.defaultConfig.message);\r\n this._config.foregroundColour = this._config.foregroundColour ?? this.defaultConfig.foregroundColour;\r\n this._config.backgroundColour = this._config.backgroundColour ?? this.defaultConfig.backgroundColour;\r\n } \r\n\r\n private readonly defaultDividerConfig: DividerConfig = {\r\n top: 'never',\r\n bottom: 'never'\r\n };\r\n private _dividerConfig: DividerConfig = this.defaultDividerConfig;\r\n @Input()\r\n get dividerConfig(): DividerConfig {\r\n return this._dividerConfig;\r\n };\r\n set dividerConfig(dividerConfig: DividerConfig) {\r\n this._dividerConfig = dividerConfig ?? this.defaultDividerConfig;\r\n this._dividerConfig.top = this._dividerConfig.top ?? this.defaultDividerConfig.top;\r\n this._dividerConfig.bottom = this._dividerConfig.bottom ?? this.defaultDividerConfig.bottom;\r\n }\r\n\r\n constructor(\r\n private sanitizer: DomSanitizer) {\r\n }\r\n\r\n private sanitiseHtml(html: string): string {\r\n const sanitisedHtml = this.sanitizer.sanitize(SecurityContext.HTML, html);\r\n return sanitisedHtml;\r\n }\r\n}\r\n","\r\n\r\n
\r\n
\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { AppDataKeys, ComponentSelectors } from '../../constants/app-data.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\n\r\n@Component({\r\n selector: ComponentSelectors.Other.Landing,\r\n templateUrl: './landing.component.html'\r\n})\r\nexport class LandingComponent implements OnInit {\r\n\r\n htmlTitle: string = 'Sign In';\r\n\r\n acceptTerms = false;\r\n showConditions = false;\r\n userTermsAndConditions: string;\r\n\r\n constructor(\r\n private router: Router,\r\n private appDataService: AppDataService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appDataService.overrideHtmlTitleSetByDspxFramework(this.htmlTitle);\r\n\r\n this.userTermsAndConditions = this.appDataService.getAppData(AppDataKeys.userTermsAndConditions);\r\n }\r\n\r\n showConditionSection() {\r\n this.showConditions = true;\r\n return false;\r\n }\r\n\r\n hideConditionSection() {\r\n this.showConditions = false;\r\n }\r\n\r\n signIn() {\r\n window.open(ApiEndpoints.authentication.signIn, '_self');\r\n }\r\n\r\n register() {\r\n this.router.navigate(['/', RouteConstants.user.verify]);\r\n }\r\n}\r\n","

{{htmlTitle}}

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

Conditions Of Use

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

Please refer to Help for instructions.

\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { NgRecaptcha3Service } from 'ng-recaptcha3';\r\n\r\nimport { CoreService, DataService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport { ComponentSelectors, PopupCodes } from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { RequestSaveResultStatus } from '../../constants/request-save-result-status';\r\n\r\nimport { PopupInfo } from '../../interfaces/popup-info.interface';\r\n\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { FormDataService } from '../../services/form-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ApplicationUserService } from '../../services/application-user-service';\r\nimport { FormatHtmlDetailsService } from '../../services/format-html-details-service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseApplicationUserComponent } from '../base-application-user-component/base-application-user-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.UserForm.MyApps,\r\n templateUrl: './my-apps.component.html'\r\n})\r\nexport class MyAppsComponent extends BaseApplicationUserComponent {\r\n\r\n constructor(\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n protected route: ActivatedRoute,\r\n protected recaptchaService: NgRecaptcha3Service,\r\n protected errorService: ErrorService,\r\n protected coreService: CoreService,\r\n protected dataService: DataService,\r\n protected dialogService: DialogService,\r\n protected spinnerService: SpinnerService,\r\n protected appDataService: AppDataService,\r\n protected formDataService: FormDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected applicationUserService: ApplicationUserService,\r\n protected formatHtmlDetailsService: FormatHtmlDetailsService,\r\n protected userProfileService: UserProfileService) {\r\n\r\n super(\r\n componentDeactivationService,\r\n router,\r\n route,\r\n recaptchaService,\r\n errorService,\r\n coreService,\r\n dataService,\r\n dialogService,\r\n spinnerService,\r\n appDataService,\r\n formDataService,\r\n dialogHelperService,\r\n htmlHelperService,\r\n applicationUserService,\r\n formatHtmlDetailsService,\r\n userProfileService);\r\n\r\n this.settings = {\r\n isMyApps: true,\r\n hasAnonymousAccess: false,\r\n\r\n draftModeEndpointKey: ApiEndpointKeys.getMyAppsDraftConfigAndResponse,\r\n editModeEndpointKey: ApiEndpointKeys.getMyAppsConfigAndResponse,\r\n insertModeEndpointKey: '',\r\n\r\n getIdForDraftMode: (paramMap, navigationState) => navigationState?.draftId,\r\n getIdForEditMode: (paramMap, navigationState) => '',\r\n getIdForInsertMode: (paramMap, navigationState) => '',\r\n\r\n getIsDraftMode: (paramMap, navigationState) => !!navigationState?.draftId,\r\n getIsEditMode: (paramMap, navigationState) => true,\r\n\r\n getIsEmailReadOnly: (isDraftMode, isEditMode) => isEditMode,\r\n\r\n getApplicationUserId: (event, navigationState, isDraftMode, isEditMode) => isDraftMode ? navigationState?.applicationUserId : (isEditMode ? event.id : ''),\r\n getApplicationUserRegistrationId: (event, navigationState, isDraftMode, isEditMode) => '',\r\n\r\n navigateOnCancel: () => this.reloadPage(),\r\n navigateAfterSave: () => this.reloadPage(true),\r\n\r\n saveSuccessfulPopup: PopupCodes.UserForm.SaveSuccessfulMyApps,\r\n customErrorPopups: new Map([\r\n [RequestSaveResultStatus.UpdatedSinceReadTime, { popupCode: 'customConcurrencyError' }]\r\n ]),\r\n\r\n showUserRequestDetailsEndpoint: ApiEndpoints.applicationUser.getMyAppsUserRequestDetails,\r\n withdrawUserRequestEndpoint: ApiEndpoints.applicationUser.withdrawMyAppsUserRequest,\r\n\r\n componentSelector: ComponentSelectors.UserForm.MyApps\r\n };\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { AppDataKeys, ComponentSelectors } from '../../constants/app-data.constants';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\n\r\n@Component({\r\n selector: ComponentSelectors.Other.OnBehalfOfTermsAndConditions,\r\n templateUrl: './on-behalf-of-terms-and-conditions.component.html'\r\n})\r\nexport class OnBehalfOfTermsAndConditionsComponent implements OnInit {\r\n\r\n htmlTitle: string = 'Terms & Conditions - Organisation Authority';\r\n\r\n onBehalfOfTermsAndConditions: string;\r\n\r\n constructor(\r\n private appDataService: AppDataService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appDataService.overrideHtmlTitleSetByDspxFramework(this.htmlTitle);\r\n\r\n this.onBehalfOfTermsAndConditions = this.appDataService.getAppData(AppDataKeys.onBehalfOfTermsAndConditions);\r\n }\r\n}\r\n","

{{htmlTitle}}

\r\n\r\n
\r\n
\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { CardSetTransformationService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport {\r\n FormActions,\r\n FormCustomActions,\r\n NavTabNumbers,\r\n PageNumbers,\r\n SectionCodes,\r\n QuestionCodes,\r\n FilterQuestionDefaults,\r\n FilterQuestionCodes,\r\n ComponentSelectors,\r\n DashboardNames,\r\n AppSelector,\r\n FilterQuestionLabels,\r\n PopupCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates } from '../../constants/templates.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\n\r\nimport { OrganisationGridFilterRequest } from '../../interfaces/organisation-grid-filter-request.interface';\r\nimport { ExportToDataTablesRequest } from '../../interfaces/export-to-data-tables-request.interface';\r\n\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ExcelExportService } from '../../services/excel-export.service';\r\nimport { ExcelImportService } from '../../services/excel-import.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseListComponent } from '../base-list-component/base-list.component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.OrganisationListForm.OrganisationList,\r\n templateUrl: './organisation-list.component.html'\r\n})\r\nexport class OrganisationListComponent extends BaseListComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n templateId: number = Templates.organisationList;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService,\r\n private excelExportService: ExcelExportService,\r\n private excelImportService: ExcelImportService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(\r\n route,\r\n router,\r\n spinnerService,\r\n dialogService,\r\n responseParserService,\r\n htmlHelperService,\r\n appDataService);\r\n\r\n this.initialise(\r\n [NavTabNumbers.OrganisationListForm.organisations, PageNumbers.OrganisationListForm.organisations],\r\n () => ApiEndpoints.dashboard.getOrganisations,\r\n {\r\n getFilterName: () => DashboardNames.OrganisationList,\r\n sectionPath: [NavTabNumbers.OrganisationListForm.organisations, PageNumbers.OrganisationListForm.organisations, SectionCodes.OrganisationListForm.organisation],\r\n searchQuestionCode: QuestionCodes.OrganisationListForm.organisationSearch,\r\n customQuestionCode: QuestionCodes.OrganisationListForm.organisationFilter,\r\n customModelVisibleKeys: ['active'],\r\n getFilterRequestFromModels: (searchModel: any, customModel: any) => ({\r\n searchTerm: searchModel,\r\n active: customModel?.[FilterQuestionCodes.OrganisationListForm.organisationFilterActive]\r\n }),\r\n getDefaultFilterRequest: () => ({\r\n active: FilterQuestionDefaults.OrganisationListForm.organisationFilterActive\r\n })\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.filterHandler.setInitialFilterRequest();\r\n }\r\n\r\n formLoad(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.loadGridDataOnFormLoad(this.filterHandler.getInitialFilterRequest());\r\n if (this.filterHandler.hasNonEmptyCustomProperties(this.filterHandler.getInitialFilterRequest())) {\r\n this.htmlHelperService.clickButtonByTitle(AppSelector, ComponentSelectors.OrganisationListForm.OrganisationList, FilterQuestionLabels.OrganisationListForm);\r\n }\r\n }\r\n\r\n filterData(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.OrganisationListForm.organisationSearch:\r\n case QuestionCodes.OrganisationListForm.organisationFilter: {\r\n this.loadGridData(this.filterHandler.saveFilterRequest(event.action));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n dialogButtonClicked(event: any): void {\r\n // No dialog buttons are implemented in this dashboard\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.OrganisationListForm.organisationPlaceholder: {\r\n switch (event.event.type) {\r\n case FormActions.OrganisationListForm.View:\r\n case FormActions.OrganisationListForm.Edit: {\r\n this.router.navigate(['/', RouteConstants.organisation.prefix, event.event.data.id]);\r\n break;\r\n }\r\n case FormActions.OrganisationListForm.Delete: {\r\n const entity = event.event.data;\r\n this.deleteEntity(\r\n entity.id,\r\n entity.name,\r\n ApiEndpoints.organisation.delete,\r\n PopupCodes.OrganisationListForm.DeleteConfirmation,\r\n PopupCodes.OrganisationListForm.DeleteSuccess);\r\n break;\r\n }\r\n case FormActions.OrganisationListForm.Custom: {\r\n switch (event.event.data.buttonType) {\r\n case FormCustomActions.OrganisationListForm.Add: {\r\n this.router.navigate(['/', RouteConstants.organisation.prefix]);\r\n break;\r\n }\r\n case FormCustomActions.OrganisationListForm.BulkExport: {\r\n const organisationExportToDataTablesRequest = this.getOrganisationExportToDataTablesRequest();\r\n this.excelExportService.exportOrganisationsToXlsx(organisationExportToDataTablesRequest);\r\n break;\r\n }\r\n case FormCustomActions.OrganisationListForm.BulkImport: {\r\n this.importOrganisationsFromXlsx();\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n importOrganisationsFromXlsx(): void {\r\n this.excelImportService.importOrganisationsFromXlsx()\r\n .pipe(take(1))\r\n .subscribe(excelImportResult => {\r\n if (!excelImportResult.isCancelled) {\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n }\r\n });\r\n }\r\n\r\n private getOrganisationExportToDataTablesRequest(): ExportToDataTablesRequest {\r\n const entities = this.getQuestionValue(\r\n this.baseForm.model,\r\n NavTabNumbers.OrganisationListForm.organisations,\r\n PageNumbers.OrganisationListForm.organisations,\r\n SectionCodes.OrganisationListForm.organisation,\r\n QuestionCodes.OrganisationListForm.organisationPlaceholder);\r\n const entityIds = entities.map(entity => entity.id);\r\n const organisationExportToDataTablesRequest: ExportToDataTablesRequest = { entityIds };\r\n return organisationExportToDataTablesRequest;\r\n }\r\n}\r\n","\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { CardSetTransformationService, CoreService, DataService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport { ComponentSelectors, PopupCodes, ReadOnlyAccessPageActionButtons, ServerErrorPopupCodes } from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\nimport { Templates, Versions } from '../../constants/templates.constants';\r\n\r\nimport { SaveRequest } from '../../interfaces/save-request.interface';\r\nimport { SaveResult } from '../../interfaces/save-result.interface';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { FormDataService } from '../../services/form-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseDetailComponent, ReadOnlyGrid } from '../base-detail-component/base-detail-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.OrganisationForm.Organisation,\r\n templateUrl: './organisation.component.html'\r\n})\r\nexport class OrganisationComponent extends BaseDetailComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n id = '';\r\n formServiceEndpoint: string = ApiEndpointKeys.getFormConfig;\r\n templateId: number = Templates.organisation;\r\n versionNo: number = Versions.latest;\r\n activeDialog: string;\r\n editing = false;\r\n\r\n private isViewModeForDetails = true;\r\n\r\n private isOrganisationExternalCodeReadOnly: boolean;\r\n private isReviewDefinitionReadOnly: boolean;\r\n\r\n private readOnlyGridControlGroupNames = {\r\n customApprovals: 'customApprovalVisibility'\r\n };\r\n\r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n private route: ActivatedRoute,\r\n private errorService: ErrorService,\r\n private coreService: CoreService,\r\n private dataService: DataService,\r\n private spinnerService: SpinnerService,\r\n private formDataService: FormDataService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(dialogService, appDataService, dialogHelperService, htmlHelperService, componentDeactivationService, router);\r\n\r\n this.readOnlyGridRegistry = {\r\n [this.readOnlyGridControlGroupNames.customApprovals]: new ReadOnlyGrid()\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.route.paramMap.subscribe((paramMap: ParamMap) => {\r\n const id = paramMap.get('id');\r\n if (id) {\r\n this.id = id;\r\n this.formServiceEndpoint = ApiEndpointKeys.getOrganisationConfigAndResponse;\r\n this.editing = true;\r\n }\r\n });\r\n\r\n const isEditingSubOrganisation = (sectionIndex: number) => this.formDataService.organisationFormIsEditingSubOrganisation(this.baseForm.model, sectionIndex);\r\n const isEditingOrganisationExternalCode = (sectionIndex: number) => this.formDataService.organisationFormIsEditingOrganisationExternalCode(this.baseForm.model, sectionIndex);\r\n const isEditingReviewDefinition = (sectionIndex: number) => this.formDataService.organisationFormIsEditingReviewDefinition(this.baseForm.model, sectionIndex);\r\n\r\n this.coreService.conditionFunctions['isCodeReadOnly'] = () =>\r\n this.editing;\r\n\r\n this.coreService.conditionFunctions['isSubOrganisationCodeReadOnly'] = (pageIndex: number, sectionIndex: number) =>\r\n isEditingSubOrganisation(sectionIndex);\r\n\r\n this.coreService.conditionFunctions['isOrganisationExternalCodeTypeReadOnly'] = (pageIndex: number, sectionIndex: number) =>\r\n this.isOrganisationExternalCodeReadOnly ||\r\n isEditingOrganisationExternalCode(sectionIndex);\r\n\r\n this.coreService.conditionFunctions['isOrganisationExternalCodeValueReadOnly'] = () =>\r\n this.isOrganisationExternalCodeReadOnly;\r\n\r\n this.coreService.conditionFunctions['isReviewDefinitionNameReadOnly'] = (pageIndex: number, sectionIndex: number) =>\r\n this.isReviewDefinitionReadOnly ||\r\n isEditingReviewDefinition(sectionIndex);\r\n\r\n this.coreService.conditionFunctions['shouldShowGridControl'] = (args: string[]) => this.shouldShowReadOnlyGrid(args[0], args[1]);\r\n\r\n this.coreService.applicationFunctions['canSave'] = () => this.isFormEditable;\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel(null);\r\n\r\n this.formDataService.configureOrganisationFormViewMode(\r\n () => this.baseForm.fields,\r\n () => this.isFormEditable,\r\n () => this.editing,\r\n (enabled: boolean) => this.isViewModeForDetails = enabled,\r\n () => this.isViewModeForDetails);\r\n\r\n this.formDataService.configureOrganisationFormReadOnlyGridViewMode(\r\n () => this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.customApprovals));\r\n\r\n this.formDataService.configureOrganisationFormRepeatingSection(\r\n () => this.isFormEditable,\r\n () => this.isOrganisationExternalCodeReadOnly,\r\n () => this.isReviewDefinitionReadOnly,\r\n (sectionIndex: number) => isEditingReviewDefinition(sectionIndex));\r\n }\r\n\r\n formLoaded(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.isFormEditable = !!event?.isFormEditable;\r\n if (!this.isFormEditable) {\r\n // If the form is being shown as read-only, then switch to Edit mode (all fields will be disabled anyway), because View mode does not display all fields.\r\n this.isViewModeForDetails = false;\r\n\r\n // If the form is being shown as read-only, then toggle all read-only grids to \"show\" mode.\r\n this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.customApprovals);\r\n }\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.OrganisationForm);\r\n\r\n this.isOrganisationExternalCodeReadOnly = event.isOrganisationExternalCodeReadOnly;\r\n this.isReviewDefinitionReadOnly = event.isReviewDefinitionReadOnly;\r\n\r\n this.handlePostFormLoadActions(event);\r\n }\r\n\r\n save(event: any): void {\r\n const saveDataRequest: SaveRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.id,\r\n response: event.model,\r\n expectedLastUpdateTime: event.lastUpdatedTime,\r\n isSubmit: false\r\n }\r\n if (!event.isFormValid) {\r\n this.baseForm.markAllFieldsAsTouched();\r\n if (!this.baseForm.fields[0]?.formControl.valid) {\r\n this.baseForm.showValidationSummary(true);\r\n this.dialogService.showDialog(PopupCodes.Common.ValidationError);\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n\r\n private saveData(request: SaveRequest): void {\r\n this.spinnerService.showSpinner();\r\n this.dataService.saveData(ApiEndpoints.organisation.save, request)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe((data: SaveResult) => {\r\n this.spinnerService.hideSpinner();\r\n if (this.handleWarnings(request, data, r => this.saveData(r))) {\r\n return;\r\n }\r\n if (ServerErrorPopupCodes.SaveOrganisation.includes(data.message)) {\r\n this.activeDialog = data.message;\r\n }\r\n else {\r\n this.id = data.id;\r\n this.activeDialog = PopupCodes.OrganisationForm.SaveSuccessful;\r\n }\r\n this.dialogHelperService.showDialog(this.activeDialog, null, data.details);\r\n });\r\n }\r\n\r\n cancel(event: any): void {\r\n this.navigateBackToDashboard();\r\n }\r\n\r\n dialogSubmitted(event: any): void {\r\n if (this.activeDialog === PopupCodes.OrganisationForm.SaveSuccessful) {\r\n this.navigateBackToDashboard(true);\r\n }\r\n }\r\n\r\n private navigateBackToDashboard(ignoreUnsavedChanges = false): void {\r\n this.navigate(['/', RouteConstants.organisation.list], ignoreUnsavedChanges);\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { SpinnerService, DialogService, CardSetTransformationService } from 'dspx-core';\r\n\r\nimport {\r\n AppSelector,\r\n ComponentSelectors,\r\n DashboardNames,\r\n FilterQuestionCodes,\r\n FilterQuestionDefaults,\r\n FilterQuestionLabels,\r\n FormActions,\r\n FormCustomActions,\r\n NavTabNumbers,\r\n PageNumbers,\r\n PopupCodes,\r\n QuestionCodes,\r\n SectionCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates } from '../../constants/templates.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\n\r\nimport { ReferenceDataGridFilterRequest } from '../../interfaces/reference-data-grid-filter-request.interface';\r\nimport { ExportToDataTablesRequest } from '../../interfaces/export-to-data-tables-request.interface';\r\n\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ExcelExportService } from '../../services/excel-export.service';\r\nimport { ExcelImportService } from '../../services/excel-import.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseListComponent } from '../base-list-component/base-list.component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.ReferenceDataListForm.ReferenceDataList,\r\n templateUrl: './reference-data-list.component.html'\r\n})\r\nexport class ReferenceDataListComponent extends BaseListComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n templateId: number = Templates.referenceDataList;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService,\r\n private excelExportService: ExcelExportService,\r\n private excelImportService: ExcelImportService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(\r\n route,\r\n router,\r\n spinnerService,\r\n dialogService,\r\n responseParserService,\r\n htmlHelperService,\r\n appDataService);\r\n\r\n this.initialise(\r\n [NavTabNumbers.ReferenceDataListForm.referenceData, PageNumbers.ReferenceDataListForm.referenceData],\r\n () => ApiEndpoints.dashboard.getReferenceDataCategories,\r\n {\r\n getFilterName: () => DashboardNames.ReferenceDataList,\r\n sectionPath: [NavTabNumbers.ReferenceDataListForm.referenceData, PageNumbers.ReferenceDataListForm.referenceData, SectionCodes.ReferenceDataListForm.config],\r\n searchQuestionCode: QuestionCodes.ReferenceDataListForm.referenceDataSearch,\r\n customQuestionCode: QuestionCodes.ReferenceDataListForm.referenceDataFilter,\r\n customModelVisibleKeys: ['active'],\r\n getFilterRequestFromModels: (searchModel: any, customModel: any) => ({\r\n searchTerm: searchModel,\r\n active: customModel?.[FilterQuestionCodes.ReferenceDataListForm.referenceDataFilterActive]\r\n }),\r\n getDefaultFilterRequest: () => ({\r\n active: FilterQuestionDefaults.ReferenceDataListForm.referenceDataFilterActive\r\n })\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.filterHandler.setInitialFilterRequest();\r\n }\r\n\r\n formLoad(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.loadGridDataOnFormLoad(this.filterHandler.getInitialFilterRequest());\r\n if (this.filterHandler.hasNonEmptyCustomProperties(this.filterHandler.getInitialFilterRequest())) {\r\n this.htmlHelperService.clickButtonByTitle(AppSelector, ComponentSelectors.ReferenceDataListForm.ReferenceDataList, FilterQuestionLabels.ReferenceDataListForm);\r\n }\r\n }\r\n\r\n filterData(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ReferenceDataListForm.referenceDataSearch:\r\n case QuestionCodes.ReferenceDataListForm.referenceDataFilter: {\r\n this.loadGridData(this.filterHandler.saveFilterRequest(event.action));\r\n }\r\n }\r\n }\r\n\r\n dialogButtonClicked(event: any): void {\r\n // No dialog buttons are implemented in this dashboard\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ReferenceDataListForm.referenceDataPlaceholder: {\r\n switch (event.event.type) {\r\n case FormActions.ReferenceDataListForm.View:\r\n case FormActions.ReferenceDataListForm.Edit: {\r\n this.router.navigate(['/', RouteConstants.referenceData.prefix, event.event.data.id]);\r\n break;\r\n }\r\n case FormActions.ReferenceDataListForm.Delete: {\r\n const entity = event.event.data;\r\n this.deleteEntity(\r\n entity.id,\r\n entity.categoryText,\r\n ApiEndpoints.referenceData.delete,\r\n PopupCodes.ReferenceDataListForm.DeleteConfirmation,\r\n PopupCodes.ReferenceDataListForm.DeleteSuccess);\r\n break;\r\n }\r\n case FormActions.ReferenceDataListForm.Custom: {\r\n switch (event.event.data.buttonType) {\r\n case FormCustomActions.ReferenceDataListForm.Add: {\r\n this.router.navigate(['/', RouteConstants.referenceData.prefix]);\r\n break;\r\n }\r\n case FormCustomActions.ReferenceDataListForm.BulkExport: {\r\n const referenceDataExportToDataTablesRequest = this.getReferenceDataExportToDataTablesRequest();\r\n this.excelExportService.exportReferenceDataToXlsx(referenceDataExportToDataTablesRequest);\r\n break;\r\n }\r\n case FormCustomActions.ReferenceDataListForm.BulkImport: {\r\n this.importReferenceDataFromXlsx();\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n importReferenceDataFromXlsx(): void {\r\n this.excelImportService.importReferenceDataFromXlsx()\r\n .pipe(take(1))\r\n .subscribe(excelImportResult => {\r\n if (!excelImportResult.isCancelled) {\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n }\r\n });\r\n }\r\n\r\n private getReferenceDataExportToDataTablesRequest(): ExportToDataTablesRequest {\r\n const entities = this.getQuestionValue(\r\n this.baseForm.model,\r\n NavTabNumbers.ReferenceDataListForm.referenceData,\r\n PageNumbers.ReferenceDataListForm.referenceData,\r\n SectionCodes.ReferenceDataListForm.config,\r\n QuestionCodes.ReferenceDataListForm.referenceDataPlaceholder);\r\n const entityIds = entities.map(entity => entity.id);\r\n const referenceDataExportToDataTablesRequest: ExportToDataTablesRequest = { entityIds };\r\n return referenceDataExportToDataTablesRequest;\r\n }\r\n}\r\n","\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { CardSetTransformationService, CoreService, DataService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport { ComponentSelectors, PopupCodes, ReadOnlyAccessPageActionButtons, ServerErrorPopupCodes } from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates, Versions } from '../../constants/templates.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\n\r\nimport { SaveRequest } from '../../interfaces/save-request.interface';\r\nimport { SaveResult } from '../../interfaces/save-result.interface';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { FormDataService } from '../../services/form-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseDetailComponent } from '../base-detail-component/base-detail-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.ReferenceDataForm.ReferenceData,\r\n templateUrl: './reference-data.component.html'\r\n})\r\nexport class ReferenceDataComponent extends BaseDetailComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n id = '';\r\n formServiceEndpoint: string = ApiEndpointKeys.getFormConfig;\r\n templateId: number = Templates.referenceData;\r\n versionNo: number = Versions.latest;\r\n activeDialog: string;\r\n editing = false;\r\n\r\n private isViewModeForCategory = true;\r\n\r\n private undeletableReferenceDataIds: Set;\r\n\r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n private route: ActivatedRoute,\r\n private errorService: ErrorService,\r\n private coreService: CoreService,\r\n private dataService: DataService,\r\n private spinnerService: SpinnerService,\r\n private formDataService: FormDataService,\r\n private userProfileService: UserProfileService) {\r\n super(dialogService, appDataService, dialogHelperService, htmlHelperService, componentDeactivationService, router);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.route.paramMap.subscribe((paramMap: ParamMap) => {\r\n const id = paramMap.get('id');\r\n if (id) {\r\n this.id = id;\r\n this.formServiceEndpoint = ApiEndpointKeys.getReferenceDataConfigAndResponse;\r\n this.editing = true;\r\n }\r\n else {\r\n this.resetDirtyFlagAfterLoading();\r\n }\r\n });\r\n\r\n const isEditingRefValue = (sectionIndex: number) => this.formDataService.referenceDataFormIsEditingRefValue(this.baseForm.model, sectionIndex);\r\n const isUndeletableRefValue = (sectionIndex: number) => this.undeletableReferenceDataIds.has(this.formDataService.referenceDataFormGetRefValueId(this.baseForm.model, sectionIndex));\r\n\r\n this.coreService.conditionFunctions['isEditing'] = () => this.editing;\r\n this.coreService.conditionFunctions['isEditingRefValue'] = (pageIndex: number, sectionIndex: number) => isEditingRefValue(sectionIndex);\r\n\r\n this.coreService.applicationFunctions['canSave'] = () => this.isFormEditable;\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel(null);\r\n\r\n this.formDataService.configureReferenceDataFormViewMode(\r\n () => this.baseForm.fields,\r\n () => this.isFormEditable,\r\n () => this.editing,\r\n (enabled: boolean) => this.isViewModeForCategory = enabled,\r\n () => this.isViewModeForCategory);\r\n\r\n this.formDataService.configureReferenceDataFormRepeatingSection(\r\n () => this.isFormEditable,\r\n (sectionIndex: number) => !isUndeletableRefValue(sectionIndex));\r\n }\r\n\r\n formLoaded(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.isFormEditable = !!event?.isFormEditable;\r\n if (!this.isFormEditable) {\r\n // If the form is being shown as read-only, then switch to Edit mode (all fields will be disabled anyway), because View mode does not display all fields.\r\n this.isViewModeForCategory = false;\r\n }\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.ReferenceDataForm);\r\n\r\n this.undeletableReferenceDataIds = new Set(event.undeletableReferenceDataIds);\r\n\r\n this.handlePostFormLoadActions(event);\r\n }\r\n\r\n save(event: any): void {\r\n const saveDataRequest: SaveRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.id,\r\n response: event.model,\r\n expectedLastUpdateTime: event.lastUpdatedTime,\r\n isSubmit: false\r\n }\r\n if (!event.isFormValid) {\r\n this.baseForm.markAllFieldsAsTouched();\r\n if (!this.baseForm.fields[0]?.formControl.valid) {\r\n this.baseForm.showValidationSummary(true);\r\n this.dialogService.showDialog(PopupCodes.Common.ValidationError);\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n\r\n private saveData(request: SaveRequest): void {\r\n this.spinnerService.showSpinner();\r\n this.dataService.saveData(ApiEndpoints.referenceData.save, request)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe((data: SaveResult) => {\r\n this.spinnerService.hideSpinner();\r\n if (this.handleWarnings(request, data, r => this.saveData(r))) {\r\n return;\r\n }\r\n if (ServerErrorPopupCodes.SaveReferenceData.includes(data.message)) {\r\n this.activeDialog = data.message;\r\n }\r\n else {\r\n this.id = data.id;\r\n this.activeDialog = PopupCodes.ReferenceDataForm.SaveSuccessful;\r\n }\r\n this.dialogHelperService.showDialog(this.activeDialog, null, data.details);\r\n });\r\n }\r\n\r\n cancel(event: any): void {\r\n this.navigateBackToDashboard();\r\n }\r\n\r\n dialogSubmitted(event: any): void {\r\n if (this.activeDialog === PopupCodes.ReferenceDataForm.SaveSuccessful) {\r\n this.navigateBackToDashboard(true);\r\n }\r\n }\r\n\r\n private navigateBackToDashboard(ignoreUnsavedChanges = false): void {\r\n this.navigate(['/', RouteConstants.referenceData.list], ignoreUnsavedChanges);\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { CardSetTransformationService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport {\r\n FormActions,\r\n FormCustomActions,\r\n NavTabNumbers,\r\n PageNumbers,\r\n SectionCodes,\r\n QuestionCodes,\r\n FilterQuestionDefaults,\r\n FilterQuestionCodes,\r\n ComponentSelectors,\r\n PopupCodes,\r\n OptionSetCodes,\r\n DashboardNames,\r\n AppSelector,\r\n FilterQuestionLabels\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates } from '../../constants/templates.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\n\r\nimport { ReviewDefinitionGridFilterRequest } from '../../interfaces/review-definition-grid-filter-request.interface';\r\nimport { ExportToDataTablesRequest } from '../../interfaces/export-to-data-tables-request.interface';\r\n\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ExcelExportService } from '../../services/excel-export.service';\r\nimport { ExcelImportService } from '../../services/excel-import.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseListComponent } from '../base-list-component/base-list.component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.ReviewDefinitionListForm.ReviewDefinitionList,\r\n templateUrl: './review-definition-list.component.html'\r\n})\r\nexport class ReviewDefinitionListComponent extends BaseListComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n templateId: number = Templates.reviewDefinitionList;\r\n\r\n private activeDialog: string;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService,\r\n private excelExportService: ExcelExportService,\r\n private excelImportService: ExcelImportService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(\r\n route,\r\n router,\r\n spinnerService,\r\n dialogService,\r\n responseParserService,\r\n htmlHelperService,\r\n appDataService);\r\n\r\n this.initialise(\r\n [NavTabNumbers.ReviewDefinitionListForm.reviewDefinitions, PageNumbers.ReviewDefinitionListForm.reviewDefinitions],\r\n () => ApiEndpoints.dashboard.getReviewDefinitions,\r\n {\r\n getFilterName: () => DashboardNames.ReviewDefinitionList,\r\n sectionPath: [NavTabNumbers.ReviewDefinitionListForm.reviewDefinitions, PageNumbers.ReviewDefinitionListForm.reviewDefinitions, SectionCodes.ReviewDefinitionListForm.reviewDefinition],\r\n searchQuestionCode: QuestionCodes.ReviewDefinitionListForm.reviewDefinitionSearch,\r\n customQuestionCode: QuestionCodes.ReviewDefinitionListForm.reviewDefinitionFilter,\r\n customModelVisibleKeys: ['active'],\r\n getFilterRequestFromModels: (searchModel: any, customModel: any) => ({\r\n searchTerm: searchModel,\r\n active: customModel?.[FilterQuestionCodes.ReviewDefinitionListForm.reviewDefinitionFilterActive]\r\n }),\r\n getDefaultFilterRequest: () => ({\r\n active: FilterQuestionDefaults.ReviewDefinitionListForm.reviewDefinitionFilterActive\r\n })\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.filterHandler.setInitialFilterRequest();\r\n }\r\n\r\n formLoad(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.loadGridDataOnFormLoad(this.filterHandler.getInitialFilterRequest());\r\n if (this.filterHandler.hasNonEmptyCustomProperties(this.filterHandler.getInitialFilterRequest())) {\r\n this.htmlHelperService.clickButtonByTitle(AppSelector, ComponentSelectors.ReviewDefinitionListForm.ReviewDefinitionList, FilterQuestionLabels.ReviewDefinitionListForm);\r\n }\r\n }\r\n\r\n filterData(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ReviewDefinitionListForm.reviewDefinitionSearch:\r\n case QuestionCodes.ReviewDefinitionListForm.reviewDefinitionFilter: {\r\n this.loadGridData(this.filterHandler.saveFilterRequest(event.action));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n dialogButtonClicked(event: any): void {\r\n const activeDialog = this.activeDialog;\r\n delete this.activeDialog;\r\n\r\n switch (activeDialog) {\r\n case PopupCodes.ReviewDefinitionListForm.BulkExportChoice: {\r\n const reviewDefinitionExportToDataTablesRequest = this.getReviewDefinitionExportToDataTablesRequest();\r\n switch (event?.bulkExportType) {\r\n case OptionSetCodes.ReviewDefinitionListForm.BulkExportType.Standard: {\r\n this.excelExportService.exportReviewDefinitionsToXlsx(reviewDefinitionExportToDataTablesRequest);\r\n break;\r\n }\r\n case OptionSetCodes.ReviewDefinitionListForm.BulkExportType.ImportCompatible: {\r\n this.excelExportService.exportReviewDefinitionsToXlsxImportCompatible(reviewDefinitionExportToDataTablesRequest);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ReviewDefinitionListForm.reviewDefinitionPlaceholder: {\r\n switch (event.event.type) {\r\n case FormActions.ReviewDefinitionListForm.View:\r\n case FormActions.ReviewDefinitionListForm.Edit: {\r\n this.router.navigate(['/', RouteConstants.reviewDefinition.prefix, event.event.data.id]);\r\n break;\r\n }\r\n case FormActions.ReviewDefinitionListForm.Delete: {\r\n const entity = event.event.data;\r\n this.deleteEntity(\r\n entity.id,\r\n entity.name,\r\n ApiEndpoints.reviewDefinition.delete,\r\n PopupCodes.ReviewDefinitionListForm.DeleteConfirmation,\r\n PopupCodes.ReviewDefinitionListForm.DeleteSuccess);\r\n break;\r\n }\r\n case FormActions.ReviewDefinitionListForm.Custom: {\r\n switch (event.event.data.buttonType) {\r\n case FormCustomActions.ReviewDefinitionListForm.Add: {\r\n this.router.navigate(['/', RouteConstants.reviewDefinition.prefix]);\r\n break;\r\n }\r\n case FormCustomActions.ReviewDefinitionListForm.BulkExportChooseType: {\r\n const popupModel = { bulkExportType: OptionSetCodes.ReviewDefinitionListForm.BulkExportType.Standard }\r\n this.activeDialog = PopupCodes.ReviewDefinitionListForm.BulkExportChoice;\r\n this.dialogService.showDialog(this.activeDialog, popupModel);\r\n break;\r\n }\r\n case FormCustomActions.ReviewDefinitionListForm.BulkExport: {\r\n const reviewDefinitionExportToDataTablesRequest = this.getReviewDefinitionExportToDataTablesRequest();\r\n this.excelExportService.exportReviewDefinitionsToXlsx(reviewDefinitionExportToDataTablesRequest);\r\n break;\r\n }\r\n case FormCustomActions.ReviewDefinitionListForm.BulkImport: {\r\n this.importReviewDefinitionsFromXlsx();\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n importReviewDefinitionsFromXlsx(): void {\r\n this.excelImportService.importReviewDefinitionsFromXlsx()\r\n .pipe(take(1))\r\n .subscribe(excelImportResult => {\r\n if (!excelImportResult.isCancelled) {\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n }\r\n });\r\n }\r\n\r\n private getReviewDefinitionExportToDataTablesRequest(): ExportToDataTablesRequest {\r\n const entities = this.getQuestionValue(\r\n this.baseForm.model,\r\n NavTabNumbers.ReviewDefinitionListForm.reviewDefinitions,\r\n PageNumbers.ReviewDefinitionListForm.reviewDefinitions,\r\n SectionCodes.ReviewDefinitionListForm.reviewDefinition,\r\n QuestionCodes.ReviewDefinitionListForm.reviewDefinitionPlaceholder);\r\n const entityIds = entities.map(entity => entity.id);\r\n const reviewDefinitionExportToDataTablesRequest: ExportToDataTablesRequest = { entityIds };\r\n return reviewDefinitionExportToDataTablesRequest;\r\n }\r\n}\r\n","\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { CardSetTransformationService, CoreService, DataService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport { ComponentSelectors, FormActions, PopupCodes, QuestionCodes, ReadOnlyAccessPageActionButtons, ServerErrorPopupCodes } from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\nimport { Templates, Versions } from '../../constants/templates.constants';\r\n\r\nimport { SaveRequest } from '../../interfaces/save-request.interface';\r\nimport { SaveResult } from '../../interfaces/save-result.interface';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { FormDataService } from '../../services/form-data.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseDetailComponent, ReadOnlyGrid } from '../base-detail-component/base-detail-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.ReviewDefinitionForm.ReviewDefinition,\r\n templateUrl: './review-definition.component.html'\r\n})\r\nexport class ReviewDefinitionComponent extends BaseDetailComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n id = '';\r\n formServiceEndpoint: string = ApiEndpointKeys.getFormConfig;\r\n templateId: number = Templates.reviewDefinition;\r\n versionNo: number = Versions.latest;\r\n activeDialog: string;\r\n editing = false;\r\n\r\n private isViewModeForDetails = true;\r\n\r\n private readOnlyGridControlGroupNames = {\r\n reviewOccurrenceHistory: 'reviewOccurrenceHistoryVisibility'\r\n };\r\n\r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n private route: ActivatedRoute,\r\n private errorService: ErrorService,\r\n private coreService: CoreService,\r\n private dataService: DataService,\r\n private spinnerService: SpinnerService,\r\n private formDataService: FormDataService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(dialogService, appDataService, dialogHelperService, htmlHelperService, componentDeactivationService, router);\r\n\r\n this.readOnlyGridRegistry = {\r\n [this.readOnlyGridControlGroupNames.reviewOccurrenceHistory]: new ReadOnlyGrid()\r\n };\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.route.paramMap.subscribe((paramMap: ParamMap) => {\r\n const id = paramMap.get('id');\r\n if (id) {\r\n this.id = id;\r\n this.formServiceEndpoint = ApiEndpointKeys.getReviewDefinitionConfigAndResponse;\r\n this.editing = true;\r\n }\r\n });\r\n\r\n this.coreService.conditionFunctions['isCodeReadOnly'] = () =>\r\n this.editing;\r\n\r\n this.coreService.conditionFunctions['shouldShowGridControl'] = (args: string[]) => this.shouldShowReadOnlyGrid(args[0], args[1]);\r\n\r\n this.coreService.applicationFunctions['canSave'] = () => this.isFormEditable;\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel(null);\r\n\r\n this.formDataService.configureReviewDefinitionFormViewMode(\r\n () => this.baseForm.fields,\r\n () => this.isFormEditable,\r\n () => this.editing,\r\n (enabled: boolean) => this.isViewModeForDetails = enabled,\r\n () => this.isViewModeForDetails);\r\n\r\n this.formDataService.configureReviewDefinitionFormReadOnlyGridViewMode(\r\n () => this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.reviewOccurrenceHistory));\r\n }\r\n\r\n formLoaded(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.isFormEditable = !!event?.isFormEditable;\r\n if (!this.isFormEditable) {\r\n // If the form is being shown as read-only, then switch to Edit mode (all fields will be disabled anyway), because View mode does not display all fields.\r\n this.isViewModeForDetails = false;\r\n\r\n // If the form is being shown as read-only, then toggle all read-only grids to \"show\" mode.\r\n this.toggleReadOnlyGridVisibility(this.readOnlyGridControlGroupNames.reviewOccurrenceHistory);\r\n }\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.ReviewDefinitionForm);\r\n \r\n this.handlePostFormLoadActions(event);\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ReviewDefinitionForm.reviewOccurrenceHistoryGrid: {\r\n switch (event.event.type) {\r\n case FormActions.ReviewDefinitionForm.View: {\r\n this.router.navigate([\r\n '/',\r\n RouteConstants.reviewDefinition.prefix,\r\n this.id,\r\n RouteConstants.reviewDefinition.reviewOccurrenceDetailFragment,\r\n event.event.data.id,\r\n RouteConstants.reviewDefinition.reviewDecisionListFragment\r\n ]);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n save(event: any): void {\r\n const saveDataRequest: SaveRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.id,\r\n response: event.model,\r\n expectedLastUpdateTime: event.lastUpdatedTime,\r\n isSubmit: false\r\n }\r\n if (!event.isFormValid) {\r\n this.baseForm.markAllFieldsAsTouched();\r\n if (!this.baseForm.fields[0]?.formControl.valid) {\r\n this.baseForm.showValidationSummary(true);\r\n this.dialogService.showDialog(PopupCodes.Common.ValidationError);\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n\r\n private saveData(request: SaveRequest): void {\r\n this.spinnerService.showSpinner();\r\n this.dataService.saveData(ApiEndpoints.reviewDefinition.save, request)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe((data: SaveResult) => {\r\n this.spinnerService.hideSpinner();\r\n if (this.handleWarnings(request, data, r => this.saveData(r))) {\r\n return;\r\n }\r\n if (ServerErrorPopupCodes.SaveReviewDefinition.includes(data.message)) {\r\n this.activeDialog = data.message;\r\n }\r\n else {\r\n this.id = data.id;\r\n this.activeDialog = PopupCodes.ReviewDefinitionForm.SaveSuccessful;\r\n }\r\n this.dialogHelperService.showDialog(this.activeDialog, null, data.details);\r\n });\r\n }\r\n\r\n cancel(event: any): void {\r\n this.navigateBackToDashboard();\r\n }\r\n\r\n dialogSubmitted(event: any): void {\r\n if (this.activeDialog === PopupCodes.ReviewDefinitionForm.SaveSuccessful) {\r\n this.navigateBackToDashboard(true);\r\n }\r\n }\r\n \r\n private navigateBackToDashboard(ignoreUnsavedChanges = false): void {\r\n this.navigate(['/', RouteConstants.reviewDefinition.list], ignoreUnsavedChanges);\r\n }\r\n}\r\n","\r\n\r\n","import {Component, OnInit} from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { SpinnerService, DialogService, MessagePlaceholders, CoreService, CardSetTransformationService } from 'dspx-core';\r\n\r\nimport {\r\n AppDataKeys,\r\n AppSelector,\r\n ComponentSelectors,\r\n DashboardNames,\r\n FilterQuestionCodes,\r\n FilterQuestionDefaults,\r\n FilterQuestionLabels,\r\n FormActions,\r\n FormCustomActions,\r\n NavTabNumbers,\r\n PageNumbers,\r\n PopupCodes,\r\n QuestionCodes,\r\n ReadOnlyAccessPageActionButtons,\r\n SectionCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates } from '../../constants/templates.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\n\r\nimport { ReviewGridFilterRequest } from '../../interfaces/review-grid-filter-request.interface';\r\nimport { GetReviewDecisionDetailsRequest } from '../../interfaces/get-review-decision-details-request.interface';\r\nimport { GetReviewDecisionDetailsResponse } from '../../interfaces/get-review-decision-details-response.interface';\r\nimport { ExportToDataTablesRequest } from '../../interfaces/export-to-data-tables-request.interface';\r\n\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { ExcelExportService } from '../../services/excel-export.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\nimport { FormatHtmlDetailsService } from '../../services/format-html-details-service';\r\n\r\nimport { BaseListComponent } from '../base-list-component/base-list.component';\r\n\r\ntype BulkOperationSettings = {\r\n additionalFields?: any,\r\n apiEndpoint: string,\r\n completionPopupCode: string\r\n};\r\n\r\n@Component({\r\n selector: ComponentSelectors.ReviewListForm.ReviewList,\r\n templateUrl: './review-list.component.html'\r\n})\r\nexport class ReviewListComponent extends BaseListComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n templateId: number = Templates.reviewList;\r\n\r\n isAdminMode = false;\r\n reviewDefinitionId = '';\r\n reviewOccurrenceId = '';\r\n\r\n private activeDialog: string;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService,\r\n private coreService: CoreService,\r\n private errorService: ErrorService,\r\n private excelExportService: ExcelExportService,\r\n private userProfileService: UserProfileService,\r\n private formatHtmlDetailsService: FormatHtmlDetailsService) {\r\n\r\n super(\r\n route,\r\n router,\r\n spinnerService,\r\n dialogService,\r\n responseParserService,\r\n htmlHelperService,\r\n appDataService);\r\n\r\n this.initialise(\r\n [NavTabNumbers.ReviewListForm.reviews, PageNumbers.ReviewListForm.reviews],\r\n () => this.isAdminMode\r\n ? ApiEndpoints.dashboard.getReviewDecisionsAdminMode\r\n : ApiEndpoints.dashboard.getReviewDecisions,\r\n {\r\n getFilterName: () => this.isAdminMode ? `${DashboardNames.ReviewListAdminMode}-${this.reviewOccurrenceId}` : DashboardNames.ReviewList,\r\n sectionPath: [NavTabNumbers.ReviewListForm.reviews, PageNumbers.ReviewListForm.reviews, SectionCodes.ReviewListForm.reviews],\r\n searchQuestionCode: QuestionCodes.ReviewListForm.reviewSearch,\r\n customQuestionCode: QuestionCodes.ReviewListForm.reviewFilter,\r\n customModelVisibleKeys: ['active', 'decisions', 'reviewType', 'application', 'environment', 'role', 'organisation', 'escalationLevel'],\r\n getFilterRequestFromModels: (searchModel: any, customModel: any) => ({\r\n searchTerm: searchModel,\r\n active: customModel?.[FilterQuestionCodes.ReviewListForm.reviewFilterActive],\r\n decisions: customModel?.[FilterQuestionCodes.ReviewListForm.reviewFilterDecision],\r\n statuses: customModel?.[FilterQuestionCodes.ReviewListForm.reviewFilterStatus],\r\n reviewType: customModel?.[FilterQuestionCodes.ReviewListForm.reviewFilterReviewType],\r\n application: customModel?.[FilterQuestionCodes.ReviewListForm.reviewFilterApplication],\r\n environment: customModel?.[FilterQuestionCodes.ReviewListForm.reviewFilterEnvironment],\r\n roles: customModel?.[FilterQuestionCodes.ReviewListForm.reviewFilterFunctionalRole],\r\n organisation: customModel?.[FilterQuestionCodes.ReviewListForm.reviewFilterOrganisation],\r\n escalationLevel: customModel?.[FilterQuestionCodes.ReviewListForm.reviewFilterEscalationLevel],\r\n reviewOccurrenceId: this.isAdminMode ? this.reviewOccurrenceId : null\r\n }),\r\n getDefaultFilterRequest: () => ({\r\n decisions: this.isAdminMode ? FilterQuestionDefaults.ReviewListForm.reviewFilterDecisionsAdminMode : FilterQuestionDefaults.ReviewListForm.reviewFilterDecisions,\r\n reviewOccurrenceId: this.isAdminMode ? this.reviewOccurrenceId : null\r\n }),\r\n progressiveModelUpdate: {\r\n filterQuestionPath: [NavTabNumbers.ReviewListForm.reviews, PageNumbers.ReviewListForm.reviews, SectionCodes.ReviewListForm.reviews, QuestionCodes.ReviewListForm.reviewFilter],\r\n filterSubQuestionCodeAncestorGroup: [FilterQuestionCodes.ReviewListForm.reviewFilterApplication],\r\n filterSubQuestionCodeDescendantGroups: [[FilterQuestionCodes.ReviewListForm.reviewFilterEnvironment], [FilterQuestionCodes.ReviewListForm.reviewFilterFunctionalRole]]\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.route.paramMap.subscribe((paramMap: ParamMap) => {\r\n const reviewDefinitionId = paramMap.get('reviewDefinitionId');\r\n const reviewOccurrenceId = paramMap.get('reviewOccurrenceId');\r\n if (reviewDefinitionId && reviewOccurrenceId) {\r\n this.isAdminMode = true;\r\n this.reviewDefinitionId = reviewDefinitionId;\r\n this.reviewOccurrenceId = reviewOccurrenceId;\r\n this.formServiceEndpoint = ApiEndpointKeys.getReviewDecisionsAdminModeConfigAndResponse;\r\n }\r\n\r\n this.filterHandler.setInitialFilterRequest();\r\n });\r\n\r\n this.coreService.applicationFunctions['alwaysFalse'] = () => false; // This ensures that all the other buttons have the same \"secondary\" styling\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel(null);\r\n }\r\n\r\n formLoad(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.ReviewListForm);\r\n\r\n this.loadGridDataOnFormLoad(this.filterHandler.getInitialFilterRequest());\r\n if (this.filterHandler.hasNonEmptyCustomProperties(this.filterHandler.getInitialFilterRequest())) {\r\n this.htmlHelperService.clickButtonByTitle(AppSelector, ComponentSelectors.ReviewListForm.ReviewList, FilterQuestionLabels.ReviewListForm);\r\n }\r\n }\r\n\r\n filterData(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.ReviewListForm.reviewSearch:\r\n case QuestionCodes.ReviewListForm.reviewFilter: {\r\n this.loadGridData(this.filterHandler.saveFilterRequest(event.action));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n dialogButtonClicked(event: any): void {\r\n\r\n const activeDialog = this.activeDialog;\r\n delete this.activeDialog;\r\n\r\n switch (activeDialog) {\r\n case PopupCodes.ReviewListForm.ReviewDecisionDetails: {\r\n // No action needed on submission of this dialog\r\n break;\r\n }\r\n case PopupCodes.ReviewListForm.ReviewApprovalConfirmation: {\r\n this.approveReviewDecisions(event?.reviewDecisions);\r\n break;\r\n }\r\n case PopupCodes.ReviewListForm.ReviewDenialConfirmation: {\r\n this.denyReviewDecisions(event?.reviewDecisions, event?.reasonForDenial);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n this.registerSelectedItems(event);\r\n switch (event.field.key) {\r\n case QuestionCodes.ReviewListForm.reviewPlaceholder: {\r\n switch (event.event.type) {\r\n case FormActions.ReviewListForm.Details: {\r\n this.showReviewDecisionDetails(event.event.data.id);\r\n break;\r\n }\r\n case FormActions.ReviewListForm.Custom: {\r\n switch (event.event.data.buttonType) {\r\n case FormCustomActions.ReviewListForm.Approve: {\r\n const selectedItems = this.getSelectedItems(event);\r\n this.confirmApproveReviewDecisions(selectedItems);\r\n break;\r\n }\r\n case FormCustomActions.ReviewListForm.Deny: {\r\n const selectedItems = this.getSelectedItems(event);\r\n this.confirmDenyReviewDecisions(selectedItems);\r\n break;\r\n }\r\n case FormCustomActions.ReviewListForm.Purge: {\r\n const messagePlaceholders: MessagePlaceholders = {\r\n applicationUrl: this.appDataService.getAppData(AppDataKeys.applicationUrl),\r\n userListRoute: RouteConstants.user.list\r\n };\r\n this.dialogService.showDialog(PopupCodes.ReviewListForm.ReviewPurgeInformation, null, messagePlaceholders);\r\n break;\r\n }\r\n case FormCustomActions.ReviewListForm.BulkExport: {\r\n const reviewExportToDataTablesRequest = this.getReviewExportToDataTablesRequest();\r\n this.excelExportService.exportReviewsToXlsx(reviewExportToDataTablesRequest, this.isAdminMode);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n cancel(event: any): void {\r\n if (this.isAdminMode) {\r\n this.router.navigate(['/', RouteConstants.reviewDefinition.prefix, this.reviewDefinitionId]);\r\n }\r\n }\r\n\r\n private showReviewDecisionDetails(reviewDecisionId: string): void {\r\n const endPoint = this.isAdminMode\r\n ? ApiEndpoints.reviewDecision.getDetailsAdminMode\r\n : ApiEndpoints.reviewDecision.getDetails;\r\n const request: GetReviewDecisionDetailsRequest = {\r\n id: reviewDecisionId\r\n };\r\n this.appDataService.post(endPoint, request)\r\n .pipe(take(1))\r\n .subscribe((response: GetReviewDecisionDetailsResponse) => {\r\n this.activeDialog = PopupCodes.ReviewListForm.ReviewDecisionDetails;\r\n this.showSimpleInformationPopup(this.activeDialog, { message: this.formatHtmlDetailsService.formatReviewDecisionDetailsHtml(response) });\r\n });\r\n }\r\n\r\n private confirmApproveReviewDecisions(reviewDecisions: any[]): void {\r\n this.confirmBulkOperation(PopupCodes.ReviewListForm.ReviewApprovalConfirmation, reviewDecisions);\r\n }\r\n\r\n private confirmDenyReviewDecisions(reviewDecisions: any[]): void {\r\n this.confirmBulkOperation(PopupCodes.ReviewListForm.ReviewDenialConfirmation, reviewDecisions);\r\n }\r\n\r\n private confirmBulkOperation(popupCode: string, reviewDecisions: any[]): void {\r\n\r\n if (reviewDecisions.length === 0) {\r\n this.dialogService.showDialog(PopupCodes.ReviewListForm.ReviewNoneSelected);\r\n return;\r\n }\r\n\r\n const maxBulkOperationItemCount = this.appDataService.getAppData(AppDataKeys.maxBulkOperationItemCount);\r\n if (reviewDecisions.length > parseInt(maxBulkOperationItemCount, 10)) {\r\n this.dialogService.showDialog(PopupCodes.ReviewListForm.ReviewTooManyItems, null, { maxBulkOperationItemCount });\r\n return;\r\n }\r\n\r\n const popupModel = { reviewDecisions };\r\n const popupMessagePlaceholders = { itemCount: reviewDecisions.length.toString() };\r\n this.openDialog(popupCode, popupModel, popupMessagePlaceholders);\r\n }\r\n\r\n private openDialog(popupCode: string, popupModel?: any, popupMessagePlaceholders?: MessagePlaceholders): void {\r\n this.activeDialog = popupCode;\r\n this.dialogService.showDialog(popupCode, popupModel, popupMessagePlaceholders);\r\n };\r\n\r\n private approveReviewDecisions(reviewDecisions: any[]): void {\r\n const settings: BulkOperationSettings = {\r\n apiEndpoint: ApiEndpoints.reviewDecision.approve,\r\n completionPopupCode: PopupCodes.ReviewListForm.ReviewApprovalCompleted\r\n };\r\n this.performBulkOperation(reviewDecisions, settings);\r\n }\r\n\r\n private denyReviewDecisions(reviewDecisions: any[], reasonForDenial: string): void {\r\n const settings: BulkOperationSettings = {\r\n additionalFields: { reasonForDenial },\r\n apiEndpoint: ApiEndpoints.reviewDecision.deny,\r\n completionPopupCode: PopupCodes.ReviewListForm.ReviewDenialCompleted\r\n };\r\n this.performBulkOperation(reviewDecisions, settings);\r\n }\r\n\r\n private performBulkOperation(\r\n reviewDecisions: any[],\r\n settings: BulkOperationSettings): void {\r\n\r\n const reviewDecisionIds = reviewDecisions.map(reviewDecision => reviewDecision.id);\r\n this.appDataService.post(settings.apiEndpoint, { reviewDecisionIds, ...settings.additionalFields })\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe(() => {\r\n const onComplete = () => this.dialogService.showDialog(settings.completionPopupCode);\r\n this.loadGridDataAfterSave(this.filterHandler.getFilterRequest(), onComplete);\r\n });\r\n }\r\n\r\n private getReviewExportToDataTablesRequest(): ExportToDataTablesRequest {\r\n const entities = this.getQuestionValue(\r\n this.baseForm.model,\r\n NavTabNumbers.ReviewListForm.reviews,\r\n PageNumbers.ReviewListForm.reviews,\r\n SectionCodes.ReviewListForm.reviews,\r\n QuestionCodes.ReviewListForm.reviewPlaceholder);\r\n const entityIds = entities.map(entity => entity.id);\r\n const reviewExportToDataTablesRequest: ExportToDataTablesRequest = { entityIds };\r\n return reviewExportToDataTablesRequest;\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, ParamMap, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { CardSetTransformationService, CoreService, DataService, DialogService, SpinnerService } from 'dspx-core';\r\n\r\nimport { ApiEndpointKeys, ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates, Versions } from '../../constants/templates.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\nimport { AppDataKeys, ComponentSelectors, PopupCodes, ReadOnlyAccessPageActionButtons, ServerErrorPopupCodes } from '../../constants/app-data.constants';\r\n\r\nimport { SaveRequest } from '../../interfaces/save-request.interface';\r\nimport { SaveResult } from '../../interfaces/save-result.interface';\r\n\r\nimport { ComponentDeactivationService } from '../../services/component-deactivation.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\nimport { ErrorService } from '../../services/error.service';\r\nimport { DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\n\r\nimport { BaseDetailComponent } from '../base-detail-component/base-detail-component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.UserLegacyProfileSetupForm.UserLegacyProfileSetup,\r\n templateUrl: './user-legacy-profile-setup.component.html'\r\n})\r\nexport class UserLegacyProfileSetupComponent extends BaseDetailComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n id = '';\r\n formServiceEndpoint: string = ApiEndpointKeys.getUserLegacyProfileSetupResetConfigAndResponse;\r\n templateId: number = Templates.userLegacyProfileSetup;\r\n versionNo: number = Versions.latest;\r\n activeDialog: string;\r\n\r\n private ldapNotFederatedAccountResetUrl: string;\r\n\r\n constructor(\r\n protected dialogService: DialogService,\r\n protected appDataService: AppDataService,\r\n protected dialogHelperService: DialogHelperService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected componentDeactivationService: ComponentDeactivationService,\r\n protected router: Router,\r\n private route: ActivatedRoute,\r\n private errorService: ErrorService,\r\n private coreService: CoreService,\r\n private dataService: DataService,\r\n private spinnerService: SpinnerService,\r\n private userProfileService: UserProfileService) {\r\n super(dialogService, appDataService, dialogHelperService, htmlHelperService, componentDeactivationService, router);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.route.paramMap.subscribe((paramMap: ParamMap) => {\r\n const id = paramMap.get('id');\r\n if (id) {\r\n this.id = id;\r\n this.formServiceEndpoint = ApiEndpointKeys.getUserLegacyProfileSetupConfigAndResponse;\r\n }\r\n });\r\n\r\n this.coreService.conditionFunctions['alwaysTrue'] = () => true;\r\n\r\n this.coreService.applicationFunctions['canSave'] = () => this.isFormEditable;\r\n this.coreService.applicationFunctions['cancel'] = () => this.cancel(null);\r\n\r\n this.ldapNotFederatedAccountResetUrl = this.appDataService.getAppData(AppDataKeys.ldapNotFederatedAccountResetUrl);\r\n }\r\n\r\n formLoaded(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.isFormEditable = !!event?.isFormEditable;\r\n\r\n this.ensurePageActionButtonsAreEnabledOnFormLoad(ReadOnlyAccessPageActionButtons.UserLegacyProfileSetupForm);\r\n\r\n this.handlePostFormLoadActions(event);\r\n if (event.popupCode || event.forwardClientRoute) {\r\n return;\r\n }\r\n\r\n const forwardUrl = event.forwardUrl;\r\n if (forwardUrl) {\r\n // Making sure that the spinner appears while the user is waiting for the browser to navigate away from the website.\r\n setTimeout(() => {\r\n this.spinnerService.showSpinner();\r\n setTimeout(() => {\r\n this.navigateToAbsoluteUrl(forwardUrl, true);\r\n });\r\n });\r\n return;\r\n }\r\n }\r\n\r\n save(event: any): void {\r\n const saveDataRequest: SaveRequest = {\r\n template: this.templateId,\r\n versionNumber: this.versionNo,\r\n id: this.id,\r\n response: event.model,\r\n expectedLastUpdateTime: event.lastUpdatedTime,\r\n isSubmit: false\r\n }\r\n if (!event.isFormValid) {\r\n this.baseForm.markAllFieldsAsTouched();\r\n if (!this.baseForm.fields[0]?.formControl.valid) {\r\n this.baseForm.showValidationSummary(true);\r\n this.dialogService.showDialog(PopupCodes.Common.ValidationError);\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n else {\r\n this.saveData(saveDataRequest);\r\n }\r\n }\r\n\r\n private saveData(request: SaveRequest): void {\r\n this.spinnerService.showSpinner();\r\n this.dataService.saveData(ApiEndpoints.userLegacyProfileSetup.save, request)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe((data: SaveResult) => {\r\n this.spinnerService.hideSpinner();\r\n if (this.handleWarnings(request, data, r => this.saveData(r))) {\r\n return;\r\n }\r\n if (ServerErrorPopupCodes.SaveUserLegacyProfile.includes(data.message)) {\r\n this.activeDialog = data.message;\r\n }\r\n else {\r\n this.id = data.id;\r\n this.activeDialog = PopupCodes.UserLegacyProfileSetupForm.SaveSuccessful;\r\n }\r\n this.dialogHelperService.showDialog(this.activeDialog, null, data.details);\r\n });\r\n }\r\n \r\n cancel(event: any): void {\r\n this.navigateToMyApps();\r\n }\r\n\r\n dialogSubmitted(event: any): void {\r\n if (this.activeDialog === PopupCodes.UserLegacyProfileSetupForm.SaveSuccessful) {\r\n this.navigateToLegacyPortalAccountReset(true);\r\n }\r\n }\r\n\r\n private navigateToMyApps(ignoreUnsavedChanges = false): void {\r\n this.navigate(['/', RouteConstants.user.myApps], ignoreUnsavedChanges);\r\n }\r\n\r\n private navigateToLegacyPortalAccountReset(ignoreUnsavedChanges = false): void {\r\n this.navigateToAbsoluteUrl(this.ldapNotFederatedAccountResetUrl, ignoreUnsavedChanges);\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { DialogService, MessagePlaceholders, SpinnerService, DialogResult, CardSetTransformationService } from 'dspx-core';\r\n\r\nimport {\r\n AppSelector,\r\n ComponentSelectors,\r\n DashboardNames,\r\n FilterQuestionCodes,\r\n FilterQuestionLabels,\r\n FormActions,\r\n FormCustomActions,\r\n MinWaitForDialogToCloseMs,\r\n NavTabNumbers,\r\n OptionSetCodes,\r\n PageNumbers,\r\n PopupCodeButtonTitles,\r\n PopupCodes,\r\n QuestionCodes,\r\n SectionCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { RouteConstants } from '../../constants/route.constants';\r\nimport { Templates } from '../../constants/templates.constants';\r\nimport { UserPurgeType } from '../../constants/user-purge-type';\r\n\r\nimport { MicrosoftInvitationRequest } from '../../interfaces/microsoft-invitation-request.interface';\r\nimport { PurgeUserRequest } from '../../interfaces/purge-user-request.interface';\r\nimport { PurgeUserResult, PurgeUserResultStatus } from '../../interfaces/purge-user-result.interface';\r\nimport { SyncUserRequest } from '../../interfaces/sync-user-request.interface';\r\nimport { SyncUserResult, SyncUserResultStatus } from '../../interfaces/sync-user-result.interface';\r\nimport { UserGridFilterRequest } from '../../interfaces/user-grid-filter-request.interface';\r\nimport { ExportToDataTablesRequest } from '../../interfaces/export-to-data-tables-request.interface';\r\nimport { DirectoryLookupConfiguration } from '../../interfaces/directory-lookup-configuration.interface';\r\nimport { PurgeFromDataTablesResponse, PurgeFromDataTablesSummary } from '../../interfaces/purge-from-data-tables-response.interface';\r\nimport { SyncFromDataTablesResponse, SyncFromDataTablesSummary } from '../../interfaces/sync-from-data-tables-response.interface';\r\n\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ConfirmDialogPatchConfig, DialogHelperService } from '../../services/dialog-helper.service';\r\nimport { DirectoryLookupService } from '../../services/directory-lookup.service';\r\nimport { ExcelExportService } from '../../services/excel-export.service';\r\nimport { ExcelImportService } from '../../services/excel-import.service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseListComponent } from '../base-list-component/base-list.component';\r\n\r\n@Component({\r\n selector: ComponentSelectors.UserListForm.UserList,\r\n templateUrl: './user-list.component.html'\r\n})\r\nexport class UserListComponent extends BaseListComponent implements OnInit {\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n templateId: number = Templates.userList;\r\n\r\n private activeDialog: string;\r\n\r\n private readonly directoryLookupPatchConfig: ConfirmDialogPatchConfig = {\r\n appSelector: AppSelector,\r\n componentSelector: ComponentSelectors.UserListForm.UserList,\r\n acceptButtonTitle: PopupCodeButtonTitles.UserListForm.DirectoryLookup.Accept,\r\n rejectButtonTitle: PopupCodeButtonTitles.UserListForm.DirectoryLookup.Reject\r\n };\r\n\r\n private readonly limitedDirectoryLookupConfiguration: DirectoryLookupConfiguration = {\r\n onCloseLookup: (popupCode: string, popupModel: any) => {\r\n this.openDialog(popupCode, popupModel);\r\n }\r\n }\r\n\r\n private readonly directoryLookupConfiguration: DirectoryLookupConfiguration = {\r\n onCloseLookup: (popupCode: string, popupModel: any) => {\r\n this.openDialog(popupCode, popupModel);\r\n this.onOpenDirectoryLookupSubDialogCallBack();\r\n }\r\n }\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService,\r\n private dialogHelperService: DialogHelperService,\r\n private directoryLookupService: DirectoryLookupService,\r\n private excelExportService: ExcelExportService,\r\n private excelImportService: ExcelImportService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(\r\n route,\r\n router,\r\n spinnerService,\r\n dialogService,\r\n responseParserService,\r\n htmlHelperService,\r\n appDataService);\r\n\r\n this.initialise(\r\n [NavTabNumbers.UserListForm.users, PageNumbers.UserListForm.users],\r\n () => ApiEndpoints.dashboard.getApplicationUsers,\r\n {\r\n getFilterName: () => DashboardNames.UserList,\r\n sectionPath: [NavTabNumbers.UserListForm.users, PageNumbers.UserListForm.users, SectionCodes.UserListForm.user],\r\n searchQuestionCode: QuestionCodes.UserListForm.userSearch,\r\n customQuestionCode: QuestionCodes.UserListForm.userFilter,\r\n customModelVisibleKeys: ['application', 'environment', 'role', 'organisation', 'disableApplicationAccessAutomatedEmails', 'accountDisabled', 'legacyAccountDisabled'],\r\n getFilterRequestFromModels: (searchModel: any, customModel: any) => ({\r\n searchTerm: searchModel,\r\n application: customModel?.[FilterQuestionCodes.UserListForm.userFilterApplication],\r\n environment: customModel?.[FilterQuestionCodes.UserListForm.userFilterEnvironment],\r\n roles: customModel?.[FilterQuestionCodes.UserListForm.userFilterFunctionalRole],\r\n organisation: customModel?.[FilterQuestionCodes.UserListForm.userFilterOrganisation],\r\n disableApplicationAccessAutomatedEmails: customModel?.[FilterQuestionCodes.UserListForm.userFilterDisableApplicationAccessAutomatedEmails],\r\n accountDisabled: customModel?.[FilterQuestionCodes.UserListForm.userFilterAccountDisabled],\r\n legacyAccountDisabled: customModel?.[FilterQuestionCodes.UserListForm.userFilterLegacyAccountDisabled]\r\n }),\r\n getDefaultFilterRequest: () => null,\r\n progressiveModelUpdate: {\r\n filterQuestionPath: [NavTabNumbers.UserListForm.users, PageNumbers.UserListForm.users, SectionCodes.UserListForm.user, QuestionCodes.UserListForm.userFilter],\r\n filterSubQuestionCodeAncestorGroup: [FilterQuestionCodes.UserListForm.userFilterApplication],\r\n filterSubQuestionCodeDescendantGroups: [[FilterQuestionCodes.UserListForm.userFilterEnvironment], [FilterQuestionCodes.UserListForm.userFilterFunctionalRole]]\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.filterHandler.setInitialFilterRequest();\r\n }\r\n\r\n formLoad(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.loadGridDataOnFormLoad(this.filterHandler.getInitialFilterRequest());\r\n if (this.filterHandler.hasNonEmptyCustomProperties(this.filterHandler.getInitialFilterRequest())) {\r\n this.htmlHelperService.clickButtonByTitle(AppSelector, ComponentSelectors.UserListForm.UserList, FilterQuestionLabels.UserListForm);\r\n }\r\n }\r\n\r\n filterData(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.UserListForm.userSearch:\r\n case QuestionCodes.UserListForm.userFilter: {\r\n this.loadGridData(this.filterHandler.saveFilterRequest(event.action));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n dialogButtonClicked(event: any): void {\r\n\r\n const activeDialog = this.activeDialog;\r\n delete this.activeDialog;\r\n\r\n const openSearchDialogWithCloseCallback = (message: string, title: string, onCloseDialogEvent: () => void) =>\r\n this.openDialogAsync(PopupCodes.UserListForm.DirectoryLookupResult,\r\n null,\r\n { resultMessage: message },\r\n null,\r\n () => this.onOpenDirectoryLookupSubDialogCallBack(onCloseDialogEvent),\r\n true,\r\n { resultTitle: title });\r\n\r\n switch (activeDialog) {\r\n case PopupCodes.UserListForm.LimitedDirectoryLookup: {\r\n switch (event?.limitedDirectoryLookupType) {\r\n case OptionSetCodes.UserListForm.LimitedDirectoryLookupType.AzureAdUser: {\r\n this.directoryLookupService.searchAzureAdUserLimited(this.limitedDirectoryLookupConfiguration, event.limitedDirectoryLookupType, event.limitedDirectoryLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.LimitedDirectoryLookupType.LdapUser: {\r\n this.directoryLookupService.searchLdapProtocolUserLimited(this.limitedDirectoryLookupConfiguration, event.limitedDirectoryLookupType, event.limitedDirectoryLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case PopupCodes.UserListForm.DirectoryLookup: {\r\n this.directoryLookupPopupModel = event;\r\n switch (event?.lookupDirectoryName) {\r\n case OptionSetCodes.UserListForm.LookupDirectoryName.LdapProtocol: {\r\n const popupModel = { ldapProtocolLookupType: OptionSetCodes.UserListForm.LdapProtocolLookupType.ProtocolUser };\r\n this.openDialogAsync(PopupCodes.UserListForm.LdapProtocolLookup, popupModel, null, null, () => this.onOpenDirectoryLookupSubDialogCallBack());\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.LookupDirectoryName.LdapScim: {\r\n const popupModel = { ldapScimLookupType: OptionSetCodes.UserListForm.LdapScimLookupType.ScimUser };\r\n this.openDialogAsync(PopupCodes.UserListForm.LdapScimLookup, popupModel, null, null, () => this.onOpenDirectoryLookupSubDialogCallBack());\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.LookupDirectoryName.AzureAd: {\r\n const popupModel = { azureAdLookupType: OptionSetCodes.UserListForm.AzureAdLookupType.User };\r\n this.openDialogAsync(PopupCodes.UserListForm.AzureAdLookup, popupModel, null, null, () => this.onOpenDirectoryLookupSubDialogCallBack());\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case PopupCodes.UserListForm.LdapProtocolLookup: {\r\n switch (event?.ldapProtocolLookupType) {\r\n case OptionSetCodes.UserListForm.LdapProtocolLookupType.ProtocolUser: {\r\n this.directoryLookupService.searchLdapProtocolUser(this.directoryLookupConfiguration, event.ldapProtocolLookupType, event.ldapProtocolLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.LdapProtocolLookupType.ProtocolGroup: {\r\n this.directoryLookupService.searchLdapProtocolGroup(this.directoryLookupConfiguration, event.ldapProtocolLookupType, event.ldapProtocolLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.LdapProtocolLookupType.ProtocolOrganisation: {\r\n this.directoryLookupService.searchLdapProtocolOrganisation(this.directoryLookupConfiguration, event.ldapProtocolLookupType, event.ldapProtocolLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.LdapProtocolLookupType.ProtocolApplication: {\r\n this.directoryLookupService.searchLdapProtocolApplication(this.directoryLookupConfiguration, event.ldapProtocolLookupType, event.ldapProtocolLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case PopupCodes.UserListForm.LdapScimLookup: {\r\n switch (event?.ldapScimLookupType) {\r\n case OptionSetCodes.UserListForm.LdapScimLookupType.ScimUser:\r\n case OptionSetCodes.UserListForm.LdapScimLookupType.ScimUserAndGroups: {\r\n this.directoryLookupService.searchLdapScimUser(this.directoryLookupConfiguration, event.ldapScimLookupType, event.ldapScimLookupOnlyExactMatch, event.ldapScimLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.LdapScimLookupType.ScimGroup: {\r\n this.directoryLookupService.searchLdapScimGroup(this.directoryLookupConfiguration, event.ldapScimLookupType, event.ldapScimLookupOnlyExactMatch, event.ldapScimLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case PopupCodes.UserListForm.AzureAdLookup: {\r\n switch (event?.azureAdLookupType) {\r\n case OptionSetCodes.UserListForm.AzureAdLookupType.User: {\r\n this.directoryLookupService.searchAzureAdUser(this.directoryLookupConfiguration, event.azureAdLookupType, event.azureAdLookupOnlyExactMatch, event.azureAdLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.AzureAdLookupType.Group: {\r\n this.directoryLookupService.searchAzureAdGroup(this.directoryLookupConfiguration, event.azureAdLookupType, event.azureAdLookupOnlyExactMatch, event.azureAdLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.AzureAdLookupType.Domain: {\r\n this.directoryLookupService.searchAzureAdDomain(this.directoryLookupConfiguration, event.azureAdLookupType, event.azureAdLookupOnlyExactMatch, event.azureAdLookupValue, openSearchDialogWithCloseCallback);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case PopupCodes.UserListForm.UserSendInvitation: {\r\n if (event?.userTabSendInvitationEmail) {\r\n this.sendSingleUserInvitation(event.userTabSendInvitationEmail);\r\n }\r\n break;\r\n }\r\n case PopupCodes.UserListForm.BulkExportChoice: {\r\n const userExportToDataTablesRequest = this.getUserExportToDataTablesRequest();\r\n switch (event?.bulkExportType) {\r\n case OptionSetCodes.UserListForm.BulkExportType.Standard: {\r\n this.excelExportService.exportUsersToXlsx(userExportToDataTablesRequest);\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.BulkExportType.StandardFromEmailList: {\r\n this.htmlHelperService.uploadFile(\r\n ['.xlsx', '.xls'],\r\n file => this.validateEmailsAndExportUsersToXlsxFromEmailList(file, event),\r\n () => this.openDialog(PopupCodes.UserListForm.BulkExportChoice, event));\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.BulkExportType.ImportCompatible: {\r\n this.excelExportService.exportUsersToXlsxImportCompatible(userExportToDataTablesRequest);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n case PopupCodes.UserListForm.PurgeUserConfirmation: {\r\n if (event?.userId && event?.userEmail) {\r\n switch (event?.purgeUserConfirmationPurgeType) {\r\n case OptionSetCodes.UserListForm.DeleteType.DbAndAzureAd: {\r\n this.purgeUser(event.userId, event.userEmail, UserPurgeType.FromBothDbAndAzureAd);\r\n break;\r\n }\r\n case OptionSetCodes.UserListForm.DeleteType.DbOnly: {\r\n this.purgeUser(event.userId, event.userEmail, UserPurgeType.FromDbOnly);\r\n break;\r\n }\r\n default: {\r\n this.purgeUser(event.userId, event.userEmail, null); // null UserPurgeType means \"let the back-end decide based on permissions\"\r\n }\r\n }\r\n }\r\n break;\r\n }\r\n case PopupCodes.UserListForm.SyncUserConfirmation: {\r\n if (event?.userId && event?.userEmail) {\r\n this.syncUser(event.userId, event.userEmail);\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.UserListForm.userPlaceholder: {\r\n switch (event.event.type) {\r\n case FormActions.UserListForm.View:\r\n case FormActions.UserListForm.Edit: {\r\n this.router.navigate(['/', RouteConstants.user.prefix, event.event.data.id]);\r\n break;\r\n }\r\n case FormActions.UserListForm.Purge: {\r\n const user = event.event.data;\r\n const popupModel = { userId: user.id, userEmail: user.email };\r\n const popupMessagePlaceholders = { userEmail: user.email };\r\n this.openDialog(PopupCodes.UserListForm.PurgeUserConfirmation, popupModel, popupMessagePlaceholders)\r\n break;\r\n }\r\n case FormActions.UserListForm.Sync: {\r\n const user = event.event.data;\r\n const popupModel = { userId: user.id, userEmail: user.email };\r\n const popupMessagePlaceholders = { userEmail: user.email };\r\n this.openDialog(PopupCodes.UserListForm.SyncUserConfirmation, popupModel, popupMessagePlaceholders)\r\n break;\r\n }\r\n case FormActions.UserListForm.Custom: {\r\n switch (event.event.data.buttonType) {\r\n case FormCustomActions.UserListForm.Add: {\r\n this.router.navigate(['/', RouteConstants.user.prefix]);\r\n break;\r\n }\r\n case FormCustomActions.UserListForm.LimitedDirectoryLookup: {\r\n const popupModel = { limitedDirectoryLookupType: OptionSetCodes.UserListForm.LimitedDirectoryLookupType.AzureAdUser };\r\n this.openDialog(PopupCodes.UserListForm.LimitedDirectoryLookup, popupModel);\r\n break;\r\n }\r\n case FormCustomActions.UserListForm.DirectoryLookup: {\r\n const popupModel = { lookupDirectoryName: OptionSetCodes.UserListForm.LookupDirectoryName.AzureAd };\r\n this.openDialog(PopupCodes.UserListForm.DirectoryLookup, popupModel, null, this.directoryLookupPatchConfig);\r\n break;\r\n }\r\n case FormCustomActions.UserListForm.SendInvitation: {\r\n this.openDialog(PopupCodes.UserListForm.UserSendInvitation);\r\n break;\r\n }\r\n case FormCustomActions.UserListForm.BulkExportChooseType: {\r\n const popupModel = { bulkExportType: OptionSetCodes.UserListForm.BulkExportType.Standard };\r\n this.openDialog(PopupCodes.UserListForm.BulkExportChoice, popupModel);\r\n break;\r\n }\r\n case FormCustomActions.UserListForm.BulkExport: {\r\n const userExportToDataTablesRequest = this.getUserExportToDataTablesRequest();\r\n this.excelExportService.exportUsersToXlsx(userExportToDataTablesRequest);\r\n break;\r\n }\r\n case FormCustomActions.UserListForm.BulkImport: {\r\n this.importUsersFromXlsx();\r\n break;\r\n }\r\n case FormCustomActions.UserListForm.BulkPurge: {\r\n this.purgeUsersFromXlsx();\r\n break;\r\n }\r\n case FormCustomActions.UserListForm.BulkSync: {\r\n this.syncUsersFromXlsx();\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n importUsersFromXlsx(): void {\r\n this.excelImportService.importUsersFromXlsx()\r\n .pipe(take(1))\r\n .subscribe(excelImportResult => {\r\n if (!excelImportResult.isCancelled) {\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n }\r\n });\r\n }\r\n\r\n purgeUsersFromXlsx(): void {\r\n\r\n const showInstructionsDialog = () =>\r\n this.dialogService.showConfirm('userPurgeInstructions');\r\n\r\n const showConfirmationDialog = (purgeResponse: PurgeFromDataTablesResponse) =>\r\n this.dialogService.showConfirm('userPurgeConfirmation', { summary: this.formatPurgeSummaryHtml(purgeResponse.summary) });\r\n\r\n const showCompletedDialog = (fileName: string, purgeResponse: PurgeFromDataTablesResponse) =>\r\n this.dialogService.showConfirm('userPurgeCompleted', { fileName, summary: this.formatPurgeSummaryHtml(purgeResponse.summary) });\r\n\r\n const onSuccess = (purgeResponse: PurgeFromDataTablesResponse) => {\r\n const fileName = this.excelExportService.exportDataTablesToXlsx(purgeResponse.exportResponse, 'BulkDelete');\r\n showCompletedDialog(fileName, purgeResponse)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n })\r\n };\r\n\r\n const onCancel = () =>\r\n setTimeout(() => this.purgeUsersFromXlsx(), MinWaitForDialogToCloseMs);\r\n\r\n showInstructionsDialog()\r\n .pipe(take(1))\r\n .subscribe(dialogResult => {\r\n switch (dialogResult as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n this.htmlHelperService.uploadFile(\r\n ['.xlsx', '.xls'],\r\n file => this.excelImportService.purgeUsersFromXlsx(file, showConfirmationDialog)\r\n .pipe(take(1))\r\n .subscribe({\r\n next: purgeResponse => onSuccess(purgeResponse),\r\n error: () => onCancel()\r\n }),\r\n () => onCancel());\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n syncUsersFromXlsx(): void {\r\n\r\n const showInstructionsDialog = () =>\r\n this.dialogService.showConfirm('userSyncInstructions');\r\n\r\n const showConfirmationDialog = (syncResponse: SyncFromDataTablesResponse) =>\r\n this.dialogService.showConfirm('userSyncConfirmation', { summary: this.formatSyncSummaryHtml(syncResponse.summary) });\r\n\r\n const showCompletedDialog = (fileName: string, syncResponse: SyncFromDataTablesResponse) =>\r\n this.dialogService.showConfirm('userSyncCompleted', { fileName, summary: this.formatSyncSummaryHtml(syncResponse.summary) });\r\n\r\n const onSuccess = (syncResponse: SyncFromDataTablesResponse) => {\r\n const fileName = this.excelExportService.exportDataTablesToXlsx(syncResponse.exportResponse, 'BulkSync');\r\n showCompletedDialog(fileName, syncResponse)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n })\r\n };\r\n\r\n const onCancel = () =>\r\n setTimeout(() => this.syncUsersFromXlsx(), MinWaitForDialogToCloseMs);\r\n\r\n showInstructionsDialog()\r\n .pipe(take(1))\r\n .subscribe(dialogResult => {\r\n switch (dialogResult as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n this.htmlHelperService.uploadFile(\r\n ['.xlsx', '.xls'],\r\n file => this.excelImportService.syncUsersFromXlsx(file, showConfirmationDialog)\r\n .pipe(take(1))\r\n .subscribe({\r\n next: syncResponse => onSuccess(syncResponse),\r\n error: () => onCancel()\r\n }),\r\n () => onCancel());\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n validateEmailsAndExportUsersToXlsxFromEmailList(file: File, bulkExportChoicePopupModel: any): void {\r\n this.excelImportService.validateEmails(file)\r\n .pipe(take(1))\r\n .subscribe({\r\n next: emails => {\r\n const userExportToDataTablesRequest: ExportToDataTablesRequest = { entityIds: emails };\r\n this.excelExportService.exportUsersToXlsxFromEmailList(userExportToDataTablesRequest);\r\n },\r\n error: error => {\r\n this.openDialogAsync(PopupCodes.UserListForm.BulkExportChoice, bulkExportChoicePopupModel);\r\n }\r\n });\r\n }\r\n\r\n // NOTE: the framework does not provide a way to hook to the Cancel event of a dialog, so we have to use a workaround,\r\n // i.e. whenever we open a dialog under the directory lookup dialog, we add a one-off click event listener to the close button of the dialog,\r\n // so that when the dialog is closed, we can re-open the directory lookup dialog.\r\n private directoryLookupPopupModel: any;\r\n private onOpenDirectoryLookupSubDialogCallBack = (closeDialogEvent?: () => void) => {\r\n const closeDialogEventToUse = closeDialogEvent ? closeDialogEvent : () => {\r\n this.openDialogAsync(PopupCodes.UserListForm.DirectoryLookup, this.directoryLookupPopupModel, null, this.directoryLookupPatchConfig);\r\n }\r\n\r\n setTimeout(() => {\r\n const rejectButtonElement = this.htmlHelperService.getComponentDialogButtonHtmlElement(AppSelector, ComponentSelectors.UserListForm.UserList, this.directoryLookupPatchConfig.rejectButtonTitle);\r\n this.htmlHelperService.addOneOffEventListener(rejectButtonElement, 'click', closeDialogEventToUse);\r\n\r\n const closeDialogButtonElement = this.htmlHelperService.getComponentDialogIconButtonHtmlElement(AppSelector, ComponentSelectors.UserListForm.UserList, 'p-dialog-header-close');\r\n this.htmlHelperService.addOneOffEventListener(closeDialogButtonElement, 'click', closeDialogEventToUse);\r\n\r\n this.htmlHelperService.addOneOffEventListener(closeDialogButtonElement, 'keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Enter') {\r\n closeDialogEventToUse();\r\n }\r\n });\r\n \r\n this.htmlHelperService.addOneOffEventListener(document, 'keydown', (event: KeyboardEvent) => {\r\n if (event.key === 'Escape') {\r\n closeDialogEventToUse();\r\n }\r\n });\r\n });\r\n }\r\n\r\n private openDialog(popupCode: string, popupModel?: any, popupMessagePlaceholders?: MessagePlaceholders, patchConfig?: ConfirmDialogPatchConfig, displayCloseButton?: boolean, titleMessagePlaceholders?: MessagePlaceholders): void {\r\n this.activeDialog = popupCode;\r\n if (patchConfig) {\r\n this.dialogHelperService.patchConfirmDialogValidationIssue(patchConfig);\r\n }\r\n this.dialogService.showDialog(popupCode, popupModel, popupMessagePlaceholders, displayCloseButton, null, titleMessagePlaceholders);\r\n };\r\n\r\n private openDialogAsync(popupCode: string, popupModel?: any, popupMessagePlaceholders?: MessagePlaceholders, patchConfig?: ConfirmDialogPatchConfig, onOpenDialogCallBack?: () => void, displayCloseButton?: boolean, titleMessagePlaceholders?: MessagePlaceholders): void {\r\n setTimeout(() => {\r\n this.openDialog(popupCode, popupModel, popupMessagePlaceholders, patchConfig, displayCloseButton, titleMessagePlaceholders);\r\n onOpenDialogCallBack?.();\r\n }, MinWaitForDialogToCloseMs);\r\n }\r\n\r\n private purgeUser(userId: string, userEmail: string, userPurgeType: UserPurgeType): void {\r\n this.spinnerService.showSpinner();\r\n const request: PurgeUserRequest = { userId, userPurgeType };\r\n this.appDataService.post(ApiEndpoints.applicationUser.purge, request)\r\n .pipe(take(1))\r\n .subscribe((data: PurgeUserResult) => {\r\n this.spinnerService.hideSpinner();\r\n switch (data?.status) {\r\n case PurgeUserResultStatus.Success: {\r\n this.dialogService.showDialog(PopupCodes.UserListForm.PurgeUserSuccess, null, { userEmail });\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n break;\r\n }\r\n case PurgeUserResultStatus.Error: {\r\n this.dialogService.showDialog(`${PopupCodes.UserListForm.PurgeUserError}${data.errorCode}`, null, { ...data.errorData, userEmail });\r\n break;\r\n }\r\n default: {\r\n this.dialogService.showDialog(PopupCodes.Common.ServerError);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private syncUser(userId: string, userEmail: string): void {\r\n this.spinnerService.showSpinner();\r\n const request: SyncUserRequest = { userId };\r\n this.appDataService.post(ApiEndpoints.applicationUser.sync, request)\r\n .pipe(take(1))\r\n .subscribe((data: SyncUserResult) => {\r\n this.spinnerService.hideSpinner();\r\n switch (data?.status) {\r\n case SyncUserResultStatus.Success: {\r\n this.dialogService.showDialog(PopupCodes.UserListForm.SyncUserSuccess, null, { userEmail });\r\n this.loadGridData(this.filterHandler.getFilterRequest());\r\n break;\r\n }\r\n case SyncUserResultStatus.Error: {\r\n this.dialogService.showDialog(`${PopupCodes.UserListForm.SyncUserError}${data.errorCode}`, null, { ...data.errorData, userEmail });\r\n break;\r\n }\r\n default: {\r\n this.dialogService.showDialog(PopupCodes.Common.ServerError);\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private getUserExportToDataTablesRequest(): ExportToDataTablesRequest {\r\n const entities = this.getQuestionValue(\r\n this.baseForm.model,\r\n NavTabNumbers.UserListForm.users,\r\n PageNumbers.UserListForm.users,\r\n SectionCodes.UserListForm.user,\r\n QuestionCodes.UserListForm.userPlaceholder);\r\n const entityIds = entities.map(entity => entity.id);\r\n const userExportToDataTablesRequest: ExportToDataTablesRequest = { entityIds };\r\n return userExportToDataTablesRequest;\r\n }\r\n\r\n private sendSingleUserInvitation(email: string): void {\r\n const request: MicrosoftInvitationRequest = { email: email };\r\n this.appDataService.post(ApiEndpoints.applicationUser.sendInvitation, request)\r\n .pipe(take(1))\r\n .subscribe(data => {\r\n if (data) {\r\n this.spinnerService.hideSpinner();\r\n const popupCode = data.success\r\n ? PopupCodes.UserListForm.UserTabSendInvitationSuccessful\r\n : PopupCodes.UserListForm.UserTabSendInvitationFailed;\r\n this.dialogService.showDialog(popupCode);\r\n }\r\n });\r\n }\r\n\r\n private formatPurgeSummaryHtml(summary: PurgeFromDataTablesSummary) {\r\n\r\n const totalItems = summary?.totalItems?.toString();\r\n const totalSuccessItems = summary?.totalSuccessItems?.toString();\r\n const totalFailureItems = summary?.totalFailureItems?.toString();\r\n\r\n const fields: { name: string, value: string }[] = [];\r\n const addFieldIfNotEmpty = (field: { name: string, value: string }) => {\r\n if (field.value) {\r\n fields.push(field);\r\n }\r\n }\r\n addFieldIfNotEmpty({ name: 'Total items selected', value: totalItems });\r\n addFieldIfNotEmpty({ name: 'Total successes', value: totalSuccessItems });\r\n addFieldIfNotEmpty({ name: 'Total failures', value: totalFailureItems });\r\n\r\n if (fields.length === 0) {\r\n return '';\r\n }\r\n const summaryHtml =\r\n this.htmlHelperService.formatHtml('p', 'Summary:') +\r\n this.htmlHelperService.formatFields(fields);\r\n return summaryHtml;\r\n }\r\n\r\n private formatSyncSummaryHtml(summary: SyncFromDataTablesSummary) {\r\n\r\n const totalItems = summary?.totalItems?.toString();\r\n const totalSuccessItems = summary?.totalSuccessItems?.toString();\r\n const totalFailureItems = summary?.totalFailureItems?.toString();\r\n\r\n const fields: { name: string, value: string }[] = [];\r\n const addFieldIfNotEmpty = (field: { name: string, value: string }) => {\r\n if (field.value) {\r\n fields.push(field);\r\n }\r\n }\r\n addFieldIfNotEmpty({ name: 'Total items selected', value: totalItems });\r\n addFieldIfNotEmpty({ name: 'Total successes', value: totalSuccessItems });\r\n addFieldIfNotEmpty({ name: 'Total failures', value: totalFailureItems });\r\n\r\n if (fields.length === 0) {\r\n return '';\r\n }\r\n const summaryHtml =\r\n this.htmlHelperService.formatHtml('p', 'Summary:') +\r\n this.htmlHelperService.formatFields(fields);\r\n return summaryHtml;\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ActivatedRoute, Router } from '@angular/router';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { DialogService, SpinnerService, DialogResult, CardSetTransformationService } from 'dspx-core';\r\n\r\nimport {\r\n AppDataKeys,\r\n AppSelector,\r\n ComponentSelectors,\r\n DashboardNames,\r\n FilterQuestionCodes,\r\n FilterQuestionLabels,\r\n FormActions,\r\n FormCustomActions,\r\n NavTabNumbers,\r\n PageNumbers,\r\n PopupCodes,\r\n QuestionCodes,\r\n SectionCodes\r\n} from '../../constants/app-data.constants';\r\nimport { ApiEndpoints } from '../../constants/api-endpoints.constants';\r\nimport { Templates } from '../../constants/templates.constants';\r\n\r\nimport { UserRequestGridFilterRequest } from '../../interfaces/user-request-grid-filter-request.interface';\r\nimport { UserRequestUniqueKey } from '../../interfaces/user-request-unique-key.interface';\r\nimport { GetUserRequestDetailsResponse } from '../../interfaces/get-user-request-details-response.interface';\r\nimport { ExportToDataTablesRequest } from '../../interfaces/export-to-data-tables-request.interface';\r\nimport { UserRequestBulkOperationResponse, UserRequestBulkOperationSummary } from '../../interfaces/user-request-bulk-operation-response.interface';\r\n\r\nimport { ResponseParserService } from '../../services/response-parser.service';\r\nimport { HtmlHelperService } from '../../services/html-helper.service';\r\nimport { AppDataService } from '../../services/app-data.service';\r\nimport { ExcelExportService } from '../../services/excel-export.service';\r\nimport { FormatHtmlDetailsService } from '../../services/format-html-details-service';\r\nimport { UserProfileService } from '../../services/user-profile.service';\r\n\r\nimport { BaseListComponent } from '../base-list-component/base-list.component';\r\n\r\ntype BulkOperationSettings = {\r\n confirmPopupCode: string,\r\n apiEndpoint: string,\r\n fileNamePrefix: string,\r\n reloadOnComplete: boolean\r\n};\r\n\r\n@Component({\r\n selector: ComponentSelectors.UserRequestListForm.UserRequestList,\r\n templateUrl: './user-request-list.component.html'\r\n})\r\nexport class UserRequestListComponent extends BaseListComponent implements OnInit {\r\n\r\n private activeDialog: string;\r\n\r\n fieldTypeReplacements = CardSetTransformationService.cardSetWithFlatTabsFieldTypeReplacements;\r\n\r\n templateId: number = Templates.userRequestList;\r\n\r\n constructor(\r\n protected route: ActivatedRoute,\r\n protected router: Router,\r\n protected spinnerService: SpinnerService,\r\n protected dialogService: DialogService,\r\n protected responseParserService: ResponseParserService,\r\n protected htmlHelperService: HtmlHelperService,\r\n protected appDataService: AppDataService,\r\n private excelExportService: ExcelExportService,\r\n private formatHtmlDetailsService: FormatHtmlDetailsService,\r\n private userProfileService: UserProfileService) {\r\n\r\n super(\r\n route,\r\n router,\r\n spinnerService,\r\n dialogService,\r\n responseParserService,\r\n htmlHelperService,\r\n appDataService);\r\n\r\n this.initialise(\r\n [NavTabNumbers.UserRequestListForm.userRequests, PageNumbers.UserRequestListForm.userRequests],\r\n () => ApiEndpoints.dashboard.getUserRequests,\r\n {\r\n getFilterName: () => DashboardNames.UserRequestList,\r\n sectionPath: [NavTabNumbers.UserRequestListForm.userRequests, PageNumbers.UserRequestListForm.userRequests, SectionCodes.UserRequestListForm.userRequests],\r\n searchQuestionCode: QuestionCodes.UserRequestListForm.userRequestSearch,\r\n customQuestionCode: QuestionCodes.UserRequestListForm.userRequestFilter,\r\n customModelVisibleKeys: ['statusCategories', 'types', 'application', 'environment', 'role', 'organisation'],\r\n getFilterRequestFromModels: (searchModel: any, customModel: any) => ({\r\n searchTerm: searchModel,\r\n statusCategories: customModel?.[FilterQuestionCodes.UserRequestListForm.requestFilterRequestStatusCategory],\r\n types: customModel?.[FilterQuestionCodes.UserRequestListForm.requestFilterRequestType],\r\n application: customModel?.[FilterQuestionCodes.UserRequestListForm.requestFilterApplication],\r\n environment: customModel?.[FilterQuestionCodes.UserRequestListForm.requestFilterEnvironment],\r\n roles: customModel?.[FilterQuestionCodes.UserRequestListForm.requestFilterFunctionalRole],\r\n organisation: customModel?.[FilterQuestionCodes.UserRequestListForm.requestFilterOrganisation]\r\n }),\r\n getDefaultFilterRequest: () => null,\r\n progressiveModelUpdate: {\r\n filterQuestionPath: [NavTabNumbers.UserRequestListForm.userRequests, PageNumbers.UserRequestListForm.userRequests, SectionCodes.UserRequestListForm.userRequests, QuestionCodes.UserRequestListForm.userRequestFilter],\r\n filterSubQuestionCodeAncestorGroup: [FilterQuestionCodes.UserRequestListForm.requestFilterApplication],\r\n filterSubQuestionCodeDescendantGroups: [[FilterQuestionCodes.UserRequestListForm.requestFilterEnvironment], [FilterQuestionCodes.UserRequestListForm.requestFilterFunctionalRole]]\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n this.userProfileService.setHeaderAndMenuFromUserProfile();\r\n\r\n this.filterHandler.setInitialFilterRequest();\r\n }\r\n\r\n formLoad(event: any): void {\r\n this.overrideHtmlTitleSetByDspxFramework();\r\n\r\n this.loadGridDataOnFormLoad(this.filterHandler.getInitialFilterRequest());\r\n if (this.filterHandler.hasNonEmptyCustomProperties(this.filterHandler.getInitialFilterRequest())) {\r\n this.htmlHelperService.clickButtonByTitle(AppSelector, ComponentSelectors.UserRequestListForm.UserRequestList, FilterQuestionLabels.UserRequestListForm);\r\n }\r\n }\r\n\r\n filterData(event: any): void {\r\n switch (event.field.key) {\r\n case QuestionCodes.UserRequestListForm.userRequestSearch:\r\n case QuestionCodes.UserRequestListForm.userRequestFilter: {\r\n this.loadGridData(this.filterHandler.saveFilterRequest(event.action));\r\n break;\r\n }\r\n }\r\n }\r\n\r\n dialogButtonClicked(event: any): void {\r\n\r\n const activeDialog = this.activeDialog;\r\n delete this.activeDialog;\r\n \r\n switch (activeDialog) {\r\n case PopupCodes.UserRequestListForm.RequestDetails: {\r\n // No action needed on submission of this dialog\r\n break;\r\n }\r\n }\r\n }\r\n\r\n actionButtonClicked(event: any): void {\r\n this.registerSelectedItems(event);\r\n switch (event.field.key) {\r\n case QuestionCodes.UserRequestListForm.userRequestPlaceholder:\r\n switch (event.event.type) {\r\n case FormActions.UserRequestListForm.Details: {\r\n const request = event.event.data;\r\n const requestUniqueKey = { userRequestSource: request.userRequestSource, id: request.id };\r\n this.showUserRequestDetails(requestUniqueKey);\r\n break;\r\n }\r\n case FormActions.UserRequestListForm.Custom: {\r\n switch (event.event.data.buttonType) {\r\n case FormCustomActions.UserRequestListForm.SendInvitations: {\r\n const selectedItems = this.getSelectedItems(event);\r\n const requestUniqueKeys = selectedItems.map(request => ({ userRequestSource: request.userRequestSource, id: request.id }));\r\n this.sendUserRequestInvitations(requestUniqueKeys);\r\n break;\r\n }\r\n case FormCustomActions.UserRequestListForm.Retry: {\r\n const selectedItems = this.getSelectedItems(event);\r\n const requestUniqueKeys = selectedItems.map(request => ({ userRequestSource: request.userRequestSource, id: request.id }));\r\n this.retryUserRequests(requestUniqueKeys);\r\n break;\r\n }\r\n case FormCustomActions.UserRequestListForm.Repair: {\r\n const selectedItems = this.getSelectedItems(event);\r\n const requestUniqueKeys = selectedItems.map(request => ({ userRequestSource: request.userRequestSource, id: request.id }));\r\n this.repairUserRequests(requestUniqueKeys);\r\n break;\r\n }\r\n case FormCustomActions.UserRequestListForm.BulkExport: {\r\n const userRequestExportToDataTablesRequest = this.getUserRequestExportToDataTablesRequest();\r\n this.excelExportService.exportUserRequestsToXlsx(userRequestExportToDataTablesRequest);\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private showUserRequestDetails(requestUniqueKey: UserRequestUniqueKey): void {\r\n this.appDataService.post(ApiEndpoints.userRequest.getDetails, requestUniqueKey)\r\n .pipe(take(1))\r\n .subscribe((response: GetUserRequestDetailsResponse) => {\r\n this.activeDialog = PopupCodes.UserRequestListForm.RequestDetails;\r\n this.showSimpleInformationPopup(this.activeDialog, { message: this.formatHtmlDetailsService.formatUserRequestDetailsHtml(response) });\r\n });\r\n }\r\n\r\n private sendUserRequestInvitations(requestUniqueKeys: UserRequestUniqueKey[]): void {\r\n const settings: BulkOperationSettings = {\r\n confirmPopupCode: PopupCodes.UserRequestListForm.BulkOperationConfirmSendInvitations,\r\n apiEndpoint: ApiEndpoints.userRequest.sendInvitations,\r\n fileNamePrefix: 'SendInvitations',\r\n reloadOnComplete: false\r\n };\r\n this.performBulkOperation(requestUniqueKeys, settings);\r\n }\r\n\r\n private retryUserRequests(requestUniqueKeys: UserRequestUniqueKey[]): void {\r\n const settings: BulkOperationSettings = {\r\n confirmPopupCode: PopupCodes.UserRequestListForm.BulkOperationConfirmRetry,\r\n apiEndpoint: ApiEndpoints.userRequest.retry,\r\n fileNamePrefix: 'Retry',\r\n reloadOnComplete: false\r\n };\r\n this.performBulkOperation(requestUniqueKeys, settings);\r\n }\r\n\r\n private repairUserRequests(requestUniqueKeys: UserRequestUniqueKey[]): void {\r\n const settings: BulkOperationSettings = {\r\n confirmPopupCode: PopupCodes.UserRequestListForm.BulkOperationConfirmRepair,\r\n apiEndpoint: ApiEndpoints.userRequest.repair,\r\n fileNamePrefix: 'Repair',\r\n reloadOnComplete: true\r\n };\r\n this.performBulkOperation(requestUniqueKeys, settings);\r\n }\r\n\r\n private performBulkOperation(\r\n requestUniqueKeys: UserRequestUniqueKey[],\r\n settings: BulkOperationSettings): void {\r\n\r\n if (requestUniqueKeys.length === 0) {\r\n this.dialogService.showDialog(PopupCodes.UserRequestListForm.BulkOperationNoItems);\r\n return;\r\n }\r\n\r\n const maxBulkOperationItemCount = this.appDataService.getAppData(AppDataKeys.maxBulkOperationItemCount);\r\n if (requestUniqueKeys.length > parseInt(maxBulkOperationItemCount, 10)) {\r\n this.dialogService.showDialog(PopupCodes.UserRequestListForm.BulkOperationTooManyItems, null, { maxBulkOperationItemCount });\r\n return;\r\n }\r\n\r\n const itemCount = requestUniqueKeys.length.toString();\r\n this.dialogService\r\n .showConfirm(settings.confirmPopupCode, { itemCount })\r\n .pipe(take(1))\r\n .subscribe(data => {\r\n switch (data as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n this.excelExportService.exportToXlsx(\r\n settings.apiEndpoint,\r\n { entityIds: requestUniqueKeys },\r\n settings.fileNamePrefix,\r\n response => response.exportResponse,\r\n (response, fileName) => {\r\n const summary = this.formatBulkOperationSummary(response.summary);\r\n const onComplete = () => this.dialogService.showDialog(PopupCodes.UserRequestListForm.BulkOperationCompleted, null, { fileName, summary });\r\n if (settings.reloadOnComplete) {\r\n this.loadGridDataAfterSave(this.filterHandler.getFilterRequest(), onComplete);\r\n }\r\n else {\r\n onComplete();\r\n }\r\n });\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n private formatBulkOperationSummary(operationSummary: UserRequestBulkOperationSummary): string {\r\n const totalItems = operationSummary?.totalItems?.toString();\r\n const totalSuccessItems = operationSummary?.totalSuccessItems?.toString();\r\n const totalFailureItems = operationSummary?.totalFailureItems?.toString();\r\n const totalNotApplicableItems = operationSummary?.totalNotApplicableItems?.toString();\r\n if (!totalItems || !totalSuccessItems || !totalFailureItems || !totalNotApplicableItems) {\r\n return '';\r\n }\r\n const summary =\r\n this.htmlHelperService.formatHtml('p', 'Summary:') +\r\n this.htmlHelperService.formatFields([\r\n { name: 'Total items selected', value: totalItems },\r\n { name: 'Total successes', value: totalSuccessItems },\r\n { name: 'Total failures', value: totalFailureItems },\r\n { name: 'Total not applicable', value: totalNotApplicableItems }\r\n ]);\r\n return summary;\r\n }\r\n\r\n private getUserRequestExportToDataTablesRequest(): ExportToDataTablesRequest {\r\n const entities = this.getQuestionValue(\r\n this.baseForm.model,\r\n NavTabNumbers.UserRequestListForm.userRequests,\r\n PageNumbers.UserRequestListForm.userRequests,\r\n SectionCodes.UserRequestListForm.userRequests,\r\n QuestionCodes.UserRequestListForm.userRequestPlaceholder);\r\n const entityIds = entities.map(entity => ({ userRequestSource: entity.userRequestSource, id: entity.id }));\r\n const userRequestExportToDataTablesRequest: ExportToDataTablesRequest = { entityIds };\r\n return userRequestExportToDataTablesRequest;\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\nimport { AppDataKeys, ComponentSelectors } from '../../constants/app-data.constants';\r\n\r\nimport { AppDataService } from '../../services/app-data.service';\r\n\r\n@Component({\r\n selector: ComponentSelectors.Other.UserTermsAndConditions,\r\n templateUrl: './user-terms-and-conditions.component.html'\r\n})\r\nexport class UserTermsAndConditionsComponent implements OnInit {\r\n\r\n htmlTitle: string = 'Terms & Conditions - End User';\r\n\r\n userTermsAndConditions: string;\r\n\r\n constructor(\r\n private appDataService: AppDataService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.appDataService.overrideHtmlTitleSetByDspxFramework(this.htmlTitle);\r\n\r\n this.userTermsAndConditions = this.appDataService.getAppData(AppDataKeys.userTermsAndConditions);\r\n }\r\n}\r\n","

{{htmlTitle}}

\r\n\r\n
\r\n
\r\n
\r\n","export const ApiEndpointKeys = {\r\n getFormConfig: 'getFormConfig',\r\n getReferenceDataConfigAndResponse: 'getReferenceDataConfigAndResponse',\r\n getApplicationConfigAndResponse: 'getApplicationConfigAndResponse',\r\n getOrganisationConfigAndResponse: 'getOrganisationConfigAndResponse',\r\n getApplicationDashboardConfigAndResponse: 'getApplicationDashboardConfigAndResponse',\r\n getEnvironmentDefinitionConfigAndResponse: 'getEnvironmentDefinitionConfigAndResponse',\r\n getReviewDefinitionConfigAndResponse: 'getReviewDefinitionConfigAndResponse',\r\n getReviewDecisionsAdminModeConfigAndResponse: 'getReviewDecisionsAdminModeConfigAndResponse',\r\n getGlobalSetupConfigAndResponse: 'getGlobalSetupConfigAndResponse',\r\n getApplicationUserEmptyConfigAndResponse: 'getApplicationUserEmptyConfigAndResponse',\r\n getApplicationUserConfigAndResponse: 'getApplicationUserConfigAndResponse',\r\n getMyAppsConfigAndResponse: 'getMyAppsConfigAndResponse',\r\n getUserRegistrationConfigAndResponse: 'getUserRegistrationConfigAndResponse',\r\n getApplicationUserDraftConfigAndResponse: 'getApplicationUserDraftConfigAndResponse',\r\n getMyAppsDraftConfigAndResponse: 'getMyAppsDraftConfigAndResponse',\r\n getUserRegistrationDraftConfigAndResponse: 'getUserRegistrationDraftConfigAndResponse',\r\n getUserLegacyProfileSetupConfigAndResponse: 'getUserLegacyProfileSetupConfigAndResponse',\r\n getUserLegacyProfileSetupResetConfigAndResponse: 'getUserLegacyProfileSetupResetConfigAndResponse'\r\n}\r\n\r\nexport const ApiEndpoints = {\r\n authentication: {\r\n signIn: '/SignIn'\r\n },\r\n configuration: {\r\n default: 'FormConfiguration/GetConfiguration'\r\n },\r\n help: {\r\n downloadUserGuide: 'Help/DownloadUserGuide',\r\n downloadUserGuideAnonymous: 'Help/DownloadUserGuideAnonymous'\r\n },\r\n address: {\r\n search: 'Address/Search',\r\n lga: 'Address/Lga'\r\n },\r\n users: {\r\n getLoggedInUser: 'User/GetLoggedInUser'\r\n },\r\n pbi: {\r\n embedInfo: '/PowerBI/EmbedInfo'\r\n },\r\n dashboard: {\r\n getApplicationUsers: 'Dashboard/GetApplicationUsers',\r\n getUserRequests: 'Dashboard/GetUserRequests',\r\n getUserAccessRequestsForApproval: 'Dashboard/GetUserAccessRequestsForApproval',\r\n getReferenceDataCategories: 'Dashboard/GetReferenceDataCategories',\r\n getOrganisations: 'Dashboard/GetOrganisations',\r\n getApplications: 'Dashboard/GetApplications',\r\n getApplicationEnvironments: 'Dashboard/GetApplicationEnvironments',\r\n getReviewDefinitions: 'Dashboard/GetReviewDefinitions',\r\n getReviewDecisions: 'Dashboard/GetReviewDecisions',\r\n getReviewDecisionsAdminMode: 'Dashboard/GetReviewDecisionsAdminMode'\r\n },\r\n directorySearch: {\r\n searchAzureAdUserLimited: 'DirectorySearch/searchAzureAdUserLimited',\r\n searchAzureAdUser: 'DirectorySearch/SearchAzureAdUser',\r\n searchAzureAdGroup: 'DirectorySearch/SearchAzureAdGroup',\r\n searchAzureAdDomain: 'DirectorySearch/SearchAzureAdDomain',\r\n searchLdapProtocolUserLimited: 'DirectorySearch/SearchLdapProtocolUserLimited',\r\n searchLdapProtocolUser: 'DirectorySearch/SearchLdapProtocolUser',\r\n searchLdapProtocolGroup: 'DirectorySearch/SearchLdapProtocolGroup',\r\n searchLdapProtocolOrganisation: 'DirectorySearch/SearchLdapProtocolOrganisation',\r\n searchLdapProtocolApplication: 'DirectorySearch/SearchLdapProtocolApplication',\r\n searchLdapScimUser: 'DirectorySearch/SearchLdapScimUser',\r\n searchLdapScimGroup: 'DirectorySearch/SearchLdapScimGroup'\r\n },\r\n applicationUser: {\r\n getEmptyConfigAndResponse: 'ApplicationUser/GetEmptyResponseAndConfig',\r\n getConfigAndResponse: 'ApplicationUser/GetResponseAndConfig',\r\n getMyAppsConfigAndResponse: 'ApplicationUser/GetMyAppsResponseAndConfig',\r\n getRegistrationConfigAndResponse: 'ApplicationUser/GetUserRegistrationResponseAndConfig',\r\n getDraftConfigAndResponse: 'ApplicationUser/GetDraftResponseAndConfig',\r\n getMyAppsDraftConfigAndResponse: 'ApplicationUser/GetMyAppsDraftResponseAndConfig',\r\n getRegistrationDraftConfigAndResponse: 'ApplicationUser/GetUserRegistrationDraftResponseAndConfig',\r\n getMyAppsUserRequestDetails: 'ApplicationUser/GetMyAppsUserRequestDetails',\r\n getInternalUserProfile: 'ApplicationUser/GetInternalUserProfile',\r\n withdrawMyAppsUserRequest: 'ApplicationUser/WithdrawMyAppsUserRequest',\r\n purge: 'ApplicationUser/Purge',\r\n sync: 'ApplicationUser/Sync',\r\n changeUserOrganisation: 'ApplicationUser/ChangeUserOrganisation',\r\n changeUserOrganisationAnonymous: 'ApplicationUser/ChangeUserOrganisationAnonymous',\r\n save: 'ApplicationUser/Save',\r\n saveAnonymous: 'ApplicationUser/SaveAnonymous',\r\n verifyUserRegistration: 'ApplicationUser/VerifyUserRegistration',\r\n sendInvitation: 'ApplicationUser/SendMicrosoftInvitation',\r\n validateEmails: 'ApplicationUser/ValidateEmails',\r\n exportToDataTables: 'ApplicationUser/ExportToDataTables',\r\n exportToDataTablesFromEmailList: 'ApplicationUser/ExportToDataTablesFromEmailList',\r\n exportToDataTablesImportCompatible: 'ApplicationUser/ExportToDataTablesImportCompatible',\r\n importFromDataTables: 'ApplicationUser/ImportFromDataTables',\r\n purgeFromDataTables: 'ApplicationUser/PurgeFromDataTables',\r\n syncFromDataTables: 'ApplicationUser/SyncFromDataTables'\r\n },\r\n userLegacyProfileSetup: {\r\n getConfigAndResponse: 'UserLegacyProfileSetup/GetResponseAndConfig',\r\n getResetConfigAndResponse: 'UserLegacyProfileSetup/GetResetResponseAndConfig',\r\n save: 'UserLegacyProfileSetup/Save',\r\n },\r\n userRequest: {\r\n getDetails: 'ApplicationUser/GetUserRequestDetails',\r\n withdraw: 'ApplicationUser/WithdrawUserRequest',\r\n sendInvitations: 'ApplicationUser/SendUserRequestInvitations',\r\n retry: 'ApplicationUser/RetryUserRequests',\r\n repair: 'ApplicationUser/RepairUserRequests',\r\n exportToDataTables: 'ApplicationUser/ExportToDataTablesUserRequests'\r\n },\r\n approval: {\r\n approve: 'ApplicationUser/ApproveAccessRequests',\r\n reject: 'ApplicationUser/RejectAccessRequests',\r\n exportToDataTables: 'ApplicationUser/ExportToDataTablesPendingApprovals',\r\n },\r\n reviewDecision: {\r\n getAdminModeConfigAndResponse: 'ReviewDecision/GetAdminModeResponseAndConfig',\r\n getDetails: 'ReviewDecision/GetReviewDecisionDetails',\r\n getDetailsAdminMode: 'ReviewDecision/GetReviewDecisionDetailsAdminMode',\r\n approve: 'ReviewDecision/ApproveReviewDecisions',\r\n deny: 'ReviewDecision/DenyReviewDecisions',\r\n exportToDataTables: 'ReviewDecision/ExportToDataTables',\r\n exportToDataTablesAdminMode: 'ReviewDecision/ExportToDataTablesAdminMode'\r\n },\r\n referenceData: {\r\n getConfigAndResponse: 'ReferenceData/GetResponseAndConfig',\r\n save: 'ReferenceData/Save',\r\n delete: 'ReferenceData/Delete',\r\n exportToDataTables: 'ReferenceData/ExportToDataTables',\r\n importFromDataTables: 'ReferenceData/ImportFromDataTables'\r\n },\r\n organisation: {\r\n getConfigAndResponse: 'Organisation/GetResponseAndConfig',\r\n save: 'Organisation/Save',\r\n delete: 'Organisation/Delete',\r\n exportToDataTables: 'Organisation/ExportToDataTables',\r\n importFromDataTables: 'Organisation/ImportFromDataTables'\r\n },\r\n application: {\r\n getConfigAndResponse: 'Application/GetResponseAndConfig',\r\n save: 'Application/Save',\r\n delete: 'Application/Delete',\r\n exportToDataTables: 'Application/ExportToDataTables',\r\n importFromDataTables: 'Application/ImportFromDataTables'\r\n },\r\n applicationDashboard: {\r\n getConfigAndResponse: 'Dashboard/ApplicationDashboardGetResponseAndConfig'\r\n },\r\n applicationEnvironment: {\r\n getConfigAndResponse: 'EnvironmentDefinition/GetResponseAndConfig',\r\n exportToDataTables: 'EnvironmentDefinition/ExportToDataTables',\r\n importFromDataTables: 'EnvironmentDefinition/ImportFromDataTables',\r\n save: 'EnvironmentDefinition/Save'\r\n },\r\n reviewDefinition: {\r\n getConfigAndResponse: 'ReviewDefinition/GetResponseAndConfig',\r\n save: 'ReviewDefinition/Save',\r\n delete: 'ReviewDefinition/Delete',\r\n exportToDataTablesImportCompatible: 'ReviewDefinition/ExportToDataTablesImportCompatible',\r\n exportToDataTables: 'ReviewDefinition/ExportToDataTables',\r\n importFromDataTables: 'ReviewDefinition/ImportFromDataTables'\r\n },\r\n globalSetup: {\r\n getGlobalSettings: 'GlobalSetup/GetGlobalSettings',\r\n getConfigAndResponse: 'GlobalSetup/GetResponseAndConfig',\r\n save: 'GlobalSetup/Save'\r\n }\r\n}\r\n","import { Dialogs } from \"dspx-core\";\r\n\r\nimport { ReviewDecisionResult } from \"./review-decision-result\";\r\n\r\nimport { PageActionButtonPath } from \"../services/html-helper.service\";\r\n\r\n// This is used to open a dialog from the callback of another dialog being closed.\r\n// Unfortunately there is no reliable way to wait for the dialog to close.\r\nexport const MinWaitForDialogToCloseMs = 200;\r\n\r\n// This is the debounce time when performing changes in the UI that would require a server-side call,\r\n// so that unnecessary and annoying calls to the server are avoided when making multiple UI changes in quick succession.\r\n// For example, when changing the content of a textbox triggers a server call, we don't want to call the server immediately on every change.\r\n// NOTE: less than 510ms is dangerous because it might result in multiple calls being made when the users holds a key on the keyboard.\r\nexport const ServerCallDebounceTimeMs = 600;\r\n\r\nexport const VictorianGovernment = {\r\n title: 'State Government of Victoria, Australia',\r\n logo: '/assets/images/sgv-logo.png',\r\n url: 'https://www.vic.gov.au/'\r\n};\r\n\r\nexport const DepartmentOfHealth = {\r\n title: 'Department of Health',\r\n url: 'https://www.health.vic.gov.au/'\r\n}\r\n\r\nexport const DepartmentOfFamiliesFairnessAndHousing = {\r\n title: 'Department of Families, Fairness and Housing',\r\n url: 'https://www.dffh.vic.gov.au/'\r\n}\r\n\r\nexport const UserAvatar = {\r\n source: '/assets/images/avatar.png'\r\n};\r\n\r\nexport const AppDataKeys = {\r\n previousModel: 'previousModel',\r\n userProfile: 'userProfile',\r\n globalSettings: 'globalSettings',\r\n getPopupRegistryFunction: 'getPopupRegistryFunction',\r\n\r\n // Server-side app settings\r\n applicationTitle: 'applicationTitle',\r\n applicationUrl: 'applicationUrl',\r\n environmentName: 'environmentName',\r\n environmentBannerBgColor: 'environmentBannerBgColor',\r\n environmentBannerColor: 'environmentBannerColor',\r\n maxGridRowCount: 'maxGridRowCount',\r\n maxBulkOperationItemCount: 'maxBulkOperationItemCount',\r\n googleRecaptchaSiteKey: 'googleRecaptchaSiteKey',\r\n userTermsAndConditions: 'userTermsAndConditions',\r\n onBehalfOfTermsAndConditions: 'onBehalfOfTermsAndConditions',\r\n ldapNotFederatedAccountSignInUrl: 'ldapNotFederatedAccountSignInUrl',\r\n ldapNotFederatedAccountResetUrl: 'ldapNotFederatedAccountResetUrl',\r\n ldapLegacyUserOnboardingPortalName: 'ldapLegacyUserOnboardingPortalName',\r\n privateIndividualOrganisationId: 'privateIndividualOrganisationId',\r\n fileDownloadMetadataHeaderName: 'fileDownloadMetadataHeaderName',\r\n technicalSupportEmail: 'technicalSupportEmail'\r\n};\r\n\r\nexport const AppSelector = 'app-root';\r\n\r\nexport const HeaderSelector = 'dspx-card-set-header';\r\nexport const HeaderMenuToggleSelector = '#topbar-left-menu-button';\r\n\r\nexport const ComponentDialogSelector = 'dspx-dialog';\r\n\r\nexport const CustomStatusBarSelector = '.custom-status-bar';\r\n\r\nexport const ComponentSelectors = {\r\n UserListForm: {\r\n UserList: 'duop-user-list'\r\n },\r\n UserForm: {\r\n User: 'duop-application-user',\r\n UserRegistration: 'duop-application-user-registration',\r\n MyApps: 'duop-my-apps'\r\n },\r\n UserVerificationForm: {\r\n UserVerification: 'duop-application-user-verification'\r\n },\r\n UserLegacyProfileSetupForm: {\r\n UserLegacyProfileSetup: 'duop-user-legacy-profile-setup'\r\n },\r\n UserRequestListForm: {\r\n UserRequestList: 'duop-user-request-list'\r\n },\r\n ApprovalListForm: {\r\n ApprovalList: 'duop-approval-list'\r\n },\r\n ReviewListForm: {\r\n ReviewList: 'duop-review-list'\r\n },\r\n ApplicationListForm: {\r\n ApplicationList: 'duop-application-list'\r\n },\r\n ApplicationDashboardForm: {\r\n ApplicationDashboard: 'duop-application-dashboard'\r\n },\r\n ApplicationForm: {\r\n Application: 'duop-application'\r\n },\r\n ApplicationEnvironmentForm: {\r\n ApplicationEnvironment: 'duop-application-environment'\r\n },\r\n OrganisationListForm: {\r\n OrganisationList: 'duop-organisation-list'\r\n },\r\n OrganisationForm: {\r\n Organisation: 'duop-organisation'\r\n },\r\n ReferenceDataListForm: {\r\n ReferenceDataList: 'duop-reference-data-list'\r\n },\r\n ReferenceDataForm: {\r\n ReferenceData: 'duop-reference-data'\r\n },\r\n ReviewDefinitionListForm: {\r\n ReviewDefinitionList: 'duop-review-definition-list'\r\n },\r\n ReviewDefinitionForm: {\r\n ReviewDefinition: 'duop-review-definition'\r\n },\r\n GlobalSetupForm: {\r\n GlobalSetup: 'duop-global-setup'\r\n },\r\n Other: {\r\n Landing: 'duop-landing',\r\n Help: 'duop-help',\r\n InformationBanner: 'duop-information-banner',\r\n UserTermsAndConditions: 'duop-user-terms-and-conditions',\r\n OnBehalfOfTermsAndConditions: 'duop-on-behalf-of-terms-and-conditions'\r\n }\r\n};\r\n\r\nexport const DashboardNames = {\r\n UserList: 'UserList',\r\n UserRequestList: 'UserRequestList',\r\n ApprovalList: 'ApprovalList',\r\n ReviewList: 'ReviewList',\r\n ReferenceDataList: 'ReferenceDataList',\r\n OrganisationList: 'OrganisationList',\r\n ApplicationList: 'ApplicationList',\r\n ReviewDefinitionList: 'ReviewDefinitionList',\r\n ReviewListAdminMode: 'ReviewListAdminMode'\r\n};\r\n\r\nexport const FormActions = {\r\n UserListForm: {\r\n View: 'customView',\r\n Edit: 'customEdit',\r\n Purge: 'purge',\r\n Sync: 'sync',\r\n Custom: 'custom'\r\n },\r\n UserForm: {\r\n Details: 'details',\r\n Withdraw: 'withdraw'\r\n },\r\n UserRequestListForm: {\r\n Details: 'details',\r\n Custom: 'custom'\r\n },\r\n ApprovalListForm: {\r\n Details: 'details',\r\n Custom: 'custom'\r\n },\r\n ReviewListForm: {\r\n Details: 'details',\r\n Custom: 'custom'\r\n },\r\n ApplicationListForm: {\r\n View: 'customView',\r\n Edit: 'customEdit',\r\n ManageEnvironments: 'manageEnvironments',\r\n Delete: 'delete',\r\n Custom: 'custom'\r\n },\r\n ApplicationDashboardForm: {\r\n View: 'customView',\r\n Edit: 'customEdit',\r\n Export: 'export',\r\n Import: 'import'\r\n },\r\n OrganisationListForm: {\r\n View: 'customView',\r\n Edit: 'customEdit',\r\n Delete: 'delete',\r\n Custom: 'custom'\r\n },\r\n ReferenceDataListForm: {\r\n View: 'customView',\r\n Edit: 'customEdit',\r\n Delete: 'delete',\r\n Custom: 'custom'\r\n },\r\n ReviewDefinitionListForm: {\r\n View: 'customView',\r\n Edit: 'customEdit',\r\n Delete: 'delete',\r\n Custom: 'custom'\r\n },\r\n ReviewDefinitionForm: {\r\n View: 'customView'\r\n }\r\n};\r\n\r\nexport const FormCustomActions = {\r\n UserListForm: {\r\n Add: 'customAdd',\r\n LimitedDirectoryLookup: 'limitedDirectoryLookup',\r\n DirectoryLookup: 'directoryLookup',\r\n SendInvitation: 'sendInvitation',\r\n BulkExportChooseType: 'bulkExportChooseType',\r\n BulkExport: 'bulkExport',\r\n BulkImport: 'bulkImport',\r\n BulkPurge: 'bulkPurge',\r\n BulkSync: 'bulkSync'\r\n },\r\n UserRequestListForm: {\r\n SendInvitations: 'sendInvitations',\r\n Retry: 'retry',\r\n Repair: 'repair',\r\n BulkExport: 'bulkExport'\r\n },\r\n ApprovalListForm: {\r\n Approve: 'approve',\r\n Reject: 'reject',\r\n BulkExport: 'bulkExport'\r\n },\r\n ReviewListForm: {\r\n Approve: 'approve',\r\n Deny: 'deny',\r\n Purge: 'purge',\r\n BulkExport: 'bulkExport'\r\n },\r\n ApplicationListForm: {\r\n Add: 'customAdd',\r\n BulkExport: 'bulkExport',\r\n BulkImport: 'bulkImport'\r\n },\r\n OrganisationListForm: {\r\n Add: 'customAdd',\r\n BulkExport: 'bulkExport',\r\n BulkImport: 'bulkImport'\r\n },\r\n ReferenceDataListForm: {\r\n Add: 'customAdd',\r\n BulkExport: 'bulkExport',\r\n BulkImport: 'bulkImport'\r\n },\r\n ReviewDefinitionListForm: {\r\n Add: 'customAdd',\r\n BulkExportChooseType: 'bulkExportChooseType',\r\n BulkExport: 'bulkExport',\r\n BulkImport: 'bulkImport'\r\n }\r\n};\r\n\r\nexport const OptionSetCodes = {\r\n UserListForm: {\r\n LimitedDirectoryLookupType: {\r\n AzureAdUser: 'azureaduser',\r\n LdapUser: 'ldapuser'\r\n },\r\n LookupDirectoryName: {\r\n AzureAd: 'azuread',\r\n LdapProtocol: 'ldapprotocol',\r\n LdapScim: 'ldapscim'\r\n },\r\n LdapProtocolLookupType: {\r\n ProtocolUser: 'protocoluser',\r\n ProtocolGroup: 'protocolgroup',\r\n ProtocolOrganisation: 'protocolorganisation',\r\n ProtocolApplication: 'protocolapplication'\r\n },\r\n LdapScimLookupType: {\r\n ScimUser: 'scimuser',\r\n ScimUserAndGroups: 'scimuserandgroups',\r\n ScimGroup: 'scimgroup'\r\n },\r\n AzureAdLookupType: {\r\n User: 'user',\r\n Group: 'group',\r\n Domain: 'domain'\r\n },\r\n BulkExportType: {\r\n Standard: 'standard',\r\n StandardFromEmailList : 'standardfromemaillist',\r\n ImportCompatible: 'importcompatible'\r\n },\r\n DeleteType: {\r\n DbOnly: 'dbonly',\r\n DbAndAzureAd: 'dbandazuread'\r\n }\r\n },\r\n UserForm: {\r\n YesNo: {\r\n Yes: 'yes',\r\n No: 'no'\r\n },\r\n Environment: {\r\n OptionSetCode: 'environment'\r\n },\r\n Role: {\r\n OptionSetCode: 'role'\r\n }\r\n },\r\n ReviewListForm: {\r\n ReviewFilterActive: {\r\n Yes: 'yes',\r\n No: 'no'\r\n }\r\n },\r\n ApplicationListForm: {\r\n ApplicationFilterActive: {\r\n Yes: 'yes',\r\n No: 'no'\r\n }\r\n },\r\n OrganisationListForm: {\r\n OrganisationFilterActive: {\r\n Yes: 'yes',\r\n No: 'no'\r\n }\r\n },\r\n ReferenceDataListForm: {\r\n ReferenceDataFilterActive: {\r\n Yes: 'yes',\r\n No: 'no'\r\n }\r\n },\r\n ReviewDefinitionListForm: {\r\n ReviewDefinitionFilterActive: {\r\n Yes: 'yes',\r\n No: 'no'\r\n },\r\n BulkExportType: {\r\n Standard: \"standard\",\r\n ImportCompatible: \"importcompatible\"\r\n }\r\n }\r\n};\r\n\r\nexport const OptionSetValues = {\r\n ReviewDefinitionForm: {\r\n YesNo: {\r\n Yes: 'Yes',\r\n No: 'No'\r\n }\r\n }\r\n};\r\n\r\nexport const PopupCodes = {\r\n Common: {\r\n ClientError: Dialogs.CLIENT_ERROR,\r\n ServerError: Dialogs.SERVER_ERROR,\r\n ValidationError: Dialogs.VALIDATION\r\n },\r\n UserListForm: {\r\n PurgeUserConfirmation: 'purgeUserConfirmation',\r\n PurgeUserSuccess: 'purgeUserSuccess',\r\n PurgeUserError: 'purgeUserError', // NOTE: this is used as prefix for the PurgeUserErrorCode enum values\r\n SyncUserConfirmation: 'syncUserConfirmation',\r\n SyncUserSuccess: 'syncUserSuccess',\r\n SyncUserError: 'syncUserError', // NOTE: this is used as prefix for the SyncUserErrorCode enum values\r\n LimitedDirectoryLookup: 'limitedDirectoryLookup',\r\n DirectoryLookup: 'directoryLookup',\r\n DirectoryLookupResult: 'directoryLookupResult',\r\n LdapProtocolLookup: 'ldapProtocolLookup',\r\n LdapScimLookup: 'ldapScimLookup',\r\n AzureAdLookup: 'azureAdLookup',\r\n UserSendInvitation: 'userSendInvitation',\r\n BulkExportChoice: 'bulkExportChoice',\r\n UserTabSendInvitationSuccessful: 'userTabSendInvitationSuccessful',\r\n UserTabSendInvitationFailed: 'userTabSendInvitationFailed'\r\n },\r\n UserForm: {\r\n RequestDetails: 'requestDetails',\r\n WithdrawUserRequestConfirmation: 'withdrawUserRequestConfirmation',\r\n RevokeUserRequestConfirmation: 'revokeUserRequestConfirmation',\r\n CannotChangeOrganisation: 'cannotChangeOrganisation',\r\n DuplicateUserAccessDefinition: 'duplicateUserAccessDefinition',\r\n NoUserAccessDefinitions: 'noUserAccessDefinitions',\r\n SaveSuccessful: 'saveSuccessful',\r\n SaveSuccessfulRegistration: 'saveSuccessfulRegistration',\r\n SaveSuccessfulMyApps: 'saveSuccessfulMyApps'\r\n },\r\n UserVerificationForm: {\r\n VerificationCompleted: 'verificationCompleted'\r\n },\r\n UserLegacyProfileSetupForm: {\r\n SaveSuccessful: 'saveSuccessful'\r\n },\r\n UserRequestListForm: {\r\n RequestDetails: 'requestDetails',\r\n BulkOperationNoItems: 'bulkOperationNoItems',\r\n BulkOperationTooManyItems: 'bulkOperationTooManyItems',\r\n BulkOperationCompleted: 'bulkOperationCompleted',\r\n BulkOperationConfirmSendInvitations: 'bulkOperationConfirmSendInvitations',\r\n BulkOperationConfirmRetry: 'bulkOperationConfirmRetry',\r\n BulkOperationConfirmRepair: 'bulkOperationConfirmRepair'\r\n },\r\n ApprovalListForm: {\r\n RequestDetails: 'requestDetails',\r\n ApprovalsNoneSelected: 'approvalsNoneSelected',\r\n ApprovalsTooManyItems: 'approvalsTooManyItems',\r\n ApprovalsApprovalConfirmation: 'approvalsApprovalConfirmation',\r\n ApprovalsRejectionConfirmation: 'approvalsRejectionConfirmation',\r\n ApprovalsApprovalCompleted: 'approvalsApprovalCompleted',\r\n ApprovalsRejectionCompleted: 'approvalsRejectionCompleted'\r\n },\r\n ReviewListForm: {\r\n ReviewDecisionDetails: 'reviewDecisionDetails',\r\n ReviewNoneSelected: 'reviewNoneSelected',\r\n ReviewTooManyItems: 'reviewTooManyItems',\r\n ReviewApprovalConfirmation: 'reviewApprovalConfirmation',\r\n ReviewDenialConfirmation: 'reviewDenialConfirmation',\r\n ReviewApprovalCompleted: 'reviewApprovalCompleted',\r\n ReviewDenialCompleted: 'reviewDenialCompleted',\r\n ReviewPurgeInformation: 'reviewPurgeInformation'\r\n },\r\n ReferenceDataListForm: {\r\n DeleteConfirmation: 'deleteConfirmation',\r\n DeleteSuccess: 'deleteSuccess'\r\n },\r\n OrganisationListForm: {\r\n DeleteConfirmation: 'deleteConfirmation',\r\n DeleteSuccess: 'deleteSuccess'\r\n },\r\n ApplicationListForm: {\r\n DeleteConfirmation: 'deleteConfirmation',\r\n DeleteSuccess: 'deleteSuccess'\r\n },\r\n ReviewDefinitionListForm: {\r\n BulkExportChoice: 'bulkExportChoice',\r\n DeleteConfirmation: 'deleteConfirmation',\r\n DeleteSuccess: 'deleteSuccess'\r\n },\r\n ApplicationForm: {\r\n SaveSuccessful: 'saveSuccessful'\r\n },\r\n ApplicationEnvironmentForm: {\r\n SaveSuccessful: 'saveSuccessful'\r\n },\r\n OrganisationForm: {\r\n SaveSuccessful: 'saveSuccessful'\r\n },\r\n ReferenceDataForm: {\r\n SaveSuccessful: 'saveSuccessful'\r\n },\r\n ReviewDefinitionForm: {\r\n SaveSuccessful: 'saveSuccessful'\r\n },\r\n GlobalSetupForm: {\r\n SaveSuccessful: 'saveSuccessful'\r\n }\r\n};\r\n\r\nexport const PopupCodeButtonTitles = {\r\n UserListForm: {\r\n DirectoryLookup: {\r\n Accept: 'Confirm',\r\n Reject: 'Close'\r\n }\r\n }\r\n};\r\n\r\nexport const ServerErrorPopupCodes = {\r\n SaveUserLegacyProfile: [\r\n 'duplicateSecretQuestion',\r\n 'userLegacyProfileSetupNotRequired',\r\n 'userLegacyProfileSetupNotAllowed',\r\n 'noUserFoundInAuthenticationSystem',\r\n 'noUserFoundInLegacyAuthenticationSystem',\r\n 'multipleUsersFoundInLegacyAuthenticationSystem',\r\n 'unexpectedErrorWhileCheckingUserProfile'\r\n ],\r\n SaveUser: [\r\n 'userConditionsAgreeNotSet',\r\n 'duplicateProfile',\r\n 'duplicateProfileByOtherEmail',\r\n PopupCodes.UserForm.DuplicateUserAccessDefinition,\r\n PopupCodes.UserForm.NoUserAccessDefinitions,\r\n 'unallowedUpdateToAccountDisabled',\r\n 'unallowedOrganisationUpdate',\r\n 'unallowedFunctionalRoleForOrganisation',\r\n 'unallowedRevokeRequestOfOrganisationAuthorityRoles',\r\n 'unallowedRevokeRequestOfOrganisationSupportRoles',\r\n 'unallowedRevokeRequestOfApplicationAdministratorRoles',\r\n 'unallowedRevokeRequestOfApplicationSupportRoles'\r\n ],\r\n SaveApplication: [\r\n 'duplicateCode',\r\n 'duplicateName',\r\n 'duplicateEnvironment',\r\n 'activeEnvironmentDefinitionsFound',\r\n 'unallowedChangeToAuthenticationType',\r\n 'duplicateAlternativeName',\r\n 'duplicateFunctionalRoleCode',\r\n 'duplicateFunctionalRoleName',\r\n 'cannotDisableFunctionalRoleReferenceDataDueToExistingFunctionalRole',\r\n 'cannotDisableFunctionalRoleReferenceDataDueToExistingReviewDefinitionFunctionalRole',\r\n 'cannotRemoveFunctionalRoleReferenceDataDueToExistingFunctionalRole',\r\n 'cannotRemoveFunctionalRoleReferenceDataDueToExistingReviewDefinitionFunctionalRole',\r\n 'duplicateReview',\r\n 'invalidReviewEnvironment'\r\n ],\r\n SaveApplicationEnvironment: [\r\n 'duplicateRole',\r\n 'duplicateOrganisation',\r\n 'unallowedOrganisation',\r\n 'skipOrganisationApprovalNotSet',\r\n 'duplicateAadGroup',\r\n 'unexpectedLdapGroup',\r\n 'duplicateLdapGroup',\r\n 'duplicateApiCallback',\r\n 'unexpectedApisForIdamApplication',\r\n 'duplicateApplicationAdministrator',\r\n 'duplicateApplicationEscalationAdministrator',\r\n 'duplicateApplicationSupport',\r\n 'duplicateAdministratorSupport',\r\n 'invalidApplicationAdministrator',\r\n 'invalidApplicationEscalationAdministrator',\r\n 'invalidApplicationSupport',\r\n 'invalidEnvironment',\r\n 'invalidRole',\r\n 'foundUsersFromUnallowedOrganisationsWithCurrentAccess',\r\n 'foundUsersFromUnallowedOrganisationsWithInProgressAccess',\r\n 'cannotDeleteRolesAssignedToUsers',\r\n 'cannotDeleteRolesAboutToBeAssignedToUsers',\r\n 'cannotModifyAadGroupsOfRolesAssignedToUsers',\r\n 'cannotModifyAadGroupsOfRolesAboutToBeAssignedToUsers',\r\n 'cannotModifyLdapGroupsOfRolesAssignedToUsers',\r\n 'cannotModifyLdapGroupsOfRolesAboutToBeAssignedToUsers',\r\n 'duplicateEmailTemplateType',\r\n 'emailTemplateWithEmptySubjectAndBody',\r\n 'emailTemplateWithDangerousHtml'\r\n ],\r\n SaveOrganisation: [\r\n 'duplicateCode',\r\n 'duplicateName',\r\n 'duplicateOrganisationAuthority',\r\n 'duplicateOrganisationEscalationAuthority',\r\n 'multipleOrganisationRoles',\r\n 'duplicateOrganisationSupport',\r\n 'invalidOrganisationAuthority',\r\n 'invalidOrganisationEscalationAuthority',\r\n 'invalidOrganisationSupport',\r\n 'notAccessible',\r\n 'duplicateAlternativeName',\r\n 'duplicateSubOrganisationCode',\r\n 'duplicateSubOrganisationName',\r\n 'duplicateSubOrganisationAuthority',\r\n 'duplicateSubOrganisationEscalationAuthority',\r\n 'multipleSubOrganisationRoles',\r\n 'duplicateSubOrganisationSupport',\r\n 'invalidSubOrganisationAuthority',\r\n 'invalidSubOrganisationEscalationAuthority',\r\n 'invalidSubOrganisationSupport',\r\n 'cannotDisableSubOrganisationBecauseItHasInProgressAccessRequests',\r\n 'cannotRemoveSubOrganisationBecauseItHasAccessRequests',\r\n 'unallowedUpdateOfLdapOrganisationIdForOrganisation',\r\n 'unallowedUpdateOfLdapOrganisationIdForSubOrganisation',\r\n 'duplicateOrganisationExternalCodeType',\r\n 'duplicateOrganisationExternalCodeValue',\r\n 'unallowedChangesToOrganisationExternalCodes',\r\n 'duplicateReview',\r\n 'unallowedChangesToReviews'\r\n ],\r\n SaveReferenceData: [\r\n 'duplicateCategoryCode',\r\n 'duplicateCategoryValue',\r\n 'duplicateCode',\r\n 'duplicateValue',\r\n 'deletedValues',\r\n 'categoryDeactivationNotAllowed'\r\n ],\r\n SaveReviewDefinition: [\r\n 'invalidStartDate',\r\n 'duplicateCode',\r\n 'duplicateName',\r\n 'notAccessible',\r\n 'allReviewOccurrencesAreInThePast'\r\n ],\r\n SaveGlobalSetup: [\r\n 'informationBannerInvalidStartTime',\r\n 'informationBannerInvalidEndTime',\r\n 'informationBannerInvalidPeriod'\r\n ]\r\n}\r\n\r\nexport const ImportErrorPopupCodePrefixes = {\r\n validateEmails: 'validateEmails',\r\n userPurge: 'userPurge',\r\n userSync: 'userSync',\r\n userImport: 'userImport',\r\n referenceDataImport: 'referenceDataImport',\r\n organisationImport: 'organisationImport',\r\n applicationImport: 'applicationImport',\r\n environmentImport: 'environmentImport',\r\n reviewDefinitionImport: 'reviewDefinitionImport'\r\n}\r\n\r\nexport const NavTabNumbers = {\r\n UserListForm: {\r\n users: 1\r\n },\r\n UserForm: {\r\n formNavigation: 1,\r\n userProfile: 2,\r\n applicationAccess: 3,\r\n userRequests: 4,\r\n formNavigationBottom: 9\r\n },\r\n UserVerificationForm: {\r\n formNavigationBottom: 2\r\n },\r\n UserLegacyProfileSetupForm: {\r\n formNavigation: 1,\r\n formNavigationBottom: 3\r\n },\r\n UserRequestListForm: {\r\n userRequests: 1\r\n },\r\n ApprovalListForm: {\r\n approvals: 1\r\n },\r\n ReviewListForm: {\r\n formNavigation: 1,\r\n reviews: 2,\r\n formNavigationBottom: 3\r\n },\r\n ApplicationListForm: {\r\n applications: 1\r\n },\r\n ApplicationDashboardForm: {\r\n formNavigation: 1,\r\n environments: 2,\r\n formNavigationBottom: 3\r\n },\r\n ApplicationForm: {\r\n formNavigation: 1,\r\n applicationProfile: 2,\r\n functionalRoles: 4,\r\n reviewDefinitions: 5,\r\n formNavigationBottom: 6\r\n },\r\n ApplicationEnvironmentForm: {\r\n formNavigation: 1,\r\n environment: 2,\r\n environmentCustomOrganisationApproval: 3,\r\n role: 4,\r\n formNavigationBottom: 5\r\n },\r\n OrganisationListForm: {\r\n organisations: 1\r\n },\r\n OrganisationForm: {\r\n formNavigation: 1,\r\n organisationDetails: 2,\r\n subOrganisations: 4,\r\n organisationExternalCodes: 5,\r\n reviewDefinitions: 6,\r\n formNavigationBottom: 8\r\n },\r\n ReferenceDataListForm: {\r\n referenceData: 1\r\n },\r\n ReferenceDataForm: {\r\n formNavigation: 1,\r\n refDataCategory: 2,\r\n refDataValue: 3,\r\n formNavigationBottom: 4\r\n },\r\n ReviewDefinitionListForm: {\r\n reviewDefinitions: 1\r\n },\r\n ReviewDefinitionForm: {\r\n formNavigation: 1,\r\n reviewDefinitionDetails: 2,\r\n formNavigationBottom: 4\r\n },\r\n GlobalSetupForm: {\r\n formNavigation: 1,\r\n userGuides: 3,\r\n formNavigationBottom: 4\r\n }\r\n};\r\n\r\nexport const PageNumbers = {\r\n UserListForm: {\r\n users: 1\r\n },\r\n UserForm: {\r\n formNavigation: 1,\r\n profile: 1,\r\n applicationAccess: 1,\r\n userRequests: 1,\r\n formNavigationBottom: 1\r\n },\r\n UserVerificationForm: {\r\n formNavigationBottom: 1\r\n },\r\n UserLegacyProfileSetupForm: {\r\n formNavigation: 1,\r\n formNavigationBottom: 1\r\n },\r\n UserRequestListForm: {\r\n userRequests: 1\r\n },\r\n ApprovalListForm: {\r\n approvals: 1\r\n },\r\n ReviewListForm: {\r\n formNavigation: 1,\r\n reviews: 1,\r\n formNavigationBottom: 1\r\n },\r\n ApplicationListForm: {\r\n applications: 1\r\n },\r\n ApplicationDashboardForm: {\r\n formNavigation: 1,\r\n environments: 1,\r\n formNavigationBottom: 1\r\n },\r\n ApplicationForm: {\r\n formNavigation: 1,\r\n applicationProfile: 1,\r\n functionalRoles: 1,\r\n reviewDefinitions: 1,\r\n formNavigationBottom: 1\r\n },\r\n ApplicationEnvironmentForm: {\r\n formNavigation: 1,\r\n environment: 1,\r\n environmentCustomOrganisationApproval: 1,\r\n role: 1,\r\n formNavigationBottom: 1\r\n },\r\n OrganisationListForm: {\r\n organisations: 1\r\n },\r\n OrganisationForm: {\r\n formNavigation: 1,\r\n organisationDetails: 1,\r\n subOrganisations: 1,\r\n organisationExternalCodes: 1,\r\n reviewDefinitions: 1,\r\n formNavigationBottom: 1\r\n },\r\n ReferenceDataListForm: {\r\n referenceData: 1\r\n },\r\n ReferenceDataForm: {\r\n formNavigation: 1,\r\n refDataCategory: 1,\r\n refDataValue: 1,\r\n formNavigationBottom: 1\r\n },\r\n ReviewDefinitionListForm: {\r\n reviewDefinitions: 1\r\n },\r\n ReviewDefinitionForm: {\r\n formNavigation: 1,\r\n reviewDefinitionDetails: 1,\r\n formNavigationBottom: 1\r\n },\r\n GlobalSetupForm: {\r\n formNavigation: 1,\r\n userGuides: 1,\r\n formNavigationBottom: 1\r\n }\r\n};\r\n\r\nexport const SectionCodes = {\r\n UserListForm: {\r\n user: 'user'\r\n },\r\n UserForm: {\r\n viewUserProfile: 'viewUserProfile',\r\n userOrganisationProfile: 'userOrganisationProfile',\r\n userProfile: 'userProfile',\r\n conditionsOfUse: 'conditionsOfUse',\r\n applicationRef: 'applicationRef',\r\n revokedApplicationRef: 'revokedApplicationRef',\r\n userRequests: 'userRequests'\r\n },\r\n UserRequestListForm: {\r\n userRequests: 'request'\r\n },\r\n ApprovalListForm: {\r\n approvals: 'approval'\r\n },\r\n ReviewListForm: {\r\n reviews: 'review'\r\n },\r\n ApplicationListForm: {\r\n application: 'application'\r\n },\r\n ApplicationForm: {\r\n viewApplicationProfile: 'viewApplicationProfile',\r\n applicationProfile: 'applicationProfile',\r\n functionalRoles: 'functionalRoles',\r\n reviewDefinitions: 'reviewDefinitions'\r\n },\r\n ApplicationEnvironmentForm: {\r\n viewEnvironment: 'viewEnvironment',\r\n environment: 'environment',\r\n customOrganisationApproval: 'customOrganisationApproval',\r\n environmentCustomOrganisationApproval: 'environmentCustomOrganisationApproval'\r\n },\r\n OrganisationListForm: {\r\n organisation: 'organisation'\r\n },\r\n OrganisationForm: {\r\n viewOrganisationDetails: 'viewOrganisationDetails',\r\n organisationDetails: 'organisationDetails',\r\n subOrganisations: 'subOrganisations',\r\n organisationExternalCodes: 'organisationExternalCodes',\r\n reviewDefinitions: 'reviewDefinitions'\r\n },\r\n ReferenceDataListForm: {\r\n config: 'config'\r\n },\r\n ReferenceDataForm: {\r\n viewRefDataCategory: 'viewRefDataCategory',\r\n refDataCategory: 'refDataCategory',\r\n refDataValue: 'refDataValue'\r\n },\r\n ReviewDefinitionListForm: {\r\n reviewDefinition: 'reviewDefinition'\r\n },\r\n ReviewDefinitionForm: {\r\n viewReviewDefinitionDetails: 'viewReviewDefinitionDetails',\r\n reviewDefinitionDetails: 'reviewDefinitionDetails',\r\n reviewDefinitionSchedule: 'reviewDefinitionSchedule',\r\n reviewDefinitionSettings: 'reviewDefinitionSettings'\r\n },\r\n GlobalSetupForm: {\r\n userGuides: 'userGuides'\r\n }\r\n};\r\n\r\nexport const QuestionCodes = {\r\n UserListForm: {\r\n userPlaceholder: 'userPlaceholder',\r\n userSearch: 'userSearch',\r\n userFilter: 'userFilter'\r\n },\r\n UserForm: {\r\n userHasOrganisation: 'userHasOrganisation',\r\n userOrganisation: 'userOrganisation',\r\n userEmail: 'userEmail',\r\n userFamilyName: 'userFamilyName',\r\n userGivenName: 'userGivenName',\r\n userPreferredName: 'userPreferredName',\r\n userMiddleName: 'userMiddleName',\r\n userPhoneWork: 'userPhoneWork',\r\n userPhoneMobile: 'userPhoneMobile',\r\n accountDisabled: 'accountDisabled',\r\n userConditionsAgree: 'userConditionsAgree',\r\n envName: 'envName',\r\n roleName: 'roleName',\r\n applicationName: 'applicationName',\r\n userRequestGrid: 'userRequestGrid'\r\n },\r\n UserRequestListForm: {\r\n userRequestPlaceholder: 'requestPlaceholder',\r\n userRequestSearch: 'requestSearch',\r\n userRequestFilter: 'requestFilter'\r\n },\r\n ApprovalListForm: {\r\n approvalPlaceholder: 'approvalPlaceholder',\r\n approvalSearch: 'approvalSearch',\r\n approvalFilter: 'approvalFilter'\r\n },\r\n ReviewListForm: {\r\n reviewPlaceholder: 'reviewPlaceholder',\r\n reviewSearch: 'reviewSearch',\r\n reviewFilter: 'reviewFilter'\r\n },\r\n ApplicationListForm: {\r\n applicationPlaceholder: 'applicationPlaceholder',\r\n applicationSearch: 'applicationSearch',\r\n applicationFilter: 'applicationFilter'\r\n },\r\n ApplicationDashboardForm: {\r\n environmentPlaceholder: 'environmentPlaceholder'\r\n },\r\n ApplicationForm: {\r\n applicationName: 'applicationName',\r\n environments: 'environments',\r\n authenticationType: 'authenticationType',\r\n isActive: 'active'\r\n },\r\n ApplicationEnvironmentForm: {\r\n applicationName: 'applicationName',\r\n environmentName: 'environmentName',\r\n isActive: 'active',\r\n environmentAllowedOrganisations: 'environmentAllowedOrganisations',\r\n environmentSkipOrganisationApproval: 'environmentSkipOrganisationApproval',\r\n skipOrganisationApproval: 'skipOrganisationApproval'\r\n },\r\n OrganisationListForm: {\r\n organisationPlaceholder: 'organisationPlaceholder',\r\n organisationSearch: 'organisationSearch',\r\n organisationFilter: 'organisationFilter'\r\n },\r\n OrganisationForm: {\r\n name: 'name',\r\n organisationAuthority: 'orgAuthority',\r\n organisationEscalationAuthority: 'escalationOrgAuthority',\r\n isActive: 'active'\r\n },\r\n ReferenceDataListForm: {\r\n referenceDataPlaceholder: 'referenceDataPlaceholder',\r\n referenceDataSearch: 'referenceDataSearch',\r\n referenceDataFilter: 'referenceDataFilter'\r\n },\r\n ReferenceDataForm: {\r\n referenceCategoryText: 'categoryText',\r\n referenceCategoryIsActive: 'categoryStatus'\r\n },\r\n ReviewDefinitionListForm: {\r\n reviewDefinitionPlaceholder: 'reviewDefinitionPlaceholder',\r\n reviewDefinitionSearch: 'reviewDefinitionSearch',\r\n reviewDefinitionFilter: 'reviewDefinitionFilter'\r\n },\r\n ReviewDefinitionForm: {\r\n name: 'name',\r\n isActive: 'active',\r\n startDate: 'startDate',\r\n durationInDays: 'durationInDays',\r\n isRecurrent: 'isRecurrent',\r\n numberOfOccurrences: 'numberOfOccurrences',\r\n recurrencePeriodInMonths: 'recurrencePeriodInMonths',\r\n useAsPrivateIndividualUserReview: 'useAsPrivateIndividualUserReview',\r\n reviewOccurrenceHistoryGrid: 'reviewOccurrenceHistoryGrid'\r\n },\r\n GlobalSetupForm: {\r\n userGuidesForAnonymousUser: 'userGuidesForAnonymousUser',\r\n userGuidesForUser: 'userGuidesForUser',\r\n userGuidesForOrganisationSupport: 'userGuidesForOrganisationSupport',\r\n userGuidesForOrganisationAuthority: 'userGuidesForOrganisationAuthority',\r\n userGuidesForApplicationSupport: 'userGuidesForApplicationSupport',\r\n userGuidesForApplicationAdministrator: 'userGuidesForApplicationAdministrator',\r\n userGuidesForAdminReadOnly: 'userGuidesForAdminReadOnly',\r\n userGuidesForIdamReviewer: 'userGuidesForIdamReviewer',\r\n userGuidesForIdamOnboarder: 'userGuidesForIdamOnboarder',\r\n userGuidesForIdamApprover: 'userGuidesForIdamApprover',\r\n userGuidesForIdamAdministrator: 'userGuidesForIdamAdministrator'\r\n }\r\n};\r\n\r\nexport const FilterQuestionCodes = {\r\n UserListForm: {\r\n userFilterApplication: 'userFilterApplication',\r\n userFilterEnvironment: 'userFilterEnvironment',\r\n userFilterFunctionalRole: 'userFilterFunctionalRole',\r\n userFilterOrganisation: 'userFilterOrganisation',\r\n userFilterDisableApplicationAccessAutomatedEmails: 'userFilterDisableApplicationAccessAutomatedEmails',\r\n userFilterAccountDisabled: 'userFilterAccountDisabled',\r\n userFilterLegacyAccountDisabled: 'userFilterLegacyAccountDisabled'\r\n },\r\n UserRequestListForm: {\r\n requestFilterRequestStatusCategory: 'requestFilterRequestStatusCategory',\r\n requestFilterRequestType: 'requestFilterRequestType',\r\n requestFilterApplication: 'requestFilterApplication',\r\n requestFilterEnvironment: 'requestFilterEnvironment',\r\n requestFilterFunctionalRole: 'requestFilterFunctionalRole',\r\n requestFilterOrganisation: 'requestFilterOrganisation'\r\n },\r\n ApprovalListForm: {\r\n approvalFilterRequestStatus: 'approvalFilterRequestStatus',\r\n approvalFilterRequestType: 'approvalFilterRequestType',\r\n approvalFilterApplication: 'approvalFilterApplication',\r\n approvalFilterEnvironment: 'approvalFilterEnvironment',\r\n approvalFilterFunctionalRole: 'approvalFilterFunctionalRole',\r\n approvalFilterOrganisation: 'approvalFilterOrganisation',\r\n approvalFilterEscalationLevel: 'approvalFilterEscalationLevel'\r\n },\r\n ReviewListForm: {\r\n reviewFilterActive: 'reviewFilterActive',\r\n reviewFilterDecision: 'reviewFilterDecision',\r\n reviewFilterStatus: 'reviewFilterStatus',\r\n reviewFilterReviewType: 'reviewFilterReviewType',\r\n reviewFilterApplication: 'reviewFilterApplication',\r\n reviewFilterEnvironment: 'reviewFilterEnvironment',\r\n reviewFilterFunctionalRole: 'reviewFilterFunctionalRole',\r\n reviewFilterOrganisation: 'reviewFilterOrganisation',\r\n reviewFilterEscalationLevel: 'reviewFilterEscalationLevel'\r\n },\r\n ApplicationListForm: {\r\n applicationFilterActive: 'applicationFilterActive',\r\n applicationFilterEnvironment: 'applicationFilterEnvironment',\r\n applicationFilterAuthenticationType: 'applicationFilterAuthenticationType'\r\n },\r\n OrganisationListForm: {\r\n organisationFilterActive: 'organisationFilterActive'\r\n },\r\n ReferenceDataListForm: {\r\n referenceDataFilterActive: 'referenceDataFilterActive'\r\n },\r\n ReviewDefinitionListForm: {\r\n reviewDefinitionFilterActive: 'reviewDefinitionFilterActive'\r\n }\r\n};\r\n\r\nexport const FilterQuestionDefaults = {\r\n ReviewListForm: {\r\n reviewFilterDecisions: [ReviewDecisionResult.NotReviewed],\r\n reviewFilterDecisionsAdminMode: []\r\n },\r\n ApplicationListForm: {\r\n applicationFilterActive: OptionSetCodes.ApplicationListForm.ApplicationFilterActive.Yes\r\n },\r\n OrganisationListForm: {\r\n organisationFilterActive: OptionSetCodes.OrganisationListForm.OrganisationFilterActive.Yes\r\n },\r\n ReferenceDataListForm: {\r\n referenceDataFilterActive: OptionSetCodes.ReferenceDataListForm.ReferenceDataFilterActive.Yes\r\n },\r\n ReviewDefinitionListForm: {\r\n reviewDefinitionFilterActive: OptionSetCodes.ReviewDefinitionListForm.ReviewDefinitionFilterActive.Yes\r\n }\r\n};\r\n\r\nexport const FilterQuestionLabels = {\r\n UserListForm: 'Filter',\r\n UserRequestListForm: 'Filter',\r\n ApprovalListForm: 'Filter',\r\n ReviewListForm: 'Filter',\r\n ApplicationListForm: 'Filter',\r\n OrganisationListForm: 'Filter',\r\n ReferenceDataListForm: 'Filter',\r\n ReviewDefinitionListForm: 'Filter'\r\n};\r\n\r\nexport const PageActionButtonCodes = {\r\n UserForm: {\r\n cancel: 'btnCustomCancel',\r\n },\r\n UserVerificationForm: {\r\n cancel: 'btnCustomCancel',\r\n },\r\n UserLegacyProfileSetupForm: {\r\n cancel: 'btnCustomCancel',\r\n },\r\n ReviewListForm: {\r\n cancel: 'btnCustomCancel',\r\n },\r\n ApplicationForm: {\r\n cancel: 'btnCustomCancel',\r\n manageEnvironments: 'btnManageEnvironments'\r\n },\r\n ApplicationDashboardForm: {\r\n cancel: 'btnCustomCancel'\r\n },\r\n ApplicationEnvironmentForm: {\r\n cancel: 'btnCustomCancel'\r\n },\r\n OrganisationForm: {\r\n cancel: 'btnCustomCancel',\r\n },\r\n ReferenceDataForm: {\r\n cancel: 'btnCustomCancel'\r\n },\r\n ReviewDefinitionForm: {\r\n cancel: 'btnCustomCancel'\r\n },\r\n GlobalSetupForm: {\r\n cancel: 'btnCustomCancel'\r\n }\r\n}\r\n\r\nexport const ReadOnlyAccessPageActionButtons: { [form: string]: PageActionButtonPath[] } = {\r\n UserForm: [\r\n [NavTabNumbers.UserForm.formNavigation, PageNumbers.UserForm.formNavigation, PageActionButtonCodes.UserForm.cancel],\r\n [NavTabNumbers.UserForm.formNavigationBottom, PageNumbers.UserForm.formNavigationBottom, PageActionButtonCodes.UserForm.cancel]\r\n ],\r\n UserVerificationForm: [\r\n [NavTabNumbers.UserVerificationForm.formNavigationBottom, PageNumbers.UserVerificationForm.formNavigationBottom, PageActionButtonCodes.UserVerificationForm.cancel]\r\n ],\r\n UserLegacyProfileSetupForm: [\r\n [NavTabNumbers.UserLegacyProfileSetupForm.formNavigation, PageNumbers.UserLegacyProfileSetupForm.formNavigation, PageActionButtonCodes.UserLegacyProfileSetupForm.cancel],\r\n [NavTabNumbers.UserLegacyProfileSetupForm.formNavigationBottom, PageNumbers.UserLegacyProfileSetupForm.formNavigationBottom, PageActionButtonCodes.UserLegacyProfileSetupForm.cancel]\r\n ],\r\n ReviewListForm: [\r\n [NavTabNumbers.ReviewListForm.formNavigation, PageNumbers.ReviewListForm.formNavigation, PageActionButtonCodes.ReviewListForm.cancel],\r\n [NavTabNumbers.ReviewListForm.formNavigationBottom, PageNumbers.ReviewListForm.formNavigationBottom, PageActionButtonCodes.ReviewListForm.cancel]\r\n ],\r\n ApplicationDashboardForm: [\r\n [NavTabNumbers.ApplicationDashboardForm.formNavigation, PageNumbers.ApplicationDashboardForm.formNavigation, PageActionButtonCodes.ApplicationDashboardForm.cancel],\r\n [NavTabNumbers.ApplicationDashboardForm.formNavigationBottom, PageNumbers.ApplicationDashboardForm.formNavigationBottom, PageActionButtonCodes.ApplicationDashboardForm.cancel]\r\n ],\r\n ApplicationForm: [\r\n [NavTabNumbers.ApplicationForm.formNavigation, PageNumbers.ApplicationForm.formNavigation, PageActionButtonCodes.ApplicationForm.cancel],\r\n [NavTabNumbers.ApplicationForm.formNavigation, PageNumbers.ApplicationForm.formNavigation, PageActionButtonCodes.ApplicationForm.manageEnvironments],\r\n [NavTabNumbers.ApplicationForm.formNavigationBottom, PageNumbers.ApplicationForm.formNavigationBottom, PageActionButtonCodes.ApplicationForm.cancel],\r\n [NavTabNumbers.ApplicationForm.formNavigationBottom, PageNumbers.ApplicationForm.formNavigationBottom, PageActionButtonCodes.ApplicationForm.manageEnvironments]\r\n ],\r\n ApplicationEnvironmentForm: [\r\n [NavTabNumbers.ApplicationEnvironmentForm.formNavigation, PageNumbers.ApplicationEnvironmentForm.formNavigation, PageActionButtonCodes.ApplicationEnvironmentForm.cancel],\r\n [NavTabNumbers.ApplicationEnvironmentForm.formNavigationBottom, PageNumbers.ApplicationEnvironmentForm.formNavigationBottom, PageActionButtonCodes.ApplicationEnvironmentForm.cancel]\r\n ],\r\n OrganisationForm: [\r\n [NavTabNumbers.OrganisationForm.formNavigation, PageNumbers.OrganisationForm.formNavigation, PageActionButtonCodes.OrganisationForm.cancel],\r\n [NavTabNumbers.OrganisationForm.formNavigationBottom, PageNumbers.OrganisationForm.formNavigationBottom, PageActionButtonCodes.OrganisationForm.cancel]\r\n ],\r\n ReferenceDataForm: [\r\n [NavTabNumbers.ReferenceDataForm.formNavigation, PageNumbers.ReferenceDataForm.formNavigation, PageActionButtonCodes.ReferenceDataForm.cancel],\r\n [NavTabNumbers.ReferenceDataForm.formNavigationBottom, PageNumbers.ReferenceDataForm.formNavigationBottom, PageActionButtonCodes.ReferenceDataForm.cancel]\r\n ],\r\n ReviewDefinitionForm: [\r\n [NavTabNumbers.ReviewDefinitionForm.formNavigation, PageNumbers.ReviewDefinitionForm.formNavigation, PageActionButtonCodes.ReviewDefinitionForm.cancel],\r\n [NavTabNumbers.ReviewDefinitionForm.formNavigationBottom, PageNumbers.ReviewDefinitionForm.formNavigationBottom, PageActionButtonCodes.ReviewDefinitionForm.cancel]\r\n ],\r\n GlobalSetupForm: [\r\n [NavTabNumbers.GlobalSetupForm.formNavigation, PageNumbers.GlobalSetupForm.formNavigation, PageActionButtonCodes.GlobalSetupForm.cancel],\r\n [NavTabNumbers.GlobalSetupForm.formNavigationBottom, PageNumbers.GlobalSetupForm.formNavigationBottom, PageActionButtonCodes.GlobalSetupForm.cancel]\r\n ]\r\n}\r\n\r\nexport const QueryStringParameters = {\r\n GridDataFilter: 'grid-data-filter'\r\n}\r\n","export enum FilterAction {\r\n ApplyFilters = 'applyFilters',\r\n ClearFilters = 'clearFilters',\r\n Search = 'search'\r\n};\r\n","export enum RequestSaveResultStatus {\r\n NoMatchingRow = 1,\r\n UpdatedSinceReadTime = 2,\r\n Success = 3,\r\n InsertFailed = 4,\r\n UpdateFailed = 5,\r\n DuplicateRow = 6,\r\n InvalidAction = 7,\r\n DuplicateChildEntity = 8\r\n};\r\n","export enum ReviewDecisionResult {\r\n NotReviewed = 'NotReviewed',\r\n Approve = 'Approve',\r\n Deny = 'Deny'\r\n};\r\n","export const RouteConstants = {\r\n termsAndConditions: {\r\n user: 'terms-and-conditions/end-user',\r\n onBehalfOf: 'terms-and-conditions/organisation-authority'\r\n },\r\n user: {\r\n verify: 'verify',\r\n register: 'register/:id',\r\n myApps: 'my-apps',\r\n list: 'user-list',\r\n prefix: 'user-detail',\r\n edit: 'user-detail/:id'\r\n },\r\n userLegacyProfileSetup: {\r\n edit: 'user-legacy-profile-setup/:id',\r\n resetEdit: 'user-legacy-profile-setup'\r\n },\r\n userRequest: {\r\n list: 'user-request-list'\r\n },\r\n approval: {\r\n list: 'approval-list'\r\n },\r\n review: {\r\n list: 'review-list'\r\n },\r\n referenceData: {\r\n list: 'reference-data-list',\r\n prefix: 'reference-data-detail',\r\n edit: 'reference-data-detail/:id'\r\n },\r\n organisation: {\r\n list: 'organisation-list',\r\n prefix: 'organisation-detail',\r\n edit: 'organisation-detail/:id'\r\n },\r\n application: {\r\n list: 'application-list',\r\n prefix: 'application-detail',\r\n edit: 'application-detail/:id',\r\n applicationDashboard: 'application-detail/:applicationId/application-dashboard-detail',\r\n applicationEnvironment: 'application-detail/:applicationId/application-environment-detail/:environmentId',\r\n applicationDashboardFragment: 'application-dashboard-detail',\r\n applicationEnvironmentFragment: 'application-environment-detail'\r\n },\r\n applicationDashboard: {\r\n prefix: 'application-dashboard-detail',\r\n edit: 'application-dashboard-detail/:id'\r\n },\r\n applicationEnvironment: {\r\n prefix: 'application-environment-detail',\r\n edit: 'application-environment-detail/:id'\r\n },\r\n reviewDefinition: {\r\n list: 'review-definition-list',\r\n prefix: 'review-definition-detail',\r\n edit: 'review-definition-detail/:id',\r\n reviewOccurrenceList: 'review-definition-detail/:reviewDefinitionId/review-occurrence-detail/:reviewOccurrenceId/review-list',\r\n reviewOccurrenceDetailFragment: 'review-occurrence-detail',\r\n reviewDecisionListFragment: 'review-list'\r\n },\r\n globalSetup: {\r\n edit: 'global-settings'\r\n },\r\n logout: 'logout',\r\n help: 'help'\r\n};\r\n","export const Templates = {\r\n user: 1,\r\n organisation: 2,\r\n referenceData: 3,\r\n application: 4,\r\n applicationEnvironment: 5,\r\n applicationDashboard: 6,\r\n referenceDataList: 7,\r\n menu: 8,\r\n userList: 9,\r\n userRequestList: 10,\r\n approvalList: 11,\r\n applicationList: 12,\r\n organisationList: 13,\r\n reviewList: 14,\r\n userVerification: 15,\r\n reviewDefinitionList: 16,\r\n reviewDefinition: 17,\r\n userLegacyProfileSetup: 18,\r\n globalSetup: 19\r\n}\r\n\r\nexport const Versions = {\r\n default: 0,\r\n latest: 0\r\n}\r\n","export enum UserPurgeType {\r\n FromBothDbAndAzureAd = 'FromBothDbAndAzureAd',\r\n FromDbOnly = 'FromDbOnly'\r\n};\r\n","export enum UserRequestSource {\r\n Access = 'Access',\r\n Update = 'Update'\r\n};\r\n","export enum PurgeUserResultStatus {\r\n Success = 'Success',\r\n Error = 'Error'\r\n};\r\n\r\nexport enum PurgeUserErrorCode {\r\n UserHasInvalidId = 'UserHasInvalidId',\r\n\r\n UserIsNotFoundInTheSystem = 'UserIsNotFoundInTheSystem',\r\n UserHasInvalidEmail = 'UserHasInvalidEmail',\r\n UserHasApplicationAccessesInTheSystem = 'UserHasApplicationAccessesInTheSystem',\r\n UserHasInProgressAccessRequestsInTheSystem = 'UserHasInProgressAccessRequestsInTheSystem',\r\n UserHasInProgressUpdateRequestsInTheSystem = 'UserHasInProgressUpdateRequestsInTheSystem',\r\n UserIsAuthorityOfActiveOrganisations = 'UserIsAuthorityOfActiveOrganisations',\r\n UserIsSupportOfActiveOrganisations = 'UserIsSupportOfActiveOrganisations',\r\n UserIsAdministratorOfActiveApplicationEnvironments = 'UserIsAdministratorOfActiveApplicationEnvironments',\r\n UserIsApplicationSupportOfActiveApplicationEnvironments = 'UserIsApplicationSupportOfActiveApplicationEnvironments',\r\n\r\n LoggedInUserIsNotAvailable = 'LoggedInUserIsNotAvailable',\r\n UserIsCurrentlyLoggedIn = 'UserIsCurrentlyLoggedIn',\r\n LoggedInUserIsNotAuthorised = 'LoggedInUserIsNotAuthorised',\r\n PurgeTypeIsInvalid = 'PurgeTypeIsInvalid',\r\n LoggedInUserIsNotAuthorisedToPurge = 'LoggedInUserIsNotAuthorisedToPurge',\r\n LoggedInUserIsNotAuthorisedForPurgeType = 'LoggedInUserIsNotAuthorisedForPurgeType',\r\n PurgeTypeCannotBeDetermined = 'PurgeTypeCannotBeDetermined',\r\n\r\n AuthenticationSystemFailedToSearchUser = 'AuthenticationSystemFailedToSearchUser',\r\n UserIsInternal = 'UserIsInternal',\r\n\r\n AuthenticationSystemFailedToRemoveUserFromGroup = 'AuthenticationSystemFailedToRemoveUserFromGroup',\r\n AuthenticationSystemFailedToDeleteUser = 'AuthenticationSystemFailedToDeleteUser',\r\n AuthenticationSystemFailedToDeleteLegacyUser = 'AuthenticationSystemFailedToDeleteLegacyUser',\r\n\r\n SystemFailedToDeleteUser = 'SystemFailedToDeleteUser',\r\n\r\n UnexpectedFailure = 'UnexpectedFailure'\r\n};\r\n\r\nexport interface PurgeUserResult {\r\n status?: PurgeUserResultStatus;\r\n errorCode?: PurgeUserErrorCode;\r\n errorData?: { [key: string]: string };\r\n};\r\n","export enum SyncUserResultStatus {\r\n Success = 'Success',\r\n Error = 'Error'\r\n};\r\n\r\nexport enum SyncUserErrorCode {\r\n UserHasInvalidId = 'UserHasInvalidId',\r\n\r\n UserIsNotFoundInTheSystem = 'UserIsNotFoundInTheSystem',\r\n UserHasInvalidEmail = 'UserHasInvalidEmail',\r\n\r\n LoggedInUserIsNotAvailable = 'LoggedInUserIsNotAvailable',\r\n LoggedInUserIsNotAuthorised = 'LoggedInUserIsNotAuthorised',\r\n LoggedInUserIsNotAuthorisedToSync = 'LoggedInUserIsNotAuthorisedToSync',\r\n\r\n AuthenticationSystemFailedToSearchUser = 'AuthenticationSystemFailedToSearchUser',\r\n AuthenticationSystemUserNotFound = 'AuthenticationSystemUserNotFound',\r\n\r\n AuthenticationSystemFailedToSearchLegacyUser = 'AuthenticationSystemFailedToSearchLegacyUser',\r\n AuthenticationSystemFailedToSearchLegacyUserSecurity = 'AuthenticationSystemFailedToSearchLegacyUserSecurity',\r\n\r\n SystemFailedToSyncUser = 'SystemFailedToSyncUser',\r\n\r\n UnexpectedFailure = 'UnexpectedFailure'\r\n};\r\n\r\nexport interface SyncUserResult {\r\n status?: SyncUserResultStatus;\r\n errorCode?: SyncUserErrorCode;\r\n errorData?: { [key: string]: string };\r\n};\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\nimport * as fileSaver from 'file-saver';\r\n\r\nimport { Observable, take } from 'rxjs';\r\n\r\nimport { ApiService, ApplicationSettings, SpinnerService } from 'dspx-core';\r\n\r\nimport { AppDataKeys } from '../constants/app-data.constants';\r\n\r\nimport { ExportToDataTablesRequest } from '../interfaces/export-to-data-tables-request.interface';\r\n\r\nimport { SessionStorageService } from './session-storage.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AppDataService extends ApiService {\r\n\r\n appData: { [key: string]: any } = {};\r\n\r\n constructor(protected httpClient: HttpClient,\r\n private titleService: Title,\r\n private appSettings: ApplicationSettings,\r\n private spinnerService: SpinnerService,\r\n private sessionStorageService: SessionStorageService) {\r\n super(httpClient, appSettings.apiUrl + 'api');\r\n }\r\n\r\n public setAppData(key: string, value: any) {\r\n this.appData[key] = value;\r\n }\r\n\r\n public getAppData(key: string): any {\r\n return this.appData[key];\r\n }\r\n\r\n public generatePdf(relativeUrl: string, downloadFile = true) {\r\n const url = this.getUrl(relativeUrl);\r\n\r\n this.httpClient\r\n .post(url, null, { responseType: 'blob', observe: 'response' })\r\n .subscribe(\r\n response => {\r\n const dispositionHeader = response.headers.get('content-disposition');\r\n if (!dispositionHeader) {\r\n throw new Error('content-disposition header is not found');\r\n }\r\n\r\n //if (window.navigator && window.navigator.msSaveOrOpenBlob) {\r\n // //IE and Edge : presents option to save or open\r\n // window.navigator.msSaveOrOpenBlob(response.body);\r\n //}\r\n //else {\r\n //All modern browsers such as Chrome\r\n if (downloadFile === true) {\r\n const a = document.createElement('a');\r\n a.setAttribute('style', 'display:none;');\r\n document.body.appendChild(a);\r\n a.download = dispositionHeader.split(';')[1].trim().split('=')[1];\r\n a.href = URL.createObjectURL(response.body);\r\n a.target = '_blank';\r\n a.click();\r\n document.body.removeChild(a);\r\n } else {\r\n const fileURL = URL.createObjectURL(response.body);\r\n window.open(fileURL, 'PdfTabWindow');\r\n }\r\n //}\r\n },\r\n err => {\r\n throw err;\r\n }\r\n );\r\n }\r\n\r\n public getContentFileName(contentDispositionHeader: string): string {\r\n const parts: string[] = contentDispositionHeader.split(';');\r\n const fileName = parts[1].split('=')[1];\r\n return fileName.replace(/['\"]+/g, '');\r\n }\r\n\r\n public post(endpoint: string, request: T): Observable {\r\n return this.postAndFetch(endpoint, request);\r\n }\r\n\r\n public fetchData(endpoint: string): Observable {\r\n return this.postAndFetch(endpoint, {});\r\n }\r\n\r\n public getCsv(relativeUrl: string, requestBody: any, defaultFileName: string, onSuccess?: (data: Blob, fileName: string, metadata: any) => void): void {\r\n const url = this.getUrl(relativeUrl);\r\n\r\n this.spinnerService.showSpinner();\r\n this.httpClient\r\n .post(url, requestBody, { responseType: 'blob', observe: 'response' })\r\n .subscribe({\r\n next: response => {\r\n this.spinnerService.hideSpinner();\r\n const metadata = JSON.parse(response.headers.get(this.getAppData(AppDataKeys.fileDownloadMetadataHeaderName)));\r\n const excelMimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';\r\n const data = new Blob([response.body], { type: excelMimeType });\r\n const fileName = `${defaultFileName}_${new Date().getTime()}.csv`;\r\n fileSaver.saveAs(data, fileName);\r\n onSuccess?.(data, fileName, metadata);\r\n },\r\n error: err => {\r\n throw err;\r\n }\r\n });\r\n }\r\n\r\n public getDataTableSet(apiEndpoint: string, request: ExportToDataTablesRequest, onSuccess: (response: TResponse, transientId: string) => void): void {\r\n this.post(apiEndpoint, request)\r\n .pipe(take(1))\r\n .subscribe((response: TResponse) => onSuccess(response, this.getTransientId()));\r\n }\r\n\r\n public getTransientId(): string {\r\n return `${new Date().getTime()}`;\r\n }\r\n\r\n public getAttributeFromHtmlElement(elementId: string, attributeName: string): string {\r\n return document.getElementById(elementId)?.attributes[attributeName]?.value;\r\n }\r\n\r\n public getFromSessionStorage(key: TKey): TValue {\r\n return this.sessionStorageService.get(key);\r\n }\r\n\r\n public setIntoSessionStorage(key: TKey, value: TValue): void {\r\n this.sessionStorageService.set(key, value);\r\n }\r\n\r\n // The DSPX framework sets the HTML title based on the application title, the application sub-title, the form name, the current navigation tab, and the current page.\r\n // In this application we need to set the HTML title based only on the application title and the form name, so we override the value set by the DSPX framework.\r\n public overrideHtmlTitleSetByDspxFramework(formName: string): void {\r\n this.titleService.setTitle(`${this.getAppData(AppDataKeys.applicationTitle)} - ${formName}`);\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { AppDataKeys, NavTabNumbers, OptionSetCodes, PageNumbers, QuestionCodes, SectionCodes } from '../constants/app-data.constants';\r\n\r\nimport { UserOrganisation } from '../interfaces/user-organisation.interface';\r\nimport { GetInternalUserProfileResponse } from \"../interfaces/get-internal-user-profile-response.interface\";\r\n\r\nimport { AppDataService } from \"./app-data.service\";\r\nimport { QuestionPath, ResponseParserService } from \"./response-parser.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ApplicationUserService {\r\n\r\n constructor(\r\n private appDataService: AppDataService,\r\n private responseParserService: ResponseParserService) {\r\n }\r\n\r\n getUserOrganisation(model: any): UserOrganisation {\r\n const findQuestionModelFromUserProfileSection = (questionCode: string) =>\r\n this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.UserForm.userProfile,\r\n PageNumbers.UserForm.profile,\r\n null,\r\n SectionCodes.UserForm.userOrganisationProfile,\r\n null,\r\n questionCode);\r\n const userHasOrganisation = findQuestionModelFromUserProfileSection(QuestionCodes.UserForm.userHasOrganisation);\r\n const userOrganisation = findQuestionModelFromUserProfileSection(QuestionCodes.UserForm.userOrganisation);\r\n\r\n const organisationId = userHasOrganisation === OptionSetCodes.UserForm.YesNo.No\r\n ? this.appDataService.getAppData(AppDataKeys.privateIndividualOrganisationId)\r\n : userHasOrganisation === OptionSetCodes.UserForm.YesNo.Yes\r\n ? userOrganisation?.code\r\n : null;\r\n\r\n return {\r\n hasOrganisation: userHasOrganisation ? userHasOrganisation : null,\r\n optionalOrganisation: userOrganisation ? userOrganisation : null,\r\n organisationId: organisationId ? organisationId : null\r\n };\r\n }\r\n\r\n getUserEmail(model: any): string {\r\n return this.getUserProfileQuestionModel(model, QuestionCodes.UserForm.userEmail);\r\n }\r\n\r\n getUserGivenName(model: any): string {\r\n return this.getUserProfileQuestionModel(model, QuestionCodes.UserForm.userGivenName);\r\n }\r\n\r\n getUserFamilyName(model: any): string {\r\n return this.getUserProfileQuestionModel(model, QuestionCodes.UserForm.userFamilyName);\r\n }\r\n\r\n isUserProfileValid(model: any): any {\r\n return this.getUserGivenName(model) && this.getUserFamilyName(model);\r\n }\r\n\r\n getAccessDefinitionCode(model: any, sectionIndex: number): string {\r\n if (!sectionIndex && sectionIndex !== 0) {\r\n return null;\r\n }\r\n\r\n const sectionModel = this.getAccessDefinitionsSectionModel(model, sectionIndex);\r\n if (!sectionModel) {\r\n return null;\r\n }\r\n\r\n const applicationCodeAndEnvironmentCode = sectionModel[QuestionCodes.UserForm.envName]; // e.g.: idam_uat\r\n if (!applicationCodeAndEnvironmentCode) {\r\n return null;\r\n }\r\n\r\n const functionalRoleCode = sectionModel[QuestionCodes.UserForm.roleName]; // e.g.: OrgAuthority\r\n if (!functionalRoleCode) {\r\n return null;\r\n }\r\n\r\n const accessDefinition = `${applicationCodeAndEnvironmentCode}_${functionalRoleCode}`; // e.g.: idam_uat_OrgAuthority\r\n\r\n return accessDefinition;\r\n }\r\n\r\n getAccessBeingEdited(model: any): any {\r\n const sectionModel = this.getAccessDefinitionsSectionModel(model);\r\n const accessBeingEdited = sectionModel.find(a => a.isEditing);\r\n return accessBeingEdited;\r\n }\r\n\r\n replaceUserProfile(model: any, userProfile: GetInternalUserProfileResponse): boolean {\r\n const replaceUserProfileQuestionModel = (questionCode: string, newQuestionModel: any) =>\r\n this.responseParserService.replaceQuestionModel(\r\n model,\r\n NavTabNumbers.UserForm.userProfile,\r\n PageNumbers.UserForm.profile,\r\n null,\r\n SectionCodes.UserForm.userProfile,\r\n null,\r\n questionCode,\r\n newQuestionModel);\r\n const success =\r\n replaceUserProfileQuestionModel(QuestionCodes.UserForm.userGivenName, userProfile.givenName) &&\r\n replaceUserProfileQuestionModel(QuestionCodes.UserForm.userFamilyName, userProfile.familyName) &&\r\n replaceUserProfileQuestionModel(QuestionCodes.UserForm.userPreferredName, null) &&\r\n replaceUserProfileQuestionModel(QuestionCodes.UserForm.userMiddleName, null) &&\r\n replaceUserProfileQuestionModel(QuestionCodes.UserForm.userPhoneWork, userProfile.phoneWork) &&\r\n replaceUserProfileQuestionModel(QuestionCodes.UserForm.userPhoneMobile, userProfile.phoneMobile);\r\n replaceUserProfileQuestionModel(QuestionCodes.UserForm.accountDisabled, userProfile.accountDisabled);\r\n return success;\r\n }\r\n\r\n replaceUserRequestGrid(model: any, userRequestGridModel: any): boolean {\r\n const success = this.responseParserService.replaceQuestionModel(\r\n model,\r\n NavTabNumbers.UserForm.userRequests,\r\n PageNumbers.UserForm.userRequests,\r\n null,\r\n SectionCodes.UserForm.userRequests,\r\n null,\r\n QuestionCodes.UserForm.userRequestGrid,\r\n userRequestGridModel);\r\n return success;\r\n }\r\n\r\n handleSingleCheckBoxQuestionChanges(getModel: () => any, setModel: (model: any) => void): void {\r\n const userConditionsAgreeQuestionPath: QuestionPath = [\r\n NavTabNumbers.UserForm.userProfile,\r\n PageNumbers.UserForm.profile,\r\n SectionCodes.UserForm.conditionsOfUse,\r\n QuestionCodes.UserForm.userConditionsAgree\r\n ];\r\n this.responseParserService.handleSingleCheckBoxQuestionChanges(\r\n getModel,\r\n setModel,\r\n [\r\n userConditionsAgreeQuestionPath\r\n ]);\r\n }\r\n\r\n addToRevokedAccessDefinitions(model: any, sourceSectionIndex: number, reasonForRequestRevoke: string): boolean {\r\n\r\n const sourceSectionItemModel = this.getAccessDefinitionsSectionModel(model, sourceSectionIndex);\r\n if (!sourceSectionItemModel) {\r\n return false;\r\n }\r\n const destinationSectionItemModel = { reasonForRequestRevoke, ...sourceSectionItemModel };\r\n\r\n const destinationSectionPath: [navTabNumber: number, pageNumber: number, pageIndex: number, sectionCode: string, sectionIndex: number] =\r\n [NavTabNumbers.UserForm.applicationAccess, PageNumbers.UserForm.applicationAccess, null, SectionCodes.UserForm.revokedApplicationRef, null];\r\n\r\n const destinationSectionModel: any[] = this.responseParserService.findSectionModel(model, ...destinationSectionPath) ?? [];\r\n\r\n destinationSectionModel.push(destinationSectionItemModel);\r\n\r\n const success = this.responseParserService.replaceSectionModel(model, ...destinationSectionPath, destinationSectionModel);\r\n\r\n return success;\r\n }\r\n\r\n private getUserProfileQuestionModel(model: any, questionCode: string): string {\r\n const userProfileQuestionModel = this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.UserForm.userProfile,\r\n PageNumbers.UserForm.profile,\r\n null,\r\n SectionCodes.UserForm.userProfile,\r\n null,\r\n questionCode);\r\n return userProfileQuestionModel;\r\n }\r\n\r\n private getAccessDefinitionsSectionModel(model: any, sectionIndex: number = null): any {\r\n const sectionModel = this.responseParserService.findSectionModel(\r\n model,\r\n NavTabNumbers.UserForm.applicationAccess,\r\n PageNumbers.UserForm.applicationAccess,\r\n null,\r\n SectionCodes.UserForm.applicationRef,\r\n sectionIndex);\r\n return sectionModel;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CollectionService {\r\n\r\n compare(item1: TItem, item2: TItem, getComparisonValue: (item: TItem) => TComparisonValue): number {\r\n const comparisonValue1 = getComparisonValue(item1);\r\n const comparisonValue2 = getComparisonValue(item2);\r\n if (comparisonValue1 < comparisonValue2) {\r\n return -1;\r\n }\r\n if (comparisonValue1 > comparisonValue2) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n orderBy(items: TItem[], getComparisonValue: (item: TItem) => TComparisonValue): TItem[] {\r\n return items\r\n ?.slice() // JavaScript sort() function sorts in place, so we need to make a shallow copy of the array \r\n ?.sort((item1, item2) => this.compare(item1, item2, getComparisonValue));\r\n }\r\n}\r\n","\r\nimport { Injectable } from '@angular/core';\r\n\r\nimport { map } from 'rxjs/operators';\r\n\r\nimport { DialogResult, Dialogs, DialogService } from 'dspx-core';\r\nimport { DeactivationGuard } from '../interfaces/deactivation-guard.interface';\r\n\r\n// See https://stackoverflow.com/a/41187919\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ComponentDeactivationService {\r\n\r\n constructor(\r\n private dialogService: DialogService) {\r\n }\r\n\r\n // If there are no pending changes, just allow deactivation; else confirm first\r\n canDeactivate = (component: DeactivationGuard) =>\r\n component.canDeactivate()\r\n ? true\r\n : this.openConfirmDialog();\r\n\r\n // NOTE: this warning message will only be shown when navigating elsewhere within your angular app;\r\n // when navigating away from your angular app, the browser will show a generic warning message (see http://stackoverflow.com/a/42207299/7307355)\r\n private openConfirmDialog = () => this.dialogService\r\n .showConfirm(Dialogs.UNSAVED_CHANGES)\r\n .pipe(map(data => data === DialogResult.ACCEPTED));\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable } from \"rxjs\";\r\n\r\nimport { DialogResult, DialogService, MessagePlaceholders, Popup } from 'dspx-core';\r\n\r\nimport { AppDataKeys } from \"../constants/app-data.constants\";\r\n\r\nimport { SaveWarning } from \"../interfaces/save-warning.interface\";\r\n\r\nimport { AppDataService } from \"./app-data.service\";\r\nimport { HtmlHelperService } from \"./html-helper.service\";\r\n\r\nexport type ConfirmDialogPatchConfig = {\r\n appSelector: string;\r\n componentSelector: string;\r\n acceptButtonTitle: string;\r\n rejectButtonTitle: string;\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DialogHelperService {\r\n\r\n constructor(\r\n private dialogService: DialogService,\r\n private appDataService: AppDataService,\r\n private htmlHelperService: HtmlHelperService) {\r\n }\r\n\r\n // The purpose of this method is to work around a defect in the dspx-core library.\r\n // PROBLEM:\r\n // In the dspx-core library, the dialog component inside the page component is reused when making multiple calls to show a dialog containing questions.\r\n // When a dialog has unanswered mandatory questions and the \"reject\" action is performed, the form.valid flag is not reset to true,\r\n // and therefore it stays false when a new dialog is shown.\r\n // If the new dialog being shown has no mandatory questions, you should be able to perform the \"accept\" action straight away.\r\n // However, since the form.valid flag is false, the \"accept\" action is blocked (and the form.valid flag is eventually reset to true).\r\n // Therefore, if the \"accept\" action is performed again, then it is finally executed.\r\n // The end result is that for these dialogs you need to click the \"accept\" button twice, if the previous dialog was closed with unanswered mandatory questions.\r\n // WORKAROUND:\r\n // This method waits for the dialog to open and then adds a listener to the \"accept\" action.\r\n // When the \"accept\" action is triggered, the listener re-triggers the \"accept\" action programmatically.\r\n // In those scenarios where it is not needed, it does not cause any issue, but in those scenarios where it is needed, it solves the problem.\r\n patchConfirmDialogValidationIssue(config: ConfirmDialogPatchConfig): void {\r\n const subscription = this.dialogService.dialogRequested().subscribe(() => {\r\n this.waitUntil(() => {\r\n const acceptButtonElement = this.htmlHelperService.getComponentDialogButtonHtmlElement(config.appSelector, config.componentSelector, config.acceptButtonTitle);\r\n if (!acceptButtonElement) {\r\n return false;\r\n }\r\n const rejectButtonElement = this.htmlHelperService.getComponentDialogButtonHtmlElement(config.appSelector, config.componentSelector, config.rejectButtonTitle);\r\n if (!rejectButtonElement) {\r\n return false;\r\n }\r\n this.htmlHelperService.addOneOffEventListener(acceptButtonElement, 'click', () => {\r\n acceptButtonElement.click();\r\n subscription.unsubscribe();\r\n });\r\n this.htmlHelperService.addOneOffEventListener(rejectButtonElement, 'click', () => {\r\n subscription.unsubscribe();\r\n });\r\n return true;\r\n });\r\n });\r\n }\r\n\r\n waitUntil(condition: () => boolean, msWaits?: number[]): void {\r\n condition = condition ?? (() => true);\r\n msWaits = msWaits ?? [0, 10, 20, 40, 80, 160, 320];\r\n const evaluateLater = (iteration: number) => {\r\n if (iteration >= msWaits.length) {\r\n return;\r\n }\r\n const msWait = msWaits[iteration];\r\n setTimeout(() => {\r\n if (condition()) {\r\n return;\r\n }\r\n evaluateLater(iteration + 1);\r\n }, msWait);\r\n };\r\n evaluateLater(0);\r\n }\r\n\r\n showDialog(popupCode: string, placeholders: MessagePlaceholders, data: MessagePlaceholders, dataTitle = this.defaultDialogTitle): void {\r\n this.dialogService.showDialog(popupCode, null, { ...placeholders, details: this.toHtmlString(data, dataTitle) });\r\n }\r\n\r\n showConfirm(popupCode: string, placeholders: MessagePlaceholders, data: MessagePlaceholders, dataTitle = this.defaultDialogTitle): Observable {\r\n return this.dialogService.showConfirm(popupCode, { ...placeholders, details: this.toHtmlString(data, dataTitle) });\r\n }\r\n\r\n showWarnings(warnings: SaveWarning[]): Observable {\r\n const warningHtmlTable = this.getWarningHtmlTable(warnings);\r\n const message =\r\n `

The following issues have been detected:

\r\n ${warningHtmlTable}\r\n
\r\n

Are you sure you want to proceed?

`;\r\n return this.dialogService.showSimplePopup(message, 'Warning', 'OK', 'Cancel');\r\n }\r\n\r\n toHtmlString(data?: MessagePlaceholders, dataTitle = this.defaultDialogTitle): string {\r\n if (!data) {\r\n return '';\r\n }\r\n const fields = Object\r\n .entries(data)\r\n .map(entry => ({\r\n name: this.htmlHelperService.toEncodedHtml(entry[0]),\r\n value: this.htmlHelperService.toEncodedHtml(entry[1])\r\n }));\r\n if (!fields.length) {\r\n return '';\r\n }\r\n const htmlTitle = dataTitle ? this.htmlHelperService.formatHtml('p', dataTitle) : '';\r\n const htmlList = this.htmlHelperService.formatFields(fields);\r\n const htmlString = htmlTitle + htmlList;\r\n return htmlString;\r\n }\r\n\r\n private readonly defaultDialogTitle = 'DETAILS:';\r\n\r\n private getWarningHtmlTable(warnings: SaveWarning[]): string {\r\n const headerRow = ['Message', 'Details'];\r\n const dataRows = warnings\r\n ?.map(warning => {\r\n const message = this.getPopupText(warning.message);\r\n const dataTitle: string = null;\r\n const details = this.toHtmlString(warning.details, dataTitle);\r\n return [message, details];\r\n })\r\n ?? [];\r\n const htmlTable = this.htmlHelperService.formatHtmlTable(headerRow, dataRows);\r\n return htmlTable;\r\n }\r\n\r\n private getPopupText(popupCode: string): string {\r\n const popupRegistry = this.getPopupRegistry();\r\n const popup = popupRegistry?.find(p => p.code === popupCode)\r\n const popupText = popup?.text;\r\n return popupText;\r\n }\r\n\r\n private getPopupRegistry(): Popup[] {\r\n const getPopupRegistryFunction = this.appDataService.getAppData(AppDataKeys.getPopupRegistryFunction);\r\n const popupRegistry = getPopupRegistryFunction?.();\r\n return popupRegistry;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { take } from \"rxjs\";\r\n\r\nimport { DialogService } from \"dspx-core\";\r\n\r\nimport { ApiEndpoints } from \"../constants/api-endpoints.constants\";\r\nimport { OptionSetCodes, PopupCodes } from \"../constants/app-data.constants\";\r\n\r\nimport { DirectoryLookupConfiguration } from \"../interfaces/directory-lookup-configuration.interface\";\r\n\r\nimport { SearchAzureAdUserLimited } from \"../interfaces/search-azure-ad-user-limited.interface\";\r\nimport { SearchAzureAdUserLimitedRequest } from \"../interfaces/search-azure-ad-user-limited-request.interface\";\r\nimport { SearchAzureAdUserLimitedResponse } from \"../interfaces/search-azure-ad-user-limited-response.interface\";\r\n\r\nimport { SearchAzureAdUserIdentity } from \"../interfaces/search-azure-ad-user-identity.interface\";\r\nimport { SearchAzureAdUserAppRoleAssignment } from \"../interfaces/search-azure-ad-user-app-role-assignment.interface\";\r\nimport { SearchAzureAdUser } from \"../interfaces/search-azure-ad-user.interface\";\r\nimport { SearchAzureAdUserRequest } from \"../interfaces/search-azure-ad-user-request.interface\";\r\nimport { SearchAzureAdUserResponse } from \"../interfaces/search-azure-ad-user-response.interface\";\r\nimport { SearchAzureAdUsersByMatchingLdapUserResponse } from \"../interfaces/search-azure-ad-user-by-matching-ldap-user-response.interface\";\r\nimport { SearchAzureAdUserSummary } from \"../interfaces/search-azure-ad-user-summary.interface\";\r\n\r\nimport { SearchAzureAdGroup } from \"../interfaces/search-azure-ad-group.interface\";\r\nimport { SearchAzureAdGroupRequest } from \"../interfaces/search-azure-ad-group-request.interface\";\r\nimport { SearchAzureAdGroupResponse } from \"../interfaces/search-azure-ad-group-response.interface\";\r\nimport { SearchAzureAdGroupSummary } from \"../interfaces/search-azure-ad-group-summary.interface\";\r\n\r\nimport { SearchAzureAdDomain } from \"../interfaces/search-azure-ad-domain.interface\";\r\nimport { SearchAzureAdDomainRequest } from \"../interfaces/search-azure-ad-domain-request.interface\";\r\nimport { SearchAzureAdDomainResponse } from \"../interfaces/search-azure-ad-domain-response.interface\";\r\nimport { SearchAzureAdDomainSummary } from \"../interfaces/search-azure-ad-domain-summary.interface\";\r\n\r\nimport { SearchLdapProtocolUserLimited } from \"../interfaces/search-ldap-protocol-user-limited.interface\";\r\nimport { SearchLdapProtocolUserLimitedRequest } from \"../interfaces/search-ldap-protocol-user-limited-request.interface\";\r\nimport { SearchLdapProtocolUserLimitedResponse } from \"../interfaces/search-ldap-protocol-user-limited-response.interface\";\r\n\r\nimport { SearchLdapProtocolUserSecurity } from \"../interfaces/search-ldap-protocol-user-security.interface\";\r\nimport { SearchLdapProtocolUserOrganisationRole } from \"../interfaces/search-ldap-protocol-user-organisation-role.interface\";\r\nimport { SearchLdapProtocolUser } from \"../interfaces/search-ldap-protocol-user.interface\";\r\nimport { SearchLdapProtocolUserRequest } from \"../interfaces/search-ldap-protocol-user-request.interface\";\r\nimport { SearchLdapProtocolUserResponse } from \"../interfaces/search-ldap-protocol-user-response.interface\";\r\nimport { SearchLdapProtocolUsersByMatchingAzureAdUserResponse } from \"../interfaces/search-ldap-protocol-user-by-matching-azure-ad-user-response.interface\";\r\nimport { SearchLdapProtocolUserSummary } from \"../interfaces/search-ldap-protocol-user-summary.interface\";\r\n\r\nimport { SearchLdapProtocolGroup } from \"../interfaces/search-ldap-protocol-group.interface\";\r\nimport { SearchLdapProtocolGroupRequest } from \"../interfaces/search-ldap-protocol-group-request.interface\";\r\nimport { SearchLdapProtocolGroupResponse } from \"../interfaces/search-ldap-protocol-group-response.interface\";\r\nimport { SearchLdapProtocolGroupSummary } from \"../interfaces/search-ldap-protocol-group-summary.interface\";\r\n\r\nimport { SearchLdapProtocolOrganisation } from \"../interfaces/search-ldap-protocol-organisation.interface\";\r\nimport { SearchLdapProtocolOrganisationRequest } from \"../interfaces/search-ldap-protocol-organisation-request.interface\";\r\nimport { SearchLdapProtocolOrganisationResponse } from \"../interfaces/search-ldap-protocol-organisation-response.interface\";\r\nimport { SearchLdapProtocolOrganisationSummary } from \"../interfaces/search-ldap-protocol-organisation-summary.interface\";\r\n\r\nimport { SearchLdapProtocolApplicationRole } from \"../interfaces/search-ldap-protocol-application-role.interface\";\r\nimport { SearchLdapProtocolApplicationInvocationMethod } from \"../interfaces/search-ldap-protocol-application-invocation-method.interface\";\r\nimport { SearchLdapProtocolApplication } from \"../interfaces/search-ldap-protocol-application.interface\";\r\nimport { SearchLdapProtocolApplicationRequest } from \"../interfaces/search-ldap-protocol-application-request.interface\";\r\nimport { SearchLdapProtocolApplicationResponse } from \"../interfaces/search-ldap-protocol-application-response.interface\";\r\nimport { SearchLdapProtocolApplicationSummary } from \"../interfaces/search-ldap-protocol-application-summary.interface\";\r\n\r\nimport { SearchLdapScimObject } from \"../interfaces/search-ldap-scim-object.interface\";\r\n\r\nimport { SearchLdapScimUserRequest } from \"../interfaces/search-ldap-scim-user-request.interface\";\r\nimport { SearchLdapScimUserResponse } from \"../interfaces/search-ldap-scim-user-response.interface\";\r\nimport { SearchLdapScimUserSummary } from \"../interfaces/search-ldap-scim-user-summary.interface\";\r\n\r\nimport { SearchLdapScimGroupRequest } from \"../interfaces/search-ldap-scim-group-request.interface\";\r\nimport { SearchLdapScimGroupResponse } from \"../interfaces/search-ldap-scim-group-response.interface\";\r\nimport { SearchLdapScimGroupSummary } from \"../interfaces/search-ldap-scim-group-summary.interface\";\r\n\r\nimport { AppDataService } from \"./app-data.service\";\r\nimport { CollectionService } from \"./collection.service\";\r\nimport { HtmlHelperService } from \"./html-helper.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class DirectoryLookupService {\r\n\r\n constructor(\r\n private dialogService: DialogService,\r\n private appDataService: AppDataService,\r\n private collectionService: CollectionService,\r\n private htmlHelperService: HtmlHelperService) {\r\n }\r\n \r\n searchAzureAdUserLimited(configuration: DirectoryLookupConfiguration, lookupType: string, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { searchTerm },\r\n ApiEndpoints.directorySearch.searchAzureAdUserLimited,\r\n (request, response) => `Result For Microsoft Entra ID User: \"${searchTerm}\"`,\r\n (request, response) => this.formatAzureAdUserLimitedHtml(response),\r\n PopupCodes.UserListForm.LimitedDirectoryLookup,\r\n { limitedDirectoryLookupType: lookupType, limitedDirectoryLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n searchAzureAdUser(configuration: DirectoryLookupConfiguration, lookupType: string, onlyExactMatch: boolean, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { onlyExactMatch, searchTerm },\r\n ApiEndpoints.directorySearch.searchAzureAdUser,\r\n (request, response) => `Result For User: \"${searchTerm}\"${onlyExactMatch ? ' (only exact match)' : ''}`,\r\n (request, response) => this.formatAzureAdUserHtml(response),\r\n PopupCodes.UserListForm.AzureAdLookup,\r\n { azureAdLookupType: lookupType, azureAdLookupOnlyExactMatch: onlyExactMatch, azureAdLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n searchAzureAdGroup(configuration: DirectoryLookupConfiguration, lookupType: string, onlyExactMatch: boolean, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { onlyExactMatch, searchTerm },\r\n ApiEndpoints.directorySearch.searchAzureAdGroup,\r\n (request, response) => `Result For Group: \"${searchTerm}\"${onlyExactMatch ? ' (only exact match)' : ''}`,\r\n (request, response) => this.formatAzureAdGroupHtml(response),\r\n PopupCodes.UserListForm.AzureAdLookup,\r\n { azureAdLookupType: lookupType, azureAdLookupOnlyExactMatch: onlyExactMatch, azureAdLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n searchAzureAdDomain(configuration: DirectoryLookupConfiguration, lookupType: string, onlyExactMatch: boolean, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { onlyExactMatch, searchTerm },\r\n ApiEndpoints.directorySearch.searchAzureAdDomain,\r\n (request, response) => `Result For Domain: \"${searchTerm}\"${onlyExactMatch ? ' (only exact match)' : ''}`,\r\n (request, response) => this.formatAzureAdDomainHtml(response),\r\n PopupCodes.UserListForm.AzureAdLookup,\r\n { azureAdLookupType: lookupType, azureAdLookupOnlyExactMatch: onlyExactMatch, azureAdLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n \r\n searchLdapProtocolUserLimited(configuration: DirectoryLookupConfiguration, lookupType: string, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { searchTerm },\r\n ApiEndpoints.directorySearch.searchLdapProtocolUserLimited,\r\n (request, response) => `Result For LDAP User: \"${searchTerm}\"`,\r\n (request, response) => this.formatLdapProtocolUserLimitedHtml(response),\r\n PopupCodes.UserListForm.LimitedDirectoryLookup,\r\n { limitedDirectoryLookupType: lookupType, limitedDirectoryLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n searchLdapProtocolUser(configuration: DirectoryLookupConfiguration, lookupType: string, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { searchTerm },\r\n ApiEndpoints.directorySearch.searchLdapProtocolUser,\r\n (request, response) => `Result For User: \"${searchTerm}\"`,\r\n (request, response) => this.formatLdapProtocolUserHtml(response),\r\n PopupCodes.UserListForm.LdapProtocolLookup,\r\n { ldapProtocolLookupType: lookupType, ldapProtocolLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n searchLdapProtocolGroup(configuration: DirectoryLookupConfiguration, lookupType: string, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { searchTerm },\r\n ApiEndpoints.directorySearch.searchLdapProtocolGroup,\r\n (request, response) => `Result For Group: \"${searchTerm}\"`,\r\n (request, response) => this.formatLdapProtocolGroupHtml(response),\r\n PopupCodes.UserListForm.LdapProtocolLookup,\r\n { ldapProtocolLookupType: lookupType, ldapProtocolLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n searchLdapProtocolOrganisation(configuration: DirectoryLookupConfiguration, lookupType: string, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { searchTerm },\r\n ApiEndpoints.directorySearch.searchLdapProtocolOrganisation,\r\n (request, response) => `Result For Organisation: \"${searchTerm}\"`,\r\n (request, response) => this.formatLdapProtocolOrganisationHtml(response),\r\n PopupCodes.UserListForm.LdapProtocolLookup,\r\n { ldapProtocolLookupType: lookupType, ldapProtocolLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n searchLdapProtocolApplication(configuration: DirectoryLookupConfiguration, lookupType: string, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { searchTerm },\r\n ApiEndpoints.directorySearch.searchLdapProtocolApplication,\r\n (request, response) => `Result For Application: \"${searchTerm}\"`,\r\n (request, response) => this.formatLdapProtocolApplicationHtml(response),\r\n PopupCodes.UserListForm.LdapProtocolLookup,\r\n { ldapProtocolLookupType: lookupType, ldapProtocolLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n searchLdapScimUser(configuration: DirectoryLookupConfiguration, lookupType: string, onlyExactMatch: boolean, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { onlyExactMatch, searchTerm, includeGroupMemberships: lookupType === OptionSetCodes.UserListForm.LdapScimLookupType.ScimUserAndGroups },\r\n ApiEndpoints.directorySearch.searchLdapScimUser,\r\n (request, response) => `Result For User: \"${searchTerm}\"${onlyExactMatch ? ' (only exact match)' : ''}`,\r\n (request, response) => this.formatLdapScimUserHtml(response),\r\n PopupCodes.UserListForm.LdapScimLookup,\r\n { ldapScimLookupType: lookupType, ldapScimLookupOnlyExactMatch: onlyExactMatch, ldapScimLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n searchLdapScimGroup(configuration: DirectoryLookupConfiguration, lookupType: string, onlyExactMatch: boolean, searchTerm: string,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n this.search(\r\n configuration,\r\n { onlyExactMatch, searchTerm },\r\n ApiEndpoints.directorySearch.searchLdapScimGroup,\r\n (request, response) => `Result For Group: \"${searchTerm}\"${onlyExactMatch ? ' (only exact match)' : ''}`,\r\n (request, response) => this.formatLdapScimGroupHtml(response),\r\n PopupCodes.UserListForm.LdapScimLookup,\r\n { ldapScimLookupType: lookupType, ldapScimLookupOnlyExactMatch: onlyExactMatch, ldapScimLookupValue: searchTerm },\r\n callbackToShowPopup);\r\n }\r\n\r\n private search(\r\n configuration: DirectoryLookupConfiguration,\r\n request: TRequest,\r\n apiEndpoint: string,\r\n formatResponseHeader: (request: TRequest, response: TResponse) => string,\r\n formatResponseMessage: (request: TRequest, response: TResponse) => string,\r\n popupCode: string,\r\n popupModel: any,\r\n callbackToShowPopup: (message: string, title: string, onCloseDialogEvent: () => void) => void): void {\r\n\r\n this.appDataService.post(apiEndpoint, request)\r\n .pipe(take(1))\r\n .subscribe((response: TResponse) => {\r\n if(callbackToShowPopup) {\r\n callbackToShowPopup(formatResponseMessage(request, response), formatResponseHeader(request, response), () => configuration?.onCloseLookup?.(popupCode, popupModel));\r\n }\r\n \r\n this.htmlHelperService.setFocusToHtmlElementByClassName('p-dialog-title');\r\n });\r\n }\r\n\r\n // Methods to format response DTOs into HTML\r\n\r\n private formatAzureAdUserLimitedHtml(response: SearchAzureAdUserLimitedResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n\r\n const user = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (user?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, user.errorMessage);\r\n }\r\n\r\n if (user?.matches?.length) {\r\n const message = 'Multiple users found' + (response.hasMoreMatches ? ` (showing only the first ${user.matches.length} results)`: ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatAzureAdUserSummariesHtml(user.matches);\r\n }\r\n\r\n const userDetailsHtml = user?.userDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'User Details') + this.formatAzureAdUserLimitedDetailsHtml(user.userDetails))\r\n : '';\r\n const ldapUserMatchHtml = user?.ldapUserMatch\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Matching LDAP Users') + this.formatLdapUserMatchHtml(user.ldapUserMatch))\r\n : '';\r\n\r\n return userDetailsHtml + ldapUserMatchHtml;\r\n }\r\n\r\n private formatAzureAdUserHtml(response: SearchAzureAdUserResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n const subHeaderTag = 'h4';\r\n\r\n const getUserGroupTitle = (item: SearchAzureAdGroup) => item?.displayName;\r\n const getUserAppRoleAssignmentTitle = (item: SearchAzureAdUserAppRoleAssignment) => `${item?.resourceDisplayName} - ${item?.appRoleId}`;\r\n\r\n const formatUserGroupsHtml = (userGroups: SearchAzureAdGroup[]) => this.collectionService.orderBy(userGroups, getUserGroupTitle)\r\n ?.map(userGroup => this.htmlHelperService.formatHtml(subHeaderTag, getUserGroupTitle(userGroup)) +\r\n this.formatAzureAdGroupDetailsHtml(userGroup))\r\n ?.join('');\r\n\r\n const formatUserAppRoleAssignmentsHtml = (userAppRoleAssignments: SearchAzureAdUserAppRoleAssignment[]) => this.collectionService.orderBy(userAppRoleAssignments, getUserAppRoleAssignmentTitle)\r\n ?.map(userAppRoleAssignment => this.htmlHelperService.formatHtml(subHeaderTag, getUserAppRoleAssignmentTitle(userAppRoleAssignment)) +\r\n this.formatAzureAdUserAppRoleAssignmentHtml(userAppRoleAssignment))\r\n ?.join('');\r\n\r\n const user = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (user?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, user.errorMessage);\r\n }\r\n\r\n if (user?.matches?.length) {\r\n const message = 'Multiple users found' + (response.hasMoreMatches ? ` (showing only the first ${user.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatAzureAdUserSummariesHtml(user.matches);\r\n }\r\n\r\n const userDetailsHtml = user?.userDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'User Details') + this.formatAzureAdUserDetailsHtml(user.userDetails))\r\n : '';\r\n const userGroupsHtml = user?.userGroups?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Group Memberships') + formatUserGroupsHtml(user.userGroups))\r\n : '';\r\n const userAppRoleAssignmentsHtml = user?.userAppRoleAssignments?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Direct Role Assignments') + formatUserAppRoleAssignmentsHtml(user.userAppRoleAssignments))\r\n : '';\r\n const ldapUserMatchHtml = user?.ldapUserMatch\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Matching LDAP Users') + this.formatLdapUserMatchHtml(user.ldapUserMatch))\r\n : '';\r\n\r\n return userDetailsHtml + userGroupsHtml + userAppRoleAssignmentsHtml + ldapUserMatchHtml;\r\n }\r\n\r\n private formatAzureAdGroupHtml(response: SearchAzureAdGroupResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n\r\n const group = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (group?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, group.errorMessage);\r\n }\r\n\r\n if (group?.matches?.length) {\r\n const message = 'Multiple groups found' + (response.hasMoreMatches ? ` (showing only the first ${group.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatAzureAdGroupSummariesHtml(group.matches);\r\n }\r\n\r\n const groupDetailsHtml = group?.groupDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Group Details') + this.formatAzureAdGroupDetailsHtml(group.groupDetails))\r\n : '';\r\n\r\n return groupDetailsHtml;\r\n }\r\n\r\n private formatAzureAdDomainHtml(response: SearchAzureAdDomainResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n\r\n const domain = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (domain?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, domain.errorMessage);\r\n }\r\n\r\n if (domain?.matches?.length) {\r\n const message = 'Multiple domains found' + (response.hasMoreMatches ? ` (showing only the first ${domain.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatAzureAdDomainSummariesHtml(domain.matches);\r\n }\r\n\r\n const domainDetailsHtml = domain?.domainDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Domain Details') + this.formatAzureAdDomainDetailsHtml(domain.domainDetails))\r\n : '';\r\n\r\n return domainDetailsHtml;\r\n }\r\n\r\n private formatLdapProtocolUserLimitedHtml(response: SearchLdapProtocolUserLimitedResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n\r\n const user = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (user?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, user.errorMessage);\r\n }\r\n\r\n if (user?.matches?.length) {\r\n const message = 'Multiple users found' + (response.hasMoreMatches ? ` (showing only the first ${user.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatLdapProtocolUserSummariesHtml(user.matches);\r\n }\r\n\r\n const userDetailsHtml = user?.userDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'User Details') + this.formatLdapProtocolUserLimitedDetailsHtml(user.userDetails))\r\n : '';\r\n const azureAdUserMatchHtml = user?.azureAdUserMatch\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Matching Microsoft Entra ID Users') + this.formatAzureAdUserMatchHtml(user.azureAdUserMatch))\r\n : '';\r\n\r\n return userDetailsHtml + azureAdUserMatchHtml;\r\n }\r\n\r\n private formatLdapProtocolUserHtml(response: SearchLdapProtocolUserResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n const subHeaderTag = 'h4';\r\n\r\n const getUserGroupTitle = (item: SearchLdapProtocolGroup) => item?.cn;\r\n const getUserSecurityTitle = (item: SearchLdapProtocolUserSecurity) => item?.secAuthority;\r\n const getUserOrganisationRoleTitle = (item: SearchLdapProtocolUserOrganisationRole) => item?.dhsOrgRoleId;\r\n\r\n const formatUserSecuritiesHtml = (userSecurities: SearchLdapProtocolUserSecurity[]) => this.collectionService.orderBy(userSecurities, getUserSecurityTitle)\r\n ?.map(userSecurity => this.htmlHelperService.formatHtml(subHeaderTag, getUserSecurityTitle(userSecurity)) +\r\n this.formatLdapProtocolUserSecurityHtml(userSecurity))\r\n ?.join('');\r\n\r\n const formatUserOrganisationRolesHtml = (userOrganisationRoles: SearchLdapProtocolUserOrganisationRole[]) => this.collectionService.orderBy(userOrganisationRoles, getUserOrganisationRoleTitle)\r\n ?.map(userOrganisationRole => this.htmlHelperService.formatHtml(subHeaderTag, getUserOrganisationRoleTitle(userOrganisationRole)) +\r\n this.formatLdapProtocolUserOrganisationRoleHtml(userOrganisationRole))\r\n ?.join('');\r\n\r\n const formatUserGroupsHtml = (userGroups: SearchLdapProtocolGroup[]) => this.collectionService.orderBy(userGroups, getUserGroupTitle)\r\n ?.map(userGroup => this.htmlHelperService.formatHtml(subHeaderTag, getUserGroupTitle(userGroup)) +\r\n this.formatLdapProtocolGroupDetailsHtml(userGroup))\r\n ?.join('');\r\n\r\n const user = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (user?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, user.errorMessage);\r\n }\r\n\r\n if (user?.matches?.length) {\r\n const message = 'Multiple users found' + (response.hasMoreMatches ? ` (showing only the first ${user.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatLdapProtocolUserSummariesHtml(user.matches);\r\n }\r\n\r\n const warningMessageHtml = user?.warningMessage\r\n ? this.htmlHelperService.formatHtml(paragraphTag, user.warningMessage)\r\n : '';\r\n const userDetailsHtml = user?.userDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'User Details') + this.formatLdapProtocolUserDetailsHtml(user.userDetails))\r\n : '';\r\n const userSecuritiesHtml = user?.userSecurities?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'User Security Configurations') + formatUserSecuritiesHtml(user.userSecurities))\r\n : '';\r\n const userOrganisationRolesHtml = user?.userOrganisationRoles?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'User Organisation Roles') + formatUserOrganisationRolesHtml(user.userOrganisationRoles))\r\n : '';\r\n const userGroupsHtml = user?.userGroups?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Group Memberships') + formatUserGroupsHtml(user.userGroups))\r\n : '';\r\n const azureAdUserMatchHtml = user?.azureAdUserMatch\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Matching Microsoft Entra ID Users') + this.formatAzureAdUserMatchHtml(user.azureAdUserMatch))\r\n : '';\r\n\r\n return warningMessageHtml + userDetailsHtml + userSecuritiesHtml + userOrganisationRolesHtml + userGroupsHtml + azureAdUserMatchHtml;\r\n }\r\n\r\n private formatLdapProtocolGroupHtml(response: SearchLdapProtocolGroupResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n const subHeaderTag = 'h4';\r\n\r\n const getGroupApplicationTitle = (item: SearchLdapProtocolApplication) => item?.dhsAppNameId;\r\n const getGroupApplicationRoleTitle = (item: SearchLdapProtocolApplicationRole) => `${item?.parentDhsAppNameId} - ${item?.dhsApplicationRoleName}`;\r\n\r\n const formatGroupApplicationsHtml = (groupApplications: SearchLdapProtocolApplication[]) => this.collectionService.orderBy(groupApplications, getGroupApplicationTitle)\r\n ?.map(groupApplication => this.htmlHelperService.formatHtml(subHeaderTag, getGroupApplicationTitle(groupApplication)) +\r\n this.formatLdapProtocolApplicationDetailsHtml(groupApplication))\r\n ?.join('');\r\n\r\n const formatGroupApplicationRolesHtml = (groupApplicationRoles: SearchLdapProtocolApplicationRole[]) => this.collectionService.orderBy(groupApplicationRoles, getGroupApplicationRoleTitle)\r\n ?.map(groupApplicationRole => this.htmlHelperService.formatHtml(subHeaderTag, getGroupApplicationRoleTitle(groupApplicationRole)) +\r\n this.formatLdapProtocolApplicationRoleHtml(groupApplicationRole))\r\n ?.join('');\r\n\r\n const group = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (group?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, group.errorMessage);\r\n }\r\n\r\n if (group?.matches?.length) {\r\n const message = 'Multiple groups found' + (response.hasMoreMatches ? ` (showing only the first ${group.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatLdapProtocolGroupSummariesHtml(group.matches);\r\n }\r\n\r\n const warningMessageHtml = group?.warningMessage\r\n ? this.htmlHelperService.formatHtml(paragraphTag, group.warningMessage)\r\n : '';\r\n const groupDetailsHtml = group?.groupDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Group Details') + this.formatLdapProtocolGroupDetailsHtml(group.groupDetails))\r\n : '';\r\n const groupApplicationsHtml = group?.groupApplications?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Associated Applications') + formatGroupApplicationsHtml(group.groupApplications))\r\n : '';\r\n const groupApplicationRolesHtml = group?.groupApplicationRoles?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Associated Application Roles') + formatGroupApplicationRolesHtml(group.groupApplicationRoles))\r\n : '';\r\n\r\n return warningMessageHtml + groupDetailsHtml + groupApplicationsHtml + groupApplicationRolesHtml;\r\n }\r\n\r\n private formatLdapProtocolOrganisationHtml(response: SearchLdapProtocolOrganisationResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n const subHeaderTag = 'h4';\r\n\r\n const getOrganisationApplicationTitle = (item: SearchLdapProtocolApplication) => item?.dhsAppNameId;\r\n const getOrganisationSubOrganisationTitle = (item: SearchLdapProtocolOrganisation) => item?.dhsOrgNameId;\r\n\r\n const formatOrganisationApplicationsHtml = (organisationApplications: SearchLdapProtocolApplication[]) => this.collectionService.orderBy(organisationApplications, getOrganisationApplicationTitle)\r\n ?.map(organisationApplication => this.htmlHelperService.formatHtml(subHeaderTag, getOrganisationApplicationTitle(organisationApplication)) +\r\n this.formatLdapProtocolApplicationDetailsHtml(organisationApplication))\r\n ?.join('');\r\n\r\n const formatOrganisationSubOrganisationsHtml = (organisationSubOrganisations: SearchLdapProtocolOrganisation[]) => this.collectionService.orderBy(organisationSubOrganisations, getOrganisationSubOrganisationTitle)\r\n ?.map(organisationSubOrganisation => this.htmlHelperService.formatHtml(subHeaderTag, getOrganisationSubOrganisationTitle(organisationSubOrganisation)) +\r\n this.formatLdapProtocolOrganisationDetailsHtml(organisationSubOrganisation))\r\n ?.join('');\r\n\r\n const organisation = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (organisation?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, organisation.errorMessage);\r\n }\r\n\r\n if (organisation?.matches?.length) {\r\n const message = 'Multiple organisations found' + (response.hasMoreMatches ? ` (showing only the first ${organisation.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatLdapProtocolOrganisationSummariesHtml(organisation.matches);\r\n }\r\n\r\n const warningMessageHtml = organisation?.warningMessage\r\n ? this.htmlHelperService.formatHtml(paragraphTag, organisation.warningMessage)\r\n : '';\r\n const organisationDetailsHtml = organisation?.organisationDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Organisation Details') + this.formatLdapProtocolOrganisationDetailsHtml(organisation.organisationDetails))\r\n : '';\r\n const organisationApplicationsHtml = organisation?.organisationApplications?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Owned Applications') + formatOrganisationApplicationsHtml(organisation.organisationApplications))\r\n : '';\r\n const organisationSubOrganisationsHtml = organisation?.organisationSubOrganisations?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Sub-Organisations') + formatOrganisationSubOrganisationsHtml(organisation.organisationSubOrganisations))\r\n : '';\r\n\r\n return warningMessageHtml + organisationDetailsHtml + organisationApplicationsHtml + organisationSubOrganisationsHtml;\r\n }\r\n\r\n private formatLdapProtocolApplicationHtml(response: SearchLdapProtocolApplicationResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n const subHeaderTag = 'h4';\r\n\r\n const getApplicationRoleTitle = (item: SearchLdapProtocolApplicationRole) => item?.dhsApplicationRoleName;\r\n const getApplicationInvocationMethodTitle = (item: SearchLdapProtocolApplicationInvocationMethod) => item?.dhsInvocationMethod;\r\n\r\n const formatApplicationRolesHtml = (applicationRoles: SearchLdapProtocolApplicationRole[]) => this.collectionService.orderBy(applicationRoles, getApplicationRoleTitle)\r\n ?.map(applicationRole => this.htmlHelperService.formatHtml(subHeaderTag, getApplicationRoleTitle(applicationRole)) +\r\n this.formatLdapProtocolApplicationRoleHtml(applicationRole))\r\n ?.join('');\r\n\r\n const formatApplicationInvocationMethodsHtml = (applicationInvocationMethods: SearchLdapProtocolApplicationInvocationMethod[]) => this.collectionService.orderBy(applicationInvocationMethods, getApplicationInvocationMethodTitle)\r\n ?.map(applicationInvocationMethod => this.htmlHelperService.formatHtml(subHeaderTag, getApplicationInvocationMethodTitle(applicationInvocationMethod)) +\r\n this.formatLdapProtocolApplicationInvocationMethodHtml(applicationInvocationMethod))\r\n ?.join('');\r\n\r\n const application = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (application?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, application.errorMessage);\r\n }\r\n\r\n if (application?.matches?.length) {\r\n const message = 'Multiple applications found' + (response.hasMoreMatches ? ` (showing only the first ${application.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatLdapProtocolApplicationSummariesHtml(application.matches);\r\n }\r\n\r\n const warningMessageHtml = application?.warningMessage\r\n ? this.htmlHelperService.formatHtml(paragraphTag, application.warningMessage)\r\n : '';\r\n const applicationDetailsHtml = application?.applicationDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Application Details') + this.formatLdapProtocolApplicationDetailsHtml(application.applicationDetails))\r\n : '';\r\n const applicationRolesHtml = application?.applicationRoles?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Application Roles') + formatApplicationRolesHtml(application.applicationRoles))\r\n : '';\r\n const applicationInvocationMethodsHtml = application?.applicationInvocationMethods?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Application Invocation Methods') + formatApplicationInvocationMethodsHtml(application.applicationInvocationMethods))\r\n : '';\r\n\r\n return warningMessageHtml + applicationDetailsHtml + applicationRolesHtml + applicationInvocationMethodsHtml;\r\n }\r\n\r\n private formatLdapScimUserHtml(response: SearchLdapScimUserResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n\r\n const formatUserDetailsHtml = (userDetails: SearchLdapScimObject) => this.formatScimObjectsHtml([userDetails]);\r\n\r\n const formatUserGroupsHtml = (userGroups: SearchLdapScimObject[]) => this.formatScimObjectsHtml(userGroups);\r\n\r\n const user = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (user?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, user.errorMessage);\r\n }\r\n\r\n if (user?.matches?.length) {\r\n const message = 'Multiple users found' + (response.hasMoreMatches ? ` (showing only the first ${user.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatLdapScimUserSummariesHtml(user.matches);\r\n }\r\n\r\n const warningMessageHtml = user?.warningMessage\r\n ? this.htmlHelperService.formatHtml(paragraphTag, user.warningMessage)\r\n : '';\r\n const userDetailsHtml = user?.userDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'User Details') + formatUserDetailsHtml(user.userDetails))\r\n : '';\r\n const userGroupsHtml = user?.userGroups?.length\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Group Memberships') + formatUserGroupsHtml(user.userGroups))\r\n : '';\r\n\r\n return warningMessageHtml + userDetailsHtml + userGroupsHtml;\r\n }\r\n\r\n private formatLdapScimGroupHtml(response: SearchLdapScimGroupResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n const headerTag = 'h3';\r\n\r\n const formatGroupDetailsHtml = (groupDetails: SearchLdapScimObject) => this.formatScimObjectsHtml([groupDetails]);\r\n\r\n const group = this.htmlHelperService.toEncodedHtml(response);\r\n\r\n if (group?.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, group.errorMessage);\r\n }\r\n\r\n const groupDetailsHtml = group?.groupDetails\r\n ? (this.htmlHelperService.formatHtml(headerTag, 'Group Details') + formatGroupDetailsHtml(group.groupDetails))\r\n : '';\r\n\r\n if (group?.matches?.length) {\r\n const message = 'Multiple groups found' + (response.hasMoreMatches ? ` (showing only the first ${group.matches.length} results)` : ``);\r\n return this.htmlHelperService.formatHtml(paragraphTag, message) + this.formatLdapScimGroupSummariesHtml(group.matches);\r\n }\r\n\r\n return groupDetailsHtml;\r\n }\r\n\r\n // Methods to format single DTOs into HTML\r\n\r\n private formatAzureAdUserLimitedDetailsHtml(userDetails: SearchAzureAdUserLimited): string {\r\n\r\n const userDetailsHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'mail'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'givenName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'surname'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'onPremisesSamAccountName'),\r\n this.htmlHelperService.createField('otherMails', this.htmlHelperService.formatFieldValues(userDetails.otherMails)),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'displayName'),\r\n this.htmlHelperService.createField('businessPhones', this.htmlHelperService.formatFieldValues(userDetails.businessPhones)),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'mobilePhone'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'accountEnabled'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'companyName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'department'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'jobTitle'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'userPrincipalName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'userType'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'id')\r\n ]);\r\n\r\n return userDetailsHtml;\r\n }\r\n\r\n private formatAzureAdUserDetailsHtml(userDetails: SearchAzureAdUser): string {\r\n\r\n const getUserIdentityTitle = (item: SearchAzureAdUserIdentity) => item?.issuer;\r\n\r\n const formatUserIdentitiesHtml = (userIdentities: SearchAzureAdUserIdentity[]) => this.htmlHelperService.formatFields(\r\n this.collectionService.orderBy(userIdentities, getUserIdentityTitle)\r\n ?.map(userIdentity => this.htmlHelperService.createField(getUserIdentityTitle(userIdentity), this.formatAzureAdUserIdentityHtml(userIdentity))));\r\n\r\n const userDetailsHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'accountEnabled'),\r\n this.htmlHelperService.createField('businessPhones', this.htmlHelperService.formatFieldValues(userDetails.businessPhones)),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'companyName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'createdDateTime'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'creationType'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'deletedDateTime'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'department'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'displayName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'externalUserState'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'externalUserStateChangeDateTime'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'givenName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'id'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'jobTitle'),\r\n this.htmlHelperService.createField('identities', formatUserIdentitiesHtml(userDetails.identities)),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'lastPasswordChangeDateTime'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'mail'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'mobilePhone'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'onPremisesDistinguishedName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'onPremisesDomainName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'onPremisesImmutableId'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'onPremisesLastSyncDateTime'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'onPremisesSamAccountName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'onPremisesSecurityIdentifier'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'onPremisesSyncEnabled'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'onPremisesUserPrincipalName'),\r\n this.htmlHelperService.createField('otherMails', this.htmlHelperService.formatFieldValues(userDetails.otherMails)),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'securityIdentifier'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'surname'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'userPrincipalName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'userType')\r\n ]);\r\n\r\n return userDetailsHtml;\r\n }\r\n\r\n private formatAzureAdUserIdentityHtml(userIdentity: SearchAzureAdUserIdentity): string {\r\n\r\n const userIdentityHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(userIdentity, 'issuer'),\r\n this.htmlHelperService.createFieldFromPropertyName(userIdentity, 'issuerAssignedId'),\r\n this.htmlHelperService.createFieldFromPropertyName(userIdentity, 'signInType')\r\n ]);\r\n\r\n return userIdentityHtml\r\n }\r\n\r\n private formatAzureAdUserAppRoleAssignmentHtml(userAppRoleAssignment: SearchAzureAdUserAppRoleAssignment): string {\r\n\r\n const userAppRoleAssignmentHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(userAppRoleAssignment, 'appRoleId'),\r\n this.htmlHelperService.createFieldFromPropertyName(userAppRoleAssignment, 'createdDateTime'),\r\n this.htmlHelperService.createFieldFromPropertyName(userAppRoleAssignment, 'id'),\r\n this.htmlHelperService.createFieldFromPropertyName(userAppRoleAssignment, 'resourceDisplayName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userAppRoleAssignment, 'resourceId')\r\n ]);\r\n\r\n return userAppRoleAssignmentHtml;\r\n }\r\n\r\n private formatAzureAdGroupDetailsHtml(groupDetails: SearchAzureAdGroup): string {\r\n\r\n const groupDetailsHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'createdDateTime'),\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'description'),\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'displayName'),\r\n this.htmlHelperService.createField('groupTypes', this.htmlHelperService.formatFieldValues(groupDetails?.groupTypes)),\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'id'),\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'membershipRule'),\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'membershipRuleProcessingState')\r\n ]);\r\n\r\n return groupDetailsHtml;\r\n }\r\n\r\n private formatAzureAdDomainDetailsHtml(domainDetails: SearchAzureAdDomain): string {\r\n\r\n const domainDetailsHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'authenticationType'),\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'availabilityStatus'),\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'id'),\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'isAdminManaged'),\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'isDefault'),\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'isInitial'),\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'isRoot'),\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'isVerified'),\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'passwordNotificationWindowInDays'),\r\n this.htmlHelperService.createFieldFromPropertyName(domainDetails, 'passwordValidityPeriodInDays'),\r\n this.htmlHelperService.createField('supportedServices', this.htmlHelperService.formatFieldValues(domainDetails?.supportedServices))\r\n ]);\r\n\r\n return domainDetailsHtml;\r\n }\r\n\r\n private formatLdapProtocolUserLimitedDetailsHtml(userDetails: SearchLdapProtocolUserLimited): string {\r\n\r\n const userDetailsHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'mail'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'dhsDominoDisplayName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'givenName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'sn'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'cn'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'uniqueIdentifier'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'dhsPreferredName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'middleName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'telephoneNumber'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'mobile'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'dhsUserType'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'personalTitle'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'uId')\r\n ]);\r\n\r\n return userDetailsHtml\r\n }\r\n\r\n private formatLdapProtocolUserDetailsHtml(userDetails: SearchLdapProtocolUser): string {\r\n\r\n const userDetailsHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'cn'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'dhsDominoDisplayName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'dhsLastAccess'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'dhsPreferredName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'dhsUserType'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'distinguishedName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'givenName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'mail'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'middleName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'mobile'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'objectClass'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'organizationalStatus'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'personalTitle'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'sn'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'telephoneNumber'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'uId'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'uniqueIdentifier'),\r\n this.htmlHelperService.createFieldFromPropertyName(userDetails, 'userPassword')\r\n ]);\r\n\r\n return userDetailsHtml;\r\n }\r\n\r\n private formatLdapProtocolUserSecurityHtml(userSecurity: SearchLdapProtocolUserSecurity): string {\r\n\r\n const userSecurityHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'distinguishedName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'objectClass'),\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'principalName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'secAcctValid'),\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'secAuthority'),\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'secHasPolicy'),\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'secLoginType'),\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'secPwdLastChanged'),\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'secPwdValid'),\r\n this.htmlHelperService.createFieldFromPropertyName(userSecurity, 'secUuid')\r\n ]);\r\n\r\n return userSecurityHtml;\r\n }\r\n\r\n private formatLdapProtocolUserOrganisationRoleHtml(userOrganisationRole: SearchLdapProtocolUserOrganisationRole): string {\r\n\r\n const userOrganisationRoleHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(userOrganisationRole, 'description'),\r\n this.htmlHelperService.createFieldFromPropertyName(userOrganisationRole, 'dhsOrganisationId'),\r\n this.htmlHelperService.createFieldFromPropertyName(userOrganisationRole, 'dhsOrgRoleId'),\r\n this.htmlHelperService.createFieldFromPropertyName(userOrganisationRole, 'dhsOrgRoleType'),\r\n this.htmlHelperService.createFieldFromPropertyName(userOrganisationRole, 'distinguishedName'),\r\n this.htmlHelperService.createFieldFromPropertyName(userOrganisationRole, 'employeeNumber'),\r\n this.htmlHelperService.createFieldFromPropertyName(userOrganisationRole, 'mail'),\r\n this.htmlHelperService.createFieldFromPropertyName(userOrganisationRole, 'objectClass'),\r\n this.htmlHelperService.createFieldFromPropertyName(userOrganisationRole, 'telephoneNumber')\r\n ]);\r\n\r\n return userOrganisationRoleHtml;\r\n }\r\n\r\n private formatLdapProtocolGroupDetailsHtml(groupDetails: SearchLdapProtocolGroup): string {\r\n\r\n const groupDetailsHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'cn'),\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'description'),\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'distinguishedName'),\r\n this.htmlHelperService.createFieldFromPropertyName(groupDetails, 'objectClass')\r\n ]);\r\n\r\n return groupDetailsHtml;\r\n }\r\n\r\n private formatLdapProtocolOrganisationDetailsHtml(organisationDetails: SearchLdapProtocolOrganisation): string {\r\n\r\n const organisationDetailsHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'c'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'city'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsAddressLine1'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsAddressLine2'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsAddressLine3'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsAddressLine4'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsAlternateOrganisationNames'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsDhsRelationship'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsFundingRegion'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsLocationRegion'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsOrganisationClass'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsOrganisationId'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsOrganisationSector'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsOrganisationType'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsOrganisationWebUrl'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsOrgAustralianBusinessNumber'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsOrgClosureDate'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsOrgNameId'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsOrgServiceTypes'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsParentOrganisationId'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPostalAddressLine1'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPostalAddressLine2'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPostalAddressLine3'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPostalAddressLine4'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPostalCity'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPostalCountry'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPostalPostalCode'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPostalState'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPreviousNames'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsPrimOrgAuth'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsSamsAgencyNumber'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsSecOrgAuth'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'dhsServiceRegion'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'distinguishedName'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'facsimileTelephoneNumber'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'mail'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'o'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'objectClass'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'postalCode'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'st'),\r\n this.htmlHelperService.createFieldFromPropertyName(organisationDetails, 'telephoneNumber')\r\n ]);\r\n\r\n return organisationDetailsHtml;\r\n }\r\n\r\n private formatLdapProtocolApplicationDetailsHtml(applicationDetails: SearchLdapProtocolApplication): string {\r\n\r\n const applicationDetailsHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'description'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsAllowedUserTypes'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsAlternateApplicationNames'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsAppCategory'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsAppDefaultDisplay'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsAppDeployNumber'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsAppLdapGrp'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsApplicationDDate'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsApplicationEnvironment'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsApplicationGraphicUrl'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsApplicationName'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsApplicationSecurityIndicator'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsApplicationType'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsApplicationUrl'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsApplicationVersion'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsAppNameId'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsAppStatus'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsOrganisationId'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsPrimAppAdm'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'dhsSecAppAdm'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'distinguishedName'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationDetails, 'objectClass')\r\n ]);\r\n\r\n return applicationDetailsHtml;\r\n }\r\n\r\n private formatLdapProtocolApplicationRoleHtml(applicationRole: SearchLdapProtocolApplicationRole): string {\r\n\r\n const applicationRoleHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(applicationRole, 'description'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationRole, 'dhsAppLdapGrp'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationRole, 'dhsApplicationRoleName'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationRole, 'dhsAppRoleManager'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationRole, 'distinguishedName'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationRole, 'objectClass')\r\n ]);\r\n\r\n return applicationRoleHtml;\r\n }\r\n\r\n private formatLdapProtocolApplicationInvocationMethodHtml(applicationInvocationMethod: SearchLdapProtocolApplicationInvocationMethod): string {\r\n\r\n const applicationInvocationMethodHtml = this.htmlHelperService.formatFields([\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'description'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'dhsAppDisplayName'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'dhsAppExtProvision'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'dhsApplicationGraphicUrl'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'dhsInvocationCategory'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'dhsInvocationCommand'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'dhsInvocationMethod'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'dhsInvocationParameter'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'distinguishedName'),\r\n this.htmlHelperService.createFieldFromPropertyName(applicationInvocationMethod, 'objectClass')\r\n ]);\r\n\r\n return applicationInvocationMethodHtml;\r\n }\r\n\r\n private formatScimObjectsHtml(scimObjects: SearchLdapScimObject[]): string {\r\n\r\n const preformattedTag = 'pre';\r\n\r\n const scimObjectHtml = this.htmlHelperService.formatHtml(preformattedTag, JSON.stringify(scimObjects.map(scimObject => JSON.parse(scimObject.jsonObject)), null, 2));\r\n\r\n return scimObjectHtml;\r\n }\r\n\r\n // Methods to format multiple results into HTML\r\n\r\n private formatAzureAdUserMatchHtml(azureAdUserMatch: SearchAzureAdUsersByMatchingLdapUserResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n\r\n if (azureAdUserMatch.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, azureAdUserMatch.errorMessage);\r\n }\r\n\r\n if ((azureAdUserMatch.users?.length ?? 0) <= 0) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, 'No matches found');\r\n }\r\n\r\n const azureAdUserMatchHtml = this.formatAzureAdUserSummariesHtml(azureAdUserMatch.users);\r\n\r\n return azureAdUserMatchHtml;\r\n };\r\n\r\n private formatAzureAdUserSummariesHtml(userSummaries: SearchAzureAdUserSummary[]): string {\r\n\r\n const userSummariesHtml = this.htmlHelperService.formatHtmlTable(\r\n ['mail / userPrincipalName', 'displayName', 'givenName', 'surname', 'otherMails', 'onPremisesSamAccountName', 'userType'],\r\n this.collectionService.orderBy(userSummaries, u => (u.mail ?? u.userPrincipalName ?? '').toUpperCase())\r\n .map(u => [u.mail ?? u.userPrincipalName, u.displayName, u.givenName, u.surname, u.otherMails?.join('; '), u.onPremisesSamAccountName, u.userType]));\r\n\r\n return userSummariesHtml;\r\n }\r\n\r\n private formatAzureAdGroupSummariesHtml(groupSummaries: SearchAzureAdGroupSummary[]): string {\r\n\r\n const groupSummariesHtml = this.htmlHelperService.formatHtmlTable(\r\n ['displayName', 'description'],\r\n this.collectionService.orderBy(groupSummaries, g => (g.displayName ?? '').toUpperCase())\r\n .map(g => [g.displayName, g.description]));\r\n\r\n return groupSummariesHtml;\r\n }\r\n\r\n private formatAzureAdDomainSummariesHtml(domainSummaries: SearchAzureAdDomainSummary[]): string {\r\n\r\n const domainSummariesHtml = this.htmlHelperService.formatHtmlTable(\r\n ['id'],\r\n this.collectionService.orderBy(domainSummaries, d => (d.id ?? '').toUpperCase())\r\n .map(d => [d.id]));\r\n\r\n return domainSummariesHtml;\r\n }\r\n\r\n private formatLdapUserMatchHtml(ldapUserMatch: SearchLdapProtocolUsersByMatchingAzureAdUserResponse): string {\r\n\r\n const paragraphTag = 'p';\r\n\r\n if (ldapUserMatch.errorMessage) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, ldapUserMatch.errorMessage);\r\n }\r\n\r\n if ((ldapUserMatch.users?.length ?? 0) <= 0) {\r\n return this.htmlHelperService.formatHtml(paragraphTag, 'No matches found');\r\n }\r\n\r\n const ldapUserMatchHtml = this.formatLdapProtocolUserSummariesHtml(ldapUserMatch.users);\r\n\r\n return ldapUserMatchHtml;\r\n };\r\n\r\n private formatLdapProtocolUserSummariesHtml(userSummaries: SearchLdapProtocolUserSummary[]): string {\r\n\r\n const userSummariesHtml = this.htmlHelperService.formatHtmlTable(\r\n ['mail', 'dhsDominoDisplayName', 'givenName', 'sn', 'cn', 'uniqueIdentifier'],\r\n this.collectionService.orderBy(userSummaries, u => (u.mail ?? '').toUpperCase())\r\n .map(u => [u.mail, u.dhsDominoDisplayName, u.givenName, u.sn, u.cn, u.uniqueIdentifier]));\r\n\r\n return userSummariesHtml;\r\n }\r\n\r\n private formatLdapProtocolGroupSummariesHtml(groupSummaries: SearchLdapProtocolGroupSummary[]): string {\r\n\r\n const groupSummariesHtml = this.htmlHelperService.formatHtmlTable(\r\n ['description', 'cn'],\r\n this.collectionService.orderBy(groupSummaries, g => (g.description ?? '').toUpperCase())\r\n .map(g => [g.description, g.cn]));\r\n\r\n return groupSummariesHtml;\r\n }\r\n\r\n private formatLdapProtocolOrganisationSummariesHtml(organisationSummaries: SearchLdapProtocolOrganisationSummary[]): string {\r\n\r\n const organisationSummariesHtml = this.htmlHelperService.formatHtmlTable(\r\n ['o', 'dhsOrgNameId', 'dhsOrganisationId'],\r\n this.collectionService.orderBy(organisationSummaries, o => (o.o ?? '').toUpperCase())\r\n .map(o => [o.o, o.dhsOrgNameId, o.dhsOrganisationId]));\r\n\r\n return organisationSummariesHtml;\r\n }\r\n\r\n private formatLdapProtocolApplicationSummariesHtml(applicationSummaries: SearchLdapProtocolApplicationSummary[]): string {\r\n\r\n const applicationSummariesHtml = this.htmlHelperService.formatHtmlTable(\r\n ['dhsApplicationName', 'dhsAppNameId', 'description'],\r\n this.collectionService.orderBy(applicationSummaries, a => (a.dhsApplicationName ?? '').toUpperCase())\r\n .map(a => [a.dhsApplicationName, a.dhsAppNameId, a.description]));\r\n\r\n return applicationSummariesHtml;\r\n }\r\n\r\n private formatLdapScimUserSummariesHtml(userSummaries: SearchLdapScimUserSummary[]): string {\r\n\r\n const userSummariesHtml = this.htmlHelperService.formatHtmlTable(\r\n ['email', 'dhsDominoDisplayName', 'givenName', 'familyName', 'userName', 'uniqueIdentifier'],\r\n this.collectionService.orderBy(userSummaries, u => (u.email ?? '').toUpperCase())\r\n .map(u => [u.email, u.dhsDominoDisplayName, u.givenName, u.familyName, u.userName, u.uniqueIdentifier]));\r\n\r\n return userSummariesHtml;\r\n }\r\n\r\n private formatLdapScimGroupSummariesHtml(groupSummaries: SearchLdapScimGroupSummary[]): string {\r\n\r\n const groupSummariesHtml = this.htmlHelperService.formatHtmlTable(\r\n ['displayName'],\r\n this.collectionService.orderBy(groupSummaries, g => (g.displayName ?? '').toUpperCase())\r\n .map(g => [g.displayName]));\r\n\r\n return groupSummariesHtml;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\n\r\nimport { catchError, EMPTY, OperatorFunction, throwError } from \"rxjs\";\r\n\r\nimport { DialogService, SpinnerService } from \"dspx-core\";\r\n\r\nimport { RequestSaveResultStatus } from \"../constants/request-save-result-status\";\r\n\r\nimport { PopupInfo } from \"../interfaces/popup-info.interface\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ErrorService {\r\n\r\n constructor(\r\n private dialogService: DialogService,\r\n private spinnerService: SpinnerService) {\r\n }\r\n\r\n public errorHandler(customErrorPopups?: Map): OperatorFunction {\r\n return catchError((error: HttpErrorResponse) => {\r\n\r\n this.spinnerService.hideSpinner();\r\n\r\n // Custom handling of form validation errors\r\n if (error?.error?.StatusCode === 400 && error?.error?.Message) {\r\n const message = this.serverValidationErrorsToHtml(error?.error?.Message);\r\n this.dialogService.showSimplePopup(message, 'Unable to continue', 'OK');\r\n return EMPTY;\r\n }\r\n\r\n // Remapping error codes from strings to numbers (e.g. 'UpdatedSinceReadTime' => 2).\r\n // This is because the global error handler expects the numerical codes instead of the string codes,\r\n // whereas the API returns the server-side error enum as strings instead of codes.\r\n if (error?.status === 400 && error?.error?.status && typeof error.error.status === 'string') {\r\n const errorStatusEnumValue = RequestSaveResultStatus[error.error.status as string] as RequestSaveResultStatus;\r\n if (errorStatusEnumValue !== null && errorStatusEnumValue !== undefined) {\r\n error.error.status = errorStatusEnumValue;\r\n\r\n // Using a custom error popup if provided\r\n const customErrorPopup = customErrorPopups?.get(errorStatusEnumValue);\r\n if (customErrorPopup) {\r\n this.dialogService.showDialog(customErrorPopup.popupCode, customErrorPopup.model, customErrorPopup.data);\r\n return EMPTY;\r\n }\r\n }\r\n }\r\n\r\n // Let the global error handler handle the error\r\n return throwError(() => error);\r\n });\r\n }\r\n\r\n private serverValidationErrorsToHtml(validationErrors: string): string {\r\n return this.stringArrayToHtmlUnorderedList(this.serverValidationErrorsToStringArray(validationErrors));\r\n }\r\n\r\n private stringArrayToHtmlUnorderedList(array: string[]): string {\r\n const listItems = (array && array.map(item => `
  • ${item}
  • `)) || [];\r\n return `
      ${listItems.join('')}
    `;\r\n }\r\n\r\n private serverValidationErrorsToStringArray(validationErrors: string): string[] {\r\n return (validationErrors && validationErrors.split('\\r\\n').map(x => x && x.trim()).filter(x => !!x)) || [];\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { ExcelService } from 'dspx-core';\r\n\r\nimport { ApiEndpoints } from \"../constants/api-endpoints.constants\";\r\n\r\nimport { ExportToDataTablesRequest } from \"../interfaces/export-to-data-tables-request.interface\";\r\nimport { ExportToDataTablesResponse } from \"../interfaces/export-to-data-tables-response.interface\";\r\nimport { UserRequestUniqueKey } from \"../interfaces/user-request-unique-key.interface\";\r\n\r\nimport { AppDataService } from \"./app-data.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExcelExportService {\r\n constructor(\r\n private appDataService: AppDataService,\r\n private excelService: ExcelService) {\r\n }\r\n\r\n // Exports to XLSX\r\n\r\n exportUserRequestsToXlsx(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.userRequest.exportToDataTables, request, 'Requests');\r\n }\r\n\r\n exportApprovalsToXlsx(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.approval.exportToDataTables, request, 'Approvals');\r\n }\r\n\r\n exportReviewsToXlsx(request: ExportToDataTablesRequest, isAdminMode: boolean): void {\r\n const relativeUrl = isAdminMode\r\n ? ApiEndpoints.reviewDecision.exportToDataTablesAdminMode\r\n : ApiEndpoints.reviewDecision.exportToDataTables;\r\n this.exportToXlsx(relativeUrl, request, 'Reviews');\r\n }\r\n\r\n exportUsersToXlsx(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.applicationUser.exportToDataTables, request, 'Users');\r\n }\r\n\r\n exportUsersToXlsxFromEmailList(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.applicationUser.exportToDataTablesFromEmailList, request, 'Users(FromEmailList)');\r\n }\r\n\r\n exportUsersToXlsxImportCompatible(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.applicationUser.exportToDataTablesImportCompatible, request, 'Users(Import-Compatible)');\r\n }\r\n\r\n exportApplicationEnvironmentToXlsx(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.applicationEnvironment.exportToDataTables, request, 'Environment');\r\n }\r\n\r\n exportApplicationsToXlsx(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.application.exportToDataTables, request, 'Applications');\r\n }\r\n\r\n exportOrganisationsToXlsx(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.organisation.exportToDataTables, request, 'Organisations');\r\n }\r\n\r\n exportReferenceDataToXlsx(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.referenceData.exportToDataTables, request, 'ReferenceData');\r\n }\r\n\r\n exportReviewDefinitionsToXlsx(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.reviewDefinition.exportToDataTables, request, 'ReviewDefinitions');\r\n }\r\n\r\n exportReviewDefinitionsToXlsxImportCompatible(request: ExportToDataTablesRequest): void {\r\n this.exportToXlsx(ApiEndpoints.reviewDefinition.exportToDataTablesImportCompatible, request, 'ReviewDefinitions(Import-Compatible)');\r\n }\r\n\r\n exportToXlsx(\r\n apiEndpoint: string,\r\n request: ExportToDataTablesRequest,\r\n fileNamePrefix: string,\r\n getExportResponse: (response: TResponse) => ExportToDataTablesResponse = null,\r\n onSuccess: (response: TResponse, fileName: string) => void = null): void {\r\n\r\n this.appDataService.getDataTableSet(apiEndpoint, request, (response: TResponse, transientId: string) => {\r\n const exportResponse = getExportResponse?.(response) ?? response as unknown as ExportToDataTablesResponse;\r\n const fileName = this.exportDataTablesToXlsx(exportResponse, fileNamePrefix, transientId);\r\n onSuccess?.(response, fileName);\r\n });\r\n }\r\n\r\n exportDataTablesToXlsx(\r\n exportResponse: ExportToDataTablesResponse,\r\n fileNamePrefix: string,\r\n transientId: string = null) {\r\n\r\n transientId ??= this.appDataService.getTransientId();\r\n const fileName = `${fileNamePrefix}_${exportResponse?.dataSetFriendlyName}_${transientId}.xlsx`;\r\n const workSheetInfos = exportResponse?.dataTables?.map(dataTable => ({ workSheetName: dataTable?.tableName, workSheetData: dataTable?.data })) ?? [];\r\n this.excelService.writeWorkBookToFile(fileName, workSheetInfos);\r\n return fileName;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { Observable, Subscriber } from 'rxjs';\r\nimport { take } from 'rxjs/operators';\r\n\r\nimport { DialogResult, DialogService, Dialogs, MessagePlaceholders } from 'dspx-core';\r\n\r\nimport { ImportErrorPopupCodePrefixes, MinWaitForDialogToCloseMs } from \"../constants/app-data.constants\";\r\nimport { ApiEndpoints } from '../constants/api-endpoints.constants';\r\n\r\nimport { DataTable } from \"../interfaces/data-table.interface\";\r\nimport { ValidateEmailsRequest } from \"../interfaces/validate-emails-request.interface\";\r\nimport { ValidateEmailsResult } from \"../interfaces/validate-emails-result.interface\";\r\nimport { PurgeFromDataTablesRequest } from \"../interfaces/purge-from-data-tables-request.interface\";\r\nimport { PurgeFromDataTablesResponse } from \"../interfaces/purge-from-data-tables-response.interface\";\r\nimport { SyncFromDataTablesRequest } from \"../interfaces/sync-from-data-tables-request.interface\";\r\nimport { SyncFromDataTablesResponse } from \"../interfaces/sync-from-data-tables-response.interface\";\r\nimport { ImportFromDataTablesRequest } from \"../interfaces/import-from-data-tables-request.interface\";\r\nimport { ImportFromDataTablesResponse } from \"../interfaces/import-from-data-tables-response.interface\";\r\nimport { EntityChangeAnalysis } from \"../interfaces/entity-change-analysis.interface\";\r\nimport { ExcelImportResult } from \"../interfaces/excel-import-result.interface\";\r\n\r\nimport { ErrorService } from '../services/error.service';\r\nimport { AppDataService } from '../services/app-data.service';\r\nimport { ExcelParserService } from \"./excel-parser.service\";\r\nimport { DialogHelperService } from \"./dialog-helper.service\";\r\nimport { HtmlHelperService } from \"./html-helper.service\";\r\n\r\nclass ExcelImportError {\r\n constructor(\r\n public popupCode: string,\r\n public data?: MessagePlaceholders,\r\n public placeholders?: MessagePlaceholders) {\r\n }\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExcelImportService {\r\n\r\n constructor(\r\n private errorService: ErrorService,\r\n private excelParserService: ExcelParserService,\r\n private dialogHelperService: DialogHelperService,\r\n private dialogService: DialogService,\r\n private appDataService: AppDataService,\r\n private htmlHelperService: HtmlHelperService) {\r\n }\r\n\r\n // Validations via XLSX\r\n\r\n validateEmails(file: File): Observable {\r\n return this.validateViaXlsx(\r\n file,\r\n `${ImportErrorPopupCodePrefixes.validateEmails}FileType`,\r\n `${ImportErrorPopupCodePrefixes.validateEmails}UnknownError`,\r\n (subscriber, dataTables) => {\r\n const request: ValidateEmailsRequest = { dataTables };\r\n this.appDataService.post(ApiEndpoints.applicationUser.validateEmails, request)\r\n .pipe(take(1))\r\n .subscribe((result: ValidateEmailsResult) => {\r\n if (result.message) {\r\n this.handleError(subscriber, new ExcelImportError(result.message, result.details))\r\n }\r\n else {\r\n subscriber.next(result.emails);\r\n subscriber.complete();\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Purges via XLSX\r\n\r\n purgeUsersFromXlsx(\r\n file: File,\r\n showConfirmationDialog: (purgeResponse: PurgeFromDataTablesResponse) => Observable): Observable {\r\n\r\n const endpoint = ApiEndpoints.applicationUser.purgeFromDataTables;\r\n\r\n return this.validateViaXlsx(\r\n file,\r\n `${ImportErrorPopupCodePrefixes.userPurge}FileType`,\r\n `${ImportErrorPopupCodePrefixes.userPurge}UnknownError`,\r\n (subscriber, dataTables) => {\r\n // Call the back-end to perform the pre-purge validation and analysis (skipConfirmation = false)\r\n const prePurgeRequest: PurgeFromDataTablesRequest = { dataTables, skipConfirmation: false };\r\n this.appDataService.post(endpoint, prePurgeRequest)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe((prePurgeResponse: PurgeFromDataTablesResponse) => {\r\n if (prePurgeResponse.message) {\r\n // Pre-purge failed validation => return the validation error\r\n this.handleError(subscriber, new ExcelImportError(prePurgeResponse.message, prePurgeResponse.details))\r\n }\r\n else {\r\n // Pre-purge succeeded => display the confirmation popup with the summary of purge changes\r\n showConfirmationDialog(prePurgeResponse)\r\n .pipe(take(1))\r\n .subscribe(dialogResult => {\r\n switch (dialogResult as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n // User confirms they want to proceed => call the back-end again to perform the actual purge (skipConfirmation = true)\r\n const actualPurgeRequest: PurgeFromDataTablesRequest = { dataTables, skipConfirmation: true };\r\n this.appDataService.post(endpoint, actualPurgeRequest)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe({\r\n next: (actualPurgeResponse: PurgeFromDataTablesResponse) => {\r\n if (actualPurgeResponse.message) {\r\n // Actual purge failed validation => return the validation error\r\n // (this is a rare scenario because the data was already validated by the pre-purge, but it could theoretically happen)\r\n subscriber.error(new ExcelImportError(actualPurgeResponse.message, actualPurgeResponse.details));\r\n }\r\n else {\r\n // Actual purge succeeded => return the purge response\r\n subscriber.next(actualPurgeResponse);\r\n subscriber.complete();\r\n }\r\n },\r\n error: error => {\r\n // Actual purge failed with an unexpected error\r\n subscriber.error(error);\r\n }\r\n });\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n // User cancels because they do not want to proceed => do nothing\r\n subscriber.error();\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Synchronisations via XLSX\r\n\r\n syncUsersFromXlsx(\r\n file: File,\r\n showConfirmationDialog: (syncResponse: SyncFromDataTablesResponse) => Observable): Observable {\r\n\r\n const endpoint = ApiEndpoints.applicationUser.syncFromDataTables;\r\n\r\n return this.validateViaXlsx(\r\n file,\r\n `${ImportErrorPopupCodePrefixes.userSync}FileType`,\r\n `${ImportErrorPopupCodePrefixes.userSync}UnknownError`,\r\n (subscriber, dataTables) => {\r\n // Call the back-end to perform the pre-synchronisation validation and analysis (skipConfirmation = false)\r\n const preSyncRequest: SyncFromDataTablesRequest = { dataTables, skipConfirmation: false };\r\n this.appDataService.post(endpoint, preSyncRequest)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe((preSyncResponse: SyncFromDataTablesResponse) => {\r\n if (preSyncResponse.message) {\r\n // Pre-synchronisation failed validation => return the validation error\r\n this.handleError(subscriber, new ExcelImportError(preSyncResponse.message, preSyncResponse.details))\r\n }\r\n else {\r\n // Pre-synchronisation succeeded => display the confirmation popup with the summary of synchronisation changes\r\n showConfirmationDialog(preSyncResponse)\r\n .pipe(take(1))\r\n .subscribe(dialogResult => {\r\n switch (dialogResult as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n // User confirms they want to proceed => call the back-end again to perform the actual synchronisation (skipConfirmation = true)\r\n const actualSyncRequest: SyncFromDataTablesRequest = { dataTables, skipConfirmation: true };\r\n this.appDataService.post(endpoint, actualSyncRequest)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe({\r\n next: (actualSyncResponse: SyncFromDataTablesResponse) => {\r\n if (actualSyncResponse.message) {\r\n // Actual synchronisation failed validation => return the validation error\r\n // (this is a rare scenario because the data was already validated by the pre-synchronisation, but it could theoretically happen)\r\n subscriber.error(new ExcelImportError(actualSyncResponse.message, actualSyncResponse.details));\r\n }\r\n else {\r\n // Actual synchronisation succeeded => return the synchronisation response\r\n subscriber.next(actualSyncResponse);\r\n subscriber.complete();\r\n }\r\n },\r\n error: error => {\r\n // Actual synchronisation failed with an unexpected error\r\n subscriber.error(error);\r\n }\r\n });\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n // User cancels because they do not want to proceed => do nothing\r\n subscriber.error();\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n });\r\n });\r\n }\r\n\r\n // Imports from XLSX\r\n\r\n importUsersFromXlsx(): Observable {\r\n return this.importFromXlsxWithInstructions(\r\n null,\r\n ApiEndpoints.applicationUser.importFromDataTables,\r\n `${ImportErrorPopupCodePrefixes.userImport}Instructions`,\r\n `${ImportErrorPopupCodePrefixes.userImport}FileType`,\r\n `${ImportErrorPopupCodePrefixes.userImport}Confirmation`,\r\n `${ImportErrorPopupCodePrefixes.userImport}Successful`);\r\n }\r\n\r\n importApplicationEnvironmentFromXlsx(entityId: string): Observable {\r\n return this.importFromXlsxWithoutInstructions(\r\n entityId,\r\n ApiEndpoints.applicationEnvironment.importFromDataTables,\r\n `${ImportErrorPopupCodePrefixes.environmentImport}FileType`,\r\n `${ImportErrorPopupCodePrefixes.environmentImport}Confirmation`,\r\n `${ImportErrorPopupCodePrefixes.environmentImport}Successful`);\r\n }\r\n\r\n importApplicationsFromXlsx(): Observable {\r\n return this.importFromXlsxWithoutInstructions(\r\n null,\r\n ApiEndpoints.application.importFromDataTables,\r\n `${ImportErrorPopupCodePrefixes.applicationImport}FileType`,\r\n `${ImportErrorPopupCodePrefixes.applicationImport}Confirmation`,\r\n `${ImportErrorPopupCodePrefixes.applicationImport}Successful`);\r\n }\r\n\r\n importOrganisationsFromXlsx(): Observable {\r\n return this.importFromXlsxWithoutInstructions(\r\n null,\r\n ApiEndpoints.organisation.importFromDataTables,\r\n `${ImportErrorPopupCodePrefixes.organisationImport}FileType`,\r\n `${ImportErrorPopupCodePrefixes.organisationImport}Confirmation`,\r\n `${ImportErrorPopupCodePrefixes.organisationImport}Successful`);\r\n }\r\n\r\n importReferenceDataFromXlsx(): Observable {\r\n return this.importFromXlsxWithoutInstructions(\r\n null,\r\n ApiEndpoints.referenceData.importFromDataTables,\r\n `${ImportErrorPopupCodePrefixes.referenceDataImport}FileType`,\r\n `${ImportErrorPopupCodePrefixes.referenceDataImport}Confirmation`,\r\n `${ImportErrorPopupCodePrefixes.referenceDataImport}Successful`);\r\n }\r\n\r\n importReviewDefinitionsFromXlsx(): Observable {\r\n return this.importFromXlsxWithoutInstructions(\r\n null,\r\n ApiEndpoints.reviewDefinition.importFromDataTables,\r\n `${ImportErrorPopupCodePrefixes.reviewDefinitionImport}FileType`,\r\n `${ImportErrorPopupCodePrefixes.reviewDefinitionImport}Confirmation`,\r\n `${ImportErrorPopupCodePrefixes.reviewDefinitionImport}Successful`);\r\n }\r\n\r\n // Private\r\n\r\n private validateViaXlsx(\r\n file: File,\r\n validateFileTypePopupCode: string,\r\n validateUnknownErrorPopupCode: string,\r\n processFunction: (subscriber: Subscriber, dataTables: DataTable[]) => void): Observable {\r\n\r\n return new Observable(subscriber =>\r\n this.uploadAndParseWorkBook(file, validateFileTypePopupCode)\r\n .pipe(take(1))\r\n .subscribe({\r\n next: dataTables => processFunction(subscriber, dataTables),\r\n error: error => this.handleError(subscriber, error, validateUnknownErrorPopupCode)\r\n }));\r\n }\r\n\r\n private importFromXlsxWithInstructions(\r\n entityId: string,\r\n endpoint: string,\r\n importInstructionsPopupCode: string,\r\n importFileTypePopupCode: string,\r\n importConfirmationPopupCode: string,\r\n importSuccessfulPopupCode: string): Observable {\r\n\r\n const onCancel = (subscriber: Subscriber) =>\r\n setTimeout(() => processFunction(subscriber), MinWaitForDialogToCloseMs);\r\n\r\n const processFunction = (subscriber: Subscriber) => {\r\n this.dialogService.showConfirm(importInstructionsPopupCode)\r\n .pipe(take(1))\r\n .subscribe(dialogResult => {\r\n switch (dialogResult as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n this.htmlHelperService.uploadFile(\r\n ['.xlsx', '.xls'],\r\n file => this.importFromXlsx(entityId, file, endpoint, importFileTypePopupCode, importConfirmationPopupCode, importSuccessfulPopupCode)\r\n .pipe(take(1))\r\n .subscribe({\r\n next: excelImportResult => {\r\n if (excelImportResult.isCancelled) {\r\n onCancel(subscriber);\r\n }\r\n else {\r\n subscriber.next({ isCancelled: false });\r\n subscriber.complete();\r\n }\r\n },\r\n error: () => onCancel(subscriber)\r\n }),\r\n () => onCancel(subscriber));\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n subscriber.next({ isCancelled: true });\r\n subscriber.complete();\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n\r\n return new Observable(subscriber => processFunction(subscriber));\r\n }\r\n\r\n private importFromXlsxWithoutInstructions(\r\n entityId: string,\r\n endpoint: string,\r\n importFileTypePopupCode: string,\r\n importConfirmationPopupCode: string,\r\n importSuccessfulPopupCode: string): Observable {\r\n\r\n const processFunction = (subscriber: Subscriber) => {\r\n this.htmlHelperService.uploadFile(\r\n ['.xlsx', '.xls'],\r\n file => this.importFromXlsx(entityId, file, endpoint, importFileTypePopupCode, importConfirmationPopupCode, importSuccessfulPopupCode)\r\n .pipe(take(1))\r\n .subscribe({\r\n next: excelImportResult => {\r\n subscriber.next(excelImportResult);\r\n subscriber.complete();\r\n },\r\n error: error => subscriber.error(error)\r\n }),\r\n () => {\r\n subscriber.next({ isCancelled: true });\r\n subscriber.complete();\r\n });\r\n };\r\n\r\n return new Observable(subscriber => processFunction(subscriber));\r\n }\r\n\r\n private importFromXlsx(\r\n entityId: string,\r\n file: File,\r\n endpoint: string,\r\n importFileTypePopupCode: string,\r\n importConfirmationPopupCode: string,\r\n importSuccessfulPopupCode: string): Observable {\r\n\r\n const postDataTables = (subscriber: Subscriber, dataTables: DataTable[], ignoreWarnings: boolean) => {\r\n return this.postDataTables(endpoint, entityId, dataTables, importConfirmationPopupCode, ignoreWarnings)\r\n .pipe(take(1))\r\n .subscribe({\r\n next: excelImportResult => {\r\n if (excelImportResult.isCancelled) {\r\n if (excelImportResult.warnings?.length) {\r\n // Import was cancelled due to validation warnings => display the warning popup\r\n this.dialogHelperService.showWarnings(excelImportResult.warnings)\r\n .pipe(take(1))\r\n .subscribe(data => {\r\n switch (data as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n // User decided to dismiss the warnings => repeat the process but ignore the warnings\r\n const ignoreWarnings = true;\r\n postDataTables(subscriber, dataTables, ignoreWarnings);\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n // User decided to cancel because of the warnings => return success (isCancelled = true)\r\n subscriber.next({ isCancelled: true })\r\n subscriber.complete();\r\n break;\r\n }\r\n }\r\n });\r\n }\r\n else {\r\n // User decided to cancel => return success (isCancelled = true)\r\n subscriber.next({ isCancelled: true })\r\n subscriber.complete();\r\n }\r\n }\r\n else {\r\n // Import succeeeded => display the success popup and return success (isCancelled = false)\r\n setTimeout(\r\n () => this.showConfirm(importSuccessfulPopupCode)\r\n .pipe(take(1))\r\n .subscribe(() => {\r\n subscriber.next({ isCancelled: false });\r\n subscriber.complete();\r\n }),\r\n MinWaitForDialogToCloseMs);\r\n }\r\n },\r\n // Import failed due to validation error => return the validation error\r\n error: error => {\r\n this.handleError(subscriber, error, Dialogs.SERVER_ERROR);\r\n }\r\n });\r\n };\r\n\r\n return new Observable(subscriber => {\r\n this.uploadAndParseWorkBook(file, importFileTypePopupCode)\r\n .pipe(take(1))\r\n .subscribe({\r\n next: dataTables => {\r\n const ignoreWarnings = false;\r\n postDataTables(subscriber, dataTables, ignoreWarnings);\r\n },\r\n error: error => {\r\n this.handleError(subscriber, error, Dialogs.SERVER_ERROR);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private uploadAndParseWorkBook(file: File, importFileTypePopupCode: string): Observable {\r\n\r\n return this.uploadWorkBook(file, importFileTypePopupCode, (subscriber, event) => {\r\n\r\n const dataTables = this.excelParserService.parseWorkBook(event.target.result)\r\n if (!dataTables || dataTables.length === 0) {\r\n subscriber.error();\r\n }\r\n\r\n subscriber.next(dataTables);\r\n subscriber.complete();\r\n });\r\n }\r\n\r\n private uploadWorkBook(file: File, fileTypeErrorPopupCode: string, processFunction: (subscriber: Subscriber, event: ProgressEvent) => void): Observable {\r\n\r\n return new Observable(subscriber => {\r\n try {\r\n const reader = new FileReader();\r\n reader.onload = event => {\r\n try {\r\n processFunction(subscriber, event);\r\n }\r\n catch (error) {\r\n subscriber.error(error);\r\n }\r\n };\r\n if (file) {\r\n const validFileTypes = [\r\n 'application/vnd.ms-excel',\r\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\r\n 'text/csv'\r\n ];\r\n if (validFileTypes.includes(file.type)) {\r\n reader.readAsBinaryString(file);\r\n }\r\n else {\r\n subscriber.error(new ExcelImportError(fileTypeErrorPopupCode));\r\n }\r\n }\r\n }\r\n catch (error) {\r\n subscriber.error(error);\r\n }\r\n });\r\n }\r\n\r\n private showConfirm(popupCode: string, data?: MessagePlaceholders, placeholders?: MessagePlaceholders): Observable {\r\n return this.dialogHelperService.showConfirm(popupCode, placeholders, data);\r\n }\r\n\r\n private handleError(subscriber: Subscriber, error: any, unknownErrorPopupCode?: string) {\r\n if (error instanceof ExcelImportError) {\r\n this.showConfirm(error.popupCode, error.data, error.placeholders)\r\n .pipe(take(1))\r\n .subscribe(() => subscriber.error());\r\n }\r\n else if (unknownErrorPopupCode) {\r\n this.showConfirm(unknownErrorPopupCode)\r\n .pipe(take(1))\r\n .subscribe(() => subscriber.error());\r\n }\r\n else {\r\n subscriber.error();\r\n }\r\n }\r\n\r\n private postDataTables(\r\n endpoint: string,\r\n entityId: string,\r\n dataTables: DataTable[],\r\n confirmationPopupCode: string,\r\n ignoreWarnings: boolean): Observable {\r\n\r\n return new Observable(subscriber => {\r\n\r\n // Call the back-end to perform the pre-import validation and analysis (skipConfirmation = false)\r\n const preImportRequest: ImportFromDataTablesRequest = { entityId, dataTables, skipConfirmation: false, ignoreWarnings: ignoreWarnings };\r\n this.appDataService.post(endpoint, preImportRequest)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe({\r\n next: (preImportResponse: ImportFromDataTablesResponse) => {\r\n if (preImportResponse.message) {\r\n // Pre-import failed validation => return the validation error\r\n subscriber.error(new ExcelImportError(preImportResponse.message, preImportResponse.details));\r\n }\r\n else if (preImportResponse.warnings?.length) {\r\n // Pre-import succeeded with warnings => return success (isCancelled = true) with the warnings\r\n subscriber.next({ isCancelled: true, warnings: preImportResponse.warnings });\r\n subscriber.complete();\r\n }\r\n else {\r\n // Pre-import succeeded => display the confirmation popup with the summary of import changes\r\n setTimeout(\r\n () => {\r\n const confirmationPopupMessagePlaceholder: MessagePlaceholders = {\r\n importChanges: this.formatImportChangesHtml(preImportResponse.entityChangeAnalyses)\r\n };\r\n this.dialogService\r\n .showConfirm(confirmationPopupCode, confirmationPopupMessagePlaceholder)\r\n .pipe(take(1))\r\n .subscribe(dialogResult => {\r\n switch (dialogResult as DialogResult) {\r\n case DialogResult.ACCEPTED: {\r\n // User confirms they want to proceed => call the back-end again to perform the actual import (skipConfirmation = true)\r\n const actualImportRequest: ImportFromDataTablesRequest = { entityId, dataTables, skipConfirmation: true, ignoreWarnings: true };\r\n this.appDataService.post(endpoint, actualImportRequest)\r\n .pipe(take(1), this.errorService.errorHandler())\r\n .subscribe({\r\n next: (actualImportResponse: ImportFromDataTablesResponse) => {\r\n if (actualImportResponse.message) {\r\n // Actual import failed validation => return the validation error\r\n // (this is a rare scenario because the data was already validated by the pre-import, but it could happen if the database has changed in the meantime)\r\n subscriber.error(new ExcelImportError(actualImportResponse.message, actualImportResponse.details));\r\n }\r\n else {\r\n // Actual import succeeded => return success (isCancelled = false)\r\n subscriber.next({ isCancelled: false });\r\n subscriber.complete();\r\n }\r\n },\r\n error: error => {\r\n // Actual import failed with an unexpected error\r\n subscriber.error(error);\r\n }\r\n });\r\n break;\r\n }\r\n case DialogResult.REJECTED: {\r\n // User cancels because they do not want to proceed => return success (isCancelled = true)\r\n subscriber.next({ isCancelled: true });\r\n subscriber.complete();\r\n break;\r\n }\r\n }\r\n });\r\n },\r\n MinWaitForDialogToCloseMs);\r\n }\r\n },\r\n error: error => {\r\n // Pre-import failed with an unexpected error\r\n subscriber.error(error);\r\n }\r\n });\r\n });\r\n }\r\n\r\n private formatImportChangesHtml(analyses: EntityChangeAnalysis[]): string {\r\n const encode = (cell: any) =>\r\n this.htmlHelperService.toEncodedHtml(cell.toString());\r\n const rowTotal = (a: EntityChangeAnalysis) =>\r\n a.totalRemoved + a.totalAdded + a.totalModified + a.totalUnmodified;\r\n const colTotal = (getValue: (a: EntityChangeAnalysis) => number) =>\r\n analyses.reduce((accumulator, a) => accumulator + getValue(a), 0);\r\n const headerRow = ['Entity', 'Removed', 'Added', 'Modified', 'Unmodified', 'Total']\r\n .map(encode);\r\n const entityRows = analyses\r\n .map(a => [a.entityName, a.totalRemoved, a.totalAdded, a.totalModified, a.totalUnmodified, rowTotal(a)]\r\n .map(encode))\r\n const totalRow = ['Total', colTotal(a => a.totalRemoved), colTotal(a => a.totalAdded), colTotal(a => a.totalModified), colTotal(a => a.totalUnmodified), colTotal(a => rowTotal(a))]\r\n .map(encode)\r\n .map(cell => this.htmlHelperService.formatHtml('b', cell))\r\n .map(cell => this.htmlHelperService.formatHtml('i', cell));\r\n const dataRows = entityRows\r\n .concat([totalRow]);\r\n const htmlTableConfiguration = {\r\n dataColumns: {\r\n 0: { isRightAligned: false },\r\n 1: { isRightAligned: true },\r\n 2: { isRightAligned: true },\r\n 3: { isRightAligned: true },\r\n 4: { isRightAligned: true },\r\n 5: { isRightAligned: true }\r\n }\r\n };\r\n const htmlTable = this.htmlHelperService.formatHtmlTable(headerRow, dataRows, htmlTableConfiguration);\r\n const html = this.htmlHelperService.formatHtml('p', htmlTable);\r\n return html;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport * as XLSX from 'xlsx';\r\n\r\nimport { DataTable } from \"../interfaces/data-table.interface\";\r\n\r\nexport type SheetData = string | ArrayBuffer;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ExcelParserService {\r\n\r\n /**\r\n * Parses an Excel workbook file and returns the data\r\n * @param data file data containing the Excel workbook\r\n * @returns object containing the parsed data\r\n */\r\n parseWorkBook(data: SheetData): DataTable[] {\r\n const xlsxWorkSheets = this.getXlsxWorkSheets(data);\r\n const dataTables = xlsxWorkSheets\r\n .map(xlsxWorkSheet => ({\r\n tableName: xlsxWorkSheet.xlsxWorkSheetName,\r\n data: xlsxWorkSheet.xlsxWorkSheetData\r\n }));\r\n return dataTables;\r\n }\r\n\r\n // **********************************************************************************************************************************************************\r\n // PRIVATE\r\n // **********************************************************************************************************************************************************\r\n\r\n /**\r\n * Parses an Excel workbook using the XLSX third-party library.\r\n * The workbook is parsed as \"raw\", i.e. without trying to guess the data types of each cell, therefore each cell has a string type, regardless of the data type it contains\r\n * @param data file data containing the Excel workbook\r\n * @returns an XLSX.WorkBook object containing the input workbook\r\n */\r\n private getXlsxWorkBook(data: SheetData): XLSX.WorkBook {\r\n try {\r\n const xlsxWorkBook = XLSX.read(data, { type: 'binary', raw: true });\r\n return xlsxWorkBook;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Parses an Excel workbook using the XLSX third-party library.\r\n * The workbook is parsed as \"raw\", i.e. without trying to guess the data types of each cell, therefore each cell has a string type, regardless of the data type it contains\r\n * @param data file data containing the Excel workbook\r\n * @returns an array of objects, each containing the worksheet name and the XLSX.WorkSheet object, for all worksheets found in the input workbook\r\n */\r\n private getXlsxWorkSheets(data: SheetData): { xlsxWorkSheetName: string, xlsxWorkSheetData: string[][] }[] {\r\n try {\r\n const xlsxWorkBook = this.getXlsxWorkBook(data);\r\n const xlsxWorkSheets = xlsxWorkBook.SheetNames\r\n .map(xlsxWorkSheetName => {\r\n const xlsxWorkSheet = xlsxWorkBook.Sheets[xlsxWorkSheetName];\r\n const xlsxWorkSheetData = XLSX.utils.sheet_to_json(xlsxWorkSheet, { header: 1 }) as string[][];\r\n return { xlsxWorkSheetName, xlsxWorkSheetData };\r\n });\r\n return xlsxWorkSheets ?? [];\r\n }\r\n catch {\r\n return [];\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { CardSetFooterConfiguration } from \"dspx-core\";\r\n\r\nimport { AppDataKeys, DepartmentOfFamiliesFairnessAndHousing, DepartmentOfHealth, VictorianGovernment } from \"../constants/app-data.constants\";\r\n\r\nimport { AppDataService } from \"./app-data.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FooterCustomisationService {\r\n\r\n constructor(\r\n private appDataService: AppDataService) {\r\n }\r\n\r\n // Get the footer configuration.\r\n getFooterConfiguration(): CardSetFooterConfiguration {\r\n\r\n const footerConfiguration: CardSetFooterConfiguration = {\r\n prideLogo: '/assets/images/flag-pride.svg',\r\n prideDeclaration: 'The department celebrates, values and includes people of all backgrounds, genders, sexualities, cultures, bodies and abilities.',\r\n showAppLogo: true,\r\n lightModeAppLogo: '/assets/images/sgv-logo-dark.png',\r\n darkModeAppLogo: '/assets/images/sgv-logo.png',\r\n lightModeLogo: null,\r\n darkModeLogo: null,\r\n atsiLogo: '/assets/images/logo-a-tsi-flag.svg',\r\n atsiDeclaration: 'The department acknowledges Aboriginal and Torres Strait Islander people as the Traditional Custodians of the land and acknowledges and pays respect to their Elders, past and present.',\r\n footerLinkColumnsHeadingLevel: 3,\r\n footerLinkColumns: [\r\n {\r\n heading: 'About the site',\r\n links: [\r\n {\r\n label: 'Privacy Statement (Health)',\r\n url: `${DepartmentOfHealth.url}privacy`\r\n },\r\n {\r\n label: 'Privacy Statement (Families, Fairness and Housing)',\r\n url: `${DepartmentOfFamiliesFairnessAndHousing.url}privacy-statement`\r\n },\r\n {\r\n label: 'Disclaimer (Health)',\r\n url: `${DepartmentOfHealth.url}disclaimer`\r\n },\r\n {\r\n label: 'Disclaimer (Families, Fairness and Housing)',\r\n url: `${DepartmentOfFamiliesFairnessAndHousing.url}disclaimer`\r\n },\r\n {\r\n label: 'Copyright',\r\n url: `${DepartmentOfHealth.url}copyright`\r\n }\r\n ]\r\n },\r\n {\r\n heading: 'Other resources',\r\n links: [\r\n {\r\n label: VictorianGovernment.title,\r\n url: VictorianGovernment.url\r\n },\r\n {\r\n label: DepartmentOfHealth.title,\r\n url: DepartmentOfHealth.url\r\n },\r\n {\r\n label: DepartmentOfFamiliesFairnessAndHousing.title,\r\n url: DepartmentOfFamiliesFairnessAndHousing.url\r\n },\r\n {\r\n label: this.appDataService.getAppData(AppDataKeys.ldapLegacyUserOnboardingPortalName),\r\n url: this.appDataService.getAppData(AppDataKeys.ldapNotFederatedAccountSignInUrl)\r\n }\r\n ]\r\n }\r\n ],\r\n departmentName: `${DepartmentOfHealth.title} / ${DepartmentOfFamiliesFairnessAndHousing.title}`,\r\n governmentName: VictorianGovernment.title\r\n };\r\n\r\n return footerConfiguration;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { FormlyFieldConfig } from \"@ngx-formly/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormConfigurationParserService {\r\n\r\n findNavTabConfigs = (formConfig: FormlyFieldConfig[]): FormlyFieldConfig[] =>\r\n formConfig?.[0]?.fieldGroup?.[0]?.fieldGroup;\r\n\r\n findNavTabConfig = (formConfig: FormlyFieldConfig[], navTabNumber: number): FormlyFieldConfig =>\r\n this.findNavTabConfigs(formConfig)?.filter(navTabConfig => navTabConfig.key === `tab${navTabNumber}`)?.[0];\r\n\r\n findPageConfigs = (formConfig: FormlyFieldConfig[], navTabNumber: number): FormlyFieldConfig[] =>\r\n this.findNavTabConfig(formConfig, navTabNumber)?.fieldGroup;\r\n\r\n findPageConfig = (formConfig: FormlyFieldConfig[], navTabNumber: number, pageNumber: number): FormlyFieldConfig =>\r\n this.findPageConfigs(formConfig, navTabNumber)?.filter(pageConfig => pageConfig.key === `page${pageNumber}`)?.[0];\r\n\r\n findSectionConfigs = (formConfig: FormlyFieldConfig[], navTabNumber: number, pageNumber: number): FormlyFieldConfig[] => {\r\n const pageConfig = this.findPageConfig(formConfig, navTabNumber, pageNumber);\r\n return (pageConfig?.fieldArray as FormlyFieldConfig)?.fieldGroup ?? pageConfig?.fieldGroup;\r\n }\r\n\r\n findSectionConfig = (formConfig: FormlyFieldConfig[], navTabNumber: number, pageNumber: number, sectionCode: string): FormlyFieldConfig =>\r\n this.findSectionConfigs(formConfig, navTabNumber, pageNumber)?.filter(sectionConfig => sectionConfig.key === sectionCode)?.[0];\r\n\r\n findQuestionConfigs = (formConfig: FormlyFieldConfig[], navTabNumber: number, pageNumber: number, sectionCode: string): FormlyFieldConfig[] => {\r\n const sectionConfig = this.findSectionConfig(formConfig, navTabNumber, pageNumber, sectionCode);\r\n return (sectionConfig?.fieldArray as FormlyFieldConfig)?.fieldGroup ?? sectionConfig?.fieldGroup;\r\n }\r\n\r\n findQuestionConfig = (formConfig: FormlyFieldConfig[], navTabNumber: number, pageNumber: number, sectionCode: string, questionCode: string): FormlyFieldConfig =>\r\n this.findQuestionConfigs(formConfig, navTabNumber, pageNumber, sectionCode)?.filter(questionConfig => questionConfig.key === questionCode)?.[0];\r\n}\r\n","import { Injectable } from '@angular/core';\r\n\r\nimport { FormlyFieldConfig } from '@ngx-formly/core';\r\n\r\nimport { take } from 'rxjs';\r\n\r\nimport { CoreService, DialogResult, DialogService, RepeaterElementType } from 'dspx-core';\r\n\r\nimport { QuestionCodes, SectionCodes, NavTabNumbers, PageNumbers, OptionSetValues } from '../constants/app-data.constants';\r\n\r\nimport { HtmlHelperService } from './html-helper.service';\r\nimport { FormConfigurationParserService } from './form-configuration-parser.service';\r\nimport { PagePath, ResponseParserService, SectionPath } from './response-parser.service';\r\n\r\ntype HtmlHeaderTitle = {\r\n name: string;\r\n value: string;\r\n isActive: boolean\r\n deactivatedText?: string;\r\n};\r\n\r\ntype HtmlHeaderField = {\r\n name: string;\r\n value: string;\r\n};\r\n\r\ntype HtmlHeader = {\r\n title: HtmlHeaderTitle;\r\n fields: HtmlHeaderField[];\r\n};\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormDataService {\r\n\r\n appData: { [key: string]: any } = {};\r\n\r\n constructor(\r\n private coreService: CoreService,\r\n private htmlHelperService: HtmlHelperService,\r\n private formConfigurationParserService: FormConfigurationParserService,\r\n private responseParserService: ResponseParserService,\r\n private dialogService: DialogService) {\r\n }\r\n \r\n private findFieldValue(questionConfigs: FormlyFieldConfig[], questionKey: string, defaultValue: T = null, doHtmlEncoding: boolean = true): T {\r\n const field = questionConfigs.find(f => f.key === questionKey);\r\n const value = (field && this.coreService.getFieldValue(field) as unknown as T) || defaultValue;\r\n return (doHtmlEncoding && (typeof value === \"string\")) ? (this.htmlHelperService.toEncodedHtml(value) as T) : value;\r\n }\r\n\r\n private findFieldLabel(questionConfigs: FormlyFieldConfig[], questionKey: string, defaultValue: string = null, doHtmlEncoding: boolean = true): string {\r\n const field = questionConfigs.find(f => f.key === questionKey);\r\n const label = field?.props?.label || defaultValue;\r\n return doHtmlEncoding ? (this.htmlHelperService.toEncodedHtml(label) as string) : label;\r\n }\r\n\r\n private toHtmlHeader(header: HtmlHeader): string {\r\n return `\r\n
    \r\n ${this.toHtmlHeaderTitle(header.title)}\r\n
    ${header.fields.map(field => this.toHtmlHeaderField(field)).join('')}
    \r\n
    \r\n `;\r\n }\r\n\r\n private toHtmlHeaderTitle(title: HtmlHeaderTitle): string {\r\n const deactivatedText = title.deactivatedText ?? 'INACTIVE';\r\n const value = title.isActive ? title.value : `${title.value} (${deactivatedText})`;\r\n return `

    ${title.name}: ${value}

    `;\r\n }\r\n\r\n private toHtmlHeaderField(field: HtmlHeaderField): string {\r\n return `

    ${field.name}: ${field.value}

    `;\r\n }\r\n\r\n private showOkCancelPopup(message: string, header: string, onComplete: (cancel: boolean) => void): void {\r\n this.dialogService\r\n .showSimplePopup(message, header, 'OK', 'Cancel')\r\n .pipe(take(1))\r\n .subscribe((dialogResult: DialogResult) => onComplete(dialogResult === DialogResult.REJECTED));\r\n }\r\n\r\n private getRepeaterHtmlElementId(repeaterFieldId: string, elementType: RepeaterElementType, itemIndex?: number): string {\r\n const htmlElementId = repeaterFieldId\r\n ? (itemIndex !== null && itemIndex !== undefined)\r\n ? `${repeaterFieldId}_${elementType}_${itemIndex}`\r\n : `${repeaterFieldId}_${elementType}`\r\n : null;\r\n return htmlElementId;\r\n }\r\n\r\n private getPageFieldId(formConfig: FormlyFieldConfig[], pagePath: PagePath): string {\r\n const pageConfig = this.formConfigurationParserService.findPageConfig(formConfig, ...pagePath);\r\n const pageFieldId = pageConfig?.id;\r\n return pageFieldId;\r\n }\r\n\r\n private getSectionFieldId(formConfig: FormlyFieldConfig[], sectionPath: SectionPath): string {\r\n const sectionConfig = this.formConfigurationParserService.findSectionConfig(formConfig, ...sectionPath);\r\n const sectionFieldId = sectionConfig?.id;\r\n return sectionFieldId;\r\n }\r\n\r\n getPageRepeaterHtmlElementId(formConfig: FormlyFieldConfig[], pagePath: PagePath, elementType: RepeaterElementType, itemIndex?: number): string {\r\n const pageFieldId = this.getPageFieldId(formConfig, pagePath);\r\n const htmlElementId = this.getRepeaterHtmlElementId(pageFieldId, elementType, itemIndex)\r\n return htmlElementId;\r\n }\r\n\r\n getSectionRepeaterHtmlElementId(formConfig: FormlyFieldConfig[], sectionPath: SectionPath, elementType: RepeaterElementType, itemIndex?: number): string {\r\n const sectionFieldId = this.getSectionFieldId(formConfig, sectionPath);\r\n const htmlElementId = this.getRepeaterHtmlElementId(sectionFieldId, elementType, itemIndex)\r\n return htmlElementId;\r\n }\r\n\r\n // configureFormViewMode / configureFormRepeatingPage / configureFormRepeatingSection / configureFormReadOnlyGridViewMode methods\r\n\r\n configureUserFormViewMode(\r\n getFormConfig: () => FormlyFieldConfig[],\r\n isFormEditable: () => boolean,\r\n isViewModeAllowed: () => boolean,\r\n setViewMode: (enabled: boolean) => void,\r\n getViewMode: () => boolean,\r\n allowLegacyAccountOperations: () => boolean,\r\n legacyAccountLogin: () => void,\r\n legacyAccountReset: () => void) {\r\n\r\n this.coreService.applicationFunctions['enableViewModeForUserProfile'] = () => setViewMode(true);\r\n this.coreService.applicationFunctions['disableViewModeForUserProfile'] = () => setViewMode(false);\r\n this.coreService.applicationFunctions['showEnableViewModeButtonForUserProfile'] = () => isFormEditable() && isViewModeAllowed() && !getViewMode();\r\n this.coreService.applicationFunctions['showDisableViewModeButtonForUserProfile'] = () => isFormEditable() && isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.applicationFunctions['showLegacyAccountLoginButton'] = () => isFormEditable() && allowLegacyAccountOperations();\r\n this.coreService.applicationFunctions['showLegacyAccountResetButton'] = () => isFormEditable() && allowLegacyAccountOperations();\r\n this.coreService.applicationFunctions['legacyAccountLogin'] = () => legacyAccountLogin();\r\n this.coreService.applicationFunctions['legacyAccountReset'] = () => legacyAccountReset();\r\n\r\n this.coreService.pageFunctions['isViewModeForUserProfile'] =\r\n (pageConfig: FormlyFieldConfig) => isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isSectionIncludedInViewModeForUserProfile'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig) => sectionConfig.key === SectionCodes.UserForm.viewUserProfile;\r\n\r\n this.coreService.pageFunctions['getViewModeCustomHtmlForUserProfile'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig, sectionIndex: number, questionConfigs: FormlyFieldConfig[]) => {\r\n\r\n const userOrganisationProfileQuestionConfigs = this.formConfigurationParserService.findQuestionConfigs(\r\n getFormConfig?.(),\r\n NavTabNumbers.UserForm.userProfile,\r\n PageNumbers.UserForm.profile,\r\n SectionCodes.UserForm.userOrganisationProfile)\r\n ?? [];\r\n const userProfileQuestionConfigs = this.formConfigurationParserService.findQuestionConfigs(\r\n getFormConfig?.(),\r\n NavTabNumbers.UserForm.userProfile,\r\n PageNumbers.UserForm.profile,\r\n SectionCodes.UserForm.userProfile)\r\n ?? [];\r\n\r\n const organisation = this.findFieldValue(userOrganisationProfileQuestionConfigs, QuestionCodes.UserForm.userOrganisation, '');\r\n const givenName = this.findFieldValue(userProfileQuestionConfigs, QuestionCodes.UserForm.userGivenName, '');\r\n const familyName = this.findFieldValue(userProfileQuestionConfigs, QuestionCodes.UserForm.userFamilyName, '');\r\n const email = this.findFieldValue(userProfileQuestionConfigs, QuestionCodes.UserForm.userEmail, '');\r\n const accountDisabled = this.findFieldValue(userProfileQuestionConfigs, QuestionCodes.UserForm.accountDisabled, null);\r\n\r\n const title = { name: 'User', value: `${givenName} ${familyName}`, isActive: !accountDisabled, deactivatedText: 'DISABLED' };\r\n const fields = [\r\n { name: 'Email', value: email },\r\n { name: 'Organisation', value: organisation }\r\n ];\r\n return this.toHtmlHeader({ title, fields });\r\n }\r\n }\r\n\r\n configureUserFormRepeatingSection(\r\n isFormEditable: () => boolean,\r\n isEditItemAllowed: (itemIndex?: number) => boolean,\r\n isBrowseApplicationAllowed: (itemIndex?: number) => boolean,\r\n browseApplication: (itemIndex: number) => void,\r\n removeUserAccess: (itemIndex: number, onComplete: (cancel: boolean) => void) => void) {\r\n\r\n this.coreService.repeatingSectionFunctions['onBeforeRemoveUserAccess'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void => {\r\n if (isEditItemAllowed(itemIndex)) {\r\n // If the item did not exist in the back-end but was added by the user on the form,\r\n // then deleting it will not result in any access being revoked, so there is no need to issue a warning.\r\n onComplete(false);\r\n return;\r\n }\r\n removeUserAccess(itemIndex, onComplete);\r\n }\r\n\r\n const hasWriteAccessToUserApplicationAccesses = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isUserApplicationAccessAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToUserApplicationAccesses();\r\n this.coreService.repeatingSectionFunctions['isUserApplicationAccessEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToUserApplicationAccesses() && isEditItemAllowed(itemIndex);\r\n this.coreService.repeatingSectionFunctions['isUserApplicationAccessSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToUserApplicationAccesses();\r\n this.coreService.repeatingSectionFunctions['isUserApplicationAccessRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToUserApplicationAccesses();\r\n\r\n this.coreService.repeatingSectionFunctions['isUserApplicationAccessBrowseVisible'] = (itemIndex?: number): boolean => isBrowseApplicationAllowed(itemIndex);\r\n\r\n this.coreService.repeatingSectionFunctions['browseApplication'] = (itemIndex: number): void => browseApplication(itemIndex);\r\n }\r\n\r\n configureUserFormReadOnlyGridViewMode(\r\n toggleUserRequestControls: () => void,\r\n toggleAppAdministratorAssignmentControls: () => void,\r\n toggleAppSupportAssignmentControls: () => void,\r\n toggleOrgAuthorityAssignmentControls: () => void,\r\n toggleOrgSupportAssignmentControls: () => void): void {\r\n\r\n this.coreService.applicationFunctions['toggleUserRequestControls'] = () => toggleUserRequestControls();\r\n this.coreService.applicationFunctions['toggleAppAdministratorAssignmentControls'] = () => toggleAppAdministratorAssignmentControls();\r\n this.coreService.applicationFunctions['toggleAppSupportAssignmentControls'] = () => toggleAppSupportAssignmentControls();\r\n this.coreService.applicationFunctions['toggleOrgAuthorityAssignmentControls'] = () => toggleOrgAuthorityAssignmentControls();\r\n this.coreService.applicationFunctions['toggleOrgSupportAssignmentControls'] = () => toggleOrgSupportAssignmentControls();\r\n }\r\n\r\n configureOrganisationFormViewMode(\r\n getFormConfig: () => FormlyFieldConfig[],\r\n isFormEditable: () => boolean,\r\n isViewModeAllowed: () => boolean,\r\n setViewMode: (enabled: boolean) => void,\r\n getViewMode: () => boolean) {\r\n\r\n this.coreService.applicationFunctions['enableViewModeForDetails'] = () => setViewMode(true);\r\n this.coreService.applicationFunctions['disableViewModeForDetails'] = () => setViewMode(false);\r\n this.coreService.applicationFunctions['showEnableViewModeButtonForDetails'] = () => isFormEditable() && isViewModeAllowed() && !getViewMode();\r\n this.coreService.applicationFunctions['showDisableViewModeButtonForDetails'] = () => isFormEditable() && isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isViewModeForDetails'] =\r\n (pageConfig: FormlyFieldConfig) => isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isSectionIncludedInViewModeForDetails'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig) => sectionConfig.key === SectionCodes.OrganisationForm.viewOrganisationDetails;\r\n\r\n this.coreService.pageFunctions['getViewModeCustomHtmlForDetails'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig, sectionIndex: number, questionConfigs: FormlyFieldConfig[]) => {\r\n\r\n const detailsQuestionConfigs = this.formConfigurationParserService.findQuestionConfigs(\r\n getFormConfig?.(),\r\n NavTabNumbers.OrganisationForm.organisationDetails,\r\n PageNumbers.OrganisationForm.organisationDetails,\r\n SectionCodes.OrganisationForm.organisationDetails)\r\n ?? [];\r\n\r\n const name = this.findFieldValue(detailsQuestionConfigs, QuestionCodes.OrganisationForm.name, '');\r\n const organisationAuthority = this.findFieldValue(detailsQuestionConfigs, QuestionCodes.OrganisationForm.organisationAuthority, '');\r\n const organisationEscalationAuthority = this.findFieldValue(detailsQuestionConfigs, QuestionCodes.OrganisationForm.organisationEscalationAuthority, '');\r\n const isActive = this.findFieldValue(detailsQuestionConfigs, QuestionCodes.OrganisationForm.isActive, null);\r\n\r\n const title = { name: 'Organisation', value: name, isActive: isActive };\r\n const fields = [\r\n { name: 'Organisation authorities', value: organisationAuthority },\r\n { name: 'Organisation escalation authorities', value: organisationEscalationAuthority }\r\n ];\r\n return this.toHtmlHeader({ title, fields });\r\n }\r\n }\r\n\r\n configureOrganisationFormRepeatingSection(\r\n isFormEditable: () => boolean,\r\n isOrganisationExternalCodeReadOnly: () => boolean,\r\n isReviewDefinitionReadOnly: () => boolean,\r\n isEditingReviewDefinition: (sectionIndex: number) => boolean) {\r\n\r\n this.coreService.repeatingSectionFunctions['onBeforeRemoveAlternativeName'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void =>\r\n this.showOkCancelPopup('Are you sure you want to delete this alternative name?', 'Delete Alternative Name', onComplete);\r\n\r\n this.coreService.repeatingSectionFunctions['onBeforeRemoveSubOrganisation'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void =>\r\n this.showOkCancelPopup('Are you sure you want to delete this sub-organisation?', 'Delete Sub-Organisation', onComplete);\r\n\r\n this.coreService.repeatingSectionFunctions['onBeforeRemoveOrganisationExternalCode'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void =>\r\n this.showOkCancelPopup(\r\n `\r\n

    Are you sure you want to delete this external code?

    \r\n

    Please consider that if there are applications relying on this particular external code, then the API call-back functionality might stop working.

    \r\n `,\r\n 'Delete Organisation External Code',\r\n onComplete);\r\n\r\n this.coreService.repeatingSectionFunctions['onBeforeRemoveReviewDefinition'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void =>\r\n this.showOkCancelPopup('Are you sure you want to delete this user review?', 'Delete User Review', onComplete);\r\n\r\n const hasWriteAccessToAlternativeNames = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isAlternativeNameAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAlternativeNames();\r\n this.coreService.repeatingSectionFunctions['isAlternativeNameEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAlternativeNames();\r\n this.coreService.repeatingSectionFunctions['isAlternativeNameSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAlternativeNames();\r\n this.coreService.repeatingSectionFunctions['isAlternativeNameRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAlternativeNames();\r\n\r\n const hasWriteAccessToSubOrganisations = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isSubOrganisationAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToSubOrganisations();\r\n this.coreService.repeatingSectionFunctions['isSubOrganisationEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToSubOrganisations();\r\n this.coreService.repeatingSectionFunctions['isSubOrganisationSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToSubOrganisations();\r\n this.coreService.repeatingSectionFunctions['isSubOrganisationRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToSubOrganisations();\r\n\r\n const hasWriteAccessToOrganisationExternalCodes = () => isFormEditable() && !isOrganisationExternalCodeReadOnly();\r\n this.coreService.repeatingSectionFunctions['isOrganisationExternalCodeAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToOrganisationExternalCodes();\r\n this.coreService.repeatingSectionFunctions['isOrganisationExternalCodeEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToOrganisationExternalCodes();\r\n this.coreService.repeatingSectionFunctions['isOrganisationExternalCodeSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToOrganisationExternalCodes();\r\n this.coreService.repeatingSectionFunctions['isOrganisationExternalCodeRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToOrganisationExternalCodes();\r\n\r\n const hasWriteAccessToReviewDefinitions = () => isFormEditable() && !isReviewDefinitionReadOnly();\r\n this.coreService.repeatingSectionFunctions['isReviewDefinitionAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReviewDefinitions();\r\n this.coreService.repeatingSectionFunctions['isReviewDefinitionEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReviewDefinitions();\r\n this.coreService.repeatingSectionFunctions['isReviewDefinitionSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReviewDefinitions() && !isEditingReviewDefinition(itemIndex);\r\n this.coreService.repeatingSectionFunctions['isReviewDefinitionRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReviewDefinitions();\r\n }\r\n\r\n configureOrganisationFormReadOnlyGridViewMode(\r\n toggleCustomApprovalControls: () => void): void {\r\n\r\n this.coreService.applicationFunctions['toggleCustomApprovalControls'] = () => toggleCustomApprovalControls();\r\n }\r\n\r\n configureReferenceDataFormViewMode(\r\n getFormConfig: () => FormlyFieldConfig[],\r\n isFormEditable: () => boolean,\r\n isViewModeAllowed: () => boolean,\r\n setViewMode: (enabled: boolean) => void,\r\n getViewMode: () => boolean) {\r\n\r\n this.coreService.applicationFunctions['enableViewModeForCategory'] = () => setViewMode(true);\r\n this.coreService.applicationFunctions['disableViewModeForCategory'] = () => setViewMode(false);\r\n this.coreService.applicationFunctions['showEnableViewModeButtonForCategory'] = () => isFormEditable() && isViewModeAllowed() && !getViewMode();\r\n this.coreService.applicationFunctions['showDisableViewModeButtonForCategory'] = () => isFormEditable() && isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isViewModeForCategory'] =\r\n (pageConfig: FormlyFieldConfig) => isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isSectionIncludedInViewModeForCategory'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig) => sectionConfig.key === SectionCodes.ReferenceDataForm.viewRefDataCategory;\r\n\r\n this.coreService.pageFunctions['getViewModeCustomHtmlForCategory'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig, sectionIndex: number, questionConfigs: FormlyFieldConfig[]) => {\r\n\r\n const referenceCategoryQuestionConfigs = this.formConfigurationParserService.findQuestionConfigs(\r\n getFormConfig?.(),\r\n NavTabNumbers.ReferenceDataForm.refDataCategory,\r\n PageNumbers.ReferenceDataForm.refDataCategory,\r\n SectionCodes.ReferenceDataForm.refDataCategory)\r\n ?? [];\r\n\r\n const text = this.findFieldValue(referenceCategoryQuestionConfigs, QuestionCodes.ReferenceDataForm.referenceCategoryText, '');\r\n const isActive = this.findFieldValue(referenceCategoryQuestionConfigs, QuestionCodes.ReferenceDataForm.referenceCategoryIsActive, null);\r\n\r\n const title = { name: 'Reference Data', value: text, isActive: isActive };\r\n const fields = [];\r\n return this.toHtmlHeader({ title, fields });\r\n }\r\n }\r\n\r\n configureReferenceDataFormRepeatingSection(\r\n isFormEditable: () => boolean,\r\n isRemoveItemAllowed: (itemIndex?: number) => boolean) {\r\n\r\n const hasWriteAccessToReferenceData = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isReferenceDataAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReferenceData();\r\n this.coreService.repeatingSectionFunctions['isReferenceDataEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReferenceData();\r\n this.coreService.repeatingSectionFunctions['isReferenceDataSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReferenceData();\r\n this.coreService.repeatingSectionFunctions['isReferenceDataRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReferenceData() && isRemoveItemAllowed(itemIndex);\r\n }\r\n\r\n configureApplicationFormViewMode(\r\n getFormConfig: () => FormlyFieldConfig[],\r\n isFormEditable: () => boolean,\r\n isViewModeAllowed: () => boolean,\r\n setViewMode: (enabled: boolean) => void,\r\n getViewMode: () => boolean) {\r\n\r\n this.coreService.applicationFunctions['enableViewModeForApplicationProfile'] = () => setViewMode(true);\r\n this.coreService.applicationFunctions['disableViewModeForApplicationProfile'] = () => setViewMode(false);\r\n this.coreService.applicationFunctions['showEnableViewModeButtonForApplicationProfile'] = () => isFormEditable() && isViewModeAllowed() && !getViewMode();\r\n this.coreService.applicationFunctions['showDisableViewModeButtonForApplicationProfile'] = () => isFormEditable() && isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isViewModeForApplicationProfile'] =\r\n (pageConfig: FormlyFieldConfig) => isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isSectionIncludedInViewModeForApplicationProfile'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig) => sectionConfig.key === SectionCodes.ApplicationForm.viewApplicationProfile;\r\n\r\n this.coreService.pageFunctions['getViewModeCustomHtmlForApplicationProfile'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig, sectionIndex: number, questionConfigs: FormlyFieldConfig[]) => {\r\n\r\n const applicationProfileQuestionConfigs = this.formConfigurationParserService.findQuestionConfigs(\r\n getFormConfig?.(),\r\n NavTabNumbers.ApplicationForm.applicationProfile,\r\n PageNumbers.ApplicationForm.applicationProfile,\r\n SectionCodes.ApplicationForm.applicationProfile)\r\n ?? [];\r\n\r\n const applicationName = this.findFieldValue(applicationProfileQuestionConfigs, QuestionCodes.ApplicationForm.applicationName, '');\r\n const environments = this.findFieldValue(applicationProfileQuestionConfigs, QuestionCodes.ApplicationForm.environments, '');\r\n const authenticationType = this.findFieldValue(applicationProfileQuestionConfigs, QuestionCodes.ApplicationForm.authenticationType, '');\r\n const isActive = this.findFieldValue(applicationProfileQuestionConfigs, QuestionCodes.ApplicationForm.isActive, null);\r\n\r\n const title = { name: 'Application', value: applicationName, isActive: isActive };\r\n const fields = [\r\n { name: 'Environments', value: environments },\r\n { name: 'Authentication type', value: authenticationType }\r\n ];\r\n return this.toHtmlHeader({ title, fields });\r\n }\r\n }\r\n\r\n configureApplicationFormRepeatingSection(\r\n isFormEditable: () => boolean) {\r\n\r\n this.coreService.repeatingSectionFunctions['onBeforeRemoveAlternativeName'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void =>\r\n this.showOkCancelPopup('Are you sure you want to delete this alternative name?', 'Delete Alternative Name', onComplete);\r\n\r\n this.coreService.repeatingSectionFunctions['onBeforeRemoveFunctionalRole'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void =>\r\n this.showOkCancelPopup('Are you sure you want to delete this functional role?', 'Delete Functional Role', onComplete);\r\n\r\n this.coreService.repeatingSectionFunctions['onBeforeRemoveReviewDefinition'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void =>\r\n this.showOkCancelPopup('Are you sure you want to delete this access review?', 'Delete Access Review', onComplete);\r\n\r\n const hasWriteAccessToAlternativeNames = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isAlternativeNameAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAlternativeNames();\r\n this.coreService.repeatingSectionFunctions['isAlternativeNameEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAlternativeNames();\r\n this.coreService.repeatingSectionFunctions['isAlternativeNameSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAlternativeNames();\r\n this.coreService.repeatingSectionFunctions['isAlternativeNameRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAlternativeNames();\r\n\r\n const hasWriteAccessToFunctionalRoles = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isFunctionalRoleAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToFunctionalRoles();\r\n this.coreService.repeatingSectionFunctions['isFunctionalRoleEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToFunctionalRoles();\r\n this.coreService.repeatingSectionFunctions['isFunctionalRoleSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToFunctionalRoles();\r\n this.coreService.repeatingSectionFunctions['isFunctionalRoleRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToFunctionalRoles();\r\n\r\n const hasWriteAccessToReviewDefinitions = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isReviewDefinitionAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReviewDefinitions();\r\n this.coreService.repeatingSectionFunctions['isReviewDefinitionEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReviewDefinitions();\r\n this.coreService.repeatingSectionFunctions['isReviewDefinitionSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReviewDefinitions();\r\n this.coreService.repeatingSectionFunctions['isReviewDefinitionRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToReviewDefinitions();\r\n}\r\n\r\n configureEnvironmentFormViewMode(\r\n getFormConfig: () => FormlyFieldConfig[],\r\n isFormEditable: () => boolean,\r\n isViewModeAllowed: () => boolean,\r\n setViewMode: (enabled: boolean) => void,\r\n getViewMode: () => boolean) {\r\n\r\n this.coreService.applicationFunctions['enableViewModeForEnvironment'] = () => setViewMode(true);\r\n this.coreService.applicationFunctions['disableViewModeForEnvironment'] = () => setViewMode(false);\r\n this.coreService.applicationFunctions['showEnableViewModeButtonForEnvironment'] = () => isFormEditable() && isViewModeAllowed() && !getViewMode();\r\n this.coreService.applicationFunctions['showDisableViewModeButtonForEnvironment'] = () => isFormEditable() && isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isViewModeForEnvironment'] =\r\n (pageConfig: FormlyFieldConfig) => isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isSectionIncludedInViewModeForEnvironment'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig) => sectionConfig.key === SectionCodes.ApplicationEnvironmentForm.viewEnvironment;\r\n\r\n this.coreService.pageFunctions['getViewModeCustomHtmlForEnvironment'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig, sectionIndex: number, questionConfigs: FormlyFieldConfig[]) => {\r\n\r\n const environmentQuestionConfigs = this.formConfigurationParserService.findQuestionConfigs(\r\n getFormConfig?.(),\r\n NavTabNumbers.ApplicationEnvironmentForm.environment,\r\n PageNumbers.ApplicationEnvironmentForm.environment,\r\n SectionCodes.ApplicationEnvironmentForm.environment)\r\n ?? [];\r\n\r\n const applicationName = this.findFieldValue(environmentQuestionConfigs, QuestionCodes.ApplicationEnvironmentForm.applicationName, '');\r\n const environmentName = this.findFieldValue(environmentQuestionConfigs, QuestionCodes.ApplicationEnvironmentForm.environmentName, '');\r\n const isActive = this.findFieldValue(environmentQuestionConfigs, QuestionCodes.ApplicationEnvironmentForm.isActive, null);\r\n const environmentAllowedOrganisations = this.findFieldValue(environmentQuestionConfigs, QuestionCodes.ApplicationEnvironmentForm.environmentAllowedOrganisations, '');\r\n\r\n const title = { name: 'Environment', value: [applicationName, environmentName].filter(item => item).join(' - '), isActive: isActive };\r\n const fields = [\r\n { name: 'Restrict access to organisations', value: environmentAllowedOrganisations }\r\n ];\r\n return this.toHtmlHeader({ title, fields });\r\n }\r\n }\r\n\r\n configureEnvironmentFormRepeatingPage(\r\n isFormEditable: () => boolean,\r\n forceRenderAsync: () => void) {\r\n\r\n this.coreService.repeatingPageFunctions['onBeforeAddFunctionalRole'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void => {\r\n forceRenderAsync();\r\n onComplete(false);\r\n }\r\n this.coreService.repeatingPageFunctions['onBeforeRemoveFunctionalRole'] = (itemIndex: number, onComplete: (cancel: boolean) => void): void =>\r\n this.showOkCancelPopup('Are you sure you want to delete this functional role?', 'Delete Functional Role', onComplete);\r\n\r\n const hasWriteAccessToFunctionalRoles = () => isFormEditable();\r\n this.coreService.repeatingPageFunctions['isFunctionalRoleAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToFunctionalRoles();\r\n this.coreService.repeatingPageFunctions['isFunctionalRoleEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToFunctionalRoles();\r\n this.coreService.repeatingPageFunctions['isFunctionalRoleSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToFunctionalRoles();\r\n this.coreService.repeatingPageFunctions['isFunctionalRoleRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToFunctionalRoles();\r\n\r\n const hasWriteAccessToEnvironmentCustomOrganisationApprovals = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isEnvironmentCustomOrganisationApprovalAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToEnvironmentCustomOrganisationApprovals();\r\n this.coreService.repeatingSectionFunctions['isEnvironmentCustomOrganisationApprovalEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToEnvironmentCustomOrganisationApprovals();\r\n this.coreService.repeatingSectionFunctions['isEnvironmentCustomOrganisationApprovalSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToEnvironmentCustomOrganisationApprovals();\r\n this.coreService.repeatingSectionFunctions['isEnvironmentCustomOrganisationApprovalRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToEnvironmentCustomOrganisationApprovals();\r\n\r\n const hasWriteAccessToCustomEmailTemplates = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isCustomEmailTemplateAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToCustomEmailTemplates();\r\n this.coreService.repeatingSectionFunctions['isCustomEmailTemplateEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToCustomEmailTemplates();\r\n this.coreService.repeatingSectionFunctions['isCustomEmailTemplateSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToCustomEmailTemplates();\r\n this.coreService.repeatingSectionFunctions['isCustomEmailTemplateRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToCustomEmailTemplates();\r\n\r\n const hasWriteAccessToCustomOrganisationApprovals = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isCustomOrganisationApprovalAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToCustomOrganisationApprovals();\r\n this.coreService.repeatingSectionFunctions['isCustomOrganisationApprovalEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToCustomOrganisationApprovals();\r\n this.coreService.repeatingSectionFunctions['isCustomOrganisationApprovalSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToCustomOrganisationApprovals();\r\n this.coreService.repeatingSectionFunctions['isCustomOrganisationApprovalRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToCustomOrganisationApprovals();\r\n\r\n const hasWriteAccessToApiCallBacks = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isApiCallBackAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToApiCallBacks();\r\n this.coreService.repeatingSectionFunctions['isApiCallBackEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToApiCallBacks();\r\n this.coreService.repeatingSectionFunctions['isApiCallBackSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToApiCallBacks();\r\n this.coreService.repeatingSectionFunctions['isApiCallBackRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToApiCallBacks();\r\n\r\n const hasWriteAccessToAadGroups = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isAadGroupAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAadGroups();\r\n this.coreService.repeatingSectionFunctions['isAadGroupEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAadGroups();\r\n this.coreService.repeatingSectionFunctions['isAadGroupSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAadGroups();\r\n this.coreService.repeatingSectionFunctions['isAadGroupRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToAadGroups();\r\n\r\n const hasWriteAccessToLdapGroups = () => isFormEditable();\r\n this.coreService.repeatingSectionFunctions['isLdapGroupAddVisible'] = (itemIndex?: number): boolean => hasWriteAccessToLdapGroups();\r\n this.coreService.repeatingSectionFunctions['isLdapGroupEditVisible'] = (itemIndex?: number): boolean => hasWriteAccessToLdapGroups();\r\n this.coreService.repeatingSectionFunctions['isLdapGroupSaveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToLdapGroups();\r\n this.coreService.repeatingSectionFunctions['isLdapGroupRemoveVisible'] = (itemIndex?: number): boolean => hasWriteAccessToLdapGroups();\r\n }\r\n\r\n configureReviewDefinitionFormViewMode(\r\n getFormConfig: () => FormlyFieldConfig[],\r\n isFormEditable: () => boolean,\r\n isViewModeAllowed: () => boolean,\r\n setViewMode: (enabled: boolean) => void,\r\n getViewMode: () => boolean) {\r\n\r\n this.coreService.applicationFunctions['enableViewModeForDetails'] = () => setViewMode(true);\r\n this.coreService.applicationFunctions['disableViewModeForDetails'] = () => setViewMode(false);\r\n this.coreService.applicationFunctions['showEnableViewModeButtonForDetails'] = () => isFormEditable() && isViewModeAllowed() && !getViewMode();\r\n this.coreService.applicationFunctions['showDisableViewModeButtonForDetails'] = () => isFormEditable() && isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isViewModeForDetails'] =\r\n (pageConfig: FormlyFieldConfig) => isViewModeAllowed() && getViewMode();\r\n\r\n this.coreService.pageFunctions['isSectionIncludedInViewModeForDetails'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig) => sectionConfig.key === SectionCodes.ReviewDefinitionForm.viewReviewDefinitionDetails;\r\n\r\n this.coreService.pageFunctions['getViewModeCustomHtmlForDetails'] =\r\n (pageConfig: FormlyFieldConfig, sectionConfig: FormlyFieldConfig, sectionIndex: number, questionConfigs: FormlyFieldConfig[]) => {\r\n\r\n const findQuestionConfigs = (sectionCode: string) => this.formConfigurationParserService.findQuestionConfigs(\r\n getFormConfig?.(),\r\n NavTabNumbers.ReviewDefinitionForm.reviewDefinitionDetails,\r\n PageNumbers.ReviewDefinitionForm.reviewDefinitionDetails,\r\n sectionCode)\r\n ?? [];\r\n const detailsQuestionConfigs = findQuestionConfigs(SectionCodes.ReviewDefinitionForm.reviewDefinitionDetails);\r\n const scheduleQuestionConfigs = findQuestionConfigs(SectionCodes.ReviewDefinitionForm.reviewDefinitionSchedule);\r\n const settingsQuestionConfigs = findQuestionConfigs(SectionCodes.ReviewDefinitionForm.reviewDefinitionSettings);\r\n\r\n const name = this.findFieldValue(detailsQuestionConfigs, QuestionCodes.ReviewDefinitionForm.name, '');\r\n const isActive = this.findFieldValue(detailsQuestionConfigs, QuestionCodes.ReviewDefinitionForm.isActive, null);\r\n const startDate = this.findFieldValue(scheduleQuestionConfigs, QuestionCodes.ReviewDefinitionForm.startDate, '');\r\n const durationInDays = this.findFieldValue(scheduleQuestionConfigs, QuestionCodes.ReviewDefinitionForm.durationInDays, '');\r\n const isRecurrent = this.findFieldValue(scheduleQuestionConfigs, QuestionCodes.ReviewDefinitionForm.isRecurrent, '') === OptionSetValues.ReviewDefinitionForm.YesNo.Yes;\r\n const numberOfOccurrences = this.findFieldValue(scheduleQuestionConfigs, QuestionCodes.ReviewDefinitionForm.numberOfOccurrences, 'Unlimited');\r\n const recurrencePeriodInMonths = this.findFieldValue(scheduleQuestionConfigs, QuestionCodes.ReviewDefinitionForm.recurrencePeriodInMonths, '');\r\n const useAsPrivateIndividualUserReview = this.findFieldValue(settingsQuestionConfigs, QuestionCodes.ReviewDefinitionForm.useAsPrivateIndividualUserReview, false);\r\n\r\n const title = { name: 'Review Definition', value: name, isActive: isActive };\r\n const fields = [\r\n { name: 'Start date', value: startDate },\r\n { name: 'Duration [days]', value: durationInDays },\r\n { name: 'Number of occurrences', value: isRecurrent ? numberOfOccurrences : '1' },\r\n { name: 'Recurrence [months]', value: isRecurrent ? recurrencePeriodInMonths : 'N/A' },\r\n { name: 'Use as a \"user review\" for \"private individuals\"', value: useAsPrivateIndividualUserReview ? 'Yes' : 'No' }\r\n ];\r\n return this.toHtmlHeader({ title, fields });\r\n }\r\n }\r\n\r\n configureReviewDefinitionFormReadOnlyGridViewMode(\r\n toggleReviewOccurrenceHistoryControls: () => void): void {\r\n\r\n this.coreService.applicationFunctions['toggleReviewOccurrenceHistoryControls'] = () => toggleReviewOccurrenceHistoryControls();\r\n }\r\n\r\n // FormGetId methods\r\n\r\n userFormGetAccessDefinitionId(model: any, sectionIndex: number) {\r\n return this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.UserForm.applicationAccess,\r\n PageNumbers.UserForm.applicationAccess,\r\n null,\r\n SectionCodes.UserForm.applicationRef,\r\n sectionIndex,\r\n 'id');\r\n }\r\n\r\n organisationFormGetSubOrganisationId(model: any, sectionIndex: number) {\r\n return this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.OrganisationForm.subOrganisations,\r\n PageNumbers.OrganisationForm.subOrganisations,\r\n null,\r\n SectionCodes.OrganisationForm.subOrganisations,\r\n sectionIndex,\r\n 'id');\r\n }\r\n\r\n organisationFormGetOrganisationExternalCodeId(model: any, sectionIndex: number) {\r\n return this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.OrganisationForm.organisationExternalCodes,\r\n PageNumbers.OrganisationForm.organisationExternalCodes,\r\n null,\r\n SectionCodes.OrganisationForm.organisationExternalCodes,\r\n sectionIndex,\r\n 'id');\r\n }\r\n\r\n organisationFormGetReviewDefinitionId(model: any, sectionIndex: number) {\r\n return this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.OrganisationForm.reviewDefinitions,\r\n PageNumbers.OrganisationForm.reviewDefinitions,\r\n null,\r\n SectionCodes.OrganisationForm.reviewDefinitions,\r\n sectionIndex,\r\n 'id');\r\n }\r\n\r\n referenceDataFormGetRefValueId(model: any, sectionIndex: number) {\r\n return this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.ReferenceDataForm.refDataValue,\r\n PageNumbers.ReferenceDataForm.refDataValue,\r\n null,\r\n SectionCodes.ReferenceDataForm.refDataValue,\r\n sectionIndex,\r\n 'id');\r\n }\r\n\r\n applicationFormGetFunctionalRoleId(model: any, sectionIndex: number) {\r\n return this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.ApplicationForm.functionalRoles,\r\n PageNumbers.ApplicationForm.functionalRoles,\r\n null,\r\n SectionCodes.ApplicationForm.functionalRoles,\r\n sectionIndex,\r\n 'id');\r\n }\r\n\r\n applicationFormGetReviewDefinitionId(model: any, sectionIndex: number) {\r\n return this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.ApplicationForm.reviewDefinitions,\r\n PageNumbers.ApplicationForm.reviewDefinitions,\r\n null,\r\n SectionCodes.ApplicationForm.reviewDefinitions,\r\n sectionIndex,\r\n 'id');\r\n }\r\n\r\n environmentFormGetCustomOrganisationApprovalId(model: any, pageIndex: number, sectionIndex: number) {\r\n return this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.ApplicationEnvironmentForm.role,\r\n PageNumbers.ApplicationEnvironmentForm.role,\r\n pageIndex,\r\n SectionCodes.ApplicationEnvironmentForm.customOrganisationApproval,\r\n sectionIndex,\r\n 'id');\r\n }\r\n\r\n environmentFormGetEnvironmentCustomOrganisationApprovalId(model: any, sectionIndex: number) {\r\n return this.responseParserService.findQuestionModel(\r\n model,\r\n NavTabNumbers.ApplicationEnvironmentForm.environmentCustomOrganisationApproval,\r\n PageNumbers.ApplicationEnvironmentForm.environmentCustomOrganisationApproval,\r\n null,\r\n SectionCodes.ApplicationEnvironmentForm.environmentCustomOrganisationApproval,\r\n sectionIndex,\r\n 'id');\r\n }\r\n\r\n // FormIsEditing methods\r\n\r\n userFormIsEditingAccessDefinition(model: any, sectionIndex: number): boolean {\r\n const idValue = this.userFormGetAccessDefinitionId(model, sectionIndex);\r\n return idValue !== null && idValue !== undefined;\r\n }\r\n\r\n organisationFormIsEditingSubOrganisation(model: any, sectionIndex: number): boolean {\r\n const idValue = this.organisationFormGetSubOrganisationId(model, sectionIndex);\r\n return idValue !== null && idValue !== undefined;\r\n }\r\n\r\n organisationFormIsEditingOrganisationExternalCode(model: any, sectionIndex: number): boolean {\r\n const idValue = this.organisationFormGetOrganisationExternalCodeId(model, sectionIndex);\r\n return idValue !== null && idValue !== undefined;\r\n }\r\n\r\n organisationFormIsEditingReviewDefinition(model: any, sectionIndex: number): boolean {\r\n const idValue = this.organisationFormGetReviewDefinitionId(model, sectionIndex);\r\n return idValue !== null && idValue !== undefined;\r\n }\r\n\r\n referenceDataFormIsEditingRefValue(model: any, sectionIndex: number): boolean {\r\n const idValue = this.referenceDataFormGetRefValueId(model, sectionIndex);\r\n return idValue !== null && idValue !== undefined;\r\n }\r\n\r\n applicationFormIsEditingFunctionalRole(model: any, sectionIndex: number): boolean {\r\n const idValue = this.applicationFormGetFunctionalRoleId(model, sectionIndex);\r\n return idValue !== null && idValue !== undefined;\r\n }\r\n\r\n applicationFormIsEditingReviewDefinition(model: any, sectionIndex: number): boolean {\r\n const idValue = this.applicationFormGetReviewDefinitionId(model, sectionIndex);\r\n return idValue !== null && idValue !== undefined;\r\n }\r\n\r\n environmentFormIsEditingCustomOrganisationApproval(model: any, pageIndex: number, sectionIndex: number): boolean {\r\n const idValue = this.environmentFormGetCustomOrganisationApprovalId(model, pageIndex, sectionIndex);\r\n return idValue !== null && idValue !== undefined;\r\n }\r\n\r\n environmentFormIsEditingEnvironmentCustomOrganisationApproval(model: any, sectionIndex: number): boolean {\r\n const idValue = this.environmentFormGetEnvironmentCustomOrganisationApprovalId(model, sectionIndex);\r\n return idValue !== null && idValue !== undefined;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { GetUserRequestDetailsResponse } from \"../interfaces/get-user-request-details-response.interface\";\r\nimport { GetReviewDecisionDetailsResponse } from \"../interfaces/get-review-decision-details-response.interface\";\r\n\r\nimport { HtmlHelperService } from \"./html-helper.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class FormatHtmlDetailsService {\r\n\r\n constructor(\r\n private htmlHelperService: HtmlHelperService) {\r\n }\r\n\r\n formatUserRequestDetailsHtml(response: GetUserRequestDetailsResponse): string {\r\n\r\n const userRequestDetails = this.htmlHelperService.toEncodedHtml(response) ?? {};\r\n userRequestDetails.reasonForRequestingAccess = this.htmlHelperService.toEncodedHtmlLineBreaks(userRequestDetails.reasonForRequestingAccess);\r\n userRequestDetails.reasonForRequestingAccessRevoke = this.htmlHelperService.toEncodedHtmlLineBreaks(userRequestDetails.reasonForRequestingAccessRevoke);\r\n userRequestDetails.reasonForRejection = this.htmlHelperService.toEncodedHtmlLineBreaks(userRequestDetails.reasonForRejection);\r\n\r\n const reasonForRequestingAccessHtmlParagraph = this.formatHtmlParagraph(\r\n 'Reason For Requesting Access',\r\n userRequestDetails.reasonForRequestingAccess);\r\n\r\n const reasonForRequestingAccessRevokeHtmlParagraph = this.formatHtmlParagraph(\r\n 'Reason For Requesting The Revoking Of Access',\r\n userRequestDetails.reasonForRequestingAccessRevoke);\r\n\r\n const userOrganisationRoleHtmlParagraph = this.formatHtmlParagraph(\r\n 'User Organisation Role',\r\n userRequestDetails.userOrganisationRole);\r\n\r\n const awaitingApprovalDetailsHtmlList = this.formatHtmlList(\r\n 'Pending Approval',\r\n 'The Access Request is awaiting approval by one of these users:',\r\n userRequestDetails.awaitingApprovalDetails?.approverDetails);\r\n\r\n const reasonForRejectionHtmlParagraph = this.formatHtmlParagraph(\r\n 'Reason For Rejecting The Request',\r\n userRequestDetails.reasonForRejection);\r\n\r\n const changeLogHtmlTable = this.formatHtmlTable(\r\n 'Change Log',\r\n ['Time', 'User', 'Change'],\r\n userRequestDetails.changeLog?.rows?.map(row => [row.time, row.user, row.change]));\r\n\r\n const errorDetailsHtmlParagraph = this.formatHtmlParagraph(\r\n 'Error Details',\r\n userRequestDetails.errorDetail);\r\n\r\n return (\r\n reasonForRequestingAccessHtmlParagraph +\r\n reasonForRequestingAccessRevokeHtmlParagraph +\r\n userOrganisationRoleHtmlParagraph +\r\n awaitingApprovalDetailsHtmlList +\r\n reasonForRejectionHtmlParagraph + \r\n changeLogHtmlTable +\r\n errorDetailsHtmlParagraph\r\n );\r\n }\r\n\r\n formatReviewDecisionDetailsHtml(response: GetReviewDecisionDetailsResponse): string {\r\n\r\n const reviewDecisionDetails = this.htmlHelperService.toEncodedHtml(response);\r\n reviewDecisionDetails.reasonForDenial = this.htmlHelperService.toEncodedHtmlLineBreaks(reviewDecisionDetails.reasonForDenial);\r\n\r\n const reasonForDenialHtmlParagraph = this.formatHtmlParagraph(\r\n 'Reason For The Revoke Decision',\r\n reviewDecisionDetails.reasonForDenial);\r\n\r\n const changeLogHtmlTable = this.formatHtmlTable(\r\n 'Change Log',\r\n ['Time', 'User', 'Change'],\r\n reviewDecisionDetails?.changeLog?.rows?.map(row => [row.time, row.user, row.change]));\r\n\r\n const errorDetailsHtmlParagraph = this.formatHtmlParagraph(\r\n 'Error Details',\r\n reviewDecisionDetails.errorDetail);\r\n\r\n return (\r\n reasonForDenialHtmlParagraph +\r\n changeLogHtmlTable +\r\n errorDetailsHtmlParagraph\r\n );\r\n }\r\n\r\n private formatHtmlParagraph(paragraphName: string, paragraphContent: string): string {\r\n if (!paragraphContent?.length) {\r\n return '';\r\n }\r\n const html: string[] = [];\r\n html.push(this.htmlHelperService.formatHtml('h5', paragraphName));\r\n html.push(this.htmlHelperService.formatHtml('p', paragraphContent));\r\n return html.join('');\r\n }\r\n\r\n private formatHtmlList(listName: string, listDescription: string, listItems: string[]): string {\r\n if (!listItems?.length) {\r\n return '';\r\n }\r\n const html: string[] = [];\r\n html.push(this.htmlHelperService.formatHtml('h5', listName));\r\n html.push(this.htmlHelperService.formatHtml('p', listDescription));\r\n html.push(this.htmlHelperService.formatHtmlList(HtmlHelperService.listTag, HtmlHelperService.listItemTag, listItems));\r\n return html.join('');\r\n }\r\n\r\n private formatHtmlTable(tableName: string, headerRow: string[], dataRows: string[][]): string {\r\n const html: string[] = [];\r\n html.push(this.htmlHelperService.formatHtml('h5', tableName));\r\n if (!dataRows?.length) {\r\n html.push(this.htmlHelperService.formatHtml('p', 'No data found.'));\r\n return;\r\n }\r\n html.push(this.htmlHelperService.formatHtmlTable(headerRow, dataRows));\r\n return html.join('');\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { CardSetHeaderConfiguration, MenuConfigService } from \"dspx-core\";\r\n\r\nimport { AppDataService } from \"./app-data.service\";\r\n\r\nimport { AppDataKeys, AppSelector, HeaderMenuToggleSelector, HeaderSelector, UserAvatar, VictorianGovernment } from \"../constants/app-data.constants\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HeaderCustomisationService {\r\n\r\n constructor(\r\n private menuConfigService: MenuConfigService,\r\n private appDataService: AppDataService) {\r\n }\r\n\r\n // Get the header configuration, which may or may not include the logged-in user information.\r\n getHeaderConfiguration(userProfile?: { fullName: string }): CardSetHeaderConfiguration {\r\n\r\n const headerConfiguration: CardSetHeaderConfiguration = {};\r\n\r\n headerConfiguration.applicationTitle = {\r\n label: this.appDataService.getAppData(AppDataKeys.applicationTitle),\r\n url: this.appDataService.getAppData(AppDataKeys.applicationUrl),\r\n target: '_self'\r\n };\r\n\r\n headerConfiguration.applicationLogo = {\r\n source: VictorianGovernment.logo,\r\n link: {\r\n label: this.appDataService.getAppData(AppDataKeys.applicationTitle)\r\n }\r\n };\r\n\r\n if (userProfile) {\r\n headerConfiguration.loggedInUser = {\r\n name: userProfile.fullName,\r\n imageSource: UserAvatar.source,\r\n imageDescription: userProfile.fullName,\r\n menuSubItems: [\r\n {\r\n label: \"Logout\",\r\n icon: \"pi pi-fw pi-sign-out\",\r\n routerLink: \"logout\"\r\n }\r\n ]\r\n };\r\n }\r\n\r\n return headerConfiguration;\r\n }\r\n\r\n\r\n // Ensure the menu functionality is disabled, i.e.:\r\n // - hide the \"menu toggle link\" (i.e. the link in the header that allows to toggle the menu visibility)\r\n // - hide the menu\r\n disableMenu(): void {\r\n\r\n const { isMenuVisible } = this.getMenuStatus();\r\n if (isMenuVisible) {\r\n this.toggleMenuVisibility();\r\n }\r\n\r\n this.setHeaderMenuToggleVisibility({ showHeaderMenuToggle: false });\r\n }\r\n\r\n // Ensure the menu functionality is enabled, i.e.:\r\n // - display the \"menu toggle link\" (i.e. the link in the header that allows to toggle the menu visibility)\r\n // - display the menu (only if it is supposed to be displayed by default)\r\n enableMenu(): void {\r\n\r\n this.setHeaderMenuToggleVisibility({ showHeaderMenuToggle: true });\r\n\r\n const { isMenuVisible, isMenuVisibleByDefault } = this.getMenuStatus();\r\n if (!isMenuVisible && isMenuVisibleByDefault) {\r\n this.toggleMenuVisibility();\r\n }\r\n }\r\n\r\n private getMenuStatus(): { isMenuVisible: boolean; isMenuVisibleByDefault: boolean } {\r\n return (this.menuConfigService.styleConfigService.layoutMode === 'overlay')\r\n ? { isMenuVisible: !!this.menuConfigService.overlayMenuActive, isMenuVisibleByDefault: false }\r\n : (this.menuConfigService.isDesktop())\r\n ? { isMenuVisible: !this.menuConfigService.staticMenuDesktopInactive, isMenuVisibleByDefault: true }\r\n : { isMenuVisible: !!this.menuConfigService.staticMenuMobileActive, isMenuVisibleByDefault: false };\r\n }\r\n\r\n private toggleMenuVisibility(): void {\r\n this.menuConfigService.onMenuButtonClick(new Event('click'));\r\n }\r\n\r\n private setHeaderMenuToggleVisibility(configuration: { showHeaderMenuToggle: boolean }): void {\r\n const headerMenuToggleHtmlElement = document.querySelector(`${AppSelector} ${HeaderSelector} ${HeaderMenuToggleSelector}`) as HTMLElement;\r\n if (headerMenuToggleHtmlElement) {\r\n headerMenuToggleHtmlElement.style['display'] = configuration?.showHeaderMenuToggle ? '' : 'none';\r\n }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { ComponentDialogSelector } from \"../constants/app-data.constants\";\r\n\r\nexport type PageActionButtonPath = [navTabNumber: number, pageNumber: number, pageActionButtonCode: string];\r\n\r\nexport type HtmlTableColumnConfiguration = {\r\n isRightAligned?: boolean;\r\n}\r\n\r\nexport type HtmlTableConfiguration = {\r\n dataColumns?: { [columnIndex: number]: HtmlTableColumnConfiguration };\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class HtmlHelperService {\r\n\r\n toEncodedHtml(input: any): any {\r\n input = input ?? null;\r\n if (input instanceof Array) {\r\n return input.map(item => this.toEncodedHtml(item));\r\n }\r\n if (input !== null && typeof input === 'object') {\r\n const object = {};\r\n for (var propertyName in input) {\r\n object[propertyName] = this.toEncodedHtml(input[propertyName]);\r\n }\r\n return object;\r\n }\r\n return input?.toString()?.replace(/[\\u00A0-\\u9999<>\\&]/g, s => `&#${s.charCodeAt(0)};`);\r\n }\r\n\r\n toEncodedHtmlLineBreaks(input: string): string {\r\n return input?.replace(/\\n/g, '
    ');\r\n }\r\n\r\n formatHtml(tag: string, innerHtml: string, classAttribute?: string): string {\r\n const classAttributeSuffix = classAttribute ? ` class=\"${classAttribute}\"` : '';\r\n return `<${tag}${classAttributeSuffix}>${innerHtml ?? ''}`;\r\n }\r\n\r\n formatHtmlList(tag: string, itemTag: string, items: string[]): string {\r\n return this.formatHtml(tag, items?.map(item => this.formatHtml(itemTag, item))?.join(''));\r\n }\r\n\r\n formatHtmlTable(headerRow: string[], dataRows: string[][], configuration?: HtmlTableConfiguration): string {\r\n const html: string[] = [];\r\n html.push(``);\r\n html.push('');\r\n html.push('');\r\n for (const cell of headerRow ?? []) {\r\n html.push(this.formatHtml('th', cell));\r\n }\r\n html.push('');\r\n html.push('');\r\n html.push('');\r\n for (const dataRow of dataRows ?? []) {\r\n html.push('');\r\n let columnIndex = 0;\r\n for (const cell of dataRow ?? []) {\r\n const classAttribute = configuration?.dataColumns?.[columnIndex]?.isRightAligned ? 'duopv2-compact-table-cell-right-aligned' : '';\r\n html.push(this.formatHtml('td', cell, classAttribute));\r\n columnIndex++;\r\n }\r\n html.push('');\r\n }\r\n html.push('');\r\n html.push('
    ');\r\n return html.join('');\r\n }\r\n\r\n static readonly fieldNameTag = 'b';\r\n static readonly fieldValueTag = 'i';\r\n static readonly listTag = 'ul';\r\n static readonly listItemTag = 'li';\r\n\r\n formatFieldName(name: string): string {\r\n return this.formatHtml(HtmlHelperService.fieldNameTag, name);\r\n }\r\n\r\n formatFieldValue(value: string): string {\r\n return this.formatHtml(HtmlHelperService.fieldValueTag, value);\r\n }\r\n\r\n formatField(field: { name: string, value: string }): string {\r\n return `${this.formatFieldName(field?.name)}: ${this.formatFieldValue(field?.value)}`;\r\n }\r\n\r\n formatFieldValues(values: string[]): string {\r\n return this.formatHtmlList(HtmlHelperService.listTag, HtmlHelperService.listItemTag, values?.map(value => this.formatFieldValue(value)));\r\n }\r\n\r\n formatFields(fields: { name: string, value: string }[]): string {\r\n return this.formatHtmlList(HtmlHelperService.listTag, HtmlHelperService.listItemTag, fields?.map(field => this.formatField(field)));\r\n }\r\n\r\n createField(name: string, value: string): { name: string, value: string } {\r\n return { name, value };\r\n }\r\n\r\n createFieldFromPropertyName(object: any, propertyName: string): { name: string, value: string } {\r\n return this.createField(propertyName, object?.[propertyName]?.toString());\r\n }\r\n\r\n setFocusToHtmlElementByClassName(className: string, delayMs = 0): void {\r\n this.setFocusToHtmlElement(() => document.getElementsByClassName(className)?.[0] as HTMLElement, delayMs);\r\n }\r\n\r\n setFocusToHtmlElementById(id: string, delayMs = 0): void {\r\n this.setFocusToHtmlElement(() => document.getElementById(id), delayMs);\r\n }\r\n\r\n setFocusToHtmlElement(getHtmlElement: () => HTMLElement, delayMs = 0): void {\r\n const functionToInvoke = () => {\r\n const element = getHtmlElement();\r\n if (element) {\r\n element.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n element.focus({ preventScroll: true });\r\n }\r\n };\r\n this.invokeFunction(() => functionToInvoke(), delayMs);\r\n }\r\n\r\n getElementsById(id: string): TElement[] {\r\n const elements = Array.from(document.querySelectorAll(`#${id}`));\r\n return elements;\r\n }\r\n\r\n getPageActionButtonId(pageNumber: number, pageActionButtonCode: string): string {\r\n const pageActionButtonId = `page${pageNumber}-${pageActionButtonCode}`;\r\n return pageActionButtonId;\r\n }\r\n\r\n ensurePageActionButtonsAreEnabled(pageActionButtonPaths: PageActionButtonPath[]): void {\r\n const pageActionButtonIds = pageActionButtonPaths\r\n .map(pageActionButtonPath => {\r\n const [navTabNumber, pageNumber, pageActionButtonCode] = pageActionButtonPath;\r\n return this.getPageActionButtonId(pageNumber, pageActionButtonCode);\r\n });\r\n const distinctPageActionButtonIds = [...new Set(pageActionButtonIds)];\r\n for (const pageActionButtonId of distinctPageActionButtonIds) {\r\n const htmlButtonElements = this.getElementsById(pageActionButtonId);\r\n for (const htmlButtonElement of htmlButtonElements ?? []) {\r\n htmlButtonElement?.removeAttribute('disabled');\r\n }\r\n }\r\n }\r\n\r\n getComponentDialogButtonHtmlElement(appSelector: string, componentSelector: string, buttonTitle: string): HTMLElement {\r\n return document.querySelector(`${appSelector} ${componentSelector} ${ComponentDialogSelector} p-button[title='${buttonTitle}']`) as HTMLElement;\r\n }\r\n\r\n getComponentDialogIconButtonHtmlElement(appSelector: string, componentSelector: string, buttonClass: string): HTMLElement {\r\n return document.querySelector(`${appSelector} ${componentSelector} ${ComponentDialogSelector} button.${buttonClass}`) as HTMLElement;\r\n }\r\n \r\n clickButtonByTitle(appSelector: string, componentSelector: string, buttonTitle: string, delayMs: number = 0): void {\r\n this.invokeFunction(() => this.clickElement(appSelector, componentSelector, `button[title='${buttonTitle}']`), delayMs);\r\n }\r\n\r\n addOneOffEventListener(target: TEventTarget, name: string, listener: (event: any) => void): void {\r\n const onEventCallBack = (e: any) => {\r\n target.removeEventListener(name, onEventCallBack);\r\n listener(e);\r\n };\r\n target.addEventListener(name, onEventCallBack);\r\n }\r\n\r\n uploadFile(fileTypes?: string[], onSelect?: (file: File) => void, onCancel?: () => void): void {\r\n let element: HTMLInputElement = null;\r\n try {\r\n element = document.createElement('input');\r\n element.setAttribute('style', 'display: none');\r\n element.setAttribute('type', 'file');\r\n if (fileTypes && fileTypes.length) {\r\n element.setAttribute('accept', fileTypes.join());\r\n }\r\n this.addOneOffEventListener(element, \"change\", changeEvent => {\r\n onSelect?.(changeEvent.target.files[0]);\r\n element?.remove();\r\n });\r\n this.addOneOffEventListener(element, \"cancel\", cancelEvent =>\r\n {\r\n onCancel?.();\r\n element?.remove();\r\n });\r\n element.click();\r\n }\r\n catch {\r\n element?.remove();\r\n }\r\n }\r\n\r\n private invokeFunction(functionToInvoke: () => void, delayMs: number = null): void {\r\n if (delayMs !== null && delayMs !== undefined && delayMs >= 0) {\r\n setTimeout(() => functionToInvoke(), delayMs);\r\n } else {\r\n functionToInvoke();\r\n }\r\n }\r\n\r\n private clickElement(appSelector: string, componentSelector: string, elementSelector: string): void {\r\n const element = document.querySelector(`${appSelector} ${componentSelector} ${elementSelector}`) as HTMLElement;\r\n element?.click();\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nexport type NavTabPath = [navTabNumber: number];\r\nexport type PagePath = [navTabNumber: number, pageNumber: number];\r\nexport type SectionPath = [navTabNumber: number, pageNumber: number, sectionCode: string];\r\nexport type QuestionPath = [navTabNumber: number, pageNumber: number, sectionCode: string, questionCode: string];\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ResponseParserService {\r\n\r\n findNavTabModel(model: any, navTabNumber: number): any {\r\n return model?.form?.tabs?.[`tab${navTabNumber}`];\r\n }\r\n\r\n findPageModel(model: any, navTabNumber: number, pageNumber: number, pageIndex: number): any {\r\n const isTryingToFindRepeatingPageItem = pageIndex !== null && pageIndex !== undefined;\r\n return isTryingToFindRepeatingPageItem\r\n ? this.findNavTabModel(model, navTabNumber)?.[`page${pageNumber}`]?.[pageIndex]\r\n : this.findNavTabModel(model, navTabNumber)?.[`page${pageNumber}`];\r\n }\r\n\r\n findSectionModel(model: any, navTabNumber: number, pageNumber: number, pageIndex: number, sectionCode: string, sectionIndex: number): any {\r\n const isTryingToFindRepeatingSectionItem = sectionIndex !== null && sectionIndex !== undefined;\r\n return isTryingToFindRepeatingSectionItem\r\n ? this.findPageModel(model, navTabNumber, pageNumber, pageIndex)?.[sectionCode]?.[sectionIndex]\r\n : this.findPageModel(model, navTabNumber, pageNumber, pageIndex)?.[sectionCode];\r\n }\r\n\r\n findQuestionModel(model: any, navTabNumber: number, pageNumber: number, pageIndex: number, sectionCode: string, sectionIndex: number, questionCode: string) {\r\n return this.findSectionModel(model, navTabNumber, pageNumber, pageIndex, sectionCode, sectionIndex)?.[questionCode];\r\n }\r\n\r\n replaceNavTabModel(model: any, navTabNumber: number, newNavTabModel: any): boolean {\r\n const navTabParentModel = model?.form?.tabs;\r\n if (navTabParentModel) {\r\n navTabParentModel[`tab${navTabNumber}`] = newNavTabModel;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n replacePageModel(model: any, navTabNumber: number, pageNumber: number, pageIndex: number, newPageModel: any): boolean {\r\n const pageParentModel = this.findNavTabModel(model, navTabNumber);\r\n if (pageParentModel) {\r\n const isTryingToReplaceRepeatingPageItem = pageIndex !== null && pageIndex !== undefined;\r\n if (isTryingToReplaceRepeatingPageItem) {\r\n const pageItemParentModel = pageParentModel[`page${pageNumber}`];\r\n if (pageItemParentModel) {\r\n pageItemParentModel[pageIndex] = newPageModel;\r\n return true;\r\n }\r\n }\r\n else {\r\n pageParentModel[`page${pageNumber}`] = newPageModel;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n replaceSectionModel(model: any, navTabNumber: number, pageNumber: number, pageIndex: number, sectionCode: string, sectionIndex: number, newSectionModel: any): boolean {\r\n const sectionParentModel = this.findPageModel(model, navTabNumber, pageNumber, pageIndex);\r\n if (sectionParentModel) {\r\n const isTryingToReplaceRepeatingSectionItem = sectionIndex !== null && sectionIndex !== undefined;\r\n if (isTryingToReplaceRepeatingSectionItem) {\r\n const sectionItemParentModel = sectionParentModel[sectionCode];\r\n if (sectionItemParentModel) {\r\n sectionItemParentModel[sectionIndex] = newSectionModel;\r\n return true;\r\n }\r\n }\r\n else {\r\n sectionParentModel[sectionCode] = newSectionModel;\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n replaceQuestionModel(model: any, navTabNumber: number, pageNumber: number, pageIndex: number, sectionCode: string, sectionIndex: number, questionCode: string, newQuestionModel: any): boolean {\r\n const questionParentModel = this.findSectionModel(model, navTabNumber, pageNumber, pageIndex, sectionCode, sectionIndex);\r\n if (questionParentModel) {\r\n questionParentModel[questionCode] = newQuestionModel;\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n // Making sure that a SingleCheckBox question, after it is ticked and then un-ticked again, has a model of undefined instead of false, so that validations work as expected.\r\n // For example, if the question is mandatory, changing the model from false to undefined ensures that the client-side validation will be triggered.\r\n handleSingleCheckBoxQuestionChanges(\r\n getModel: () => any,\r\n setModel: (model: any) => void,\r\n singleCheckBoxQuestionPaths: QuestionPath[]): number {\r\n\r\n const model = getModel();\r\n\r\n let resetCount = 0;\r\n for (const [navTabNumber, pageNumber, sectionCode, questionCode] of singleCheckBoxQuestionPaths ?? []) {\r\n\r\n const getIndexes = (objectOrArrayOfObjects: any) => Array.isArray(objectOrArrayOfObjects) ? [...objectOrArrayOfObjects.keys()] : [null];\r\n\r\n const pageIndexes = getIndexes(this.findPageModel(model, navTabNumber, pageNumber, null));\r\n for (const pageIndex of pageIndexes) {\r\n\r\n const sectionIndexes = getIndexes(this.findSectionModel(model, navTabNumber, pageNumber, pageIndex, sectionCode, null))\r\n for (const sectionIndex of sectionIndexes) {\r\n\r\n const singleCheckBoxQuestionModel = this.findQuestionModel(model, navTabNumber, pageNumber, pageIndex, sectionCode, sectionIndex, questionCode);\r\n if (singleCheckBoxQuestionModel === false) {\r\n this.replaceQuestionModel(model, navTabNumber, pageNumber, pageIndex, sectionCode, sectionIndex, questionCode, undefined);\r\n resetCount++;\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (resetCount > 0) {\r\n setModel({ ...model });\r\n }\r\n\r\n return resetCount;\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SessionStorageService {\r\n\r\n get(key: TKey): TValue {\r\n const stringKey = this.trySerialise(key);\r\n const stringValue = this.tryGetItem(stringKey);\r\n const value = this.tryDeserialise(stringValue);\r\n return value;\r\n }\r\n\r\n set(key: TKey, value: TValue): void {\r\n if (value) {\r\n const stringKey = this.trySerialise(key);\r\n const stringValue = this.trySerialise(value)\r\n this.trySetItem(stringKey, stringValue);\r\n }\r\n else {\r\n const stringKey = this.trySerialise(key);\r\n this.tryRemoveItem(stringKey);\r\n }\r\n }\r\n\r\n private tryGetItem(key: string): string {\r\n try { return window.sessionStorage.getItem(key); }\r\n catch { return null; }\r\n }\r\n\r\n private trySetItem(key: string, value: string): void {\r\n try { window.sessionStorage.setItem(key, value); }\r\n catch { }\r\n }\r\n\r\n private tryRemoveItem(key: string): void {\r\n try { window.sessionStorage.removeItem(key); }\r\n catch { }\r\n }\r\n\r\n private tryDeserialise(s: string): T {\r\n try { return JSON.parse(s) as T; }\r\n catch { return null; }\r\n }\r\n\r\n private trySerialise(o: T): string {\r\n try { return JSON.stringify(o); }\r\n catch { return null; }\r\n }\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\n\r\nimport { take } from \"rxjs\";\r\n\r\nimport { CardSetTransformationService, FormConfigurationRequest, FormConfigurationService, HeaderService, MenuService, UserService } from \"dspx-core\";\r\n\r\nimport { AppDataKeys } from \"../constants/app-data.constants\";\r\nimport { ApiEndpointKeys } from \"../constants/api-endpoints.constants\";\r\nimport { Templates, Versions } from \"../constants/templates.constants\";\r\n\r\nimport { AppDataService } from \"./app-data.service\";\r\nimport { HeaderCustomisationService } from \"./header-customisation.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class UserProfileService {\r\n\r\n constructor(\r\n private userService: UserService,\r\n private headerService: HeaderService,\r\n private menuService: MenuService,\r\n private formConfigurationService: FormConfigurationService,\r\n private appDataService: AppDataService,\r\n private headerCustomisationService: HeaderCustomisationService,\r\n private cardSetTransformationService: CardSetTransformationService) {\r\n }\r\n\r\n private isUserProfileSet = false;\r\n\r\n setHeaderAndMenuFromUserProfile(): void {\r\n\r\n if (this.isUserProfileSet) {\r\n return;\r\n }\r\n this.isUserProfileSet = true;\r\n\r\n // Get Logged In User and update header\r\n this.userService\r\n .getLoggedInUser('getLoggedInUser')\r\n .pipe(take(1))\r\n .subscribe(userProfile => {\r\n const headerConfig = this.headerCustomisationService.getHeaderConfiguration({ fullName: userProfile.fullName });\r\n this.headerService.onHeaderUpdated(headerConfig);\r\n this.appDataService.setAppData(AppDataKeys.userProfile, userProfile);\r\n });\r\n\r\n // Configure the menu\r\n const request: FormConfigurationRequest = {\r\n apiEndpointKey: ApiEndpointKeys.getFormConfig,\r\n templateId: Templates.menu,\r\n versionNo: Versions.latest,\r\n entityId: null\r\n };\r\n this.formConfigurationService\r\n .getFormConfigAndResponse(request)\r\n .pipe(take(1))\r\n .subscribe(data => {\r\n const menuConfig = this.cardSetTransformationService.extractMenuConfigFromFormConfig([data.configData.config]);\r\n this.menuService.onMenuLoad(menuConfig);\r\n this.headerCustomisationService.enableMenu();\r\n });\r\n }\r\n}\r\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\r\n\r\nimport { AutoCompleteFieldType } from 'dspx-core';\r\n\r\n@Component({\r\n selector: 'duop-v2-autocomplete',\r\n templateUrl: './duop-v2-autocomplete.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\n\r\n// This FieldType is identical to the DSPX AutoCompleteFieldType FieldType, except for:\r\n// - the filtering of items is based not only on the start of the item, but on any sub-string within the item)\r\n// - the placeholder text is set to empty instead of the label text, which is redundant.\r\nexport class DuopV2AutoCompleteFieldType extends AutoCompleteFieldType {\r\n filter($event) {\r\n const items = (this.props.options as any[]) ?? [];\r\n const fieldName = this.props.labelProp ? this.props.labelProp : 'label';\r\n const query = $event.query.toLowerCase();\r\n this.filteredList = items.filter(item => item[fieldName].toLowerCase().indexOf(query) >= 0);\r\n }\r\n}\r\n","\r\n\r\n","// This file can be replaced during build by using the `fileReplacements` array.\r\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\r\n// The list of file replacements can be found in `angular.json`.\r\n\r\nexport const environment = {\r\n production: false\r\n};\r\n\r\n/*\r\n * For easier debugging in development mode, you can import the following file\r\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\r\n *\r\n * This import should be commented out in production mode because it will have a negative impact\r\n * on performance if an error is thrown.\r\n */\r\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","/* (ignored) */","/* (ignored) */","/* (ignored) */"],"names":["RouterModule","DspxLogoutComponent","RouteConstants","ApplicationUserComponent","ReferenceDataComponent","ApplicationComponent","ApplicationDashboardComponent","ApplicationEnvironmentComponent","UserListComponent","UserRequestListComponent","ApprovalListComponent","ReferenceDataListComponent","ApplicationListComponent","OrganisationListComponent","LandingComponent","OrganisationComponent","ApplicationUserVerificationComponent","ApplicationUserRegistrationComponent","ReviewListComponent","ReviewDefinitionComponent","ReviewDefinitionListComponent","MyAppsComponent","UserLegacyProfileSetupComponent","GlobalSetupComponent","UserTermsAndConditionsComponent","OnBehalfOfTermsAndConditionsComponent","ComponentDeactivationService","HelpComponent","routes","path","component","termsAndConditions","user","onBehalfOf","logout","verify","canDeactivate","register","myApps","list","prefix","edit","userLegacyProfileSetup","resetEdit","userRequest","approval","review","referenceData","organisation","application","applicationDashboard","applicationEnvironment","reviewDefinition","reviewOccurrenceList","globalSetup","help","AppRoutingModule","_","_2","_3","forRoot","imports","i1","exports","take","ApiEndpoints","AppDataKeys","AppComponent","constructor","appDataService","headerCustomisationService","footerCustomisationService","coreService","addressService","userService","formConfigurationService","menuConfigService","menuService","headerService","ngOnInit","menuLoaded$","subscribe","config","menuConfig","headerUpdated$","headerConfig","styleConfigService","layoutMode","layoutColor","darkMenu","ripple","inputStyle","primengConfig","endpoints","getFormConfig","configuration","default","getReferenceDataConfigAndResponse","getConfigAndResponse","getOrganisationConfigAndResponse","getApplicationConfigAndResponse","getApplicationDashboardConfigAndResponse","getEnvironmentDefinitionConfigAndResponse","getReviewDefinitionConfigAndResponse","getReviewDecisionsAdminModeConfigAndResponse","reviewDecision","getAdminModeConfigAndResponse","getGlobalSetupConfigAndResponse","getApplicationUserEmptyConfigAndResponse","applicationUser","getEmptyConfigAndResponse","getApplicationUserConfigAndResponse","getMyAppsConfigAndResponse","getUserRegistrationConfigAndResponse","getRegistrationConfigAndResponse","getApplicationUserDraftConfigAndResponse","getDraftConfigAndResponse","getMyAppsDraftConfigAndResponse","getUserRegistrationDraftConfigAndResponse","getRegistrationDraftConfigAndResponse","getUserLegacyProfileSetupConfigAndResponse","getUserLegacyProfileSetupResetConfigAndResponse","getResetConfigAndResponse","addressApiSearchEndpoint","address","search","addressApiLgaEndpoint","lga","applicationFunctions","conditionFunctions","pageFunctions","repeatingPageFunctions","repeatingSectionFunctions","getFromHtmlAndSaveToAppData","htmlElementIdAndAppDataKey","htmlAttributeName","setAppData","getAttributeFromHtmlElement","applicationTitle","applicationUrl","environmentName","environmentBannerBgColor","environmentBannerColor","maxGridRowCount","maxBulkOperationItemCount","googleRecaptchaSiteKey","userTermsAndConditions","onBehalfOfTermsAndConditions","ldapNotFederatedAccountSignInUrl","ldapNotFederatedAccountResetUrl","ldapLegacyUserOnboardingPortalName","privateIndividualOrganisationId","fileDownloadMetadataHeaderName","technicalSupportEmail","getAppData","environmentBannerMessage","getLoggedInUser","users","window","open","getHeaderConfiguration","footerConfig","getFooterConfiguration","post","getGlobalSettings","pipe","response","informationBannerConfig","globalSettings","ngAfterViewInit","disableMenu","i0","ɵɵdirectiveInject","AppDataService","i2","HeaderCustomisationService","i3","FooterCustomisationService","i4","CoreService","AddressService","UserService","FormConfigurationService","MenuConfigService","MenuService","HeaderService","selectors","decls","vars","consts","template","AppComponent_Template","rf","ctx","ɵɵelement","ɵɵelementStart","ɵɵlistener","AppComponent_Template_div_click_1_listener","onLayoutClick","ɵɵelementEnd","ɵɵadvance","ɵɵproperty","ɵɵpureFunctionV","_c0","overlayMenuActive","staticMenuDesktopInactive","staticMenuMobileActive","ɵɵpureFunction0","_c1","BrowserModule","BrowserAnimationsModule","FormsModule","ReactiveFormsModule","CommonModule","HttpClientModule","FormlyModule","FormlyPrimeNGModule","DividerModule","CardModule","ButtonModule","MessagesModule","ToggleButtonModule","AccordionModule","AutoCompleteModule","DspxCoreModule","CheckboxFieldType","SwitchFieldType","ButtonFieldType","DateFieldType","DateTimeFieldType","FileUploadFieldType","AddressFieldType","MaskedInputFieldType","SelectButtonFieldType","TextAreaFieldType","MultiselectFieldType","ParagraphFieldType","PasswordFieldType","StepsFieldType","TabsFieldType","PageFieldType","PageRepeatingFieldType","SectionFieldType","SectionRepeatingFieldType","TableFieldType","FormNavigationFieldType","dspxRequiredValidator","whitespaceValidator","sameAsValidator","differentToValidator","eitherMandatoryValidator","dateLessThanValidator","dateLessThanOrEqualToValidator","dateGreaterThanValidator","dateGreaterThanOrEqualToValidator","numberGreaterThanValidator","numberLessThanValidator","verificationRequiredValidator","urlValidator","SearchBoxFieldType","FormSummaryFieldType","TimeFieldType","SingleCheckboxFieldType","RadioFieldType","DspxWrapperFormField","DspxWrapperContainer","DspxRadioWrapperFormField","PBIEmbeddedFieldType","HtmlHeadingFieldType","DspxWrapperFilter","FilterFieldType","CardSectionFieldType","CardSectionRepeatingFieldType","CardSetPageFieldType","CardSetPageRepeatingFieldType","CardSetTabsFieldType","CardSetTabsFlatFieldType","InputFieldType","SelectFieldType","InformationBannerComponent","DuopV2AutoCompleteFieldType","AppModule","bootstrap","wrappers","name","types","validators","validation","extras","resetFieldOnHide","checkExpressionOn","lazyRender","declarations","CardSetTransformationService","FormActions","NavTabNumbers","PageNumbers","QuestionCodes","ReadOnlyAccessPageActionButtons","ApiEndpointKeys","Templates","BaseListComponent","route","router","spinnerService","dialogService","responseParserService","htmlHelperService","excelExportService","excelImportService","userProfileService","fieldTypeReplacements","cardSetWithFlatTabsFieldTypeReplacements","templateId","isNavigatingFromApplicationDetail","initialise","ApplicationDashboardForm","environments","dashboard","getApplicationEnvironments","id","setHeaderAndMenuFromUserProfile","paramMap","get","formServiceEndpoint","cancel","formLoad","event","overrideHtmlTitleSetByDspxFramework","ensurePageActionButtonsAreEnabledOnFormLoad","loadGridDataOnFormLoad","actionButtonClicked","field","key","environmentPlaceholder","type","View","Edit","navigateToApplicationEnvironmentDetail","data","Export","exportApplicationEnvironmentToXlsx","entityIds","Import","clickedRow","importApplicationEnvironmentFromXlsx","entityId","excelImportResult","isCancelled","loadGridData","navigateBackToApplicationDetail","navigateBackToApplicationList","navigate","applicationEnvironmentFragment","ActivatedRoute","Router","SpinnerService","DialogService","ResponseParserService","HtmlHelperService","i5","i6","ExcelExportService","i7","ExcelImportService","i8","UserProfileService","features","ɵɵInheritDefinitionFeature","ApplicationDashboardComponent_Template","ApplicationDashboardComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","$event","ApplicationDashboardComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","ApplicationDashboardComponent_Template_dspx_card_set_base_form_onCancel_0_listener","versionNo","PopupCodes","SectionCodes","ServerErrorPopupCodes","Versions","BaseDetailComponent","dialogHelperService","componentDeactivationService","errorService","dataService","formDataService","latest","applicationId","editing","isViewModeForEnvironment","pageIndex","sectionIndex","environmentFormIsEditingCustomOrganisationApproval","baseForm","model","environmentFormIsEditingEnvironmentCustomOrganisationApproval","isFormEditable","configureEnvironmentFormViewMode","fields","enabled","configureEnvironmentFormRepeatingPage","forceRenderAsync","formLoaded","ApplicationEnvironmentForm","handlePostFormLoadActions","modelChanged","handleSingleCheckBoxChanges","save","saveDataRequest","versionNumber","expectedLastUpdateTime","lastUpdatedTime","isSubmit","isFormValid","markAllFieldsAsTouched","formControl","valid","showValidationSummary","showDialog","Common","ValidationError","saveData","request","showSpinner","errorHandler","hideSpinner","handleWarnings","r","SaveApplicationEnvironment","includes","message","activeDialog","SaveSuccessful","details","navigateBackToApplicationDashboard","dialogSubmitted","environmentSkipOrganisationApprovalQuestionPath","environmentCustomOrganisationApproval","environmentSkipOrganisationApproval","skipOrganisationApprovalQuestionPath","role","customOrganisationApproval","skipOrganisationApproval","handleSingleCheckBoxQuestionChanges","ignoreUnsavedChanges","applicationDashboardFragment","DialogHelperService","ErrorService","DataService","FormDataService","i9","i10","ApplicationEnvironmentComponent_Template","ApplicationEnvironmentComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ApplicationEnvironmentComponent_Template_dspx_card_set_base_form_onModelChange_0_listener","ApplicationEnvironmentComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ApplicationEnvironmentComponent_Template_dspx_card_set_base_form_onSave_0_listener","ApplicationEnvironmentComponent_Template_dspx_card_set_base_form_onCancel_0_listener","FormCustomActions","FilterQuestionDefaults","FilterQuestionCodes","ComponentSelectors","DashboardNames","AppSelector","FilterQuestionLabels","applicationList","ApplicationListForm","applications","getApplications","getFilterName","ApplicationList","sectionPath","searchQuestionCode","applicationSearch","customQuestionCode","applicationFilter","customModelVisibleKeys","getFilterRequestFromModels","searchModel","customModel","searchTerm","active","applicationFilterActive","environment","applicationFilterEnvironment","authenticationTypes","applicationFilterAuthenticationType","getDefaultFilterRequest","filterHandler","setInitialFilterRequest","getInitialFilterRequest","hasNonEmptyCustomProperties","clickButtonByTitle","filterData","saveFilterRequest","action","dialogButtonClicked","applicationPlaceholder","ManageEnvironments","Delete","entity","deleteEntity","delete","DeleteConfirmation","DeleteSuccess","Custom","buttonType","Add","BulkExport","applicationExportToDataTablesRequest","getApplicationExportToDataTablesRequest","exportApplicationsToXlsx","BulkImport","importApplicationsFromXlsx","getFilterRequest","entities","getQuestionValue","map","ApplicationListComponent_Template","ApplicationListComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ApplicationListComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ApplicationListComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","ApplicationListComponent_Template_dspx_card_set_base_form_onFilter_0_listener","BaseApplicationUserComponent","recaptchaService","applicationUserService","formatHtmlDetailsService","settings","isMyApps","hasAnonymousAccess","draftModeEndpointKey","editModeEndpointKey","insertModeEndpointKey","getIdForDraftMode","navigationState","draftId","getIdForEditMode","getIdForInsertMode","getIsDraftMode","getIsEditMode","getIsEmailReadOnly","isDraftMode","isEditMode","getApplicationUserId","getApplicationUserRegistrationId","applicationUserRegistrationId","navigateOnCancel","navigateAfterSave","saveSuccessfulPopup","UserForm","SaveSuccessfulRegistration","customErrorPopups","showUserRequestDetailsEndpoint","withdrawUserRequestEndpoint","componentSelector","UserRegistration","NgRecaptcha3Service","ApplicationUserService","i11","FormatHtmlDetailsService","i12","ApplicationUserRegistrationComponent_Template","ApplicationUserRegistrationComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ApplicationUserRegistrationComponent_Template_dspx_card_set_base_form_onModelChange_0_listener","ApplicationUserRegistrationComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ApplicationUserRegistrationComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","ApplicationUserRegistrationComponent_Template_dspx_card_set_base_form_onSave_0_listener","ApplicationUserRegistrationComponent_Template_dspx_card_set_base_form_onCancel_0_listener","userVerification","recaptchaSiteKey","init","then","status","console","log","UserVerificationForm","getToken","token","recaptchaToken","error","verifyUserRegistration","VerificationCompleted","navigateBackToLandingPage","ApplicationUserVerificationComponent_Template","ApplicationUserVerificationComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ApplicationUserVerificationComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ApplicationUserVerificationComponent_Template_dspx_card_set_base_form_onSave_0_listener","ApplicationUserVerificationComponent_Template_dspx_card_set_base_form_onCancel_0_listener","applicationUserId","getDetails","withdraw","User","ApplicationUserComponent_Template","ApplicationUserComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ApplicationUserComponent_Template_dspx_card_set_base_form_onModelChange_0_listener","ApplicationUserComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ApplicationUserComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","ApplicationUserComponent_Template_dspx_card_set_base_form_onSave_0_listener","ApplicationUserComponent_Template_dspx_card_set_base_form_onCancel_0_listener","isViewModeForDetails","isEditingFunctionalRole","applicationFormIsEditingFunctionalRole","isEditingReviewDefinition","applicationFormIsEditingReviewDefinition","manageEnvironments","configureApplicationFormViewMode","configureApplicationFormRepeatingSection","ApplicationForm","SaveApplication","navigateToApplicationDashboard","ApplicationComponent_Template","ApplicationComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ApplicationComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ApplicationComponent_Template_dspx_card_set_base_form_onSave_0_listener","ApplicationComponent_Template_dspx_card_set_base_form_onCancel_0_listener","UserRequestSource","approvalList","ApprovalListForm","approvals","getUserAccessRequestsForApproval","ApprovalList","approvalSearch","approvalFilter","approvalFilterRequestType","approvalFilterApplication","approvalFilterEnvironment","roles","approvalFilterFunctionalRole","approvalFilterOrganisation","escalationLevels","approvalFilterEscalationLevel","progressiveModelUpdate","filterQuestionPath","filterSubQuestionCodeAncestorGroup","filterSubQuestionCodeDescendantGroups","RequestDetails","ApprovalsApprovalConfirmation","approveAccessRequests","accessRequests","ApprovalsRejectionConfirmation","rejectAccessRequests","reasonForRejection","registerSelectedItems","approvalPlaceholder","Details","requestUniqueKey","userRequestSource","Access","showUserRequestDetails","Approve","selectedItems","getSelectedItems","confirmApproveAccessRequests","Reject","confirmRejectAccessRequests","approvalExportToDataTablesRequest","getApprovalExportToDataTablesRequest","exportApprovalsToXlsx","showSimpleInformationPopup","formatUserRequestDetailsHtml","confirmBulkOperation","popupCode","length","ApprovalsNoneSelected","parseInt","ApprovalsTooManyItems","popupModel","popupMessagePlaceholders","itemCount","toString","openDialog","apiEndpoint","approve","completionPopupCode","ApprovalsApprovalCompleted","performBulkOperation","additionalFields","reject","ApprovalsRejectionCompleted","accessRequestIds","accessRequest","onComplete","loadGridDataAfterSave","ApprovalListComponent_Template","ApprovalListComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ApprovalListComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ApprovalListComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","ApprovalListComponent_Template_dspx_card_set_base_form_onFilter_0_listener","DialogResult","RepeaterElementType","OptionSetCodes","ServerCallDebounceTimeMs","ReadOnlyGrid","internalDomains","Set","accessDefinitionCodesByRequiredProperty","requiringReasonForRequest","requiringUserOrganisationRoleType","additionalInfoByAccessDefinitionCode","Map","hasOrganisation","optionalOrganisation","organisationId","readOnlyGridControlGroupNames","userRequests","appSupportAssignments","appAdministratorAssignments","orgAuthorityAssignments","orgSupportAssignments","getCurrentNavigation","state","readOnlyGridRegistry","changeUserOrganisationEndpoint","changeUserOrganisationAnonymous","changeUserOrganisation","saveEndpoint","saveAnonymous","idForDraftMode","idForEditMode","idForInsertMode","setDirtyFlagAfterLoading","resetDirtyFlagAfterLoading","isEditingAccessDefinition","userFormIsEditingAccessDefinition","showReasonForRequest","has","getAccessDefinitionCode","showUserOrganisationRoleType","organisationUpdateIsNotAllowed","isInternalUser","args","shouldShowReadOnlyGrid","configureUserFormViewMode","isViewModeForUserProfile","allowLegacyAccountOperations","legacyAccountLogin","legacyAccountReset","configureUserFormReadOnlyGridViewMode","toggleReadOnlyGridVisibility","isEditItemAllowed","isBrowseApplicationAllowed","configureUserFormRepeatingSection","browseApplication","confirmRevokeUserAccess","email","getEmailFromModel","isInternalEmail","Object","entries","getUserOrganisation","onPopupClosed","dialogResult","CannotChangeOrganisation","scrollToAccessDefinitionSection","handleOrganisationChange","handleEmailChangeWithDebounce","preSelectSingleEnvironmentAndRoleByUserSelection","internalUserNotFound","showInternalUserProfileNotification","NoUserAccessDefinitions","DuplicateUserAccessDefinition","RevokeUserRequestConfirmation","revokeUserRequest","reasonForRequestRevoke","userRequestGrid","Withdraw","withdrawUserRequest","saveDataFunction","SaveUser","accessDefinitionTopOfAddButtonId","getSectionRepeaterHtmlElementId","applicationAccess","applicationRef","TopOfAddButton","setFocusToHtmlElementById","showConfirm","WithdrawUserRequestConfirmation","ACCEPTED","replaceUserRequestGrid","userRequestGridModel","forceRender","REJECTED","accessDefinitionCode","getAccessDefinitionAdditionalInfo","accessDefinitionAdditionalInfo","addToRevokedAccessDefinitions","openInNewTabAbsoluteUrl","YesNo","Yes","previousOrganisation","changeOrganisationFunction","userOrganisationChangeRequest","JSON","stringify","newNavigationState","reloadPage","clearTimeout","handleEmailChangeDebounceTimeout","setTimeout","handleEmailChange","accessBeingEdited","getAccessBeingEdited","applicationName","applicationBeingEdited","updateAccessBeingEditedInModel","envName","RoleDropdownLoadMs","roleName","environmentBeingEdited","questionCode","optionSetId","hasSingleOption","optionSet","getOptionSet","firstOption","code","forceRenderByModelChange","optionSets","Environment","OptionSetCode","Role","getUserEmail","trim","toUpperCase","size","indexOfAtSymbol","indexOf","domain","substring","getInternalUserProfile","callback","isUserProfileValid","showNotification","severity","isClosable","isSticky","durationMs","showSimpleNotification","handleChange","replaceUserProfile","BaseApplicationUserComponent_Template","encapsulation","DspxCardSetBaseFormComponent","BaseComponent","getPopupRegistryFunction","popups","pageActionButtonPaths","ensurePageActionButtonsAreEnabled","formName","viewQuery","BaseComponent_Query","Observable","isVisible","setVisibility","showButton","hideButton","statusBar","grid","toggleVisibility","isButtonControl","controlName","ignoreCanDeactivateGuard","formHasUpdates","unloadNotification","returnValue","warnings","showWarnings","ignoreWarnings","responseAndConfig","showDialogIfRequired","subscriber","nextAndComplete","next","complete","navigateIfRequired","clientRoute","split","forwardClientRoute","absoluteUrl","navigateToAbsoluteUrl","location","href","commands","executeReloadIgnoringUnsavedChanges","routeReuseStrategy","shouldReuseRoute","onSameUrlNavigation","url","canDeactivateResult","controlGroupName","readOnlyGrid","form","dirty","markAsPristine","markAsDirty","savePreviousModel","clonedModel","parse","previousModel","getPreviousModel","formHasUpdatesToFileUploadQuestions","fileUploadQuestion","fileUploadQuestions","currentQuestionModel","getQuestionModel","previousQuestionModel","hostBindings","BaseDetailComponent_HostBindings","BaseDetailComponent_beforeunload_HostBindingHandler","ɵɵresolveWindow","catchError","EMPTY","throwError","CustomStatusBarSelector","QueryStringParameters","FilterAction","GridDataFilterHandler","getModel","searchQuestionPath","customQuestionPath","initialFilterRequest","filterFromSessionStorage","getFromSessionStorage","queryParams","queryStringParameters","filterFromQueryString","getGridDataFilterFromQueryString","setIntoSessionStorage","defaultFilterRequest","filterAction","isClearFilters","ClearFilters","setQuestionValue","filterRequest","some","value","Array","isArray","navTabNumber","pageNumber","sectionCode","findQuestionModel","newQuestionModel","replaceQuestionModel","GridDataFilter","_selectedItemsRegister","gridPagePath","getListApiEndpoint","filterSettings","hasFilters","extraMessage","hasMoreItemsMessage","loadGridDataAsync","suppressErrorHandler","findPageModel","clearSelectedItemsOfAllControls","updateModel","statusBarHtmlElement","document","querySelector","statusBarContent","hasMoreItems","innerHTML","entityDescription","deleteEndpoint","deleteConfirmationPopupCode","deleteSuccessPopupCode","isSuccess","errorCode","errorData","ServerError","fieldKey","clearSelectedItems","filter","item","setModel","isProgressiveModelUpdateRequired","filterQuestionModel","ancestorGroup","ancestor","descendantGroups","descendantGroup","storedFilterQuestionModel","groupIndex","descendantIndex","descendant","updateModelForNextDescendantGroup","BaseListComponent_Template","Guid","RequestSaveResultStatus","fileService","fileUploadEndpoint","fileRemoveEndpoint","fileDownloadEndpoint","fileUploadFormIdentifiers","GlobalSetupForm","userGuidesForAnonymousUser","userGuidesForUser","userGuidesForOrganisationSupport","userGuidesForOrganisationAuthority","userGuidesForApplicationSupport","userGuidesForApplicationAdministrator","userGuidesForAdminReadOnly","userGuidesForIdamReviewer","userGuidesForIdamOnboarder","userGuidesForIdamApprover","userGuidesForIdamAdministrator","getUserGuidesQuestionModel","userGuides","UpdatedSinceReadTime","SaveGlobalSetup","FileService","GlobalSetupComponent_Template","GlobalSetupComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","GlobalSetupComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","GlobalSetupComponent_Template_dspx_card_set_base_form_onSave_0_listener","GlobalSetupComponent_Template_dspx_card_set_base_form_onCancel_0_listener","Dialogs","DepartmentOfFamiliesFairnessAndHousing","DepartmentOfHealth","HelpComponent_ng_template_74_li_3_Template_a_click_1_listener","userGuide_r2","ɵɵrestoreView","_r1","$implicit","ctx_r2","ɵɵnextContext","ɵɵresetView","onClickUserGuide","ɵɵtext","ɵɵtextInterpolate","ɵɵtemplate","HelpComponent_ng_template_74_li_3_Template","ɵɵpropertyInterpolate1","ɵɵsanitizeUrl","fileSaverService","htmlTitle","dhWebsitePrivacyStatementUrl","dffhWebsitePrivacyStatementUrl","eBusinessPortalName","eBusinessPortalUrl","downloadUserGuide","isUserLoggedIn","userGuideConfig","loggedInUserGuides","anonymousUserGuides","files","userGuidesAreAvailable","downloadUserGuideAnonymous","download","dispositionHeader","headers","fileName","getContentFileName","body","SERVER_ERROR","userProfile","FileSaverService","HelpComponent_Template","HelpComponent_div_73_Template","HelpComponent_ng_template_74_Template","ɵɵtemplateRefExtractor","HelpComponent_ng_template_76_Template","ɵɵpropertyInterpolate","ɵɵtextInterpolate1","moreInformationWithUserGuides_r4","moreInformationWithoutUserGuides_r5","SecurityContext","ɵɵstyleProp","ctx_r0","foregroundColour","backgroundColour","ɵɵsanitizeHtml","_config","defaultConfig","sanitiseHtml","dividerConfig","_dividerConfig","defaultDividerConfig","top","bottom","sanitizer","html","sanitisedHtml","sanitize","HTML","DomSanitizer","inputs","InformationBannerComponent_Template","InformationBannerComponent_p_divider_0_Template","InformationBannerComponent_div_1_Template","InformationBannerComponent_p_divider_2_Template","LandingComponent_div_11_ng_template_2_Template_button_click_5_listener","ctx_r1","hideConditionSection","LandingComponent_div_11_ng_template_2_Template","LandingComponent_ng_template_17_Template_button_click_1_listener","_r3","signIn","LandingComponent_ng_template_17_Template_button_click_2_listener","acceptTerms","showConditions","showConditionSection","authentication","LandingComponent_Template","ɵɵtwoWayListener","LandingComponent_Template_p_checkbox_ngModelChange_4_listener","ɵɵtwoWayBindingSet","LandingComponent_Template_a_click_8_listener","LandingComponent_div_11_Template","LandingComponent_ng_template_17_Template","ɵɵtwoWayProperty","SaveSuccessfulMyApps","getMyAppsUserRequestDetails","withdrawMyAppsUserRequest","MyApps","MyAppsComponent_Template","MyAppsComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","MyAppsComponent_Template_dspx_card_set_base_form_onModelChange_0_listener","MyAppsComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","MyAppsComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","MyAppsComponent_Template_dspx_card_set_base_form_onSave_0_listener","MyAppsComponent_Template_dspx_card_set_base_form_onCancel_0_listener","OnBehalfOfTermsAndConditionsComponent_Template","organisationList","OrganisationListForm","organisations","getOrganisations","OrganisationList","organisationSearch","organisationFilter","organisationFilterActive","organisationPlaceholder","organisationExportToDataTablesRequest","getOrganisationExportToDataTablesRequest","exportOrganisationsToXlsx","importOrganisationsFromXlsx","OrganisationListComponent_Template","OrganisationListComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","OrganisationListComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","OrganisationListComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","OrganisationListComponent_Template_dspx_card_set_base_form_onFilter_0_listener","customApprovals","isEditingSubOrganisation","organisationFormIsEditingSubOrganisation","isEditingOrganisationExternalCode","organisationFormIsEditingOrganisationExternalCode","organisationFormIsEditingReviewDefinition","isOrganisationExternalCodeReadOnly","isReviewDefinitionReadOnly","configureOrganisationFormViewMode","configureOrganisationFormReadOnlyGridViewMode","configureOrganisationFormRepeatingSection","OrganisationForm","SaveOrganisation","navigateBackToDashboard","OrganisationComponent_Template","OrganisationComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","OrganisationComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","OrganisationComponent_Template_dspx_card_set_base_form_onSave_0_listener","OrganisationComponent_Template_dspx_card_set_base_form_onCancel_0_listener","referenceDataList","ReferenceDataListForm","getReferenceDataCategories","ReferenceDataList","referenceDataSearch","referenceDataFilter","referenceDataFilterActive","referenceDataPlaceholder","categoryText","referenceDataExportToDataTablesRequest","getReferenceDataExportToDataTablesRequest","exportReferenceDataToXlsx","importReferenceDataFromXlsx","ReferenceDataListComponent_Template","ReferenceDataListComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ReferenceDataListComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ReferenceDataListComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","ReferenceDataListComponent_Template_dspx_card_set_base_form_onFilter_0_listener","isViewModeForCategory","isEditingRefValue","referenceDataFormIsEditingRefValue","isUndeletableRefValue","undeletableReferenceDataIds","referenceDataFormGetRefValueId","configureReferenceDataFormViewMode","configureReferenceDataFormRepeatingSection","ReferenceDataForm","SaveReferenceData","ReferenceDataComponent_Template","ReferenceDataComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ReferenceDataComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ReferenceDataComponent_Template_dspx_card_set_base_form_onSave_0_listener","ReferenceDataComponent_Template_dspx_card_set_base_form_onCancel_0_listener","reviewDefinitionList","ReviewDefinitionListForm","reviewDefinitions","getReviewDefinitions","ReviewDefinitionList","reviewDefinitionSearch","reviewDefinitionFilter","reviewDefinitionFilterActive","BulkExportChoice","reviewDefinitionExportToDataTablesRequest","getReviewDefinitionExportToDataTablesRequest","bulkExportType","BulkExportType","Standard","exportReviewDefinitionsToXlsx","ImportCompatible","exportReviewDefinitionsToXlsxImportCompatible","reviewDefinitionPlaceholder","BulkExportChooseType","importReviewDefinitionsFromXlsx","ReviewDefinitionListComponent_Template","ReviewDefinitionListComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ReviewDefinitionListComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ReviewDefinitionListComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","ReviewDefinitionListComponent_Template_dspx_card_set_base_form_onFilter_0_listener","reviewOccurrenceHistory","configureReviewDefinitionFormViewMode","configureReviewDefinitionFormReadOnlyGridViewMode","ReviewDefinitionForm","reviewOccurrenceHistoryGrid","reviewOccurrenceDetailFragment","reviewDecisionListFragment","SaveReviewDefinition","ReviewDefinitionComponent_Template","ReviewDefinitionComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ReviewDefinitionComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ReviewDefinitionComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","ReviewDefinitionComponent_Template_dspx_card_set_base_form_onSave_0_listener","ReviewDefinitionComponent_Template_dspx_card_set_base_form_onCancel_0_listener","reviewList","isAdminMode","reviewDefinitionId","reviewOccurrenceId","ReviewListForm","reviews","getReviewDecisionsAdminMode","getReviewDecisions","ReviewListAdminMode","ReviewList","reviewSearch","reviewFilter","reviewFilterActive","decisions","reviewFilterDecision","statuses","reviewFilterStatus","reviewType","reviewFilterReviewType","reviewFilterApplication","reviewFilterEnvironment","reviewFilterFunctionalRole","reviewFilterOrganisation","escalationLevel","reviewFilterEscalationLevel","reviewFilterDecisionsAdminMode","reviewFilterDecisions","ReviewDecisionDetails","ReviewApprovalConfirmation","approveReviewDecisions","reviewDecisions","ReviewDenialConfirmation","denyReviewDecisions","reasonForDenial","reviewPlaceholder","showReviewDecisionDetails","confirmApproveReviewDecisions","Deny","confirmDenyReviewDecisions","Purge","messagePlaceholders","userListRoute","ReviewPurgeInformation","reviewExportToDataTablesRequest","getReviewExportToDataTablesRequest","exportReviewsToXlsx","reviewDecisionId","endPoint","getDetailsAdminMode","formatReviewDecisionDetailsHtml","ReviewNoneSelected","ReviewTooManyItems","ReviewApprovalCompleted","deny","ReviewDenialCompleted","reviewDecisionIds","ReviewListComponent_Template","ReviewListComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","ReviewListComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","ReviewListComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","ReviewListComponent_Template_dspx_card_set_base_form_onFilter_0_listener","ReviewListComponent_Template_dspx_card_set_base_form_onCancel_0_listener","UserLegacyProfileSetupForm","forwardUrl","SaveUserLegacyProfile","navigateToMyApps","navigateToLegacyPortalAccountReset","UserLegacyProfileSetupComponent_Template","UserLegacyProfileSetupComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","UserLegacyProfileSetupComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","UserLegacyProfileSetupComponent_Template_dspx_card_set_base_form_onSave_0_listener","UserLegacyProfileSetupComponent_Template_dspx_card_set_base_form_onCancel_0_listener","MinWaitForDialogToCloseMs","PopupCodeButtonTitles","UserPurgeType","PurgeUserResultStatus","SyncUserResultStatus","directoryLookupService","userList","directoryLookupPatchConfig","appSelector","UserListForm","UserList","acceptButtonTitle","DirectoryLookup","Accept","rejectButtonTitle","limitedDirectoryLookupConfiguration","onCloseLookup","directoryLookupConfiguration","onOpenDirectoryLookupSubDialogCallBack","closeDialogEvent","closeDialogEventToUse","openDialogAsync","directoryLookupPopupModel","rejectButtonElement","getComponentDialogButtonHtmlElement","addOneOffEventListener","closeDialogButtonElement","getComponentDialogIconButtonHtmlElement","getApplicationUsers","userSearch","userFilter","userFilterApplication","userFilterEnvironment","userFilterFunctionalRole","userFilterOrganisation","disableApplicationAccessAutomatedEmails","userFilterDisableApplicationAccessAutomatedEmails","accountDisabled","userFilterAccountDisabled","legacyAccountDisabled","userFilterLegacyAccountDisabled","openSearchDialogWithCloseCallback","title","onCloseDialogEvent","DirectoryLookupResult","resultMessage","resultTitle","LimitedDirectoryLookup","limitedDirectoryLookupType","LimitedDirectoryLookupType","AzureAdUser","searchAzureAdUserLimited","limitedDirectoryLookupValue","LdapUser","searchLdapProtocolUserLimited","lookupDirectoryName","LookupDirectoryName","LdapProtocol","ldapProtocolLookupType","LdapProtocolLookupType","ProtocolUser","LdapProtocolLookup","LdapScim","ldapScimLookupType","LdapScimLookupType","ScimUser","LdapScimLookup","AzureAd","azureAdLookupType","AzureAdLookupType","AzureAdLookup","searchLdapProtocolUser","ldapProtocolLookupValue","ProtocolGroup","searchLdapProtocolGroup","ProtocolOrganisation","searchLdapProtocolOrganisation","ProtocolApplication","searchLdapProtocolApplication","ScimUserAndGroups","searchLdapScimUser","ldapScimLookupOnlyExactMatch","ldapScimLookupValue","ScimGroup","searchLdapScimGroup","searchAzureAdUser","azureAdLookupOnlyExactMatch","azureAdLookupValue","Group","searchAzureAdGroup","Domain","searchAzureAdDomain","UserSendInvitation","userTabSendInvitationEmail","sendSingleUserInvitation","userExportToDataTablesRequest","getUserExportToDataTablesRequest","exportUsersToXlsx","StandardFromEmailList","uploadFile","file","validateEmailsAndExportUsersToXlsxFromEmailList","exportUsersToXlsxImportCompatible","PurgeUserConfirmation","userId","userEmail","purgeUserConfirmationPurgeType","DeleteType","DbAndAzureAd","purgeUser","FromBothDbAndAzureAd","DbOnly","FromDbOnly","SyncUserConfirmation","syncUser","userPlaceholder","Sync","SendInvitation","importUsersFromXlsx","BulkPurge","purgeUsersFromXlsx","BulkSync","syncUsersFromXlsx","showInstructionsDialog","showConfirmationDialog","purgeResponse","summary","formatPurgeSummaryHtml","showCompletedDialog","onSuccess","exportDataTablesToXlsx","exportResponse","onCancel","syncResponse","formatSyncSummaryHtml","bulkExportChoicePopupModel","validateEmails","emails","exportUsersToXlsxFromEmailList","patchConfig","displayCloseButton","titleMessagePlaceholders","patchConfirmDialogValidationIssue","onOpenDialogCallBack","userPurgeType","purge","Success","PurgeUserSuccess","Error","PurgeUserError","sync","SyncUserSuccess","SyncUserError","sendInvitation","success","UserTabSendInvitationSuccessful","UserTabSendInvitationFailed","totalItems","totalSuccessItems","totalFailureItems","addFieldIfNotEmpty","push","summaryHtml","formatHtml","formatFields","DirectoryLookupService","UserListComponent_Template","UserListComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","UserListComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","UserListComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","UserListComponent_Template_dspx_card_set_base_form_onFilter_0_listener","userRequestList","UserRequestListForm","getUserRequests","UserRequestList","userRequestSearch","userRequestFilter","statusCategories","requestFilterRequestStatusCategory","requestFilterRequestType","requestFilterApplication","requestFilterEnvironment","requestFilterFunctionalRole","requestFilterOrganisation","userRequestPlaceholder","SendInvitations","requestUniqueKeys","sendUserRequestInvitations","Retry","retryUserRequests","Repair","repairUserRequests","userRequestExportToDataTablesRequest","getUserRequestExportToDataTablesRequest","exportUserRequestsToXlsx","confirmPopupCode","BulkOperationConfirmSendInvitations","sendInvitations","fileNamePrefix","reloadOnComplete","BulkOperationConfirmRetry","retry","BulkOperationConfirmRepair","repair","BulkOperationNoItems","BulkOperationTooManyItems","exportToXlsx","formatBulkOperationSummary","BulkOperationCompleted","operationSummary","totalNotApplicableItems","UserRequestListComponent_Template","UserRequestListComponent_Template_dspx_card_set_base_form_onFormLoad_0_listener","UserRequestListComponent_Template_dspx_card_set_base_form_onDialogSubmit_0_listener","UserRequestListComponent_Template_dspx_card_set_base_form_onActionButtonClick_0_listener","UserRequestListComponent_Template_dspx_card_set_base_form_onFilter_0_listener","UserTermsAndConditionsComponent_Template","pbi","embedInfo","directorySearch","exportToDataTables","exportToDataTablesFromEmailList","exportToDataTablesImportCompatible","importFromDataTables","purgeFromDataTables","syncFromDataTables","exportToDataTablesAdminMode","ReviewDecisionResult","VictorianGovernment","logo","UserAvatar","source","HeaderSelector","HeaderMenuToggleSelector","ComponentDialogSelector","UserVerification","UserLegacyProfileSetup","ApplicationDashboard","Application","ApplicationEnvironment","Organisation","ReferenceData","ReviewDefinition","GlobalSetup","Other","Landing","Help","InformationBanner","UserTermsAndConditions","OnBehalfOfTermsAndConditions","No","ReviewFilterActive","ApplicationFilterActive","OrganisationFilterActive","ReferenceDataFilterActive","ReviewDefinitionFilterActive","OptionSetValues","ClientError","CLIENT_ERROR","VALIDATION","ImportErrorPopupCodePrefixes","userPurge","userSync","userImport","referenceDataImport","organisationImport","applicationImport","environmentImport","reviewDefinitionImport","formNavigation","formNavigationBottom","applicationProfile","functionalRoles","organisationDetails","subOrganisations","organisationExternalCodes","refDataCategory","refDataValue","reviewDefinitionDetails","profile","viewUserProfile","userOrganisationProfile","conditionsOfUse","revokedApplicationRef","viewApplicationProfile","viewEnvironment","viewOrganisationDetails","viewRefDataCategory","viewReviewDefinitionDetails","reviewDefinitionSchedule","reviewDefinitionSettings","userHasOrganisation","userOrganisation","userFamilyName","userGivenName","userPreferredName","userMiddleName","userPhoneWork","userPhoneMobile","userConditionsAgree","authenticationType","isActive","environmentAllowedOrganisations","organisationAuthority","organisationEscalationAuthority","referenceCategoryText","referenceCategoryIsActive","startDate","durationInDays","isRecurrent","numberOfOccurrences","recurrencePeriodInMonths","useAsPrivateIndividualUserReview","approvalFilterRequestStatus","NotReviewed","PageActionButtonCodes","menu","PurgeUserErrorCode","SyncUserErrorCode","fileSaver","ApiService","httpClient","titleService","appSettings","sessionStorageService","apiUrl","appData","generatePdf","relativeUrl","downloadFile","getUrl","responseType","observe","a","createElement","setAttribute","appendChild","URL","createObjectURL","target","click","removeChild","fileURL","err","contentDispositionHeader","parts","replace","endpoint","postAndFetch","fetchData","getCsv","requestBody","defaultFileName","metadata","excelMimeType","Blob","Date","getTime","saveAs","getDataTableSet","getTransientId","elementId","attributeName","getElementById","attributes","set","setTitle","ɵɵinject","HttpClient","Title","ApplicationSettings","SessionStorageService","factory","ɵfac","providedIn","findQuestionModelFromUserProfileSection","getUserProfileQuestionModel","getUserGivenName","getUserFamilyName","sectionModel","getAccessDefinitionsSectionModel","applicationCodeAndEnvironmentCode","functionalRoleCode","accessDefinition","find","isEditing","replaceUserProfileQuestionModel","givenName","familyName","phoneWork","phoneMobile","userConditionsAgreeQuestionPath","sourceSectionIndex","sourceSectionItemModel","destinationSectionItemModel","destinationSectionPath","destinationSectionModel","findSectionModel","replaceSectionModel","userProfileQuestionModel","CollectionService","compare","item1","item2","getComparisonValue","comparisonValue1","comparisonValue2","orderBy","items","slice","sort","openConfirmDialog","UNSAVED_CHANGES","defaultDialogTitle","subscription","dialogRequested","waitUntil","acceptButtonElement","unsubscribe","condition","msWaits","evaluateLater","iteration","msWait","placeholders","dataTitle","toHtmlString","warningHtmlTable","getWarningHtmlTable","showSimplePopup","entry","toEncodedHtml","htmlList","htmlString","headerRow","dataRows","warning","getPopupText","htmlTable","formatHtmlTable","popupRegistry","getPopupRegistry","popup","p","popupText","text","collectionService","lookupType","callbackToShowPopup","formatAzureAdUserLimitedHtml","onlyExactMatch","formatAzureAdUserHtml","formatAzureAdGroupHtml","formatAzureAdDomainHtml","formatLdapProtocolUserLimitedHtml","formatLdapProtocolUserHtml","formatLdapProtocolGroupHtml","formatLdapProtocolOrganisationHtml","formatLdapProtocolApplicationHtml","includeGroupMemberships","formatLdapScimUserHtml","formatLdapScimGroupHtml","formatResponseHeader","formatResponseMessage","setFocusToHtmlElementByClassName","paragraphTag","headerTag","errorMessage","matches","hasMoreMatches","formatAzureAdUserSummariesHtml","userDetailsHtml","userDetails","formatAzureAdUserLimitedDetailsHtml","ldapUserMatchHtml","ldapUserMatch","formatLdapUserMatchHtml","subHeaderTag","getUserGroupTitle","displayName","getUserAppRoleAssignmentTitle","resourceDisplayName","appRoleId","formatUserGroupsHtml","userGroups","userGroup","formatAzureAdGroupDetailsHtml","join","formatUserAppRoleAssignmentsHtml","userAppRoleAssignments","userAppRoleAssignment","formatAzureAdUserAppRoleAssignmentHtml","formatAzureAdUserDetailsHtml","userGroupsHtml","userAppRoleAssignmentsHtml","group","formatAzureAdGroupSummariesHtml","groupDetailsHtml","groupDetails","formatAzureAdDomainSummariesHtml","domainDetailsHtml","domainDetails","formatAzureAdDomainDetailsHtml","formatLdapProtocolUserSummariesHtml","formatLdapProtocolUserLimitedDetailsHtml","azureAdUserMatchHtml","azureAdUserMatch","formatAzureAdUserMatchHtml","cn","getUserSecurityTitle","secAuthority","getUserOrganisationRoleTitle","dhsOrgRoleId","formatUserSecuritiesHtml","userSecurities","userSecurity","formatLdapProtocolUserSecurityHtml","formatUserOrganisationRolesHtml","userOrganisationRoles","userOrganisationRole","formatLdapProtocolUserOrganisationRoleHtml","formatLdapProtocolGroupDetailsHtml","warningMessageHtml","warningMessage","formatLdapProtocolUserDetailsHtml","userSecuritiesHtml","userOrganisationRolesHtml","getGroupApplicationTitle","dhsAppNameId","getGroupApplicationRoleTitle","parentDhsAppNameId","dhsApplicationRoleName","formatGroupApplicationsHtml","groupApplications","groupApplication","formatLdapProtocolApplicationDetailsHtml","formatGroupApplicationRolesHtml","groupApplicationRoles","groupApplicationRole","formatLdapProtocolApplicationRoleHtml","formatLdapProtocolGroupSummariesHtml","groupApplicationsHtml","groupApplicationRolesHtml","getOrganisationApplicationTitle","getOrganisationSubOrganisationTitle","dhsOrgNameId","formatOrganisationApplicationsHtml","organisationApplications","organisationApplication","formatOrganisationSubOrganisationsHtml","organisationSubOrganisations","organisationSubOrganisation","formatLdapProtocolOrganisationDetailsHtml","formatLdapProtocolOrganisationSummariesHtml","organisationDetailsHtml","organisationApplicationsHtml","organisationSubOrganisationsHtml","getApplicationRoleTitle","getApplicationInvocationMethodTitle","dhsInvocationMethod","formatApplicationRolesHtml","applicationRoles","applicationRole","formatApplicationInvocationMethodsHtml","applicationInvocationMethods","applicationInvocationMethod","formatLdapProtocolApplicationInvocationMethodHtml","formatLdapProtocolApplicationSummariesHtml","applicationDetailsHtml","applicationDetails","applicationRolesHtml","applicationInvocationMethodsHtml","formatUserDetailsHtml","formatScimObjectsHtml","formatLdapScimUserSummariesHtml","formatGroupDetailsHtml","formatLdapScimGroupSummariesHtml","createFieldFromPropertyName","createField","formatFieldValues","otherMails","businessPhones","getUserIdentityTitle","issuer","formatUserIdentitiesHtml","userIdentities","userIdentity","formatAzureAdUserIdentityHtml","identities","userIdentityHtml","userAppRoleAssignmentHtml","groupTypes","supportedServices","userSecurityHtml","userOrganisationRoleHtml","applicationRoleHtml","applicationInvocationMethodHtml","scimObjects","preformattedTag","scimObjectHtml","scimObject","jsonObject","userSummaries","userSummariesHtml","u","mail","userPrincipalName","surname","onPremisesSamAccountName","userType","groupSummaries","groupSummariesHtml","g","description","domainSummaries","domainSummariesHtml","d","dhsDominoDisplayName","sn","uniqueIdentifier","organisationSummaries","organisationSummariesHtml","o","dhsOrganisationId","applicationSummaries","applicationSummariesHtml","dhsApplicationName","userName","StatusCode","Message","serverValidationErrorsToHtml","errorStatusEnumValue","undefined","customErrorPopup","validationErrors","stringArrayToHtmlUnorderedList","serverValidationErrorsToStringArray","array","listItems","x","excelService","getExportResponse","transientId","dataSetFriendlyName","workSheetInfos","dataTables","dataTable","workSheetName","tableName","workSheetData","writeWorkBookToFile","ExcelService","ExcelImportError","excelParserService","validateViaXlsx","result","handleError","prePurgeRequest","skipConfirmation","prePurgeResponse","actualPurgeRequest","actualPurgeResponse","preSyncRequest","preSyncResponse","actualSyncRequest","actualSyncResponse","importFromXlsxWithInstructions","importFromXlsxWithoutInstructions","validateFileTypePopupCode","validateUnknownErrorPopupCode","processFunction","uploadAndParseWorkBook","importInstructionsPopupCode","importFileTypePopupCode","importConfirmationPopupCode","importSuccessfulPopupCode","importFromXlsx","postDataTables","uploadWorkBook","parseWorkBook","fileTypeErrorPopupCode","reader","FileReader","onload","validFileTypes","readAsBinaryString","unknownErrorPopupCode","confirmationPopupCode","preImportRequest","preImportResponse","confirmationPopupMessagePlaceholder","importChanges","formatImportChangesHtml","entityChangeAnalyses","actualImportRequest","actualImportResponse","analyses","encode","cell","rowTotal","totalRemoved","totalAdded","totalModified","totalUnmodified","colTotal","getValue","reduce","accumulator","entityRows","entityName","totalRow","concat","htmlTableConfiguration","dataColumns","isRightAligned","ExcelParserService","XLSX","xlsxWorkSheets","getXlsxWorkSheets","xlsxWorkSheet","xlsxWorkSheetName","xlsxWorkSheetData","getXlsxWorkBook","xlsxWorkBook","read","raw","SheetNames","Sheets","utils","sheet_to_json","header","footerConfiguration","prideLogo","prideDeclaration","showAppLogo","lightModeAppLogo","darkModeAppLogo","lightModeLogo","darkModeLogo","atsiLogo","atsiDeclaration","footerLinkColumnsHeadingLevel","footerLinkColumns","heading","links","label","departmentName","governmentName","FormConfigurationParserService","findNavTabConfigs","formConfig","fieldGroup","findNavTabConfig","navTabConfig","findPageConfigs","findPageConfig","pageConfig","findSectionConfigs","fieldArray","findSectionConfig","sectionConfig","findQuestionConfigs","findQuestionConfig","questionConfig","formConfigurationParserService","findFieldValue","questionConfigs","questionKey","defaultValue","doHtmlEncoding","f","getFieldValue","findFieldLabel","props","toHtmlHeader","toHtmlHeaderTitle","toHtmlHeaderField","deactivatedText","showOkCancelPopup","getRepeaterHtmlElementId","repeaterFieldId","elementType","itemIndex","htmlElementId","getPageFieldId","pagePath","pageFieldId","getSectionFieldId","sectionFieldId","getPageRepeaterHtmlElementId","isViewModeAllowed","setViewMode","getViewMode","userOrganisationProfileQuestionConfigs","userProfileQuestionConfigs","removeUserAccess","hasWriteAccessToUserApplicationAccesses","toggleUserRequestControls","toggleAppAdministratorAssignmentControls","toggleAppSupportAssignmentControls","toggleOrgAuthorityAssignmentControls","toggleOrgSupportAssignmentControls","detailsQuestionConfigs","hasWriteAccessToAlternativeNames","hasWriteAccessToSubOrganisations","hasWriteAccessToOrganisationExternalCodes","hasWriteAccessToReviewDefinitions","toggleCustomApprovalControls","referenceCategoryQuestionConfigs","isRemoveItemAllowed","hasWriteAccessToReferenceData","applicationProfileQuestionConfigs","hasWriteAccessToFunctionalRoles","environmentQuestionConfigs","hasWriteAccessToEnvironmentCustomOrganisationApprovals","hasWriteAccessToCustomEmailTemplates","hasWriteAccessToCustomOrganisationApprovals","hasWriteAccessToApiCallBacks","hasWriteAccessToAadGroups","hasWriteAccessToLdapGroups","scheduleQuestionConfigs","settingsQuestionConfigs","toggleReviewOccurrenceHistoryControls","userFormGetAccessDefinitionId","organisationFormGetSubOrganisationId","organisationFormGetOrganisationExternalCodeId","organisationFormGetReviewDefinitionId","applicationFormGetFunctionalRoleId","applicationFormGetReviewDefinitionId","environmentFormGetCustomOrganisationApprovalId","environmentFormGetEnvironmentCustomOrganisationApprovalId","idValue","userRequestDetails","reasonForRequestingAccess","toEncodedHtmlLineBreaks","reasonForRequestingAccessRevoke","reasonForRequestingAccessHtmlParagraph","formatHtmlParagraph","reasonForRequestingAccessRevokeHtmlParagraph","userOrganisationRoleHtmlParagraph","awaitingApprovalDetailsHtmlList","formatHtmlList","awaitingApprovalDetails","approverDetails","reasonForRejectionHtmlParagraph","changeLogHtmlTable","changeLog","rows","row","time","change","errorDetailsHtmlParagraph","errorDetail","reviewDecisionDetails","reasonForDenialHtmlParagraph","paragraphName","paragraphContent","listName","listDescription","listTag","listItemTag","headerConfiguration","applicationLogo","link","loggedInUser","fullName","imageSource","imageDescription","menuSubItems","icon","routerLink","isMenuVisible","getMenuStatus","toggleMenuVisibility","setHeaderMenuToggleVisibility","showHeaderMenuToggle","enableMenu","isMenuVisibleByDefault","isDesktop","onMenuButtonClick","Event","headerMenuToggleHtmlElement","style","input","object","propertyName","s","charCodeAt","tag","innerHtml","classAttribute","classAttributeSuffix","itemTag","dataRow","columnIndex","fieldNameTag","fieldValueTag","_4","formatFieldName","formatFieldValue","formatField","values","className","delayMs","setFocusToHtmlElement","getElementsByClassName","getHtmlElement","functionToInvoke","element","scrollIntoView","behavior","block","focus","preventScroll","invokeFunction","getElementsById","elements","from","querySelectorAll","getPageActionButtonId","pageActionButtonCode","pageActionButtonId","pageActionButtonIds","pageActionButtonPath","distinctPageActionButtonIds","htmlButtonElements","htmlButtonElement","removeAttribute","buttonTitle","buttonClass","clickElement","listener","onEventCallBack","e","removeEventListener","addEventListener","fileTypes","onSelect","changeEvent","remove","cancelEvent","elementSelector","_5","_6","findNavTabModel","tabs","isTryingToFindRepeatingPageItem","isTryingToFindRepeatingSectionItem","replaceNavTabModel","newNavTabModel","navTabParentModel","replacePageModel","newPageModel","pageParentModel","isTryingToReplaceRepeatingPageItem","pageItemParentModel","newSectionModel","sectionParentModel","isTryingToReplaceRepeatingSectionItem","sectionItemParentModel","questionParentModel","singleCheckBoxQuestionPaths","resetCount","getIndexes","objectOrArrayOfObjects","keys","pageIndexes","sectionIndexes","singleCheckBoxQuestionModel","stringKey","trySerialise","stringValue","tryGetItem","tryDeserialise","trySetItem","tryRemoveItem","sessionStorage","getItem","setItem","removeItem","cardSetTransformationService","isUserProfileSet","onHeaderUpdated","apiEndpointKey","getFormConfigAndResponse","extractMenuConfigFromFormConfig","configData","onMenuLoad","AutoCompleteFieldType","options","fieldName","labelProp","query","toLowerCase","filteredList","t","DuopV2AutoCompleteFieldType_Template","DuopV2AutoCompleteFieldType_Template_p_autoComplete_completeMethod_0_listener","DuopV2AutoCompleteFieldType_Template_p_autoComplete_onBlur_0_listener","onBlur","ɵɵclassProp","showError","production","enableProdMode","__NgCli_bootstrap_1","platformBrowser","bootstrapModule","catch"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}