@ieeesa-npm/tenants 0.3.2 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ieeesa-npm-tenants.mjs","sources":["../../../projects/tenants/src/lib/models/permission-type.model.ts","../../../projects/tenants/src/lib/models/table-column-schema-view-tenant-list.model.ts","../../../projects/tenants/src/lib/assets/tenant-validations.ts","../../../projects/tenants/src/lib/models/form-status.model.ts","../../../projects/tenants/src/lib/models/tenant-function-type.model.ts","../../../projects/tenants/src/lib/services/tenant-permissions.service.ts","../../../projects/tenants/src/lib/services/tenant-permissions-map.service.ts","../../../projects/tenants/src/lib/services/tenant-applications.service.ts","../../../projects/tenants/src/lib/components/create-tenant-application/create-tenant-application.component.ts","../../../projects/tenants/src/lib/components/create-tenant-application/create-tenant-application.component.html","../../../projects/tenants/src/lib/components/view-tenants-list/view-tenants-list.component.ts","../../../projects/tenants/src/lib/components/view-tenants-list/view-tenants-list.component.html","../../../projects/tenants/src/lib/models/feature-permission-id.model.ts","../../../projects/tenants/src/lib/components/tenant-basic-details/tenant-basic-details.component.ts","../../../projects/tenants/src/lib/components/tenant-basic-details/tenant-basic-details.component.html","../../../projects/tenants/src/lib/components/create-modify-role/create-modify-role.component.ts","../../../projects/tenants/src/lib/components/create-modify-role/create-modify-role.component.html","../../../projects/tenants/src/lib/models/role-menu-action.model.ts","../../../projects/tenants/src/lib/models/roles-and-permissions-table-type.model.ts","../../../projects/tenants/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.ts","../../../projects/tenants/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.html","../../../projects/tenants/src/lib/models/view-tenant-group-types.model.ts","../../../projects/tenants/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.ts","../../../projects/tenants/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.html","../../../projects/tenants/src/lib/components/view-tenant-details/view-tenant-details.component.ts","../../../projects/tenants/src/lib/components/view-tenant-details/view-tenant-details.component.html","../../../projects/tenants/src/lib/tenant-applications.component.ts","../../../projects/tenants/src/lib/tenant-applications.component.html","../../../projects/tenants/src/lib/models/app-type.model.ts","../../../projects/tenants/src/lib/tenant-applications.module.ts","../../../projects/tenants/src/public-api.ts","../../../projects/tenants/src/ieeesa-npm-tenants.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\r\nexport enum PermissionType {\r\n VIEW_TENANTS = 'VIEW_TENANTS',\r\n MANAGE_TENANT = 'MANAGE_TENANT',\r\n}\r\nexport enum TenantStatus {\r\n ACTIVE = 'Active',\r\n INACTIVE = 'Inactive',\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nexport enum ViewTenantsColumnSchemaDef {\r\n APP_ID = 'appId',\r\n APP_TITLE = 'appTitle',\r\n APP_DESCRIPTION = 'appDescription',\r\n APP_HEADING = 'appHeading',\r\n FEATURES = 'features',\r\n STATUS = 'status',\r\n}\r\nexport enum SortOrderBy {\r\n DESC = 'DESC',\r\n ASC = 'ASC',\r\n}\r\nexport interface GetTenantsPayload {\r\n payload: {\r\n offset: number;\r\n pageSize: number;\r\n sortedBy: string;\r\n sortedOrderBy: string;\r\n };\r\n}\r\n","/* eslint-disable no-useless-escape */\r\nexport const TenantsValidationPatterns = {\r\n appTitleMaxLength: 50,\r\n appIdMaxLength: 10,\r\n appHeadingMaxLength: 150,\r\n appDescriptionMaxLength: 500,\r\n url: /^https:\\/\\//,\r\n alphaNumeric: /^[a-zA-Z0-9]+$/,\r\n};\r\n\r\nexport const RolesValidation = {\r\n roleNameMaxLength: 100,\r\n};\r\n","/* eslint-disable no-unused-vars */\r\nexport enum FormStatus {\r\n VALID = \"VALID\",\r\n INVALID = \"INVALID\",\r\n }","/* eslint-disable no-unused-vars */\r\nexport enum TenantFunctionType {\r\n CREATE = 'CREATE',\r\n EDIT = 'EDIT',\r\n CREATE_ROLE = 'CREATE_ROLE',\r\n EDIT_ROLE = 'EDIT_ROLE',\r\n MAP_PERMISSION_AND_ROLE = 'MAP_PERMISSION_AND_ROLE'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport {\r\n UserPermission,\r\n TenantsPermissions,\r\n} from '../models/tenants-permission.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantPermissionsService {\r\n /**\r\n * Returns access provision for the passed action/feature based on whether the signed in user has appropriate permission.\r\n * @param {PermissionType} permission\r\n * @param {TenantsPermission[]} tenantsPermissions\r\n * @return {boolean}\r\n * @memberof TenantPermissionsService\r\n */\r\n validateAccessPermission(\r\n permission: PermissionType,\r\n userTenantsPermissions: TenantsPermissions[]\r\n ): boolean {\r\n const isPermitted =\r\n userTenantsPermissions && userTenantsPermissions.length\r\n ? userTenantsPermissions?.some(\r\n ({ permissionType }) => permissionType === permission\r\n )\r\n : false;\r\n return isPermitted;\r\n }\r\n /**\r\n * Filters signed in user tenants permissions from entire tenants permissions.\r\n * @param { UserPermission[] }\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantPermissionsService\r\n */\r\n filterTenantsPermissions(\r\n userPermissions: UserPermission[],\r\n tenantsPermissions: TenantsPermissions[]\r\n ): TenantsPermissions[] {\r\n const userTenantsPermission = tenantsPermissions?.filter(\r\n (permission: TenantsPermissions) => {\r\n return userPermissions?.find(\r\n ({ permissionId }) => permission?.permissionId === permissionId\r\n );\r\n }\r\n );\r\n return userTenantsPermission;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport { TenantsPermissions } from '../models/tenants-permission.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantPermissionsMapService {\r\n globalTenantsPermissions: TenantsPermissions[] = [\r\n {\r\n permissionType: PermissionType.VIEW_TENANTS,\r\n permissionId: 'PERM_SAAPPS_1a2dbbb5-5fe1-4261-85b1-a5373f41075a',\r\n permissionName: 'View Tenant Applications',\r\n },\r\n {\r\n permissionType: PermissionType.MANAGE_TENANT,\r\n permissionId: 'PERM_SAAPPS_315c49ec-f79a-4dcd-9795-6f97838c8c83',\r\n permissionName: 'Manage (Create, Edit, Disable) Tenant Application',\r\n },\r\n ];\r\n /**\r\n * Returns global permissions mapping for tenants.\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantsPermissionsMapService\r\n */\r\n getGlobalTenantsPermissions(): TenantsPermissions[] {\r\n return this.globalTenantsPermissions;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '@ieeesa-npm/utility';\r\nimport { Observable, catchError, map } from 'rxjs';\r\nimport * as screenTexts from '../assets/constants.json';\r\nimport { GetTenantsPayload } from '../models/table-column-schema-view-tenant-list.model';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../models/tenants-permission.model';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport { TenantPermissionsMapService } from './tenant-permissions-map.service';\r\nimport {\r\n CreateTenantRequestPayload,\r\n CreateTenantResponse,\r\n GetTenantsResponse,\r\n NewTenantInfo,\r\n TenantBasicInfo,\r\n TenantDetailsResponse,\r\n} from '../models/tenant.model';\r\nimport { CheckboxOption, RadioOption } from '@ieeesa-npm/presentation';\r\nimport {\r\n FeatureId,\r\n Features,\r\n GetFeaturesResponse,\r\n} from '../models/features.model';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../models/app-type-config.model';\r\nimport { TenantPermissionsService } from './tenant-permissions.service';\r\nimport { TenantFunctionType } from '../models/tenant-function-type.model';\r\nimport {\r\n GetRolesAndPermissionsPayload,\r\n GetRolesAndPermissionsResponse,\r\n GetRolesResponse,\r\n RoleInfo,\r\n DeleteRoleRequestPayload,\r\n DeleteRoleResponse,\r\n Role,\r\n GetPermissionsResponse,\r\n RolePermissionMappingRequestPayload,\r\n RolePermissionMappingResponse,\r\n RolesAndPermissionsRequestPayload,\r\n RolesAndPermissionsResponse,\r\n RoleDetails,\r\n CreateModifyRoleRequestPayload,\r\n CreateModifyRoleResponse,\r\n} from '../models/roles-and-permissions.model';\r\nimport {\r\n UpdateTenantStatusRequestPayload,\r\n UpdateTenantStatusResponse,\r\n} from '../models/update-tenant-status.model';\r\nimport {\r\n GetRoleTypesPayload,\r\n RoleTypeConfiguration,\r\n RoleTypeOption,\r\n RoleTypeResponse,\r\n} from '../models/role-type.model';\r\nimport { ViewGroupTypeResponse } from '../models/view-tenant-group-types.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantApplicationsService {\r\n tenantsText = screenTexts?.viewTenants?.errors;\r\n apiBaseUrl!: string;\r\n userPermission!: UserPermission[];\r\n selectedTenantInfo!: TenantBasicInfo | undefined;\r\n userTenantsPermissions!: TenantsPermissions[];\r\n createTenantsText = screenTexts?.createTenant?.errors;\r\n newTenantInfo!: NewTenantInfo;\r\n tenantFunctionType!: TenantFunctionType;\r\n radioOptions: RadioOption[] = [];\r\n checkBoxOptions: CheckboxOption[] = [];\r\n appTypeInfo: RadioOption[] = [];\r\n featureList: Features[] = [];\r\n roleTypeOptions: RoleTypeOption[] = [];\r\n newlyCreatedRole!: RoleInfo;\r\n roleTypeOption!: RoleTypeOption[];\r\n selectedRoleInfo!: RoleDetails;\r\n roles!: Role[];\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private httpService: HttpService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantPermissionsService: TenantPermissionsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantPermissionsMapService: TenantPermissionsMapService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n setAppConfig(apiBaseUrl: string, userPermission: UserPermission[]): void {\r\n this.apiBaseUrl = apiBaseUrl;\r\n this.userPermission = userPermission;\r\n }\r\n\r\n /**\r\n * Gets tenant details from server using HttpService\r\n * @param {string} appId\r\n * @return {Observable<TenantDetailsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getTenantDetails(appId: string): Observable<TenantDetailsResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/app/details/${appId}`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Sets the user tenants permissions\r\n * @param {TenantsPermissions[]} TenantsPermissions\r\n * @memberof TenantApplicationsService\r\n */\r\n setUserTenantsPermissions(userTenantsPermissions: TenantsPermissions[]) {\r\n this.userTenantsPermissions = userTenantsPermissions;\r\n }\r\n /**\r\n * Returns the user tenants permissions\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n getUserTenantsPermissions(): TenantsPermissions[] {\r\n return this.userTenantsPermissions;\r\n }\r\n\r\n /**\r\n * Sets the user tenants information\r\n * @param {TenantBasicInfo} tenantInfo\r\n * @memberof TenantApplicationsService\r\n */\r\n setSelectedTenantInformation(tenantInfo: TenantBasicInfo): void {\r\n this.selectedTenantInfo = tenantInfo;\r\n }\r\n /**\r\n * Returns the tenants information\r\n * @return {TenantBasicInfo}\r\n * @memberof TenantApplicationsService\r\n */\r\n getSelectedTenantInformation(): TenantBasicInfo | undefined {\r\n return this.selectedTenantInfo;\r\n }\r\n /**\r\n * Sets the roles informations\r\n * @param {Role} roles\r\n * @memberof TenantApplicationsService\r\n */\r\n setRolesInfo(roles: Role[]): void {\r\n this.roles = roles;\r\n }\r\n /**\r\n * Returns the roles information\r\n * @return {Role}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRolesInfo(): Role[] | undefined {\r\n return this.roles;\r\n }\r\n /**\r\n * Sets the selected role information.\r\n * @param {RoleDetails} roleInfo\r\n * @memberof TenantApplicationsService\r\n */\r\n setSelectedRoleInformation(roleInfo: RoleDetails): void {\r\n this.selectedRoleInfo = roleInfo;\r\n }\r\n /**\r\n * Returns the selected role information.\r\n * @return {RoleDetails}\r\n * @memberof TenantApplicationsService\r\n */\r\n getSelectedRoleInformation(): RoleDetails | undefined {\r\n return this.selectedRoleInfo;\r\n }\r\n /**\r\n * Sets the tenant role type options.\r\n * @param {RoleTypeOption} roleTypeOptions\r\n * @memberof TenantApplicationsService\r\n */\r\n setRoleTypeOption(roleTypeOptions: RoleTypeOption[]): void {\r\n this.roleTypeOption = roleTypeOptions;\r\n }\r\n /**\r\n * Returns the tenant role type options.\r\n * @return {RoleTypeOption}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRoleTypeOption(): RoleTypeOption[] {\r\n return this.roleTypeOption;\r\n }\r\n /**\r\n * Sets the list of application type information\r\n * @param {RadioOption} appTypeInfo\r\n * @memberof TenantApplicationsService\r\n */\r\n setApplicationType(appTypeInfo: RadioOption[]): void {\r\n this.appTypeInfo = appTypeInfo;\r\n }\r\n /**\r\n * Returns the list of application type information\r\n * @return {RadioOption}\r\n * @memberof TenantApplicationsService\r\n */\r\n getApplicationType(): RadioOption[] | undefined {\r\n return this.appTypeInfo;\r\n }\r\n /**\r\n * Filter permissions\r\n * @param usersPermissions\r\n * @returns @memberof TenantApplicationsService\r\n */\r\n filterPermission(usersPermissions: UserPermission[]): TenantsPermissions[] {\r\n return this.tenantPermissionsService?.filterTenantsPermissions(\r\n usersPermissions,\r\n this.tenantPermissionsMapService?.getGlobalTenantsPermissions()\r\n );\r\n }\r\n /**\r\n * Validating access for tenants\r\n * @param permissionType Permission Type to validate permission\r\n * @param mappedUserPermissions Permission which are mapped with tenants\r\n * @returns true if permission is granted\r\n */\r\n validateAccess(\r\n permissionType: PermissionType,\r\n permissions: TenantsPermissions[]\r\n ): boolean {\r\n return this.tenantPermissionsService.validateAccessPermission(\r\n permissionType,\r\n permissions\r\n );\r\n }\r\n /**\r\n * Gets the tenants.\r\n * @param {GetTenantsPayload} payload\r\n * @return {Observable<GetTenantsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getTenantsList(payload: GetTenantsPayload): Observable<GetTenantsResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/configurations/app/config`, payload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of features from server using HttpService.\r\n * @return {Observable<GetFeaturesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getFeatures(): Observable<GetFeaturesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/app/features`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of roles from server using HttpService.\r\n * @param {string} appId\r\n * @return {*} {Observable<GetRolesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRoles(appId: string): Observable<GetRolesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/groups/role/${appId}`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets the list of permissions based on the appId and return the success or error response as Observable.\r\n * @param {string} appId\r\n * @return {Observable<GetPermissionsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getPermissions(appId: string): Observable<GetPermissionsResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/groups/permissions/${appId}`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets the list of roles or permissions based on the roleId or permissionId in the payload and return the success or error response as Observable.\r\n * @param {RolePermissionMappingRequestPayload} payload\r\n * @returns {Observable<RolePermissionMappingResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRolePermissionMapping(\r\n payload: RolePermissionMappingRequestPayload\r\n ): Observable<RolePermissionMappingResponse> {\r\n return this.httpService\r\n .postData(\r\n `${this.apiBaseUrl}/groups/users/rolePermissionMapping`,\r\n payload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Submit the new mappings of roles to permissions to the server.\r\n * @param {RolesAndPermissionsRequestPayload} payload\r\n * @returns {Observable<RolesAndPermissionsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n saveRolePermissionMapping(\r\n payload: RolesAndPermissionsRequestPayload\r\n ): Observable<RolesAndPermissionsResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/groups/users/rolePermission`, payload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of roles and permissions mappings from server using HttpService.\r\n * @param {string} appId\r\n * @param {GetRolesAndPermissionsPayload} payload\r\n * @return {*} {Observable<GetRolesAndPermissionsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRolesAndPermissionsMappings(\r\n appId: string,\r\n payload: GetRolesAndPermissionsPayload\r\n ): Observable<GetRolesAndPermissionsResponse> {\r\n return this.httpService\r\n .postData(\r\n `${this.apiBaseUrl}/groups/roleBasedPermissions/${appId}`,\r\n payload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of application types from server using HttpService.\r\n * @return {Observable<GetAppTypesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getApplicationTypes(): Observable<GetAppTypesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/config/app_type`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Posts create role form data to server using HttpService to create a new role.\r\n * @param {CreateModifyRoleRequestPayload} createModifyRolePayload\r\n * @return {Observable<CreateModifyRoleResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n createRole(\r\n createModifyRolePayload: CreateModifyRoleRequestPayload\r\n ): Observable<CreateModifyRoleResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/groups/role`, createModifyRolePayload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Posts the edited role form data to server using HttpService for updating the role information.\r\n * @param {CreateModifyRoleRequestPayload} createModifyRolePayload\r\n * @return {Observable<CreateModifyRoleResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n editRole(\r\n createModifyRolePayload: CreateModifyRoleRequestPayload\r\n ): Observable<CreateModifyRoleResponse> {\r\n return this.httpService\r\n .putData(`${this.apiBaseUrl}/groups/role`, createModifyRolePayload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Gets list of role types from server using HttpService.\r\n * @param {GetRoleTypesPayload} payload\r\n * @return {Observable<RoleTypeResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRoleTypes(payload: GetRoleTypesPayload): Observable<RoleTypeResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/configurations/config/configField`, payload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Constructs the select/dropdown options from the role types received from server.\r\n * @param {RoleTypeConfiguration[]} roleTypeResponse\r\n * @return {RoleTypeOption[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRoleTypeOptions(\r\n roleTypeResponse: RoleTypeConfiguration[]\r\n ): RoleTypeOption[] {\r\n this.roleTypeOptions = [];\r\n roleTypeResponse.forEach((item) => {\r\n this.roleTypeOptions?.push({\r\n id: item?.configFieldId,\r\n name: item?.configFieldValue?.roleTypeName,\r\n order: item?.configFieldValue?.viewOrder,\r\n });\r\n });\r\n this.roleTypeOptions.sort((a, b) => a.order - b.order);\r\n return this.roleTypeOptions;\r\n }\r\n\r\n /**\r\n * Posts tenant application form data to server using HttpService for creating new tenant application.\r\n * @param {CreateTenantPayload} createTenantPayload\r\n * @return {Observable<CreateTenantResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n createTenant(\r\n createTenantPayload: CreateTenantRequestPayload\r\n ): Observable<CreateTenantResponse> {\r\n return this.httpService\r\n .postData(\r\n `${this.apiBaseUrl}/configurations/app/createTenant`,\r\n createTenantPayload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Constructs the checkbox options from features list from server.\r\n * @param {FeaturesList[]} features\r\n * @returns {CheckboxOption[]}\r\n */\r\n getFeatureOptions(features: Features[]): CheckboxOption[] {\r\n this.checkBoxOptions = [];\r\n features?.forEach((feature: Features) => {\r\n this.checkBoxOptions?.push({\r\n id: feature?.featureId,\r\n name: feature?.featureName,\r\n checked: feature?.isDefault,\r\n disabled: feature?.isDefault,\r\n });\r\n });\r\n return this.checkBoxOptions;\r\n }\r\n /**\r\n * Constructs the radio options from application types from server.\r\n * @param {AppTypeConfig[]} appTypeOptions\r\n * @returns {RadioOption[]}\r\n */\r\n getApplicationTypeOptions(appTypeOptions: AppTypeConfig[]): RadioOption[] {\r\n this.radioOptions = [];\r\n appTypeOptions?.forEach((appType: AppTypeConfig) => {\r\n this.radioOptions?.push({\r\n id: appType?.configFieldId,\r\n label: appType?.configFieldValue?.type,\r\n });\r\n });\r\n return this.radioOptions;\r\n }\r\n /**\r\n * Constructs the selected features id's.\r\n * @param {CheckboxOption[]} featureOptions\r\n * @returns {FeatureId[]}\r\n */\r\n getFeatureIds(featureOptions: CheckboxOption[]): FeatureId[] {\r\n const featureIds: FeatureId[] = [];\r\n featureOptions?.forEach((featureOption: CheckboxOption) => {\r\n if (featureOption?.checked) {\r\n featureIds.push({\r\n featureId: featureOption.id as string,\r\n });\r\n }\r\n });\r\n return featureIds;\r\n }\r\n /**\r\n * Sets the newly created tenant information.\r\n * @param {NewTenantInfo} newTenantInfo\r\n */\r\n setNewTenantInfo(newTenantInfo: NewTenantInfo): void {\r\n this.newTenantInfo = newTenantInfo;\r\n }\r\n /**\r\n * Returns the newly created tenant information.\r\n */\r\n get getNewTenantInfo(): NewTenantInfo {\r\n return this.newTenantInfo;\r\n }\r\n\r\n /**\r\n * Sets tenant function type.\r\n * @param {TenantFunctionType} tenantFunctionType -tenant function type.\r\n */\r\n setTenantFunctionType(tenantFunctionType: TenantFunctionType): void {\r\n this.tenantFunctionType = tenantFunctionType;\r\n }\r\n\r\n /**\r\n * Returns tenant function type.\r\n * @return {TenantFunctionType} -tenant function type.\r\n */\r\n getTenantFunctionType(): TenantFunctionType {\r\n return this.tenantFunctionType;\r\n }\r\n /**\r\n * Stores the newly created role information.\r\n * @param {RoleInfo} newlyCreatedRole -create role information.\r\n */\r\n setNewlyCreatedRoleInfo(newlyCreatedRole: RoleInfo): void {\r\n this.newlyCreatedRole = newlyCreatedRole;\r\n }\r\n /**\r\n * Returns the newly created role information.\r\n * @return {RoleInfo} -create role information.\r\n */\r\n getNewlyCreatedRoleInfo(): RoleInfo {\r\n return this.newlyCreatedRole;\r\n }\r\n\r\n /**\r\n * Posts the edited tenant application form data to server using HttpService for updating the tenant information.\r\n * @param {CreateTenantPayload} editTenantPayload\r\n * @return {Observable<CreateTenantResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n editTenant(\r\n editTenantPayload: CreateTenantRequestPayload\r\n ): Observable<CreateTenantResponse> {\r\n return this.httpService\r\n .putData(\r\n `${this.apiBaseUrl}/configurations/app/editTenant`,\r\n editTenantPayload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Sends update request to the server to update the tenant application status to active/inactive using HttpService and returns the success or failure response.\r\n * @param {UpdateTenantStatusRequestPayload} updateTenantStatusPayload\r\n * @return {Observable<UpdateTenantStatusResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n updateTenantStatus(\r\n updateTenantStatusPayload: UpdateTenantStatusRequestPayload\r\n ): Observable<UpdateTenantStatusResponse> {\r\n return this.httpService\r\n .putData(\r\n `${this.apiBaseUrl}/configurations/app/updateStatus`,\r\n updateTenantStatusPayload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * It generates Feature list from checkbox options generated in form array.\r\n * @param {CheckboxOption[]} features\r\n * @return {Features[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n getFeaturesList(features: CheckboxOption[]): Features[] {\r\n this.featureList = [];\r\n features?.forEach((feature: CheckboxOption) => {\r\n if (feature.checked)\r\n this.featureList?.push({\r\n featureId: feature?.id as string,\r\n featureName: feature?.name as string,\r\n isDefault: feature?.checked,\r\n });\r\n });\r\n return this.featureList;\r\n }\r\n /**\r\n * Returns sorted role list data.\r\n * @param {Role[]} roleList\r\n * @return {Role[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n sortRolesByRoleType(roleList: Role[]): Role[] {\r\n return roleList.sort((a, b) => a?.viewOrder - b?.viewOrder);\r\n }\r\n /**\r\n * Posts the role details to server using HttpService for deleting the role.\r\n * @param {DeleteRoleRequestPayload} deleteRoleRequestPayload\r\n * @return {Observable<DeleteRoleResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n deleteRole(\r\n deleteRolePayload: DeleteRoleRequestPayload\r\n ): Observable<DeleteRoleResponse> {\r\n return this.httpService\r\n .putData(`${this.apiBaseUrl}/groups/role/deleteRole`, deleteRolePayload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets group types from server using HttpService.\r\n * @param {string} appId\r\n * @return {Observable<ViewGroupTypeResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getGroupTypes(appId: string): Observable<ViewGroupTypeResponse> {\r\n return this.httpService\r\n .getData(\r\n `${this.apiBaseUrl}/configurations/config/appGroupTypeDetails/${appId}`\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AlignType,\r\n CheckboxOption,\r\n FormGrid,\r\n FormControlType,\r\n AllowedFileTypes,\r\n FileUploadService,\r\n FileUploadPresignedUrl,\r\n RadioOption,\r\n DynamicFormComponent,\r\n FormModel,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenTexts from '../../assets/constants.json';\r\nimport { FormArray, FormGroup, Validators } from '@angular/forms';\r\nimport { TenantsValidationPatterns } from '../../assets/tenant-validations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormStatus } from '../../models/form-status.model';\r\nimport { validColorValidator } from 'ngx-colors';\r\nimport { Features, GetFeaturesResponse } from '../../models/features.model';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../../models/app-type-config.model';\r\nimport {\r\n CreateTenantRequestPayload,\r\n CreateTenantResponse,\r\n NewTenantInfo,\r\n TenantBasicInfo,\r\n} from '../../models/tenant.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantFunctionType } from '../../models/tenant-function-type.model';\r\n\r\n@Component({\r\n selector: 'ieeesa-create-tenant-application',\r\n standalone: true,\r\n imports: [CommonModule, DynamicFormComponent],\r\n templateUrl: './create-tenant-application.component.html',\r\n styleUrls: ['./create-tenant-application.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CreateTenantApplicationComponent implements OnInit, OnDestroy {\r\n destroy$ = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenTexts;\r\n createTenantTexts = this.constants?.createTenant;\r\n leftButtonLabel = this.createTenantTexts?.label?.leftButtonLabel;\r\n rightButtonLabel = this.createTenantTexts?.label?.rightButtonLabel;\r\n colWidth: FormGrid = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };\r\n createTenantFormGroup!: FormModel;\r\n actionButtonAlign = AlignType.LEFT;\r\n createTenantFormGroupRef!: FormGroup;\r\n @ViewChild(DynamicFormComponent)\r\n dynamicFormComponent!: DynamicFormComponent;\r\n @Output() submitFormResponse = new EventEmitter();\r\n @Output() formCancel = new EventEmitter();\r\n featuresOptions!: CheckboxOption[];\r\n appTypeOptions!: RadioOption[];\r\n createTenantPayload!: CreateTenantRequestPayload;\r\n fileUploadPresignedUrl!: string;\r\n fileDownloadPresignedUrl!: string;\r\n file!: File | FileList;\r\n allowedFileTypes = [\r\n AllowedFileTypes.JPG,\r\n AllowedFileTypes.PNG,\r\n AllowedFileTypes.SVG,\r\n ];\r\n selectedColor!: string;\r\n selectedAppTypeOption!: RadioOption;\r\n tenantFunctionType!: TenantFunctionType;\r\n selectedTenantInfo!: TenantBasicInfo | undefined;\r\n isAppLogoModified = false;\r\n updatedTenantBasicInfo!: NewTenantInfo;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public fileUploadService: FileUploadService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n ngOnInit(): void {\r\n this.tenantFunctionType = this.tenantAppService?.getTenantFunctionType();\r\n this.selectedTenantInfo =\r\n this.tenantAppService?.getSelectedTenantInformation();\r\n this.fileUploadService.setApiBaseUrl(this.tenantAppService?.apiBaseUrl);\r\n this.getFeatures();\r\n }\r\n /**\r\n * Gets the list of features and updates the form control.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getFeatures(): void {\r\n this.tenantAppService\r\n .getFeatures()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetFeaturesResponse) => {\r\n if (response?.status) {\r\n this.featuresOptions = this.tenantAppService.getFeatureOptions(\r\n response?.body as Features[]\r\n );\r\n if (this.tenantFunctionType === TenantFunctionType.EDIT)\r\n this.featuresOptions?.forEach((option: CheckboxOption) => {\r\n if (\r\n this.selectedTenantInfo?.features?.some(\r\n (feature: Features) => feature?.featureId === option?.id\r\n )\r\n ) {\r\n option.checked = true;\r\n }\r\n });\r\n this.getApplicationTypes();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Gets the application/tenant types and updates the form control.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getApplicationTypes(): void {\r\n this.tenantAppService\r\n .getApplicationTypes()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetAppTypesResponse) => {\r\n if (response?.status) {\r\n this.appTypeOptions =\r\n this.tenantAppService.getApplicationTypeOptions(\r\n response?.body as AppTypeConfig[]\r\n );\r\n if (this.tenantFunctionType === TenantFunctionType.EDIT) {\r\n this.appTypeOptions?.forEach((radioOption: RadioOption) => {\r\n if (radioOption?.id === this.selectedTenantInfo?.appType) {\r\n radioOption.checked = true;\r\n this.selectedAppTypeOption = radioOption;\r\n } else {\r\n radioOption.checked = false;\r\n }\r\n });\r\n }\r\n this.initializeCreateTenantFormGroup();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Initialize the create tenant form group array.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n initializeCreateTenantFormGroup(): void {\r\n this.createTenantFormGroup = {\r\n formGroup: [\r\n {\r\n legend: '',\r\n controls: [\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appTitle + '*',\r\n controlName: 'appTitle',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appTitle\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appTitleMaxLength\r\n ),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appTitle,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appTitleMaxChars,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appTitle,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appTitle,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appId + '*',\r\n controlName: 'appId',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appId\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(TenantsValidationPatterns.appIdMaxLength),\r\n Validators.pattern(TenantsValidationPatterns.alphaNumeric),\r\n ],\r\n disabled: this.tenantFunctionType === TenantFunctionType.EDIT,\r\n supportMessage: this.createTenantTexts?.supportText?.appId,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appIdMaxChars,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appId,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appId,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appId,\r\n },\r\n {\r\n type: FormControlType?.FILE_UPLOAD,\r\n label: this.createTenantTexts?.label?.appLogo + '*',\r\n controlName: 'appLogo',\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appLogo\r\n : '',\r\n placeholder: '',\r\n isFileSelected:\r\n this.tenantFunctionType === TenantFunctionType.EDIT,\r\n supportMessage: this.createTenantTexts?.supportText?.appLogo,\r\n validation: [Validators.required],\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appLogo,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appLogo,\r\n isMultiFileUpload: false,\r\n maxUploadFileSize: 2,\r\n maxFileSizeErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appLogoMaxSize,\r\n allowedFileTypeErrorMessage:\r\n this.createTenantTexts?.message?.error?.invalidFile,\r\n allowedFileTypes: this.allowedFileTypes,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appHeading + '*',\r\n controlName: 'appHeading',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appHeading\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appHeadingMaxLength\r\n ),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appHeading,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit\r\n ?.appHeadingMaxChars,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.email,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHeading,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appHeading,\r\n },\r\n {\r\n type: FormControlType.TEXT_AREA,\r\n label: this.createTenantTexts?.label?.appDescription + '*',\r\n controlName: 'appDescription',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appDescription\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appDescriptionMaxLength\r\n ),\r\n ],\r\n supportMessage:\r\n this.createTenantTexts?.supportText?.appDescription,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit\r\n ?.appDescriptionMaxChars,\r\n maxCharCount: TenantsValidationPatterns.appDescriptionMaxLength,\r\n ariaLabel:\r\n this.createTenantTexts?.label?.ariaLabel?.appDescription,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById\r\n ?.appDescription,\r\n ariaMultiline: true,\r\n isResize: true,\r\n },\r\n {\r\n type: FormControlType.COLOR_PICKER,\r\n label: this.createTenantTexts?.label?.appBgColor + '*',\r\n controlName: 'backgroundColor',\r\n value: '',\r\n defaultColor:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.backgroundColor\r\n : '',\r\n placeholder: '',\r\n supportMessage: this.createTenantTexts?.supportText?.appBgColor,\r\n validation: [Validators.required, validColorValidator()],\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n invalidColorErrorMessage:\r\n this.createTenantTexts?.message?.error?.invalidColor,\r\n ariaLabel: this.createTenantTexts?.supportText?.appBgColor,\r\n ariaDescribedById:\r\n this.createTenantTexts?.supportText?.appBgColor,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appHelpLink + '*',\r\n controlName: 'appHelpLink',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appHelpLink\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.pattern(TenantsValidationPatterns.url),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appHelpLink,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appHelpLink,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHelpLink,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appHelpLink,\r\n },\r\n {\r\n type: FormControlType.CHECKBOX,\r\n label: this.createTenantTexts?.label?.featuresList + '*',\r\n controlName: 'features',\r\n checkboxOptions: this.featuresOptions,\r\n minSelectionRequired: 1,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.featuresList,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.featuresList,\r\n supportMessage: this.createTenantTexts?.supportText?.featuresList,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n validation: [Validators.required],\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.domainURL + '*',\r\n controlName: 'appDomainUrl',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appDomainUrl\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.pattern(TenantsValidationPatterns.url),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.domainURL,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appDomainUrl,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.domainURL,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.domainURL,\r\n },\r\n {\r\n type: FormControlType.RADIO,\r\n label: this.createTenantTexts?.label?.appType + '*',\r\n controlName: 'appType',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appType\r\n : '',\r\n disabled: this.tenantFunctionType === TenantFunctionType.EDIT,\r\n radioOptions: this.appTypeOptions,\r\n validation: [Validators.required],\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appType,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appType,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n /**\r\n * Creates Payload and gets presigned url for file upload on form submission.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onCreateTenantFormSubmit(form: FormGroup[]): void {\r\n form[0]?.markAllAsTouched();\r\n if (form[0].status === FormStatus.VALID) {\r\n this.createTenantPayload = this.getCreateTenantPayload(\r\n form[0].getRawValue()\r\n );\r\n if (\r\n this.tenantFunctionType === TenantFunctionType.EDIT &&\r\n (!this.isAppLogoModified || !this.file)\r\n ) {\r\n this.editTenant();\r\n } else if (this.file) {\r\n this.getFileUploadPresignedUrl(this.file);\r\n } else {\r\n this.createTenant();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new tenant on form submission.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n createTenant(): void {\r\n this.tenantAppService\r\n .createTenant(this.createTenantPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateTenantResponse) => {\r\n if (response.status) {\r\n this.tenantAppService.setNewTenantInfo(\r\n this.createTenantPayload?.payload\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Updates the modified tenant information on form submission.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n editTenant(): void {\r\n this.tenantAppService\r\n .editTenant(this.createTenantPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateTenantResponse) => {\r\n if (response?.status) {\r\n this.updatedTenantBasicInfo = this.createTenantPayload?.payload;\r\n this.updatedTenantBasicInfo.features =\r\n this.tenantAppService.getFeaturesList(this.featuresOptions);\r\n this.tenantAppService.setSelectedTenantInformation(\r\n this.updatedTenantBasicInfo as TenantBasicInfo\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Constructs create tenant payload from the form data and returns.\r\n * @param {*} formData\r\n * @return {CreateTenantRequestPayload}\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n getCreateTenantPayload(formData: any): CreateTenantRequestPayload {\r\n const payload: CreateTenantRequestPayload = {\r\n payload: {\r\n appTitle: formData?.appTitle,\r\n appId: formData?.appId,\r\n appHeading: formData?.appHeading,\r\n appDescription: formData?.appDescription,\r\n backgroundColor: formData?.backgroundColor,\r\n appLogo: formData?.appLogo,\r\n appDomainUrl: formData?.appDomainUrl,\r\n appHelpLink: formData?.appHelpLink,\r\n appType: this.selectedAppTypeOption?.id as string,\r\n features: this.tenantAppService.getFeatureIds(this.featuresOptions),\r\n },\r\n };\r\n return payload;\r\n }\r\n\r\n /**\r\n * Gets create tenant form group reference and disables default features.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getCreateTenantFormGroupRef(form: FormGroup[]): void {\r\n this.createTenantFormGroupRef = form[0];\r\n const featuresFormArray = this.createTenantFormGroupRef?.controls[\r\n 'features'\r\n ] as FormArray;\r\n this.featuresOptions?.forEach((option: CheckboxOption, index: number) => {\r\n if (option?.disabled) {\r\n featuresFormArray?.at(index).disable();\r\n }\r\n });\r\n }\r\n /**\r\n * Updates createTenantFormGroupRef on add or edit tenant form change event.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onCreateTenantFormChange(form: FormGroup[]): void {\r\n this.createTenantFormGroupRef = form[0];\r\n this.isAppLogoModified =\r\n this.createTenantFormGroupRef?.controls['appLogo']?.dirty &&\r\n this.tenantFunctionType === TenantFunctionType.EDIT;\r\n }\r\n /**\r\n * Emits form cancel event.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onFormCancel(): void {\r\n this.formCancel.emit();\r\n }\r\n\r\n /**\r\n * Gets the selected file when the file is browsed and on formFileUpload event is triggered.\r\n * @param {File | FileList} file\r\n */\r\n onFormFileUpload(file: File | FileList): void {\r\n this.file = file;\r\n }\r\n /**\r\n * Gets pre-signed URL to upload the selected file to AWS S3 bucket.\r\n * @param {File | FileList} file\r\n */\r\n getFileUploadPresignedUrl(file: File | FileList): void {\r\n this.fileUploadService\r\n .getFileUploadPresignedUrl(file)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: FileUploadPresignedUrl) => {\r\n this.fileUploadPresignedUrl = response?.body;\r\n if (this.fileUploadPresignedUrl) this.uploadFileToS3(file);\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function, no-empty-function\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Uploads the file to AWS S3 bucket and submit the form data to API to create new tenant.\r\n * @param {File | FileList} file\r\n */\r\n uploadFileToS3(file: File | FileList): void {\r\n this.fileUploadService\r\n .uploadFileToS3(this.fileUploadPresignedUrl, file)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\r\n next: (response: any) => {\r\n this.fileUploadService.setFileUploadStatus(true);\r\n // eslint-disable-next-line no-unused-expressions\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.editTenant()\r\n : this.createTenant();\r\n },\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.fileUploadService.setFileUploadStatus(false);\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Triggers when the color picker values has been changed.\r\n * @param {string} color\r\n */\r\n onColorPickerChange(color: string): void {\r\n this.selectedColor = color;\r\n }\r\n /**\r\n * Triggers when the radio option has been changed.\r\n * @param {RadioOption} radioOption\r\n */\r\n onRadioOptionSelected(radioOption: RadioOption): void {\r\n this.selectedAppTypeOption = radioOption;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<ieeesa-dynamic-form\r\n *ngIf=\"createTenantFormGroup\"\r\n class=\"ieeesa-create-tenant-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createTenantFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateTenantFormSubmit($event)\"\r\n (formChange)=\"onCreateTenantFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateTenantFormGroupRef($event)\"\r\n (formFileUpload)=\"onFormFileUpload($event)\"\r\n (formColorPickerChange)=\"onColorPickerChange($event)\"\r\n (formRadioOptionSelected)=\"onRadioOptionSelected($event)\"\r\n></ieeesa-dynamic-form>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n DataTableComponent,\r\n ModalComponent,\r\n PaginatorConfig,\r\n TableActions,\r\n TableColumnSchema,\r\n TableColumnSortDirection,\r\n TableColumnType,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport {\r\n AlertType,\r\n AlertsService,\r\n BreakpointObserverService,\r\n ModalType,\r\n} from '@ieeesa-npm/utility';\r\nimport { TenantsRoutesConfig } from '../../models/route-config.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { Router } from '@angular/router';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Sort } from '@angular/material/sort';\r\nimport {\r\n TenantStatus,\r\n PermissionType,\r\n} from '../../models/permission-type.model';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../../models/tenants-permission.model';\r\nimport {\r\n ViewTenantsColumnSchemaDef,\r\n SortOrderBy,\r\n GetTenantsPayload,\r\n} from '../../models/table-column-schema-view-tenant-list.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CreateTenantApplicationComponent } from '../create-tenant-application/create-tenant-application.component';\r\nimport { SortConfig, TenantBasicInfo } from '../../models/tenant.model';\r\nimport { Features } from '../../models/features.model';\r\nimport { TenantFunctionType } from '../../models/tenant-function-type.model';\r\n@Component({\r\n selector: 'ieeesa-view-tenants-list',\r\n templateUrl: './view-tenants-list.component.html',\r\n styleUrls: ['./view-tenants-list.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, MatButtonModule, DataTableComponent],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ViewTenantsListComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = constants;\r\n viewTenantsConstants = this.constants?.viewTenants;\r\n isMobileView = false;\r\n @Input() tenantsPageInfo: {\r\n tenantsTitle: string;\r\n } = {\r\n tenantsTitle: '',\r\n };\r\n @Input() apiBaseURL = '';\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Input() routePaths!: TenantsRoutesConfig;\r\n @Input() userPermissions!: UserPermission[];\r\n @Input() defaultSortedColumn: string = ViewTenantsColumnSchemaDef.APP_ID;\r\n @Output() createTenant = new EventEmitter();\r\n @Output() viewTenantsDetails: EventEmitter<TenantBasicInfo> =\r\n new EventEmitter<TenantBasicInfo>();\r\n tableData!: TenantBasicInfo[];\r\n columnSchema!: TableColumnSchema[];\r\n tableActions: TableActions = {\r\n isPaginationNeeded: true,\r\n };\r\n tableColumns = this.viewTenantsConstants?.tableColumns;\r\n emptyFieldValueReplacedBy =\r\n this.viewTenantsConstants?.emptyFieldValueReplacedBy;\r\n paginatorConfig: PaginatorConfig = {\r\n recordsPerPage: this.viewTenantsConstants?.pageSizeOptions[0],\r\n pageSizeOptions: this.viewTenantsConstants.pageSizeOptions,\r\n totalRecords: 0,\r\n };\r\n\r\n userTenantsPermissions!: TenantsPermissions[];\r\n permissionType = PermissionType;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogRef: any;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n createTenantScreenTexts: any = this.constants?.createTenant;\r\n defaultColumnSortDirection = true;\r\n pageEvent!: PageEvent;\r\n sortConfig!: SortConfig;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public dialog: MatDialog,\r\n // eslint-disable-next-line no-unused-vars\r\n public alertService: AlertsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantApplicationsService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private router: Router\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result.matches;\r\n });\r\n }\r\n\r\n /**\r\n * Sets the user permissions, router config path, base API URL, table column schema and gets the tenants list.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n ngOnInit(): void {\r\n this.userTenantsPermissions =\r\n this.tenantApplicationsService?.filterPermission(this.userPermissions);\r\n this.tenantApplicationsService?.setAppConfig(\r\n this.apiBaseURL,\r\n this.userPermissions\r\n );\r\n this.tenantsPageInfo = {\r\n tenantsTitle: this.viewTenantsConstants?.tenantsTitle,\r\n };\r\n this.routePaths = this.routePaths ?? this.constants?.routeConfigPath;\r\n this.sharedService?.setRoutePaths(this.routePaths);\r\n this.configureTableInfo();\r\n this.defaultSortedColumn = this.columnSchema[0].columnDef;\r\n this.getTenantsAndInitializeTableView(this.getTenantsPayload());\r\n }\r\n /**\r\n * Validates permission based access for provided feature.\r\n * @param {PermissionType} permissionType\r\n * @return {boolean}\r\n * @memberof ViewTenantsListComponent\r\n */\r\n validateAccess(permissionType: PermissionType): boolean {\r\n return this.tenantApplicationsService.validateAccess(\r\n permissionType,\r\n this.userTenantsPermissions\r\n );\r\n }\r\n /**\r\n * Configures table schema to display the tenants in table view.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n configureTableInfo(): void {\r\n this.columnSchema = [\r\n {\r\n id: 1,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_ID,\r\n heading: this.tableColumns?.appId,\r\n columnType: TableColumnType.LINK,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.appId}`,\r\n isSortableColumn: true,\r\n },\r\n {\r\n id: 2,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_TITLE,\r\n heading: this.tableColumns?.appTitle,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.appTitle ?? this.emptyFieldValueReplacedBy}`,\r\n isSortableColumn: true,\r\n },\r\n {\r\n id: 3,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_DESCRIPTION,\r\n heading: this.tableColumns?.appDescription,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.appDescription ?? this.emptyFieldValueReplacedBy}`,\r\n },\r\n\r\n {\r\n id: 4,\r\n columnDef: ViewTenantsColumnSchemaDef.FEATURES,\r\n heading: this.tableColumns?.features,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${\r\n element?.features && element?.features?.length > 0\r\n ? this.formatFeaturesName(element?.features)\r\n : this.emptyFieldValueReplacedBy\r\n }`,\r\n },\r\n {\r\n id: 5,\r\n columnDef: ViewTenantsColumnSchemaDef.STATUS,\r\n heading: this.tableColumns?.status,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.status ? TenantStatus.ACTIVE : TenantStatus.INACTIVE}`,\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Format the features name in to single sentence with comma separated.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n formatFeaturesName(features: Features[]): string {\r\n return features\r\n .map((feature: Features) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n return feature.featureName;\r\n })\r\n ?.join(', ');\r\n }\r\n /**\r\n * Fetching details of tenants and initialize table view\r\n * @param {GetTenantsPayload} payload\r\n * @memberof ViewTenantsListComponent\r\n */\r\n getTenantsAndInitializeTableView(payload: GetTenantsPayload): void {\r\n this.tenantApplicationsService\r\n .getTenantsList(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n this.tableData = response?.body?.appDetails as TenantBasicInfo[];\r\n this.paginatorConfig.totalRecords = response?.body\r\n ?.totalRecords as number;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(error, this.constants?.errors);\r\n },\r\n });\r\n }\r\n /**\r\n * Sets the dialog options for create tenant modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantsListComponent\r\n */\r\n openCreateTenantForm(): void {\r\n this.tenantApplicationsService.setTenantFunctionType(\r\n TenantFunctionType.CREATE\r\n );\r\n const dialogOptions = {\r\n heading: this.viewTenantsConstants?.addTenant,\r\n isCloseNeeded: true,\r\n componentReference: CreateTenantApplicationComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-create-tenant');\r\n }\r\n /**\r\n * Opens modal component with received params and handles form submission success and errors.\r\n * @param {*} dialogOptions\r\n * @param {string} [className]\r\n * @return -returns nothing\r\n * @memberof ViewTenantsListComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-inferrable-types, no-unused-vars\r\n openModal(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogOptions: any,\r\n className?: string\r\n ): void {\r\n className = className ?? '';\r\n this.dialogRef = this.dialog?.open(ModalComponent, {\r\n data: dialogOptions,\r\n width: '',\r\n panelClass: ['ieeesa-modal-dialog', className],\r\n ariaModal: true,\r\n });\r\n this.dialogRef?.componentInstance?.submitFormResponse\r\n .pipe(takeUntil(this.destroy$))\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-unused-vars\r\n .subscribe((result: any) => {\r\n this.dialogRef?.close();\r\n const appTitle =\r\n this.tenantApplicationsService.getNewTenantInfo?.appTitle;\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${appTitle} ${this.createTenantScreenTexts?.message?.success?.submission}`\r\n );\r\n this.getTenantsAndInitializeTableView(this.getTenantsPayload());\r\n });\r\n this.dialogRef?.componentInstance?.formCancel\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.dialogRef?.close();\r\n });\r\n }\r\n /**\r\n * Sorts the tenants by application id or title in ascending or descending.\r\n * @param {Sort} sort\r\n * @memberof ViewTenantsListComponent\r\n */\r\n onSortTenants(sort: Sort): void {\r\n this.defaultSortedColumn = sort.active;\r\n this.defaultColumnSortDirection =\r\n sort.direction === TableColumnSortDirection.ASCENDING;\r\n this.sortConfig = {\r\n sort: sort,\r\n isSortedByAscending: this.defaultColumnSortDirection,\r\n };\r\n this.getTenantsAndInitializeTableView(this.getTenantsPayload());\r\n }\r\n /**\r\n * Constructs and returns the payload for fetching the tenants list.\r\n * @returns GetTenantsPayload\r\n */\r\n getTenantsPayload(): GetTenantsPayload {\r\n const payload: GetTenantsPayload = {\r\n payload: {\r\n offset: this.pageEvent?.pageIndex\r\n ? (this.pageEvent?.pageIndex as number)\r\n : 0,\r\n pageSize: this.pageEvent?.pageSize\r\n ? (this.pageEvent?.pageSize as number)\r\n : this.paginatorConfig?.recordsPerPage,\r\n sortedBy: this.sortConfig?.sort?.active\r\n ? (this.sortConfig?.sort?.active as string)\r\n : ViewTenantsColumnSchemaDef.APP_ID,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.sortConfig?.isSortedByAscending\r\n ? (this.sortConfig?.isSortedByAscending as boolean)\r\n : this.defaultColumnSortDirection\r\n ),\r\n },\r\n };\r\n return payload;\r\n }\r\n /**\r\n * Returning sorting order according to column definition.\r\n * @param defaultColumnSortDirection\r\n * @returns SortOrderBy.ASC | SortOrderBy.DESC\r\n */\r\n filterSortedOrderBy(defaultColumnSortDirection: boolean): string {\r\n return defaultColumnSortDirection ? SortOrderBy.ASC : SortOrderBy.DESC;\r\n }\r\n /**\r\n * Get the the records according to pagination.\r\n * @param {{\r\n * pageOffset: number;\r\n * pageLimit: number;\r\n * }} pageEvent\r\n * @memberof ViewTenantsListComponent\r\n */\r\n onTablePaginationChange(pageEvent: PageEvent): void {\r\n this.pageEvent = pageEvent;\r\n this.getTenantsAndInitializeTableView(this.getTenantsPayload());\r\n }\r\n /**\r\n * Navigates to view tenants detail component.\r\n * @param {{tenantInfo: TenantBasicInfo}}\r\n * @memberof ViewTenantsListComponent\r\n */\r\n navigateToViewTenantDetails(tenantInfo: TenantBasicInfo): void {\r\n if (tenantInfo) {\r\n this.tenantApplicationsService.setSelectedTenantInformation(tenantInfo);\r\n }\r\n if (this.routePaths?.viewTenantDetails)\r\n this.router.navigate([this.routePaths?.viewTenantDetails]);\r\n else this.viewTenantsDetails.emit(tenantInfo);\r\n }\r\n /**\r\n * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantsListComponent\r\n * @return -returns nothing\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-view-tenants-list\"\r\n [ngClass]=\"{ 'ieeesa-view-tenants-list__mobile': isMobileView }\"\r\n>\r\n <p class=\"ieeesa-headline-lg-32 py-3 mb-0\">\r\n {{ tenantsPageInfo.tenantsTitle }}\r\n </p>\r\n <div class=\"ieeesa-view-tenants-list__content\">\r\n <div class=\"d-flex justify-content-end\">\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button me-3\"\r\n [attr.aria-label]=\"viewTenantsConstants?.ariaLabel?.add\"\r\n (click)=\"openCreateTenantForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ viewTenantsConstants?.addTenant }}\r\n </button>\r\n </div>\r\n <ieeesa-data-table\r\n [tableDataInfo]=\"tableData\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [tableActions]=\"tableActions\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [defaultSortedColumn]=\"defaultSortedColumn\"\r\n (sortChange)=\"onSortTenants($event)\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (rowLink)=\"navigateToViewTenantDetails($event)\"\r\n ></ieeesa-data-table>\r\n </div>\r\n</div>\r\n","export enum FeaturePermissionId {\r\n // eslint-disable-next-line no-unused-vars\r\n MEETINGS_AND_EVENTS = 'FEATURE_049753e8-ea5c-4fad-adb0-e1456e69c7a5',\r\n // eslint-disable-next-line no-unused-vars\r\n BALLOTS = 'FEATURE_a0ad3616-20dc-43da-813f-9b76d33f227a',\r\n}\r\n","import { Component, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { BreakpointObserverService } from '@ieeesa-npm/utility';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport {\r\n RadioOption,\r\n FileUploadService,\r\n ImagePreviewComponent,\r\n} from '@ieeesa-npm/presentation';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantBasicInfo } from '../../models/tenant.model';\r\n\r\n@Component({\r\n selector: 'ieeesa-tenant-basic-details',\r\n standalone: true,\r\n imports: [CommonModule, ImagePreviewComponent],\r\n templateUrl: './tenant-basic-details.component.html',\r\n styleUrls: ['./tenant-basic-details.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TenantBasicDetailsComponent implements OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n isMobileView = false;\r\n constants = screenText;\r\n basicDetailTexts = this.constants?.viewTenants?.tenantBasicDetails?.label;\r\n tenantBackgroundColor!: string;\r\n selectedAppType!: string;\r\n selectedAppTypeLabel!: string;\r\n logo!: string;\r\n basicInfo!: TenantBasicInfo;\r\n imageUrl!: string;\r\n @Input()\r\n set tenantDetails(value: TenantBasicInfo) {\r\n this.basicInfo = value;\r\n this.logo = this.basicInfo?.appLogo as string;\r\n this.selectedAppType = this.basicInfo?.appType as string;\r\n if (this.basicInfo) {\r\n this.getAppType();\r\n this.getFileDownloadPresignedUrls(this.logo);\r\n }\r\n }\r\n\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private fileUploadService: FileUploadService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result?.matches;\r\n });\r\n this.tenantAppService.getApplicationType();\r\n this.fileUploadService.setApiBaseUrl(this.tenantAppService?.apiBaseUrl);\r\n }\r\n\r\n /**\r\n * Gets the application types.\r\n * @memberof TenantBasicDetailsComponent\r\n */\r\n getAppType(): void {\r\n const appTypes = this.tenantAppService.appTypeInfo;\r\n const selectedType = appTypes?.filter(\r\n (appType) => appType.id === this.basicInfo?.appType\r\n ) as RadioOption[];\r\n this.selectedAppTypeLabel = selectedType[0]?.label;\r\n }\r\n\r\n /**\r\n * Retrieves presigned URL for downloading files from Amazon S3 bucket.\r\n * @memberof TenantBasicDetailsComponent\r\n */\r\n getFileDownloadPresignedUrls(fileName: string): void {\r\n this.fileUploadService\r\n .getFileDownloadPresignedUrls(fileName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n next: (response: any) => {\r\n this.imageUrl = response?.body;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: Error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Downloads file from AWS S3 using a presigned URL.\r\n * @memberof TenantBasicDetailsComponent\r\n */\r\n downloadFile(presignedUrl: string): void {\r\n this.fileUploadService\r\n .downloadFile(presignedUrl)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n next: (response: any) => {\r\n this.imageUrl = response as string;\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<div *ngIf=\"basicInfo\" class=\"ieeesa-tenant-basic-info d-flex flex-start flex-column\">\r\n <p class=\"ieeesa-body-color-sm-14 mb-0\">{{ basicDetailTexts.title }}</p>\r\n <p class=\"ieeesa-body-md-16\">{{ basicInfo.appTitle }}</p>\r\n <p class=\"ieeesa-body-color-sm-14 mb-2\">{{ basicDetailTexts.logo }}</p>\r\n <ng-container>\r\n <ieeesa-image-preview\r\n class=\"pb-3\"\r\n [imageUrl]=\"imageUrl\"\r\n ></ieeesa-image-preview>\r\n </ng-container>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.heading\r\n }}</span>\r\n <p class=\"ieeesa-title-sm-16\">{{ basicInfo.appHeading }}</p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.description\r\n }}</span>\r\n <p class=\"ieeesa-title-sm-16 me-4\">{{ basicInfo.appDescription }}</p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-2\">{{\r\n basicDetailTexts.bgColor\r\n }}</span>\r\n <p\r\n class=\"ieeesa-tenant-basic-info__bgColor\"\r\n [ngStyle]=\"{ 'background-color': basicInfo.backgroundColor }\"\r\n ></p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.helpLink\r\n }}</span>\r\n <p class=\"ieeesa-title-sm-16\">{{ basicInfo.appHelpLink }}</p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.listOfFeatures\r\n }}</span>\r\n <ul [ngClass]=\"isMobileView ? '' : 'd-flex gap-5'\">\r\n <li class=\"ieeesa-body-md-16\" *ngFor=\"let feature of basicInfo.features\">\r\n {{ feature?.featureName }}\r\n </li>\r\n </ul>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.domainURL\r\n }}</span>\r\n <p class=\"ieeesa-title-sm-16\">{{ basicInfo.appDomainUrl }}</p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{ basicDetailTexts.type }}</span>\r\n <p class=\"ieeesa-body-md-16\">{{ selectedAppTypeLabel }}</p>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenTexts from '../../assets/constants.json';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\nimport {\r\n AlignType,\r\n DynamicFormComponent,\r\n FieldConfig,\r\n FormControlType,\r\n FormGrid,\r\n FormModel,\r\n SelectOption,\r\n} from '@ieeesa-npm/presentation';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { FormStatus, SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantFunctionType } from '../../models/tenant-function-type.model';\r\nimport { TenantBasicInfo } from '../../models/tenant.model';\r\nimport {\r\n RoleDetails,\r\n Role,\r\n CreateModifyRoleRequestPayload,\r\n CreateModifyRoleResponse,\r\n} from '../../models/roles-and-permissions.model';\r\nimport { RoleTypeOption } from '../../models/role-type.model';\r\nimport { RolesValidation } from '../../assets/tenant-validations';\r\nimport { AlertType, GlobalErrorHandlerService } from '@ieeesa-npm/utility';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n@Component({\r\n selector: 'ieeesa-create-modify-role',\r\n standalone: true,\r\n imports: [CommonModule, DynamicFormComponent],\r\n templateUrl: './create-modify-role.component.html',\r\n styleUrls: ['./create-modify-role.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CreateModifyRoleComponent implements OnInit, OnDestroy {\r\n destroy$ = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenTexts;\r\n createRoleTexts = this.constants?.createRole;\r\n leftButtonLabel = this.createRoleTexts?.label?.leftButtonLabel;\r\n rightButtonLabel = this.createRoleTexts?.label?.rightButtonLabel;\r\n colWidth: FormGrid = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };\r\n createRoleFormGroup!: FormModel;\r\n createModifyRoleFormGroupRef!: FormGroup;\r\n actionButtonAlign = AlignType.LEFT;\r\n @ViewChild(DynamicFormComponent)\r\n dynamicFormComponent!: DynamicFormComponent;\r\n @Output() submitFormResponse = new EventEmitter();\r\n @Output() formCancel = new EventEmitter();\r\n tenantFunctionType!: TenantFunctionType;\r\n selectedTenantInfo!: TenantBasicInfo | undefined;\r\n createModifyRolePayload!: CreateModifyRoleRequestPayload;\r\n roleTypeOptions!: SelectOption[];\r\n selectedRoleDetails!: RoleDetails;\r\n selectedRole!: Role;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService,\r\n // eslint-disable-next-line no-unused-vars\r\n private globalErrorHandlerService: GlobalErrorHandlerService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.tenantFunctionType = this.tenantAppService?.getTenantFunctionType();\r\n this.selectedTenantInfo =\r\n this.tenantAppService?.getSelectedTenantInformation();\r\n this.roleTypeOptions =\r\n this.tenantAppService?.getRoleTypeOption() as RoleTypeOption[];\r\n this.selectedRoleDetails =\r\n this.tenantAppService?.getSelectedRoleInformation() as Role;\r\n if (this.selectedRoleDetails) {\r\n this.selectedRole = this.tenantAppService?.roles?.find(\r\n ({ roleId }) => roleId === this.selectedRoleDetails?.roleId\r\n ) as Role;\r\n }\r\n this.initializeCreateRoleFormGroup();\r\n }\r\n\r\n /**\r\n * Constructs and returns the role type form field based on credit or edit role.\r\n * @return {FieldConfig} -role type form field.\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n getRoleTypeField(): FieldConfig {\r\n let roleTypeField: FieldConfig;\r\n if (this.tenantFunctionType === TenantFunctionType.EDIT_ROLE) {\r\n roleTypeField = {\r\n type: FormControlType?.TEXT_AREA,\r\n label: this.createRoleTexts?.label?.roleType,\r\n controlName: 'roleType',\r\n isReadonly: true,\r\n value: this.selectedRole?.roleTypeName,\r\n ariaMultiline: false,\r\n ariaLabel: this.createRoleTexts?.label?.ariaLabel?.roleType,\r\n ariaDescribedById:\r\n this.createRoleTexts?.label?.ariaDescribedById?.roleType,\r\n isResize: true,\r\n };\r\n } else {\r\n roleTypeField = {\r\n type: FormControlType?.SELECT,\r\n label: this.createRoleTexts?.label?.roleType + '*',\r\n controlName: 'roleType',\r\n isSortNeeded: false,\r\n value: '',\r\n validation: [Validators.required],\r\n dropdownOptions: this.roleTypeOptions,\r\n supportMessage: this.createRoleTexts?.supportText?.roleType,\r\n requiredErrorMessage: this.createRoleTexts?.message?.error?.required,\r\n ariaLabel: this.createRoleTexts?.label?.ariaLabel?.roleType,\r\n ariaDescribedById:\r\n this.createRoleTexts?.label?.ariaDescribedById?.roleType,\r\n };\r\n }\r\n return roleTypeField;\r\n }\r\n /**\r\n * Initialize the create/edit role form group array.\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n initializeCreateRoleFormGroup(): void {\r\n this.createRoleFormGroup = {\r\n formGroup: [\r\n {\r\n legend: '',\r\n controls: [\r\n {\r\n type: FormControlType.TEXT_AREA,\r\n label: this.createRoleTexts?.label?.appTitle,\r\n controlName: 'appTitle',\r\n value: this.selectedTenantInfo?.appTitle,\r\n ariaLabel: this.createRoleTexts?.label?.ariaLabel?.appTitle,\r\n ariaDescribedById:\r\n this.createRoleTexts?.label?.ariaDescribedById?.appTitle,\r\n isReadonly: true,\r\n ariaMultiline: false,\r\n isResize: true,\r\n },\r\n this.getRoleTypeField(),\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createRoleTexts?.label?.roleName + '*',\r\n controlName: 'roleName',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT_ROLE\r\n ? this.selectedRole?.roleName\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(RolesValidation.roleNameMaxLength),\r\n ],\r\n supportMessage: this.createRoleTexts?.supportText?.roleName,\r\n requiredErrorMessage:\r\n this.createRoleTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createRoleTexts?.message?.error?.limit?.roleNameMaxChars,\r\n ariaLabel: this.createRoleTexts?.label?.ariaLabel?.roleName,\r\n ariaDescribedById:\r\n this.createRoleTexts?.label?.ariaDescribedById?.roleName,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n /**\r\n * Gets create/edit role form group reference.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n getCreateModifyRoleFormGroupRef(form: FormGroup[]): void {\r\n this.createModifyRoleFormGroupRef = form[0];\r\n }\r\n /**\r\n * Updates createModifyRoleFormGroupRef on add role form change event.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n onCreateModifyRoleFormChange(form: FormGroup[]): void {\r\n this.createModifyRoleFormGroupRef = form[0];\r\n }\r\n /**\r\n * Creates a new role on form submission and the form is valid.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n onCreateModifyRoleFormSubmit(form: FormGroup[]): void {\r\n form[0]?.markAllAsTouched();\r\n if (form[0].status === FormStatus.VALID) {\r\n this.createModifyRolePayload = this.getCreateModifyRolePayload(\r\n form[0].getRawValue()\r\n );\r\n // eslint-disable-next-line no-unused-expressions\r\n this.tenantFunctionType === TenantFunctionType.EDIT_ROLE\r\n ? this.editRole()\r\n : this.createRole();\r\n }\r\n }\r\n /**\r\n * Constructs create/edit role payload from the form data and returns.\r\n * @param {*} formData\r\n * @return {CreateModifyRoleRequestPayload}\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n getCreateModifyRolePayload(formData: any): CreateModifyRoleRequestPayload {\r\n const payload: CreateModifyRoleRequestPayload = {\r\n payload: {\r\n appId: this.selectedTenantInfo?.appId as string,\r\n roleName: formData?.roleName,\r\n },\r\n };\r\n if (this.tenantFunctionType === TenantFunctionType.EDIT_ROLE) {\r\n payload.payload.roleId = this.selectedRole?.roleId;\r\n } else {\r\n payload.payload.roleType = formData?.roleType?.id;\r\n }\r\n return payload;\r\n }\r\n /**\r\n * Post the creates new role form data to the server on form submission to create a new role.\r\n * @param {CreateRoleRequestPayload} createModifyRolePayload\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n createRole(): void {\r\n this.tenantAppService\r\n .createRole(this.createModifyRolePayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateModifyRoleResponse) => {\r\n if (response.status) {\r\n this.tenantAppService.setNewlyCreatedRoleInfo(\r\n this.createModifyRolePayload?.payload\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.handleErrors(error);\r\n },\r\n });\r\n }\r\n /**\r\n * Post the edited role form data to server on form submission to update the selected role information.\r\n * @param {CreateModifyRoleRequestPayload} createModifyRolePayload\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n editRole(): void {\r\n this.tenantAppService\r\n .editRole(this.createModifyRolePayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateModifyRoleResponse) => {\r\n if (response.status) {\r\n this.tenantAppService.setNewlyCreatedRoleInfo(\r\n this.createModifyRolePayload?.payload\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.handleErrors(error);\r\n },\r\n });\r\n }\r\n /**\r\n * Captures the server side errors and handles it based on the custom or Http errors.\r\n * @param {HttpErrorResponse} error\r\n * @return -returns nothing\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n handleErrors(error: any): void {\r\n const errorCodes = error?.error?.body?.errorCodes;\r\n if (Array.isArray(errorCodes) && !error?.error?.status) {\r\n if (errorCodes[0] === '3012') {\r\n const roleName = this.createModifyRolePayload?.payload?.roleName;\r\n const errorMessage = this.sharedService?.parseErrorMessage(\r\n errorCodes,\r\n this.createRoleTexts?.errors\r\n );\r\n this.sharedService.showAlertMessage(\r\n AlertType.ERROR,\r\n `${roleName} ${errorMessage}`\r\n );\r\n }\r\n } else if (error && error instanceof HttpErrorResponse) {\r\n this.globalErrorHandlerService?.handleError(error);\r\n }\r\n }\r\n /**\r\n * Emits form cancel event.\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n onFormCancel(): void {\r\n this.formCancel.emit();\r\n }\r\n\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<ieeesa-dynamic-form\r\n *ngIf=\"createRoleFormGroup\"\r\n class=\"ieeesa-create-role-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createRoleFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateModifyRoleFormSubmit($event)\"\r\n (formChange)=\"onCreateModifyRoleFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateModifyRoleFormGroupRef($event)\"\r\n></ieeesa-dynamic-form>\r\n","/* eslint-disable no-unused-vars */\r\nexport enum RoleMenuAction {\r\n EDIT_ROLE = 1,\r\n DELETE_ROLE = 2,\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nexport enum RoleAndPermissionsTableType {\r\n ROLE = 'ROLE',\r\n PERMISSION = 'PERMISSION',\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport {\r\n AlignType,\r\n FormGrid,\r\n FormModel,\r\n SelectOption,\r\n SlideToggleOption,\r\n FormControlType,\r\n DynamicFormComponent,\r\n DataTableComponent,\r\n TableColumnSchema,\r\n TableColumnType,\r\n} from '@ieeesa-npm/presentation';\r\nimport { AlertType } from '@ieeesa-npm/utility';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport {\r\n Permission,\r\n ModifiedRolesAndPermissionsMapping,\r\n RolesAndPermissionsRequestPayload,\r\n Role,\r\n RoleDetails,\r\n RoleOrPermissionMapping,\r\n RolePermissionMappingRequestPayload,\r\n} from '../../models/roles-and-permissions.model';\r\nimport { RoleAndPermissionsTableType } from '../../models/roles-and-permissions-table-type.model';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { FormUtilityService, SharedService } from '@ieeesa-npm/shared';\r\n\r\n@Component({\r\n selector: 'ieeesa-roles-and-permissions-mapping',\r\n standalone: true,\r\n imports: [CommonModule, DynamicFormComponent, DataTableComponent],\r\n templateUrl: './roles-and-permissions-mapping.component.html',\r\n styleUrls: ['./roles-and-permissions-mapping.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class RolesAndPermissionsMappingComponent implements OnInit, OnDestroy {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenText;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n mapRolesAndPermissionsScreenTexts: any =\r\n this.constants?.mapRolesAndPermissions;\r\n formGroup!: FormModel;\r\n colWidth: FormGrid = { xs: 12, xl: 6, sm: 12, md: 12, lg: 6 };\r\n actionButtonAlign = AlignType.MIDDLE;\r\n leftButtonLabel =\r\n this.mapRolesAndPermissionsScreenTexts?.label?.leftButtonLabel;\r\n rightButtonLabel =\r\n this.mapRolesAndPermissionsScreenTexts?.label?.rightButtonLabel;\r\n roles: SelectOption[] = [];\r\n permissions: SelectOption[] = [];\r\n appId!: string;\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n tableColumnSchema: TableColumnSchema[] = [];\r\n tableData: RoleOrPermissionMapping[] = [];\r\n selectedRole!: RoleDetails;\r\n selectedPermission!: Permission;\r\n modifiedRolesAndPermissionsMapping: ModifiedRolesAndPermissionsMapping[] = [];\r\n tableHeading = '';\r\n rolePermissionMappingPayload: RolePermissionMappingRequestPayload = {\r\n payload: {\r\n appId: '',\r\n permissionId: null,\r\n roleId: null,\r\n },\r\n };\r\n @Output() formCancel = new EventEmitter();\r\n @ViewChild(DynamicFormComponent) dynamicFormComponent!: DynamicFormComponent;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars, no-empty-function, @typescript-eslint/no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService,\r\n // eslint-disable-next-line no-unused-vars\r\n public elementRef: ElementRef,\r\n // eslint-disable-next-line no-unused-vars\r\n private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n /**\r\n * Initializes form group and all the page defaults.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n ngOnInit(): void {\r\n this.appId = this.tenantAppService.getSelectedTenantInformation()\r\n ?.appId as string;\r\n this.formGroup = {\r\n formGroup: [\r\n {\r\n legend: this.mapRolesAndPermissionsScreenTexts?.legend,\r\n controls: [\r\n {\r\n controlName: 'role',\r\n label: this.mapRolesAndPermissionsScreenTexts?.label?.role,\r\n type: FormControlType.SELECT,\r\n dropdownOptions: this.roles,\r\n supportMessage:\r\n this.mapRolesAndPermissionsScreenTexts?.supportText?.role,\r\n ariaLabel:\r\n this.mapRolesAndPermissionsScreenTexts?.label?.ariaLabel?.role,\r\n ariaDescribedById:\r\n this.mapRolesAndPermissionsScreenTexts?.label?.ariaDescribedById\r\n ?.role,\r\n },\r\n {\r\n controlName: 'permission',\r\n label: this.mapRolesAndPermissionsScreenTexts?.label?.permission,\r\n type: FormControlType.SELECT,\r\n dropdownOptions: this.permissions,\r\n supportMessage:\r\n this.mapRolesAndPermissionsScreenTexts?.supportText?.permission,\r\n ariaLabel:\r\n this.mapRolesAndPermissionsScreenTexts?.label?.ariaLabel\r\n ?.permission,\r\n ariaDescribedById:\r\n this.mapRolesAndPermissionsScreenTexts?.label?.ariaDescribedById\r\n ?.permission,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n this.getRoles();\r\n this.getPermissions();\r\n this.sharedService.isAlertClosed\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n const alertModals = document.querySelectorAll(\r\n '.cdk-overlay-container ieeesa-alert'\r\n );\r\n if (alertModals.length) {\r\n (\r\n document.querySelector(\r\n '.cdk-overlay-container .mat-mdc-dialog-content .ieeesa-alert-box__close-button'\r\n ) as HTMLElement\r\n )?.focus();\r\n } else {\r\n (\r\n this.elementRef.nativeElement.querySelector(\r\n '.cdk-overlay-container .mat-mdc-dialog-content .ieeesa-select-field mat-select'\r\n ) as HTMLElement\r\n )?.focus();\r\n }\r\n });\r\n }\r\n /**\r\n * Constructs the role or permission table schema to display the associated mapping in a table view.\r\n * @param {FormGroup[]} formGroups\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n onRoleOrPermissionSelected(formGroups: FormGroup[]): void {\r\n this.tableColumnSchema = [];\r\n this.modifiedRolesAndPermissionsMapping = [];\r\n const formGroup = formGroups[0];\r\n const role = formGroup.get('role')?.value;\r\n const permission = formGroup.get('permission')?.value;\r\n if (role) {\r\n this.selectedRole = {\r\n roleId: role.id,\r\n roleName: role.name,\r\n };\r\n this.rolePermissionMappingPayload.payload.roleId = role?.id;\r\n }\r\n if (permission) {\r\n this.selectedPermission = {\r\n permissionId: permission.id,\r\n permissionName: permission.name,\r\n };\r\n this.rolePermissionMappingPayload.payload.permissionId = permission?.id;\r\n }\r\n this.rolePermissionMappingPayload.payload.appId = this.appId;\r\n if ((role && permission) || role) {\r\n this.tableHeading = `${this.mapRolesAndPermissionsScreenTexts?.roleTableCaption}<strong>${role?.name}</strong>`;\r\n this.tableColumnSchema.push({\r\n id: 1,\r\n columnDef: 'permission',\r\n heading: this.mapRolesAndPermissionsScreenTexts.tableColumns.permission,\r\n columnType: TableColumnType.TEXT,\r\n cellData: (permissionMapping: RoleOrPermissionMapping) =>\r\n permissionMapping?.roleOrPermissionName,\r\n });\r\n } else {\r\n this.tableColumnSchema.push({\r\n id: 1,\r\n columnDef: 'role',\r\n heading: this.mapRolesAndPermissionsScreenTexts.tableColumns.role,\r\n columnType: TableColumnType.TEXT,\r\n cellData: (roleMapping: RoleOrPermissionMapping) =>\r\n roleMapping?.roleOrPermissionName,\r\n });\r\n }\r\n if (permission) {\r\n const permissionHeading = `${this.mapRolesAndPermissionsScreenTexts?.permissionTableCaption}<strong>${permission?.name}</strong>`;\r\n this.tableHeading = role\r\n ? this.tableHeading + `</br>` + permissionHeading\r\n : permissionHeading;\r\n }\r\n this.tableColumnSchema.push({\r\n id: 2,\r\n columnDef: 'slideToggle',\r\n heading: this.mapRolesAndPermissionsScreenTexts.tableColumns.status,\r\n columnType: TableColumnType.SLIDE_TOGGLE,\r\n cellData: (roleMapping: RoleOrPermissionMapping) => {\r\n return {\r\n id: Math.floor(Math.random() * 1000) + 1,\r\n label: '',\r\n ariaLabel: roleMapping.roleOrPermissionName,\r\n checked: roleMapping.status,\r\n };\r\n },\r\n });\r\n this.dynamicFormComponent.isSubmitButtonDisabled = true;\r\n this.getRolePermissionMapping(this.rolePermissionMappingPayload);\r\n }\r\n /**\r\n * Gets the list of roles and displayed in the role dropdown.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n getRoles(): void {\r\n this.tenantAppService\r\n .getRoles(this.appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.status) {\r\n const rolesList = response?.body as Role[];\r\n rolesList.map((role: Role) => {\r\n this.roles.push({\r\n id: role.roleId,\r\n name: role.roleName,\r\n });\r\n });\r\n this.formUtilityService.updateFormControlOptions(\r\n 'role',\r\n 'dropdownOptions',\r\n this.roles,\r\n this.dynamicFormComponent\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.mapRolesAndPermissionsScreenTexts.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Gets the list of permissions and displayed in the permission dropdown.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n getPermissions(): void {\r\n this.tenantAppService\r\n .getPermissions(this.appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.status) {\r\n const permissionsList = response?.body as Permission[];\r\n permissionsList.map((permission: Permission) => {\r\n this.permissions.push({\r\n id: permission.permissionId,\r\n name: permission.permissionName,\r\n });\r\n });\r\n this.formUtilityService.updateFormControlOptions(\r\n 'permission',\r\n 'dropdownOptions',\r\n this.permissions,\r\n this.dynamicFormComponent\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.mapRolesAndPermissionsScreenTexts.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Gets the list of mapped roles/permissions from the backend api.\r\n * @param {RolePermissionMappingRequestPayload} payload\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n getRolePermissionMapping(payload: RolePermissionMappingRequestPayload): void {\r\n this.tableData = [];\r\n this.tenantAppService\r\n .getRolePermissionMapping(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n const payloadInfo = payload.payload;\r\n if (payloadInfo?.roleId && payloadInfo?.permissionId) {\r\n this.tableData.push({\r\n roleOrPermissionName: this.selectedPermission?.permissionName,\r\n roleOrPermissionId: this.selectedPermission?.permissionId,\r\n status: true,\r\n });\r\n } else if (payloadInfo?.roleId) {\r\n this.setTableData(\r\n this.permissions,\r\n response.body as Permission[],\r\n RoleAndPermissionsTableType.PERMISSION\r\n );\r\n } else {\r\n this.setTableData(\r\n this.roles,\r\n response.body as RoleDetails[],\r\n RoleAndPermissionsTableType.ROLE\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n const errorCodes = error?.error?.body?.errorCodes;\r\n // Returns error code 3020 when mapped roles does not exist for given permission id.\r\n if (errorCodes.includes('3020')) {\r\n this.setTableData(this.roles, [], RoleAndPermissionsTableType.ROLE);\r\n }\r\n // Returns error code 3021 when mapped permissions does not exist for given role id.\r\n else if (errorCodes.includes('3021')) {\r\n this.setTableData(\r\n this.permissions,\r\n [],\r\n RoleAndPermissionsTableType.PERMISSION\r\n );\r\n }\r\n // Returns error code 3017 when role permission mapping does not exist for given role id.\r\n else if (errorCodes.includes('3017')) {\r\n this.tableData.push({\r\n roleOrPermissionName: this.selectedPermission?.permissionName,\r\n roleOrPermissionId: this.selectedPermission?.permissionId,\r\n status: false,\r\n });\r\n } else\r\n this.sharedService.handleErrors(\r\n error,\r\n this.mapRolesAndPermissionsScreenTexts.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Displaying the mapped roles and permissions data into the data table.\r\n * @param {SelectOption[]} roleOrPermissions\r\n * @param {RoleDetails[] | Permission[]} mappedRoleOrPermissions\r\n * @param {RoleAndPermissionsTableType} tableType\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n setTableData(\r\n roleOrPermissions: SelectOption[],\r\n mappedRoleOrPermissions: RoleDetails[] | Permission[],\r\n tableType: RoleAndPermissionsTableType\r\n ): void {\r\n roleOrPermissions.map((roleOrPermission) => {\r\n this.tableData.push({\r\n roleOrPermissionName: roleOrPermission.name,\r\n roleOrPermissionId: roleOrPermission.id as string,\r\n status:\r\n tableType === RoleAndPermissionsTableType.ROLE\r\n ? mappedRoleOrPermissions.length > 0 &&\r\n (mappedRoleOrPermissions as RoleDetails[]).some(\r\n (mappedRoleOrPermission: RoleDetails) =>\r\n mappedRoleOrPermission.roleId === roleOrPermission.id\r\n )\r\n : mappedRoleOrPermissions.length > 0 &&\r\n (mappedRoleOrPermissions as Permission[]).some(\r\n (mappedRoleOrPermission) =>\r\n mappedRoleOrPermission.permissionId === roleOrPermission.id\r\n ),\r\n });\r\n });\r\n }\r\n /**\r\n * Constructs the payload based on the roles and permissions mapping (selection or deselection).\r\n * @param roleOrPermissionStatus\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n roleOrPermissionStatusChange(roleOrPermissionStatus: {\r\n slideToggle: SlideToggleOption;\r\n rowData: RoleOrPermissionMapping;\r\n }): void {\r\n if (\r\n (this.selectedRole?.roleId && this.selectedPermission?.permissionId) ||\r\n this.selectedRole?.roleId\r\n ) {\r\n if (\r\n this.modifiedRolesAndPermissionsMapping.find(\r\n (permission) =>\r\n permission.permissionId ===\r\n roleOrPermissionStatus.rowData.roleOrPermissionId\r\n )\r\n ) {\r\n this.modifiedRolesAndPermissionsMapping.splice(\r\n this.modifiedRolesAndPermissionsMapping.findIndex(\r\n (permission) =>\r\n permission.permissionId ===\r\n roleOrPermissionStatus.rowData.roleOrPermissionId\r\n ),\r\n 1\r\n );\r\n } else {\r\n this.modifiedRolesAndPermissionsMapping.push({\r\n roleId: this.selectedRole.roleId,\r\n permissionId: roleOrPermissionStatus.rowData.roleOrPermissionId,\r\n appId: this.appId,\r\n status: roleOrPermissionStatus.slideToggle.checked,\r\n });\r\n }\r\n } else if (this.selectedPermission?.permissionId) {\r\n if (\r\n this.modifiedRolesAndPermissionsMapping.find(\r\n (role) =>\r\n role.roleId === roleOrPermissionStatus.rowData.roleOrPermissionId\r\n )\r\n ) {\r\n this.modifiedRolesAndPermissionsMapping.splice(\r\n this.modifiedRolesAndPermissionsMapping.findIndex(\r\n (role) =>\r\n role.roleId === roleOrPermissionStatus.rowData.roleOrPermissionId\r\n ),\r\n 1\r\n );\r\n } else {\r\n this.modifiedRolesAndPermissionsMapping.push({\r\n roleId: roleOrPermissionStatus.rowData.roleOrPermissionId,\r\n permissionId: this.selectedPermission.permissionId,\r\n appId: this.appId,\r\n status: roleOrPermissionStatus.slideToggle.checked,\r\n });\r\n }\r\n }\r\n this.dynamicFormComponent.isSubmitButtonDisabled =\r\n !this.modifiedRolesAndPermissionsMapping.length;\r\n }\r\n /**\r\n * Submits the roles and permissions mappings to the server.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n onMapAndPermissionsFormSubmit(): void {\r\n const payload: RolesAndPermissionsRequestPayload = {\r\n payload: this.modifiedRolesAndPermissionsMapping,\r\n };\r\n this.dynamicFormComponent.isSubmitButtonDisabled = true;\r\n this.modifiedRolesAndPermissionsMapping = [];\r\n this.tenantAppService\r\n .saveRolePermissionMapping(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.status) {\r\n this.sharedService.showAlertMessage(\r\n AlertType.SUCCESS,\r\n this.mapRolesAndPermissionsScreenTexts.message.success\r\n .rolesAndPermissionsSubmission\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.mapRolesAndPermissionsScreenTexts.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Closes the map and permissions modal.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n onMapAndPermissionsFormCancel(): void {\r\n this.formCancel.emit();\r\n }\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<ieeesa-dynamic-form\r\n [formGroups]=\"formGroup\"\r\n [colWidth]=\"colWidth\"\r\n [isSubmitButtonDisabled]=\"true\"\r\n [isLegendVisible]=\"true\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLeftButtonNeeded]=\"true\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n (dropdownChange)=\"onRoleOrPermissionSelected($event)\"\r\n (formSubmit)=\"onMapAndPermissionsFormSubmit()\"\r\n (formLeftButtonClicked)=\"onMapAndPermissionsFormCancel()\"\r\n>\r\n <ieeesa-data-table\r\n component\r\n *ngIf=\"tableData.length\"\r\n [columnSchemaInfo]=\"tableColumnSchema\"\r\n [tableColumnsHeaderText]=\"tableHeading\"\r\n [tableDataInfo]=\"tableData\"\r\n (rowSlideToggle)=\"roleOrPermissionStatusChange($event)\"\r\n ></ieeesa-data-table>\r\n</ieeesa-dynamic-form>\r\n","import { GroupTypeConfiguration } from '@ieeesa-npm/groups';\r\nimport { Menu } from '@ieeesa-npm/presentation';\r\nimport { Role } from './roles-and-permissions.model';\r\n\r\nexport interface ViewGroupTypesConfiguration extends GroupTypeConfiguration {\r\n roles: Role[] | null;\r\n hasGroup: boolean;\r\n}\r\n\r\nexport interface ViewGroupTypeResponse {\r\n status: boolean;\r\n message: string;\r\n body: ViewGroupTypesConfiguration[];\r\n}\r\n\r\nexport interface GroupTypeDetails {\r\n name: string;\r\n description: string;\r\n rosterType: string;\r\n businessRule: string;\r\n roles: string;\r\n hasGroup: boolean;\r\n menuAction?: Menu[];\r\n}\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport enum GroupTypeSettings {\r\n ALLOW_SUB_GROUP = 'allowSubGroup',\r\n ALLOW_ROSTER = 'allowRoster',\r\n ALLOW_ALTERNATE_VOTING = 'allowAlternateVoting',\r\n HAS_CLASSIFICATION = 'hasClassification',\r\n}","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n DataTableComponent,\r\n Menu,\r\n TableColumnSchema,\r\n TableColumnType,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport {\r\n GroupTypeDetails,\r\n GroupTypeSettings,\r\n ViewGroupTypeResponse,\r\n ViewGroupTypesConfiguration,\r\n} from '../../models/view-tenant-group-types.model';\r\nimport { Role } from '../../models/roles-and-permissions.model';\r\n\r\n/**\r\n * Component for viewing and managing tenant group types. Fetches the configured group types associated to the selected tenant and displays in tabular view.\r\n * @export\r\n * @class ViewTenantGroupTypesComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n selector: 'ieeesa-view-tenant-group-types',\r\n standalone: true,\r\n imports: [CommonModule, DataTableComponent],\r\n templateUrl: './view-tenant-group-types.component.html',\r\n styleUrls: ['./view-tenant-group-types.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ViewTenantGroupTypesComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenText;\r\n columnHeading = this.constants?.viewGroupTypes?.tableColumns?.heading;\r\n settings = this.constants?.viewGroupTypes?.settings;\r\n tableRowActions: Menu[] = this.constants?.viewGroupTypes?.actionMenuItems;\r\n columnSchema: TableColumnSchema[] = [];\r\n groupTypes: GroupTypeDetails[] = [];\r\n appId = '';\r\n headerElementClassName = '.ieeesa-header';\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Fetches group types data from the server and initializes column schema.\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n ngOnInit(): void {\r\n this.appId = this.tenantAppService.getSelectedTenantInformation()\r\n ?.appId as string;\r\n this.tenantAppService\r\n .getGroupTypes(this.appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: ViewGroupTypeResponse) => {\r\n this.initializeColumnSchema();\r\n this.groupTypes = this.formatGroupTypesTableData(response);\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewGroupTypes?.errors\r\n );\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Formats raw group types data into a required format for display.\r\n * @param {ViewGroupTypeResponse} groupTypeRes\r\n * @return {GroupTypeDetails[]}\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n formatGroupTypesTableData(\r\n groupTypeRes: ViewGroupTypeResponse\r\n ): GroupTypeDetails[] {\r\n const formattedData: GroupTypeDetails[] = [];\r\n groupTypeRes?.body?.forEach((item: ViewGroupTypesConfiguration) => {\r\n const { configFieldValue, roles, hasGroup } = item;\r\n const { name, description, businessRule } = configFieldValue;\r\n const { rosterType, ...restBusinessRule } = businessRule as {\r\n rosterType: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n [key: string]: any;\r\n };\r\n const businessRuleString = this.transformBusinessRule(restBusinessRule);\r\n const roleNames = roles\r\n ? roles?.map((role: Role) => role?.roleName).join(', ')\r\n : '';\r\n const menuAction = JSON.parse(JSON.stringify(this.tableRowActions));\r\n menuAction[1].isDisabled = hasGroup;\r\n\r\n formattedData.push({\r\n name,\r\n description,\r\n rosterType,\r\n businessRule: businessRuleString,\r\n roles: roleNames,\r\n hasGroup: item.hasGroup,\r\n menuAction,\r\n });\r\n });\r\n return formattedData;\r\n }\r\n\r\n /**\r\n * Transforms business rule to required format in string.\r\n * @param {*} rule\r\n * @return {string}\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transformBusinessRule(rule: any): string {\r\n const ruleStringArray: string[] = [];\r\n for (const setting of Object.values(GroupTypeSettings)) {\r\n if (rule[setting] === true) {\r\n ruleStringArray.push(this.settings[setting]);\r\n }\r\n }\r\n return ruleStringArray.join(', ');\r\n }\r\n\r\n /**\r\n * Initializes table column schema to display group types in tabular view.\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n initializeColumnSchema(): void {\r\n this.columnSchema = [\r\n {\r\n id: 1,\r\n columnDef: 'groupType',\r\n heading: this.columnHeading?.groupType,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.name}`,\r\n },\r\n {\r\n id: 2,\r\n columnDef: 'rosterType',\r\n heading: this.columnHeading?.rosterType,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.rosterType}`,\r\n },\r\n {\r\n id: 3,\r\n columnDef: 'description',\r\n heading: this.columnHeading?.description,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.description}`,\r\n },\r\n {\r\n id: 4,\r\n columnDef: 'applicableRoles',\r\n heading: this.columnHeading?.applicableRoles,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.roles}`,\r\n },\r\n {\r\n id: 5,\r\n columnDef: 'settings',\r\n heading: this.columnHeading?.settings,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.businessRule}`,\r\n },\r\n {\r\n id: 6,\r\n columnDef: 'action',\r\n heading: this.columnHeading?.action,\r\n columnType: TableColumnType.ACTIONS,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.menuAction}`,\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<div class=\"ieeesa-view-tenant-group-types\">\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [tableDataInfo]=\"groupTypes\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n ></ieeesa-data-table>\r\n</div>","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AlertType,\r\n BreakpointObserverService,\r\n GlobalErrorHandlerService,\r\n ModalType,\r\n} from '@ieeesa-npm/utility';\r\nimport {\r\n AccordionInfo,\r\n ModalComponent,\r\n Menu,\r\n PaginatorConfig,\r\n SlideToggleComponent,\r\n TableActions,\r\n AlignType,\r\n ModalConfirmationComponent,\r\n IconButtonComponent,\r\n RadioOption,\r\n IconButton,\r\n SlideToggleOption,\r\n TableColumnSchema,\r\n TableColumnType,\r\n AccordionComponent,\r\n AccordionDetails,\r\n DataTableComponent,\r\n TableColumnMenuInfo,\r\n} from '@ieeesa-npm/presentation';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../../models/tenants-permission.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantsRoutesConfig } from '../../models/route-config.model';\r\nimport { Features } from '../../models/features.model';\r\nimport {\r\n TenantBasicInfo,\r\n TenantDetailsResponse,\r\n} from '../../models/tenant.model';\r\nimport { TenantFunctionType } from '../../models/tenant-function-type.model';\r\nimport { CreateTenantApplicationComponent } from '../create-tenant-application/create-tenant-application.component';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {\r\n UpdateTenantStatusRequestPayload,\r\n UpdateTenantStatusResponse,\r\n} from '../../models/update-tenant-status.model';\r\nimport { FeaturePermissionId } from '../../models/feature-permission-id.model';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../../models/app-type-config.model';\r\nimport { TenantBasicDetailsComponent } from '../tenant-basic-details/tenant-basic-details.component';\r\nimport {\r\n GetRolesAndPermissionsPayload,\r\n GetRolesAndPermissionsResponse,\r\n GetRolesResponse,\r\n Role,\r\n RolesAndPermissionsMapping,\r\n RolesAndPermissions,\r\n DeleteRoleRequestPayload,\r\n DeleteRoleResponse,\r\n PaginationInfo,\r\n RoleDetails,\r\n} from '../../models/roles-and-permissions.model';\r\nimport { PermissionType } from '../../models/permission-type.model';\r\nimport { CreateModifyRoleComponent } from '../create-modify-role/create-modify-role.component';\r\nimport { RoleMenuAction } from '../../models/role-menu-action.model';\r\nimport { RolesAndPermissionsMappingComponent } from '../roles-and-permissions-mapping/roles-and-permissions-mapping.component';\r\nimport { ViewTenantGroupTypesComponent } from '../view-tenant-group-types/view-tenant-group-types.component';\r\nimport {\r\n GetRoleTypesPayload,\r\n RoleTypeConfiguration,\r\n RoleTypeOption,\r\n RoleTypeResponse,\r\n} from '../../models/role-type.model';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'ieeesa-view-tenant-details',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n SlideToggleComponent,\r\n AccordionComponent,\r\n MatDividerModule,\r\n TenantBasicDetailsComponent,\r\n IconButtonComponent,\r\n MatButtonModule,\r\n DataTableComponent,\r\n ViewTenantGroupTypesComponent,\r\n ],\r\n templateUrl: './view-tenant-details.component.html',\r\n styleUrls: ['./view-tenant-details.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ViewTenantDetailsComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n @Input() apiBaseURL!: string;\r\n @Input() userPermissions!: UserPermission[];\r\n @Input() routePaths!: TenantsRoutesConfig;\r\n isMobileView = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenText;\r\n tenantLabels = this.constants?.viewTenants?.label;\r\n slideToggleOption = {\r\n id: 1,\r\n label: this.constants?.viewTenants?.label?.active,\r\n checked: true,\r\n disabled: false,\r\n };\r\n editButton: IconButton = this.constants?.viewTenants?.buttons;\r\n tenantDetails!: TenantBasicInfo;\r\n accordionInfoList: AccordionInfo[] = JSON.parse(\r\n JSON.stringify(this.constants?.viewTenants?.tenantAccordionInfo)\r\n );\r\n appId = '';\r\n iconSize = this.constants?.viewRolesAndPermissions?.columnActionIconSize;\r\n rolesAndPermissionsTableCaption =\r\n this.constants?.viewRolesAndPermissions?.tableCaption;\r\n rolesAndPermissionsTableHeaderName =\r\n this.constants?.viewRolesAndPermissions?.tableColumnsHeaderText;\r\n rolesAndPermissionsTableSupportMessage =\r\n this.constants?.viewRolesAndPermissions?.scrollbarSupportMessage;\r\n permissionsColumnClassNumber = 1;\r\n menuItems: Menu[] =\r\n this.constants?.viewRolesAndPermissions?.columnActionMenuItems;\r\n columnSchema: TableColumnSchema[] = [];\r\n tableData: RolesAndPermissions[] = [];\r\n isRolesAndPermissionsExpanded = false;\r\n paginatorConfig: PaginatorConfig = {\r\n recordsPerPage: this.constants?.viewRolesAndPermissions?.pageSizeOptions[0],\r\n pageSizeOptions: this.constants?.viewRolesAndPermissions?.pageSizeOptions,\r\n totalRecords: 0,\r\n };\r\n tablePagination!: PaginationInfo;\r\n rolesAndPermissionsClassName =\r\n '.ieeesa-view-tenant-info__roles-and-permissions';\r\n headerElementClassName = '.ieeesa-header';\r\n tableActions: TableActions = {\r\n isPaginationNeeded: true,\r\n };\r\n viewTenantsRouteUrl!: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogRef: any;\r\n accordionDetails = AccordionDetails;\r\n appTypeOptions!: RadioOption[];\r\n isBasicDetailsExpanded = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n editTenantScreenTexts: any = this.constants?.editTenant;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n deleteRoleScreenTexts: any = this.constants?.deleteRole;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n mapRolesAndPermissionsScreenTexts: any =\r\n this.constants?.mapRolesAndPermissions;\r\n alignmentType = AlignType;\r\n userTenantsPermissions!: TenantsPermissions[];\r\n permissionType = PermissionType;\r\n functionType!: TenantFunctionType;\r\n createRoleScreenTexts = this.constants?.createRole;\r\n roleMenuElement!: HTMLElement;\r\n selectedRoleInfo: RoleDetails = {\r\n roleId: '',\r\n roleName: '',\r\n };\r\n isGroupTypesExpanded = false;\r\n roleTypeOptions: RoleTypeOption[] = [];\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public dialog: MatDialog,\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n public globalErrorHandlerService: GlobalErrorHandlerService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result?.matches;\r\n });\r\n }\r\n\r\n /**\r\n * Initializes view tenant details component.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnInit(): void {\r\n this.tenantDetails =\r\n this.tenantAppService?.getSelectedTenantInformation() as TenantBasicInfo;\r\n this.slideToggleOption.checked = this.tenantDetails?.status as boolean;\r\n this.slideToggleOption.label = this.tenantDetails?.status\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n this.routePaths = this.routePaths ?? this.constants?.routeConfigPath;\r\n this.viewTenantsRouteUrl = `/${this.routePaths?.viewTenants}`;\r\n this.tenantAppService?.setAppConfig(this.apiBaseURL, this.userPermissions);\r\n this.userTenantsPermissions = this.tenantAppService?.filterPermission(\r\n this.userPermissions\r\n );\r\n this.appId = this.tenantAppService.getSelectedTenantInformation()\r\n ?.appId as string;\r\n this.tablePagination = {\r\n offset: 0,\r\n pageSize: this.paginatorConfig.pageSizeOptions[0],\r\n };\r\n this.getTenantDetails(this.appId);\r\n this.getApplicationTypes();\r\n }\r\n /**\r\n * Gets the selected tenant details from server.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getTenantDetails(appId: string): void {\r\n this.tenantAppService\r\n .getTenantDetails(appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: TenantDetailsResponse) => {\r\n if (response?.status) {\r\n this.tenantDetails = response?.body as TenantBasicInfo;\r\n this.tenantAppService.setSelectedTenantInformation(\r\n this.tenantDetails\r\n );\r\n this.slideToggleOption.checked = this.tenantDetails\r\n .status as boolean;\r\n this.slideToggleOption.label = this.tenantDetails.status\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n const features = this.tenantDetails.features as Features[];\r\n features.map((feature: Features) => {\r\n if (\r\n feature?.featureId ===\r\n FeaturePermissionId.MEETINGS_AND_EVENTS ||\r\n feature?.featureId === FeaturePermissionId.BALLOTS\r\n )\r\n this.accordionInfoList.push({\r\n id: this.accordionInfoList.length + 1,\r\n isDisabled: false,\r\n title: feature?.featureName,\r\n });\r\n });\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants.errors\r\n );\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Display the corresponding tenant basic or feature details based on selected accordion.\r\n * @param {AccordionInfo} accordionInfo\r\n * @param {boolean} expanded\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n showTenantDetails(accordionInfo: AccordionInfo, expanded: boolean): void {\r\n const accordionId = accordionInfo.id as number;\r\n switch (accordionId) {\r\n case 1: {\r\n this.isBasicDetailsExpanded = expanded;\r\n if (expanded) {\r\n this.getApplicationTypes();\r\n }\r\n break;\r\n }\r\n case 2: {\r\n this.isRolesAndPermissionsExpanded = expanded;\r\n if (expanded) {\r\n this.columnSchema = [];\r\n this.paginatorConfig.recordsPerPage =\r\n this.constants?.viewRolesAndPermissions?.pageSizeOptions[0];\r\n this.tablePagination.offset = 0;\r\n this.tablePagination.pageSize = this.paginatorConfig.recordsPerPage;\r\n this.getRolesAndInitializeTableSchema();\r\n }\r\n break;\r\n }\r\n case 3: {\r\n this.isGroupTypesExpanded = expanded;\r\n break;\r\n }\r\n }\r\n }\r\n /**\r\n * Fetches the configured roles of the selected tenant and creates the column schema.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getRolesAndInitializeTableSchema(): void {\r\n this.tenantAppService\r\n .getRoles(this.appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetRolesResponse) => {\r\n if (response?.status) {\r\n this.getRolesAndPermissionsAndInitializeTableView({\r\n payload: {\r\n offset: this.tablePagination.offset,\r\n pageSize: this.tablePagination.pageSize,\r\n },\r\n });\r\n const rolesList = this.tenantAppService.sortRolesByRoleType(\r\n response?.body as Role[]\r\n );\r\n this.tenantAppService.setRolesInfo(rolesList);\r\n const cellValue =\r\n this.constants.viewRolesAndPermissions.tableCellValue;\r\n this.columnSchema = [\r\n {\r\n id: 0,\r\n columnDef: 'permissions',\r\n heading:\r\n this.constants.viewRolesAndPermissions.tableColumn\r\n .permissions,\r\n columnType: TableColumnType.TEXT,\r\n cellData: (rolesAndPermissions: RolesAndPermissions) =>\r\n rolesAndPermissions.permission,\r\n isStickyColumn: true,\r\n },\r\n ];\r\n rolesList.map((role: Role, index) => {\r\n this.columnSchema.push({\r\n id: index + 1,\r\n columnDef: role.roleId,\r\n heading: role.roleName,\r\n columnType: TableColumnType.TEXT,\r\n hasColumnActions: true,\r\n cellData: (rolesAndPermissions: RolesAndPermissions) => {\r\n return rolesAndPermissions.roleIdsList.find(\r\n (roleId: string) => role.roleId === roleId\r\n )\r\n ? cellValue.yes\r\n : cellValue.no;\r\n },\r\n });\r\n });\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Fetches the roles and permissions mappings for the selected tenant and and initialize table view.\r\n * @param {GetRolesAndPermissionsPayload} payload\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getRolesAndPermissionsAndInitializeTableView(\r\n payload: GetRolesAndPermissionsPayload\r\n ): void {\r\n this.tenantAppService\r\n .getRolesAndPermissionsMappings(this.appId, payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetRolesAndPermissionsResponse) => {\r\n if (response?.status) {\r\n this.tableData = [];\r\n this.paginatorConfig.totalRecords = response?.body\r\n ?.totalRecords as number;\r\n const rolesAndPermissionsList = response?.body\r\n ?.rolePermissionDetails as RolesAndPermissionsMapping[];\r\n rolesAndPermissionsList.map((permission) => {\r\n let roleIdsList: string[] = [];\r\n roleIdsList = permission.roleList.map((role) => role.roleId);\r\n this.tableData.push({\r\n permission: permission.permissionName,\r\n roleIdsList: roleIdsList,\r\n });\r\n });\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Fetch the roles and permissions records based on offset and page size while the pagination changes.\r\n * @param {PageEvent} pageEvent\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n onTablePaginationChange(pageEvent: PageEvent): void {\r\n this.tablePagination = {\r\n offset: pageEvent.pageIndex,\r\n pageSize: pageEvent.pageSize,\r\n };\r\n this.getRolesAndPermissionsAndInitializeTableView({\r\n payload: {\r\n offset: pageEvent.pageIndex,\r\n pageSize: pageEvent.pageSize,\r\n },\r\n });\r\n }\r\n /**\r\n * Captures the selected role's information and performs edit or delete action basis on the selected menu item.\r\n * @param {TableColumnMenuInfo} roleMenuInfo\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n onRoleMenuClick(roleMenuInfo: TableColumnMenuInfo) {\r\n this.selectedRoleInfo.roleId = roleMenuInfo?.tableColumnInfo?.columnDef;\r\n this.selectedRoleInfo.roleName = roleMenuInfo?.tableColumnInfo?.heading;\r\n this.tenantAppService?.setSelectedRoleInformation(this.selectedRoleInfo);\r\n if (roleMenuInfo?.menuActionInfo?.id === RoleMenuAction.DELETE_ROLE) {\r\n this.openDeleteRoleModal();\r\n } else if (roleMenuInfo?.menuActionInfo?.id === RoleMenuAction.EDIT_ROLE) {\r\n this.openEditRoleForm();\r\n }\r\n }\r\n /**\r\n * Keeps track of the accordion based on the element's ID in DOM tree.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n trackByAccordionFn(index: number, item: AccordionInfo): number {\r\n return item?.id as number;\r\n }\r\n /**\r\n * Gets the role types and updates the form control.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getRoleTypes(): void {\r\n const payload: GetRoleTypesPayload = {\r\n payload: {\r\n appId: this.tenantDetails?.appId as string,\r\n configFieldName: 'role_type',\r\n },\r\n };\r\n this.tenantAppService\r\n .getRoleTypes(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: RoleTypeResponse) => {\r\n if (response?.status) {\r\n this.roleTypeOptions = this.tenantAppService.getRoleTypeOptions(\r\n response?.body as RoleTypeConfiguration[]\r\n );\r\n this.tenantAppService?.setRoleTypeOption(this.roleTypeOptions);\r\n if (this.functionType === TenantFunctionType.CREATE_ROLE) {\r\n this.openCreateRoleForm();\r\n }\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createRoleScreenTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Sets the dialog options for create role modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openCreateRoleForm(): void {\r\n this.tenantAppService?.setTenantFunctionType(\r\n TenantFunctionType?.CREATE_ROLE\r\n );\r\n this.functionType = TenantFunctionType.CREATE_ROLE;\r\n if (this.roleTypeOptions.length > 0) {\r\n const dialogOptions = {\r\n heading: this.constants?.createRole?.heading,\r\n isCloseNeeded: true,\r\n componentReference: CreateModifyRoleComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-create-modify-role');\r\n } else {\r\n this.getRoleTypes();\r\n }\r\n }\r\n /**\r\n * Sets the dialog options for edit role modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openEditRoleForm(): void {\r\n this.tenantAppService?.setTenantFunctionType(TenantFunctionType?.EDIT_ROLE);\r\n this.functionType = TenantFunctionType.EDIT_ROLE;\r\n const dialogOptions = {\r\n heading: this.selectedRoleInfo?.roleName,\r\n isCloseNeeded: true,\r\n componentReference: CreateModifyRoleComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-create-modify-role');\r\n }\r\n /**\r\n * Sets the dialog options for edit tenant modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openEditTenantForm(): void {\r\n this.tenantAppService?.setTenantFunctionType(TenantFunctionType?.EDIT);\r\n this.functionType = TenantFunctionType.EDIT;\r\n const dialogOptions = {\r\n heading: this.tenantDetails?.appTitle,\r\n isCloseNeeded: true,\r\n componentReference: CreateTenantApplicationComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-edit-tenant');\r\n }\r\n\r\n /**\r\n * Opens modal component with received params and handles form submission success and errors.\r\n * @param {*} dialogOptions\r\n * @param {string} [className]\r\n * @return -returns nothing\r\n * @memberof ViewTenantsDetailsComponent\r\n */\r\n openModal(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogOptions: any,\r\n className?: string\r\n ): void {\r\n className = className ?? '';\r\n this.dialogRef = this.dialog?.open(ModalComponent, {\r\n data: dialogOptions,\r\n width: '',\r\n panelClass: ['ieeesa-modal-dialog', className],\r\n ariaModal: true,\r\n });\r\n this.dialogRef?.componentInstance?.submitFormResponse\r\n .pipe(takeUntil(this.destroy$))\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-unused-vars\r\n .subscribe((result: any) => {\r\n this.dialogRef?.close();\r\n switch (this.functionType) {\r\n case TenantFunctionType?.EDIT: {\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${this.tenantDetails?.appTitle} ${this.editTenantScreenTexts?.message?.success?.submission}`\r\n );\r\n this.tenantDetails = {\r\n ...(this.tenantAppService.getSelectedTenantInformation() as TenantBasicInfo),\r\n };\r\n break;\r\n }\r\n case TenantFunctionType?.CREATE_ROLE: {\r\n const promptMessage = this.createRoleScreenTexts?.message?.success;\r\n const roleInfo = this.tenantAppService?.getNewlyCreatedRoleInfo();\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${promptMessage?.submission1} ${roleInfo?.roleName} ${promptMessage?.submission2} ${this.tenantDetails?.appTitle}. ${promptMessage?.submission3}`\r\n );\r\n this.getRolesAndInitializeTableSchema();\r\n break;\r\n }\r\n case TenantFunctionType?.EDIT_ROLE: {\r\n const promptMessage = this.createRoleScreenTexts?.message?.success;\r\n const roleInfo = this.tenantAppService?.getNewlyCreatedRoleInfo();\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${roleInfo?.roleName} ${promptMessage?.modify} ${this.tenantDetails?.appTitle}.`\r\n );\r\n this.getRolesAndInitializeTableSchema();\r\n break;\r\n }\r\n }\r\n });\r\n this.dialogRef?.componentInstance?.formCancel\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.dialogRef?.close();\r\n if (\r\n this.tenantAppService.getTenantFunctionType() ===\r\n TenantFunctionType.MAP_PERMISSION_AND_ROLE\r\n )\r\n this.getRolesAndInitializeTableSchema();\r\n });\r\n this.dialogRef?.componentInstance?.modalConfirm\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n if (\r\n this.tenantAppService.getTenantFunctionType() ===\r\n TenantFunctionType.MAP_PERMISSION_AND_ROLE\r\n )\r\n this.getRolesAndInitializeTableSchema();\r\n });\r\n }\r\n /**\r\n * Calls openTenantStatusConfirmationModal to change the status of tenant on slide toggle change.\r\n * @param {SlideToggleOption} slideToggleOption\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n onSlideToggleChange(slideToggleOption: SlideToggleOption): void {\r\n this.openTenantStatusConfirmationModal(slideToggleOption?.checked);\r\n }\r\n /**\r\n * Opens the confirmation modal to inactivate/reactivate the tenant.\r\n * @param {boolean} isActivate\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openTenantStatusConfirmationModal(isActivate: boolean): void {\r\n const confirmationInfo = this.constants?.viewTenants?.confirmationInfo;\r\n const statusText = isActivate\r\n ? confirmationInfo?.promptMessageActivate\r\n : confirmationInfo?.promptMessageInactivate;\r\n const updateTenantStatusModalOptions = {\r\n leftButtonLabel: confirmationInfo?.leftButtonLabel,\r\n rightButtonLabel: confirmationInfo?.rightButtonLabel,\r\n promptMessage: `${confirmationInfo?.promptMessage} ${statusText} ${this.tenantDetails?.appTitle}?`,\r\n actionButtonAlign: this.alignmentType?.MIDDLE,\r\n };\r\n this.dialogRef = this.dialog?.open(ModalConfirmationComponent, {\r\n data: updateTenantStatusModalOptions,\r\n width: 'auto',\r\n autoFocus: 'dialog',\r\n ariaLabel: confirmationInfo?.ariaLabel?.alert,\r\n });\r\n this.dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: boolean) => {\r\n if (result) {\r\n this.updateTenantStatus(isActivate);\r\n } else {\r\n this.setSlideToggleStatus(isActivate);\r\n }\r\n });\r\n }\r\n /**\r\n * Opens the map permissions and roles modal.\r\n * @memberof ViewTenantDetailsComponent\r\n * @returns {void}\r\n */\r\n openMapRolesAndPermissionsForm(): void {\r\n this.tenantAppService?.setTenantFunctionType(\r\n TenantFunctionType?.MAP_PERMISSION_AND_ROLE\r\n );\r\n const dialogOptions = {\r\n heading: this.mapRolesAndPermissionsScreenTexts.heading,\r\n isCloseNeeded: true,\r\n modalType: ModalType.FORM,\r\n componentReference: RolesAndPermissionsMappingComponent,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-map-permissions-and-roles');\r\n }\r\n /**\r\n * Updates the tenant status to the server using http request and display success/error message based on request response (success or failure).\r\n * @param {boolean} isActivate\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n updateTenantStatus(isActivate: boolean): void {\r\n const updateTenantStatusRequestPayload: UpdateTenantStatusRequestPayload = {\r\n payload: {\r\n appId: this.tenantDetails?.appId,\r\n status: isActivate,\r\n },\r\n };\r\n this.tenantAppService\r\n .updateTenantStatus(updateTenantStatusRequestPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: UpdateTenantStatusResponse) => {\r\n this.dialogRef?.close();\r\n if (res?.status) {\r\n this.slideToggleOption.label = isActivate\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n this.tenantDetails.status = isActivate;\r\n this.tenantDetails = Object.assign({}, this.tenantDetails);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.setSlideToggleStatus(isActivate);\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Sets slide toggle checked status and label.\r\n * @param {boolean} isActivate\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n setSlideToggleStatus(isActivate: boolean): void {\r\n this.slideToggleOption.checked = !isActivate;\r\n this.slideToggleOption.label = !isActivate\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n }\r\n\r\n /**\r\n * Gets the application/tenant types.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getApplicationTypes(): void {\r\n this.tenantAppService\r\n .getApplicationTypes()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetAppTypesResponse) => {\r\n if (response?.status) {\r\n this.appTypeOptions =\r\n this.tenantAppService.getApplicationTypeOptions(\r\n response?.body as AppTypeConfig[]\r\n );\r\n this.tenantAppService.setApplicationType(\r\n this.appTypeOptions as RadioOption[]\r\n );\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Validates permission based access for provided feature.\r\n * @param {PermissionType} permissionType\r\n * @return {boolean}\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n validateAccess(permissionType: PermissionType): boolean {\r\n return this.tenantAppService.validateAccess(\r\n permissionType,\r\n this.userTenantsPermissions\r\n );\r\n }\r\n /**\r\n * Posts the details of the role to be deleted to the server using http request and display success/error message based on request response (success or failure).\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n deleteRole(): void {\r\n const deleteRoleRequestPayload: DeleteRoleRequestPayload = {\r\n payload: {\r\n appId: this.tenantDetails?.appId,\r\n roleId: this.selectedRoleInfo?.roleId,\r\n },\r\n };\r\n this.tenantAppService\r\n .deleteRole(deleteRoleRequestPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: DeleteRoleResponse) => {\r\n if (res?.status) {\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${this.selectedRoleInfo?.roleName} ${this.deleteRoleScreenTexts?.message?.success?.submission} ${this.tenantDetails?.appTitle}.`\r\n );\r\n this.getRolesAndInitializeTableSchema();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Sets the role menu HTMLElement.\r\n * @param {HTMLElement} menuButton\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n selectedRoleMenuElement(menuButton: HTMLElement): void {\r\n this.roleMenuElement = menuButton;\r\n }\r\n /**\r\n * Opens the confirmation modal to get user confirmation to delete the role.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openDeleteRoleModal(): void {\r\n const confirmationInfo = this.constants?.viewTenants?.confirmationInfo;\r\n const deleteRoleModalOptions = {\r\n leftButtonLabel: confirmationInfo?.leftButtonLabel,\r\n rightButtonLabel: confirmationInfo?.rightButtonLabel,\r\n promptMessage: `${confirmationInfo?.deleteRoleConfirmationMessage} ${this.selectedRoleInfo?.roleName}? ${confirmationInfo?.deleteRolePromptMessage} ${this.tenantDetails?.appTitle}.`,\r\n actionButtonAlign: this.alignmentType?.MIDDLE,\r\n };\r\n this.dialogRef = this.dialog?.open(ModalConfirmationComponent, {\r\n data: deleteRoleModalOptions,\r\n width: '25%',\r\n panelClass: [\r\n 'ieeesa-modal-confirm-dialog',\r\n 'ieeesa-delete-role-confirm-dialog',\r\n ],\r\n autoFocus: 'dialog',\r\n ariaLabel: confirmationInfo?.ariaLabel?.alert,\r\n });\r\n this.dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: boolean) => {\r\n if (result) {\r\n this.deleteRole();\r\n } else this.roleMenuElement?.focus();\r\n });\r\n }\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.roleTypeOptions = [];\r\n this.tenantAppService?.setRoleTypeOption(this.roleTypeOptions);\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-view-tenant-info px-4 pb-4\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--bg-white'\r\n : 'ieeesa-view-tenant-info--bg-blue'\r\n \"\r\n>\r\n <div\r\n class=\"d-flex justify-content-between gap-lg-4 gap-md-3 gap-sm-2 gap-3\"\r\n [ngClass]=\"isMobileView ? 'flex-column gap-2 pb-3' : 'align-item-center'\"\r\n >\r\n <div\r\n class=\"d-flex gap-lg-4 gap-md-3 gap-sm-3 gap-3 ps-0 align-items-md-center align-items-xl-center\"\r\n [ngClass]=\"isMobileView ? 'flex-column' : ''\"\r\n >\r\n <p\r\n class=\"mb-0 ieeesa-headline-lg-32 py-3\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--title'\"\r\n >\r\n {{ tenantDetails?.appTitle }}\r\n </p>\r\n <div class=\"d-flex gap-lg-2 gap-md-2 gap-sm-2 gap-2\">\r\n <span\r\n class=\"mb-0 ieeesa-title-sm-14 mt-1\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-view-tenant-info--app-id'\"\r\n >\r\n {{ tenantLabels?.appId }}:\r\n </span>\r\n {{ tenantDetails?.appId }}\r\n <ng-container *ngIf=\"tenantDetails?.appId !== tenantLabels?.saAppId\">\r\n <mat-divider [vertical]=\"true\"></mat-divider>\r\n <span\r\n class=\"mb-0 mt-1 ieeesa-title-sm-14 ieeesa-view-tenant-info--app-status\"\r\n [ngClass]=\"isMobileView ? 'p-0' : ''\"\r\n >\r\n {{ tenantLabels?.status }}:\r\n </span>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"slideToggleOption\"\r\n (slideToggleChange)=\"onSlideToggleChange($event)\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <a\r\n class=\"ieeesa-btn-label-lg-bold-16 text-decoration-none mt-lg-3 mt-xl-6 p-sm-0 p-md-0\"\r\n href=\"javascript:void(0)\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"viewTenantsRouteUrl\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--link-mobile'\r\n : 'ieeesa-view-tenant-info--link'\r\n \"\r\n >{{ tenantLabels?.viewAllApps }}</a\r\n >\r\n </div>\r\n <div\r\n class=\"ieeesa-view-tenant-info__accordion ieeesa-view-tenant-info__accordion--blue-bg\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-view-tenant-info__accordion--info' : ''\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let accordionInfo of accordionInfoList;\r\n trackBy: trackByAccordionFn\r\n \"\r\n >\r\n <ng-container [ngSwitch]=\"accordionInfo.id\">\r\n <ng-container *ngSwitchCase=\"accordionDetails.BASIC_DETAILS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__accordion-info\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <ieeesa-icon-button\r\n *ngIf=\"\r\n isBasicDetailsExpanded &&\r\n validateAccess(permissionType.MANAGE_TENANT)\r\n \"\r\n actions\r\n class=\"ieeesa-button\"\r\n [iconButton]=\"editButton\"\r\n (iconButtonClick)=\"openEditTenantForm()\"\r\n ></ieeesa-icon-button>\r\n <ng-container component *ngIf=\"isBasicDetailsExpanded\">\r\n <ieeesa-tenant-basic-details\r\n [tenantDetails]=\"tenantDetails\"\r\n ></ieeesa-tenant-basic-details>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.ROLES_AND_PERMISSIONS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isRolesAndPermissionsExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n (click)=\"openCreateRoleForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ constants.viewRolesAndPermissions.actionButtonLabels.addRole\r\n }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n (click)=\"openMapRolesAndPermissionsForm()\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n >\r\n {{ constants.viewRolesAndPermissions.actionButtonLabels\r\n .mapPermissionsRoles }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isRolesAndPermissionsExpanded\">\r\n <mat-divider\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions__divider\"\r\n ></mat-divider>\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [tableDataInfo]=\"tableData\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [caption]=\"rolesAndPermissionsTableCaption\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [tableActions]=\"tableActions\"\r\n [isScrollSupportMessageNeeded]=\"true\"\r\n [tableColumnActionMenuSize]=\"iconSize\"\r\n [tableColumnActions]=\"menuItems\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (tableColumnMenuActionClick)=\"onRoleMenuClick($event)\"\r\n (tableColumnMenuToggleButton)=\"selectedRoleMenuElement($event)\"\r\n ></ieeesa-data-table>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.GROUP_TYPES\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__group-types\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isGroupTypesExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button p-2\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ constants.viewGroupTypes.actionButtonLabels.addGroupType }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isGroupTypesExpanded\">\r\n <ieeesa-view-tenant-group-types></ieeesa-view-tenant-group-types>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n ></ieeesa-accordion>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","/* eslint-disable no-empty-function */\r\nimport { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n@Component({\r\n selector: 'ieeesa-tenant-applications',\r\n standalone: true,\r\n imports: [CommonModule, MatButtonModule],\r\n templateUrl: './tenant-applications.component.html',\r\n styleUrls: ['./tenant-applications.component.scss'],\r\n})\r\nexport class TenantApplicationsComponent {}\r\n","","/* eslint-disable no-unused-vars */\r\nexport enum AppType {\r\n GENERIC = 'Generic',\r\n STANDALONE = 'Standalone'\r\n}","import { NgModule } from '@angular/core';\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [],\r\n exports: [],\r\n})\r\nexport class TenantApplicationsModule {}\r\n","/*\r\n * Public API Surface of tenants\r\n */\r\nexport * from './lib/components/view-tenants-list/view-tenants-list.component';\r\nexport * from './lib/components/view-tenant-details/view-tenant-details.component';\r\nexport * from './lib/components/create-tenant-application/create-tenant-application.component';\r\nexport * from './lib/tenant-applications.component';\r\nexport * from './lib/components/tenant-basic-details/tenant-basic-details.component';\r\nexport * from './lib/components/create-modify-role/create-modify-role.component';\r\nexport * from './lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component';\r\nexport * from './lib/components/view-tenant-group-types/view-tenant-group-types.component';\r\n\r\nexport * from './lib/models/app-type-config.model';\r\nexport * from './lib/models/app-type.model';\r\nexport * from './lib/models/tenant.model';\r\nexport * from './lib/models/features.model';\r\nexport * from './lib/models/form-status.model';\r\nexport * from './lib/models/permission-type.model';\r\nexport * from './lib/models/tenants-permission.model';\r\nexport * from './lib/models/route-config.model';\r\nexport * from './lib/models/table-column-schema-view-tenant-list.model';\r\nexport * from './lib/models/roles-and-permissions.model';\r\nexport * from './lib/models/update-tenant-status.model';\r\nexport * from './lib/models/tenant-function-type.model';\r\nexport * from './lib/models/role-type.model';\r\nexport * from './lib/models/role-menu-action.model';\r\nexport * from './lib/models/roles-and-permissions-table-type.model';\r\nexport * from './lib/models/view-tenant-group-types.model';\r\n\r\nexport * from './lib/services/tenant-applications.service';\r\nexport * from './lib/services/tenant-permissions-map.service';\r\nexport * from './lib/services/tenant-permissions.service';\r\n\r\nexport * from './lib/assets/tenant-validations';\r\n\r\nexport * from './lib/tenant-applications.module';\r\nexport * from './lib/models/feature-permission-id.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["screenTexts?.viewTenants","screenTexts?.createTenant","i1","i2.TenantPermissionsService","i3.TenantPermissionsMapService","screenTexts","i2.TenantApplicationsService","i3","constants","i4.TenantApplicationsService","i5","i6","i1.TenantApplicationsService","i4","FormStatus","i2","i3.TenantApplicationsService","i7","i8"],"mappings":"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"}
1
+ {"version":3,"file":"ieeesa-npm-tenants.mjs","sources":["../../../projects/tenants/src/lib/models/permission-type.model.ts","../../../projects/tenants/src/lib/models/table-column-schema-view-tenant-list.model.ts","../../../projects/tenants/src/lib/assets/tenant-validations.ts","../../../projects/tenants/src/lib/models/form-status.model.ts","../../../projects/tenants/src/lib/models/tenant-function-type.model.ts","../../../projects/tenants/src/lib/services/tenant-permissions.service.ts","../../../projects/tenants/src/lib/services/tenant-permissions-map.service.ts","../../../projects/tenants/src/lib/services/tenant-applications.service.ts","../../../projects/tenants/src/lib/components/create-tenant-application/create-tenant-application.component.ts","../../../projects/tenants/src/lib/components/create-tenant-application/create-tenant-application.component.html","../../../projects/tenants/src/lib/components/view-tenants-list/view-tenants-list.component.ts","../../../projects/tenants/src/lib/components/view-tenants-list/view-tenants-list.component.html","../../../projects/tenants/src/lib/models/feature-permission-id.model.ts","../../../projects/tenants/src/lib/components/tenant-basic-details/tenant-basic-details.component.ts","../../../projects/tenants/src/lib/components/tenant-basic-details/tenant-basic-details.component.html","../../../projects/tenants/src/lib/components/create-modify-role/create-modify-role.component.ts","../../../projects/tenants/src/lib/components/create-modify-role/create-modify-role.component.html","../../../projects/tenants/src/lib/models/role-menu-action.model.ts","../../../projects/tenants/src/lib/models/roles-and-permissions-table-type.model.ts","../../../projects/tenants/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.ts","../../../projects/tenants/src/lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component.html","../../../projects/tenants/src/lib/models/view-tenant-group-types.model.ts","../../../projects/tenants/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.ts","../../../projects/tenants/src/lib/components/view-tenant-group-types/view-tenant-group-types.component.html","../../../projects/tenants/src/lib/components/view-tenant-details/view-tenant-details.component.ts","../../../projects/tenants/src/lib/components/view-tenant-details/view-tenant-details.component.html","../../../projects/tenants/src/lib/tenant-applications.component.ts","../../../projects/tenants/src/lib/tenant-applications.component.html","../../../projects/tenants/src/lib/models/app-type.model.ts","../../../projects/tenants/src/lib/tenant-applications.module.ts","../../../projects/tenants/src/public-api.ts","../../../projects/tenants/src/ieeesa-npm-tenants.ts"],"sourcesContent":["/* eslint-disable no-unused-vars */\r\nexport enum PermissionType {\r\n VIEW_TENANTS = 'VIEW_TENANTS',\r\n MANAGE_TENANT = 'MANAGE_TENANT',\r\n}\r\nexport enum TenantStatus {\r\n ACTIVE = 'Active',\r\n INACTIVE = 'Inactive',\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nexport enum ViewTenantsColumnSchemaDef {\r\n APP_ID = 'appId',\r\n APP_TITLE = 'appTitle',\r\n APP_DESCRIPTION = 'appDescription',\r\n APP_HEADING = 'appHeading',\r\n FEATURES = 'features',\r\n STATUS = 'status',\r\n}\r\nexport enum SortOrderBy {\r\n DESC = 'DESC',\r\n ASC = 'ASC',\r\n}\r\nexport interface GetTenantsPayload {\r\n payload: {\r\n offset: number;\r\n pageSize: number;\r\n sortedBy: string;\r\n sortedOrderBy: string;\r\n };\r\n}\r\n","/* eslint-disable no-useless-escape */\r\nexport const TenantsValidationPatterns = {\r\n appTitleMaxLength: 50,\r\n appIdMaxLength: 10,\r\n appHeadingMaxLength: 150,\r\n appDescriptionMaxLength: 500,\r\n url: /^https:\\/\\//,\r\n alphaNumeric: /^[a-zA-Z0-9]+$/,\r\n};\r\n\r\nexport const RolesValidation = {\r\n roleNameMaxLength: 100,\r\n};\r\n","/* eslint-disable no-unused-vars */\r\nexport enum FormStatus {\r\n VALID = \"VALID\",\r\n INVALID = \"INVALID\",\r\n }","/* eslint-disable no-unused-vars */\r\nexport enum TenantFunctionType {\r\n CREATE = 'CREATE',\r\n EDIT = 'EDIT',\r\n CREATE_ROLE = 'CREATE_ROLE',\r\n EDIT_ROLE = 'EDIT_ROLE',\r\n MAP_PERMISSION_AND_ROLE = 'MAP_PERMISSION_AND_ROLE'\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport {\r\n UserPermission,\r\n TenantsPermissions,\r\n} from '../models/tenants-permission.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantPermissionsService {\r\n /**\r\n * Returns access provision for the passed action/feature based on whether the signed in user has appropriate permission.\r\n * @param {PermissionType} permission\r\n * @param {TenantsPermission[]} tenantsPermissions\r\n * @return {boolean}\r\n * @memberof TenantPermissionsService\r\n */\r\n validateAccessPermission(\r\n permission: PermissionType,\r\n userTenantsPermissions: TenantsPermissions[]\r\n ): boolean {\r\n const isPermitted =\r\n userTenantsPermissions && userTenantsPermissions.length\r\n ? userTenantsPermissions?.some(\r\n ({ permissionType }) => permissionType === permission\r\n )\r\n : false;\r\n return isPermitted;\r\n }\r\n /**\r\n * Filters signed in user tenants permissions from entire tenants permissions.\r\n * @param { UserPermission[] }\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantPermissionsService\r\n */\r\n filterTenantsPermissions(\r\n userPermissions: UserPermission[],\r\n tenantsPermissions: TenantsPermissions[]\r\n ): TenantsPermissions[] {\r\n const userTenantsPermission = tenantsPermissions?.filter(\r\n (permission: TenantsPermissions) => {\r\n return userPermissions?.find(\r\n ({ permissionId }) => permission?.permissionId === permissionId\r\n );\r\n }\r\n );\r\n return userTenantsPermission;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport { TenantsPermissions } from '../models/tenants-permission.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantPermissionsMapService {\r\n globalTenantsPermissions: TenantsPermissions[] = [\r\n {\r\n permissionType: PermissionType.VIEW_TENANTS,\r\n permissionId: 'PERM_1a2dbbb5-5fe1-4261-85b1-a5373f41075a',\r\n permissionName: 'View Tenant Applications',\r\n },\r\n {\r\n permissionType: PermissionType.MANAGE_TENANT,\r\n permissionId: 'PERM_315c49ec-f79a-4dcd-9795-6f97838c8c83',\r\n permissionName: 'Manage (Create, Edit, Disable) Tenant Application',\r\n },\r\n ];\r\n /**\r\n * Returns global permissions mapping for tenants.\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantsPermissionsMapService\r\n */\r\n getGlobalTenantsPermissions(): TenantsPermissions[] {\r\n return this.globalTenantsPermissions;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpService } from '@ieeesa-npm/utility';\r\nimport { Observable, catchError, map } from 'rxjs';\r\nimport * as screenTexts from '../assets/constants.json';\r\nimport { GetTenantsPayload } from '../models/table-column-schema-view-tenant-list.model';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../models/tenants-permission.model';\r\nimport { PermissionType } from '../models/permission-type.model';\r\nimport { TenantPermissionsMapService } from './tenant-permissions-map.service';\r\nimport {\r\n CreateTenantRequestPayload,\r\n CreateTenantResponse,\r\n GetTenantsResponse,\r\n NewTenantInfo,\r\n TenantBasicInfo,\r\n TenantDetailsResponse,\r\n} from '../models/tenant.model';\r\nimport { CheckboxOption, RadioOption } from '@ieeesa-npm/presentation';\r\nimport {\r\n FeatureId,\r\n Features,\r\n GetFeaturesResponse,\r\n} from '../models/features.model';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../models/app-type-config.model';\r\nimport { TenantPermissionsService } from './tenant-permissions.service';\r\nimport { TenantFunctionType } from '../models/tenant-function-type.model';\r\nimport {\r\n GetRolesAndPermissionsPayload,\r\n GetRolesAndPermissionsResponse,\r\n GetRolesResponse,\r\n RoleInfo,\r\n DeleteRoleRequestPayload,\r\n DeleteRoleResponse,\r\n Role,\r\n GetPermissionsResponse,\r\n RolePermissionMappingRequestPayload,\r\n RolePermissionMappingResponse,\r\n RolesAndPermissionsRequestPayload,\r\n RolesAndPermissionsResponse,\r\n RoleDetails,\r\n CreateModifyRoleRequestPayload,\r\n CreateModifyRoleResponse,\r\n} from '../models/roles-and-permissions.model';\r\nimport {\r\n UpdateTenantStatusRequestPayload,\r\n UpdateTenantStatusResponse,\r\n} from '../models/update-tenant-status.model';\r\nimport {\r\n GetRoleTypesPayload,\r\n RoleTypeConfiguration,\r\n RoleTypeOption,\r\n RoleTypeResponse,\r\n} from '../models/role-type.model';\r\nimport { ViewGroupTypeResponse } from '../models/view-tenant-group-types.model';\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class TenantApplicationsService {\r\n tenantsText = screenTexts?.viewTenants?.errors;\r\n apiBaseUrl!: string;\r\n userPermission!: UserPermission[];\r\n selectedTenantInfo!: TenantBasicInfo | undefined;\r\n userTenantsPermissions!: TenantsPermissions[];\r\n createTenantsText = screenTexts?.createTenant?.errors;\r\n newTenantInfo!: NewTenantInfo;\r\n tenantFunctionType!: TenantFunctionType;\r\n radioOptions: RadioOption[] = [];\r\n checkBoxOptions: CheckboxOption[] = [];\r\n appTypeInfo: RadioOption[] = [];\r\n featureList: Features[] = [];\r\n roleTypeOptions: RoleTypeOption[] = [];\r\n newlyCreatedRole!: RoleInfo;\r\n roleTypeOption!: RoleTypeOption[];\r\n selectedRoleInfo!: RoleDetails;\r\n roles!: Role[];\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private httpService: HttpService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantPermissionsService: TenantPermissionsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantPermissionsMapService: TenantPermissionsMapService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n setAppConfig(apiBaseUrl: string, userPermission: UserPermission[]): void {\r\n this.apiBaseUrl = apiBaseUrl;\r\n this.userPermission = userPermission;\r\n }\r\n\r\n /**\r\n * Gets tenant details from server using HttpService\r\n * @param {string} appId\r\n * @return {Observable<TenantDetailsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getTenantDetails(appId: string): Observable<TenantDetailsResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/app/details/${appId}`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Sets the user tenants permissions\r\n * @param {TenantsPermissions[]} TenantsPermissions\r\n * @memberof TenantApplicationsService\r\n */\r\n setUserTenantsPermissions(userTenantsPermissions: TenantsPermissions[]) {\r\n this.userTenantsPermissions = userTenantsPermissions;\r\n }\r\n /**\r\n * Returns the user tenants permissions\r\n * @return {TenantsPermissions[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n getUserTenantsPermissions(): TenantsPermissions[] {\r\n return this.userTenantsPermissions;\r\n }\r\n\r\n /**\r\n * Sets the user tenants information\r\n * @param {TenantBasicInfo} tenantInfo\r\n * @memberof TenantApplicationsService\r\n */\r\n setSelectedTenantInformation(tenantInfo: TenantBasicInfo): void {\r\n this.selectedTenantInfo = tenantInfo;\r\n }\r\n /**\r\n * Returns the tenants information\r\n * @return {TenantBasicInfo}\r\n * @memberof TenantApplicationsService\r\n */\r\n getSelectedTenantInformation(): TenantBasicInfo | undefined {\r\n return this.selectedTenantInfo;\r\n }\r\n /**\r\n * Sets the roles informations\r\n * @param {Role} roles\r\n * @memberof TenantApplicationsService\r\n */\r\n setRolesInfo(roles: Role[]): void {\r\n this.roles = roles;\r\n }\r\n /**\r\n * Returns the roles information\r\n * @return {Role}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRolesInfo(): Role[] | undefined {\r\n return this.roles;\r\n }\r\n /**\r\n * Sets the selected role information.\r\n * @param {RoleDetails} roleInfo\r\n * @memberof TenantApplicationsService\r\n */\r\n setSelectedRoleInformation(roleInfo: RoleDetails): void {\r\n this.selectedRoleInfo = roleInfo;\r\n }\r\n /**\r\n * Returns the selected role information.\r\n * @return {RoleDetails}\r\n * @memberof TenantApplicationsService\r\n */\r\n getSelectedRoleInformation(): RoleDetails | undefined {\r\n return this.selectedRoleInfo;\r\n }\r\n /**\r\n * Sets the tenant role type options.\r\n * @param {RoleTypeOption} roleTypeOptions\r\n * @memberof TenantApplicationsService\r\n */\r\n setRoleTypeOption(roleTypeOptions: RoleTypeOption[]): void {\r\n this.roleTypeOption = roleTypeOptions;\r\n }\r\n /**\r\n * Returns the tenant role type options.\r\n * @return {RoleTypeOption}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRoleTypeOption(): RoleTypeOption[] {\r\n return this.roleTypeOption;\r\n }\r\n /**\r\n * Sets the list of application type information\r\n * @param {RadioOption} appTypeInfo\r\n * @memberof TenantApplicationsService\r\n */\r\n setApplicationType(appTypeInfo: RadioOption[]): void {\r\n this.appTypeInfo = appTypeInfo;\r\n }\r\n /**\r\n * Returns the list of application type information\r\n * @return {RadioOption}\r\n * @memberof TenantApplicationsService\r\n */\r\n getApplicationType(): RadioOption[] | undefined {\r\n return this.appTypeInfo;\r\n }\r\n /**\r\n * Filter permissions\r\n * @param usersPermissions\r\n * @returns @memberof TenantApplicationsService\r\n */\r\n filterPermission(usersPermissions: UserPermission[]): TenantsPermissions[] {\r\n return this.tenantPermissionsService?.filterTenantsPermissions(\r\n usersPermissions,\r\n this.tenantPermissionsMapService?.getGlobalTenantsPermissions()\r\n );\r\n }\r\n /**\r\n * Validating access for tenants\r\n * @param permissionType Permission Type to validate permission\r\n * @param mappedUserPermissions Permission which are mapped with tenants\r\n * @returns true if permission is granted\r\n */\r\n validateAccess(\r\n permissionType: PermissionType,\r\n permissions: TenantsPermissions[]\r\n ): boolean {\r\n return this.tenantPermissionsService.validateAccessPermission(\r\n permissionType,\r\n permissions\r\n );\r\n }\r\n /**\r\n * Gets the tenants.\r\n * @param {GetTenantsPayload} payload\r\n * @return {Observable<GetTenantsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getTenantsList(payload: GetTenantsPayload): Observable<GetTenantsResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/configurations/app/config`, payload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of features from server using HttpService.\r\n * @return {Observable<GetFeaturesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getFeatures(): Observable<GetFeaturesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/app/features`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of roles from server using HttpService.\r\n * @param {string} appId\r\n * @return {*} {Observable<GetRolesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRoles(appId: string): Observable<GetRolesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/groups/role/${appId}`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets the list of permissions based on the appId and return the success or error response as Observable.\r\n * @param {string} appId\r\n * @return {Observable<GetPermissionsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getPermissions(appId: string): Observable<GetPermissionsResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/groups/permissions/${appId}`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets the list of roles or permissions based on the roleId or permissionId in the payload and return the success or error response as Observable.\r\n * @param {RolePermissionMappingRequestPayload} payload\r\n * @returns {Observable<RolePermissionMappingResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRolePermissionMapping(\r\n payload: RolePermissionMappingRequestPayload\r\n ): Observable<RolePermissionMappingResponse> {\r\n return this.httpService\r\n .postData(\r\n `${this.apiBaseUrl}/groups/users/rolePermissionMapping`,\r\n payload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Submit the new mappings of roles to permissions to the server.\r\n * @param {RolesAndPermissionsRequestPayload} payload\r\n * @returns {Observable<RolesAndPermissionsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n saveRolePermissionMapping(\r\n payload: RolesAndPermissionsRequestPayload\r\n ): Observable<RolesAndPermissionsResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/groups/users/rolePermission`, payload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of roles and permissions mappings from server using HttpService.\r\n * @param {string} appId\r\n * @param {GetRolesAndPermissionsPayload} payload\r\n * @return {*} {Observable<GetRolesAndPermissionsResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRolesAndPermissionsMappings(\r\n appId: string,\r\n payload: GetRolesAndPermissionsPayload\r\n ): Observable<GetRolesAndPermissionsResponse> {\r\n return this.httpService\r\n .postData(\r\n `${this.apiBaseUrl}/groups/roleBasedPermissions/${appId}`,\r\n payload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets list of application types from server using HttpService.\r\n * @return {Observable<GetAppTypesResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getApplicationTypes(): Observable<GetAppTypesResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/config/app_type`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Posts create role form data to server using HttpService to create a new role.\r\n * @param {CreateModifyRoleRequestPayload} createModifyRolePayload\r\n * @return {Observable<CreateModifyRoleResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n createRole(\r\n createModifyRolePayload: CreateModifyRoleRequestPayload\r\n ): Observable<CreateModifyRoleResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/groups/role`, createModifyRolePayload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Posts the edited role form data to server using HttpService for updating the role information.\r\n * @param {CreateModifyRoleRequestPayload} createModifyRolePayload\r\n * @return {Observable<CreateModifyRoleResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n editRole(\r\n createModifyRolePayload: CreateModifyRoleRequestPayload\r\n ): Observable<CreateModifyRoleResponse> {\r\n return this.httpService\r\n .putData(`${this.apiBaseUrl}/groups/role`, createModifyRolePayload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Gets list of role types from server using HttpService.\r\n * @param {GetRoleTypesPayload} payload\r\n * @return {Observable<RoleTypeResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRoleTypes(payload: GetRoleTypesPayload): Observable<RoleTypeResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/configurations/config/configField`, payload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Constructs the select/dropdown options from the role types received from server.\r\n * @param {RoleTypeConfiguration[]} roleTypeResponse\r\n * @return {RoleTypeOption[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n getRoleTypeOptions(\r\n roleTypeResponse: RoleTypeConfiguration[]\r\n ): RoleTypeOption[] {\r\n this.roleTypeOptions = [];\r\n roleTypeResponse.forEach((item) => {\r\n this.roleTypeOptions?.push({\r\n id: item?.configFieldId,\r\n name: item?.configFieldValue?.roleTypeName,\r\n order: item?.configFieldValue?.viewOrder,\r\n });\r\n });\r\n this.roleTypeOptions.sort((a, b) => a.order - b.order);\r\n return this.roleTypeOptions;\r\n }\r\n\r\n /**\r\n * Posts tenant application form data to server using HttpService for creating new tenant application.\r\n * @param {CreateTenantPayload} createTenantPayload\r\n * @return {Observable<CreateTenantResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n createTenant(\r\n createTenantPayload: CreateTenantRequestPayload\r\n ): Observable<CreateTenantResponse> {\r\n return this.httpService\r\n .postData(\r\n `${this.apiBaseUrl}/configurations/app/createTenant`,\r\n createTenantPayload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Constructs the checkbox options from features list from server.\r\n * @param {FeaturesList[]} features\r\n * @returns {CheckboxOption[]}\r\n */\r\n getFeatureOptions(features: Features[]): CheckboxOption[] {\r\n this.checkBoxOptions = [];\r\n features?.forEach((feature: Features) => {\r\n this.checkBoxOptions?.push({\r\n id: feature?.featureId,\r\n name: feature?.featureName,\r\n checked: feature?.isDefault,\r\n disabled: feature?.isDefault,\r\n });\r\n });\r\n return this.checkBoxOptions;\r\n }\r\n /**\r\n * Constructs the radio options from application types from server.\r\n * @param {AppTypeConfig[]} appTypeOptions\r\n * @returns {RadioOption[]}\r\n */\r\n getApplicationTypeOptions(appTypeOptions: AppTypeConfig[]): RadioOption[] {\r\n this.radioOptions = [];\r\n appTypeOptions?.forEach((appType: AppTypeConfig) => {\r\n this.radioOptions?.push({\r\n id: appType?.configFieldId,\r\n label: appType?.configFieldValue?.type,\r\n });\r\n });\r\n return this.radioOptions;\r\n }\r\n /**\r\n * Constructs the selected features id's.\r\n * @param {CheckboxOption[]} featureOptions\r\n * @returns {FeatureId[]}\r\n */\r\n getFeatureIds(featureOptions: CheckboxOption[]): FeatureId[] {\r\n const featureIds: FeatureId[] = [];\r\n featureOptions?.forEach((featureOption: CheckboxOption) => {\r\n if (featureOption?.checked) {\r\n featureIds.push({\r\n featureId: featureOption.id as string,\r\n });\r\n }\r\n });\r\n return featureIds;\r\n }\r\n /**\r\n * Sets the newly created tenant information.\r\n * @param {NewTenantInfo} newTenantInfo\r\n */\r\n setNewTenantInfo(newTenantInfo: NewTenantInfo): void {\r\n this.newTenantInfo = newTenantInfo;\r\n }\r\n /**\r\n * Returns the newly created tenant information.\r\n */\r\n get getNewTenantInfo(): NewTenantInfo {\r\n return this.newTenantInfo;\r\n }\r\n\r\n /**\r\n * Sets tenant function type.\r\n * @param {TenantFunctionType} tenantFunctionType -tenant function type.\r\n */\r\n setTenantFunctionType(tenantFunctionType: TenantFunctionType): void {\r\n this.tenantFunctionType = tenantFunctionType;\r\n }\r\n\r\n /**\r\n * Returns tenant function type.\r\n * @return {TenantFunctionType} -tenant function type.\r\n */\r\n getTenantFunctionType(): TenantFunctionType {\r\n return this.tenantFunctionType;\r\n }\r\n /**\r\n * Stores the newly created role information.\r\n * @param {RoleInfo} newlyCreatedRole -create role information.\r\n */\r\n setNewlyCreatedRoleInfo(newlyCreatedRole: RoleInfo): void {\r\n this.newlyCreatedRole = newlyCreatedRole;\r\n }\r\n /**\r\n * Returns the newly created role information.\r\n * @return {RoleInfo} -create role information.\r\n */\r\n getNewlyCreatedRoleInfo(): RoleInfo {\r\n return this.newlyCreatedRole;\r\n }\r\n\r\n /**\r\n * Posts the edited tenant application form data to server using HttpService for updating the tenant information.\r\n * @param {CreateTenantPayload} editTenantPayload\r\n * @return {Observable<CreateTenantResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n editTenant(\r\n editTenantPayload: CreateTenantRequestPayload\r\n ): Observable<CreateTenantResponse> {\r\n return this.httpService\r\n .putData(\r\n `${this.apiBaseUrl}/configurations/app/editTenant`,\r\n editTenantPayload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Sends update request to the server to update the tenant application status to active/inactive using HttpService and returns the success or failure response.\r\n * @param {UpdateTenantStatusRequestPayload} updateTenantStatusPayload\r\n * @return {Observable<UpdateTenantStatusResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n updateTenantStatus(\r\n updateTenantStatusPayload: UpdateTenantStatusRequestPayload\r\n ): Observable<UpdateTenantStatusResponse> {\r\n return this.httpService\r\n .putData(\r\n `${this.apiBaseUrl}/configurations/app/updateStatus`,\r\n updateTenantStatusPayload\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * It generates Feature list from checkbox options generated in form array.\r\n * @param {CheckboxOption[]} features\r\n * @return {Features[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n getFeaturesList(features: CheckboxOption[]): Features[] {\r\n this.featureList = [];\r\n features?.forEach((feature: CheckboxOption) => {\r\n if (feature.checked)\r\n this.featureList?.push({\r\n featureId: feature?.id as string,\r\n featureName: feature?.name as string,\r\n isDefault: feature?.checked,\r\n });\r\n });\r\n return this.featureList;\r\n }\r\n /**\r\n * Returns sorted role list data.\r\n * @param {Role[]} roleList\r\n * @return {Role[]}\r\n * @memberof TenantApplicationsService\r\n */\r\n sortRolesByRoleType(roleList: Role[]): Role[] {\r\n return roleList.sort((a, b) => a?.viewOrder - b?.viewOrder);\r\n }\r\n /**\r\n * Posts the role details to server using HttpService for deleting the role.\r\n * @param {DeleteRoleRequestPayload} deleteRoleRequestPayload\r\n * @return {Observable<DeleteRoleResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n deleteRole(\r\n deleteRolePayload: DeleteRoleRequestPayload\r\n ): Observable<DeleteRoleResponse> {\r\n return this.httpService\r\n .putData(`${this.apiBaseUrl}/groups/role/deleteRole`, deleteRolePayload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n /**\r\n * Gets group types from server using HttpService.\r\n * @param {string} appId\r\n * @return {Observable<ViewGroupTypeResponse>}\r\n * @memberof TenantApplicationsService\r\n */\r\n getGroupTypes(appId: string): Observable<ViewGroupTypeResponse> {\r\n return this.httpService\r\n .getData(\r\n `${this.apiBaseUrl}/configurations/config/appGroupTypeDetails/${appId}`\r\n )\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n AlignType,\r\n CheckboxOption,\r\n FormGrid,\r\n FormControlType,\r\n AllowedFileTypes,\r\n FileUploadService,\r\n FileUploadPresignedUrl,\r\n RadioOption,\r\n DynamicFormComponent,\r\n FormModel,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenTexts from '../../assets/constants.json';\r\nimport { FormArray, FormGroup, Validators } from '@angular/forms';\r\nimport { TenantsValidationPatterns } from '../../assets/tenant-validations';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormStatus } from '../../models/form-status.model';\r\nimport { validColorValidator } from 'ngx-colors';\r\nimport { Features, GetFeaturesResponse } from '../../models/features.model';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../../models/app-type-config.model';\r\nimport {\r\n CreateTenantRequestPayload,\r\n CreateTenantResponse,\r\n NewTenantInfo,\r\n TenantBasicInfo,\r\n} from '../../models/tenant.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantFunctionType } from '../../models/tenant-function-type.model';\r\n\r\n@Component({\r\n selector: 'ieeesa-create-tenant-application',\r\n standalone: true,\r\n imports: [CommonModule, DynamicFormComponent],\r\n templateUrl: './create-tenant-application.component.html',\r\n styleUrls: ['./create-tenant-application.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CreateTenantApplicationComponent implements OnInit, OnDestroy {\r\n destroy$ = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenTexts;\r\n createTenantTexts = this.constants?.createTenant;\r\n leftButtonLabel = this.createTenantTexts?.label?.leftButtonLabel;\r\n rightButtonLabel = this.createTenantTexts?.label?.rightButtonLabel;\r\n colWidth: FormGrid = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };\r\n createTenantFormGroup!: FormModel;\r\n actionButtonAlign = AlignType.LEFT;\r\n createTenantFormGroupRef!: FormGroup;\r\n @ViewChild(DynamicFormComponent)\r\n dynamicFormComponent!: DynamicFormComponent;\r\n @Output() submitFormResponse = new EventEmitter();\r\n @Output() formCancel = new EventEmitter();\r\n featuresOptions!: CheckboxOption[];\r\n appTypeOptions!: RadioOption[];\r\n createTenantPayload!: CreateTenantRequestPayload;\r\n fileUploadPresignedUrl!: string;\r\n fileDownloadPresignedUrl!: string;\r\n file!: File | FileList;\r\n allowedFileTypes = [\r\n AllowedFileTypes.JPG,\r\n AllowedFileTypes.PNG,\r\n AllowedFileTypes.SVG,\r\n ];\r\n selectedColor!: string;\r\n selectedAppTypeOption!: RadioOption;\r\n tenantFunctionType!: TenantFunctionType;\r\n selectedTenantInfo!: TenantBasicInfo | undefined;\r\n isAppLogoModified = false;\r\n updatedTenantBasicInfo!: NewTenantInfo;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public fileUploadService: FileUploadService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n ngOnInit(): void {\r\n this.tenantFunctionType = this.tenantAppService?.getTenantFunctionType();\r\n this.selectedTenantInfo =\r\n this.tenantAppService?.getSelectedTenantInformation();\r\n this.fileUploadService.setApiBaseUrl(this.tenantAppService?.apiBaseUrl);\r\n this.getFeatures();\r\n }\r\n /**\r\n * Gets the list of features and updates the form control.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getFeatures(): void {\r\n this.tenantAppService\r\n .getFeatures()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetFeaturesResponse) => {\r\n if (response?.status) {\r\n this.featuresOptions = this.tenantAppService.getFeatureOptions(\r\n response?.body as Features[]\r\n );\r\n if (this.tenantFunctionType === TenantFunctionType.EDIT)\r\n this.featuresOptions?.forEach((option: CheckboxOption) => {\r\n if (\r\n this.selectedTenantInfo?.features?.some(\r\n (feature: Features) => feature?.featureId === option?.id\r\n )\r\n ) {\r\n option.checked = true;\r\n }\r\n });\r\n this.getApplicationTypes();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Gets the application/tenant types and updates the form control.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getApplicationTypes(): void {\r\n this.tenantAppService\r\n .getApplicationTypes()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetAppTypesResponse) => {\r\n if (response?.status) {\r\n this.appTypeOptions =\r\n this.tenantAppService.getApplicationTypeOptions(\r\n response?.body as AppTypeConfig[]\r\n );\r\n if (this.tenantFunctionType === TenantFunctionType.EDIT) {\r\n this.appTypeOptions?.forEach((radioOption: RadioOption) => {\r\n if (radioOption?.id === this.selectedTenantInfo?.appType) {\r\n radioOption.checked = true;\r\n this.selectedAppTypeOption = radioOption;\r\n } else {\r\n radioOption.checked = false;\r\n }\r\n });\r\n }\r\n this.initializeCreateTenantFormGroup();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Initialize the create tenant form group array.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n initializeCreateTenantFormGroup(): void {\r\n this.createTenantFormGroup = {\r\n formGroup: [\r\n {\r\n legend: '',\r\n controls: [\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appTitle + '*',\r\n controlName: 'appTitle',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appTitle\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appTitleMaxLength\r\n ),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appTitle,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appTitleMaxChars,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appTitle,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appTitle,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appId + '*',\r\n controlName: 'appId',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appId\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(TenantsValidationPatterns.appIdMaxLength),\r\n Validators.pattern(TenantsValidationPatterns.alphaNumeric),\r\n ],\r\n disabled: this.tenantFunctionType === TenantFunctionType.EDIT,\r\n supportMessage: this.createTenantTexts?.supportText?.appId,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appIdMaxChars,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appId,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appId,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appId,\r\n },\r\n {\r\n type: FormControlType?.FILE_UPLOAD,\r\n label: this.createTenantTexts?.label?.appLogo + '*',\r\n controlName: 'appLogo',\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appLogo\r\n : '',\r\n placeholder: '',\r\n isFileSelected:\r\n this.tenantFunctionType === TenantFunctionType.EDIT,\r\n supportMessage: this.createTenantTexts?.supportText?.appLogo,\r\n validation: [Validators.required],\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appLogo,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appLogo,\r\n isMultiFileUpload: false,\r\n maxUploadFileSize: 2,\r\n maxFileSizeErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit?.appLogoMaxSize,\r\n allowedFileTypeErrorMessage:\r\n this.createTenantTexts?.message?.error?.invalidFile,\r\n allowedFileTypes: this.allowedFileTypes,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appHeading + '*',\r\n controlName: 'appHeading',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appHeading\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appHeadingMaxLength\r\n ),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appHeading,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit\r\n ?.appHeadingMaxChars,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.email,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHeading,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appHeading,\r\n },\r\n {\r\n type: FormControlType.TEXT_AREA,\r\n label: this.createTenantTexts?.label?.appDescription + '*',\r\n controlName: 'appDescription',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appDescription\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n TenantsValidationPatterns.appDescriptionMaxLength\r\n ),\r\n ],\r\n supportMessage:\r\n this.createTenantTexts?.supportText?.appDescription,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createTenantTexts?.message?.error?.limit\r\n ?.appDescriptionMaxChars,\r\n maxCharCount: TenantsValidationPatterns.appDescriptionMaxLength,\r\n ariaLabel:\r\n this.createTenantTexts?.label?.ariaLabel?.appDescription,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById\r\n ?.appDescription,\r\n ariaMultiline: true,\r\n isResize: true,\r\n },\r\n {\r\n type: FormControlType.COLOR_PICKER,\r\n label: this.createTenantTexts?.label?.appBgColor + '*',\r\n controlName: 'backgroundColor',\r\n value: '',\r\n defaultColor:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.backgroundColor\r\n : '',\r\n placeholder: '',\r\n supportMessage: this.createTenantTexts?.supportText?.appBgColor,\r\n validation: [Validators.required, validColorValidator()],\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n invalidColorErrorMessage:\r\n this.createTenantTexts?.message?.error?.invalidColor,\r\n ariaLabel: this.createTenantTexts?.supportText?.appBgColor,\r\n ariaDescribedById:\r\n this.createTenantTexts?.supportText?.appBgColor,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.appHelpLink + '*',\r\n controlName: 'appHelpLink',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appHelpLink\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.pattern(TenantsValidationPatterns.url),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.appHelpLink,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appHelpLink,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHelpLink,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appHelpLink,\r\n },\r\n {\r\n type: FormControlType.CHECKBOX,\r\n label: this.createTenantTexts?.label?.featuresList + '*',\r\n controlName: 'features',\r\n checkboxOptions: this.featuresOptions,\r\n minSelectionRequired: 1,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.featuresList,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.featuresList,\r\n supportMessage: this.createTenantTexts?.supportText?.featuresList,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n validation: [Validators.required],\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createTenantTexts?.label?.domainURL + '*',\r\n controlName: 'appDomainUrl',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appDomainUrl\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.pattern(TenantsValidationPatterns.url),\r\n ],\r\n supportMessage: this.createTenantTexts?.supportText?.domainURL,\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n patternErrorMessage:\r\n this.createTenantTexts?.message?.error?.pattern?.appDomainUrl,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.domainURL,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.domainURL,\r\n },\r\n {\r\n type: FormControlType.RADIO,\r\n label: this.createTenantTexts?.label?.appType + '*',\r\n controlName: 'appType',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.selectedTenantInfo?.appType\r\n : '',\r\n disabled: this.tenantFunctionType === TenantFunctionType.EDIT,\r\n radioOptions: this.appTypeOptions,\r\n validation: [Validators.required],\r\n requiredErrorMessage:\r\n this.createTenantTexts?.message?.error?.required,\r\n ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appType,\r\n ariaDescribedById:\r\n this.createTenantTexts?.label?.ariaDescribedById?.appType,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n\r\n /**\r\n * Creates Payload and gets presigned url for file upload on form submission.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onCreateTenantFormSubmit(form: FormGroup[]): void {\r\n form[0]?.markAllAsTouched();\r\n if (form[0].status === FormStatus.VALID) {\r\n this.createTenantPayload = this.getCreateTenantPayload(\r\n form[0].getRawValue()\r\n );\r\n if (\r\n this.tenantFunctionType === TenantFunctionType.EDIT &&\r\n (!this.isAppLogoModified || !this.file)\r\n ) {\r\n this.editTenant();\r\n } else if (this.file) {\r\n this.getFileUploadPresignedUrl(this.file);\r\n } else {\r\n this.createTenant();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new tenant on form submission.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n createTenant(): void {\r\n this.tenantAppService\r\n .createTenant(this.createTenantPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateTenantResponse) => {\r\n if (response.status) {\r\n this.tenantAppService.setNewTenantInfo(\r\n this.createTenantPayload?.payload\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Updates the modified tenant information on form submission.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n editTenant(): void {\r\n this.tenantAppService\r\n .editTenant(this.createTenantPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateTenantResponse) => {\r\n if (response?.status) {\r\n this.updatedTenantBasicInfo = this.createTenantPayload?.payload;\r\n this.updatedTenantBasicInfo.features =\r\n this.tenantAppService.getFeaturesList(this.featuresOptions);\r\n this.tenantAppService.setSelectedTenantInformation(\r\n this.updatedTenantBasicInfo as TenantBasicInfo\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Constructs create tenant payload from the form data and returns.\r\n * @param {*} formData\r\n * @return {CreateTenantRequestPayload}\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n getCreateTenantPayload(formData: any): CreateTenantRequestPayload {\r\n const payload: CreateTenantRequestPayload = {\r\n payload: {\r\n appTitle: formData?.appTitle,\r\n appId: formData?.appId,\r\n appHeading: formData?.appHeading,\r\n appDescription: formData?.appDescription,\r\n backgroundColor: formData?.backgroundColor,\r\n appLogo: formData?.appLogo,\r\n appDomainUrl: formData?.appDomainUrl,\r\n appHelpLink: formData?.appHelpLink,\r\n appType: this.selectedAppTypeOption?.id as string,\r\n features: this.tenantAppService.getFeatureIds(this.featuresOptions),\r\n },\r\n };\r\n return payload;\r\n }\r\n\r\n /**\r\n * Gets create tenant form group reference and disables default features.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n getCreateTenantFormGroupRef(form: FormGroup[]): void {\r\n this.createTenantFormGroupRef = form[0];\r\n const featuresFormArray = this.createTenantFormGroupRef?.controls[\r\n 'features'\r\n ] as FormArray;\r\n this.featuresOptions?.forEach((option: CheckboxOption, index: number) => {\r\n if (option?.disabled) {\r\n featuresFormArray?.at(index).disable();\r\n }\r\n });\r\n }\r\n /**\r\n * Updates createTenantFormGroupRef on add or edit tenant form change event.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onCreateTenantFormChange(form: FormGroup[]): void {\r\n this.createTenantFormGroupRef = form[0];\r\n this.isAppLogoModified =\r\n this.createTenantFormGroupRef?.controls['appLogo']?.dirty &&\r\n this.tenantFunctionType === TenantFunctionType.EDIT;\r\n }\r\n /**\r\n * Emits form cancel event.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n onFormCancel(): void {\r\n this.formCancel.emit();\r\n }\r\n\r\n /**\r\n * Gets the selected file when the file is browsed and on formFileUpload event is triggered.\r\n * @param {File | FileList} file\r\n */\r\n onFormFileUpload(file: File | FileList): void {\r\n this.file = file;\r\n }\r\n /**\r\n * Gets pre-signed URL to upload the selected file to AWS S3 bucket.\r\n * @param {File | FileList} file\r\n */\r\n getFileUploadPresignedUrl(file: File | FileList): void {\r\n this.fileUploadService\r\n .getFileUploadPresignedUrl(file)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: FileUploadPresignedUrl) => {\r\n this.fileUploadPresignedUrl = response?.body;\r\n if (this.fileUploadPresignedUrl) this.uploadFileToS3(file);\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function, no-empty-function\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Uploads the file to AWS S3 bucket and submit the form data to API to create new tenant.\r\n * @param {File | FileList} file\r\n */\r\n uploadFileToS3(file: File | FileList): void {\r\n this.fileUploadService\r\n .uploadFileToS3(this.fileUploadPresignedUrl, file)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\r\n next: (response: any) => {\r\n this.fileUploadService.setFileUploadStatus(true);\r\n // eslint-disable-next-line no-unused-expressions\r\n this.tenantFunctionType === TenantFunctionType.EDIT\r\n ? this.editTenant()\r\n : this.createTenant();\r\n },\r\n // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.fileUploadService.setFileUploadStatus(false);\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createTenantTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Triggers when the color picker values has been changed.\r\n * @param {string} color\r\n */\r\n onColorPickerChange(color: string): void {\r\n this.selectedColor = color;\r\n }\r\n /**\r\n * Triggers when the radio option has been changed.\r\n * @param {RadioOption} radioOption\r\n */\r\n onRadioOptionSelected(radioOption: RadioOption): void {\r\n this.selectedAppTypeOption = radioOption;\r\n }\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof CreateTenantApplicationComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<ieeesa-dynamic-form\r\n *ngIf=\"createTenantFormGroup\"\r\n class=\"ieeesa-create-tenant-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createTenantFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateTenantFormSubmit($event)\"\r\n (formChange)=\"onCreateTenantFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateTenantFormGroupRef($event)\"\r\n (formFileUpload)=\"onFormFileUpload($event)\"\r\n (formColorPickerChange)=\"onColorPickerChange($event)\"\r\n (formRadioOptionSelected)=\"onRadioOptionSelected($event)\"\r\n></ieeesa-dynamic-form>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {\r\n DataTableComponent,\r\n ModalComponent,\r\n PaginatorConfig,\r\n TableActions,\r\n TableColumnSchema,\r\n TableColumnSortDirection,\r\n TableColumnType,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as constants from '../../assets/constants.json';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport {\r\n AlertType,\r\n AlertsService,\r\n BreakpointObserverService,\r\n ModalType,\r\n} from '@ieeesa-npm/utility';\r\nimport { TenantsRoutesConfig } from '../../models/route-config.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { Router } from '@angular/router';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { Sort } from '@angular/material/sort';\r\nimport {\r\n TenantStatus,\r\n PermissionType,\r\n} from '../../models/permission-type.model';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../../models/tenants-permission.model';\r\nimport {\r\n ViewTenantsColumnSchemaDef,\r\n SortOrderBy,\r\n GetTenantsPayload,\r\n} from '../../models/table-column-schema-view-tenant-list.model';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport { CreateTenantApplicationComponent } from '../create-tenant-application/create-tenant-application.component';\r\nimport { SortConfig, TenantBasicInfo } from '../../models/tenant.model';\r\nimport { Features } from '../../models/features.model';\r\nimport { TenantFunctionType } from '../../models/tenant-function-type.model';\r\n@Component({\r\n selector: 'ieeesa-view-tenants-list',\r\n templateUrl: './view-tenants-list.component.html',\r\n styleUrls: ['./view-tenants-list.component.scss'],\r\n standalone: true,\r\n imports: [CommonModule, MatButtonModule, DataTableComponent],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ViewTenantsListComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = constants;\r\n viewTenantsConstants = this.constants?.viewTenants;\r\n isMobileView = false;\r\n @Input() tenantsPageInfo: {\r\n tenantsTitle: string;\r\n } = {\r\n tenantsTitle: '',\r\n };\r\n @Input() apiBaseURL = '';\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Input() routePaths!: TenantsRoutesConfig;\r\n @Input() userPermissions!: UserPermission[];\r\n @Input() defaultSortedColumn: string = ViewTenantsColumnSchemaDef.APP_ID;\r\n @Output() createTenant = new EventEmitter();\r\n @Output() viewTenantsDetails: EventEmitter<TenantBasicInfo> =\r\n new EventEmitter<TenantBasicInfo>();\r\n tableData!: TenantBasicInfo[];\r\n columnSchema!: TableColumnSchema[];\r\n tableActions: TableActions = {\r\n isPaginationNeeded: true,\r\n };\r\n tableColumns = this.viewTenantsConstants?.tableColumns;\r\n emptyFieldValueReplacedBy =\r\n this.viewTenantsConstants?.emptyFieldValueReplacedBy;\r\n paginatorConfig: PaginatorConfig = {\r\n recordsPerPage: this.viewTenantsConstants?.pageSizeOptions[0],\r\n pageSizeOptions: this.viewTenantsConstants.pageSizeOptions,\r\n totalRecords: 0,\r\n };\r\n\r\n userTenantsPermissions!: TenantsPermissions[];\r\n permissionType = PermissionType;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogRef: any;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n createTenantScreenTexts: any = this.constants?.createTenant;\r\n defaultColumnSortDirection = true;\r\n pageEvent!: PageEvent;\r\n sortConfig!: SortConfig;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public dialog: MatDialog,\r\n // eslint-disable-next-line no-unused-vars\r\n public alertService: AlertsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantApplicationsService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private router: Router\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result.matches;\r\n });\r\n }\r\n\r\n /**\r\n * Sets the user permissions, router config path, base API URL, table column schema and gets the tenants list.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n ngOnInit(): void {\r\n this.userTenantsPermissions =\r\n this.tenantApplicationsService?.filterPermission(this.userPermissions);\r\n this.tenantApplicationsService?.setAppConfig(\r\n this.apiBaseURL,\r\n this.userPermissions\r\n );\r\n this.tenantsPageInfo = {\r\n tenantsTitle: this.viewTenantsConstants?.tenantsTitle,\r\n };\r\n this.routePaths = this.routePaths ?? this.constants?.routeConfigPath;\r\n this.sharedService?.setRoutePaths(this.routePaths);\r\n this.configureTableInfo();\r\n this.defaultSortedColumn = this.columnSchema[0].columnDef;\r\n this.getTenantsAndInitializeTableView(this.getTenantsPayload());\r\n }\r\n /**\r\n * Validates permission based access for provided feature.\r\n * @param {PermissionType} permissionType\r\n * @return {boolean}\r\n * @memberof ViewTenantsListComponent\r\n */\r\n validateAccess(permissionType: PermissionType): boolean {\r\n return this.tenantApplicationsService.validateAccess(\r\n permissionType,\r\n this.userTenantsPermissions\r\n );\r\n }\r\n /**\r\n * Configures table schema to display the tenants in table view.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n configureTableInfo(): void {\r\n this.columnSchema = [\r\n {\r\n id: 1,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_ID,\r\n heading: this.tableColumns?.appId,\r\n columnType: TableColumnType.LINK,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.appId}`,\r\n isSortableColumn: true,\r\n },\r\n {\r\n id: 2,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_TITLE,\r\n heading: this.tableColumns?.appTitle,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.appTitle ?? this.emptyFieldValueReplacedBy}`,\r\n isSortableColumn: true,\r\n },\r\n {\r\n id: 3,\r\n columnDef: ViewTenantsColumnSchemaDef.APP_DESCRIPTION,\r\n heading: this.tableColumns?.appDescription,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.appDescription ?? this.emptyFieldValueReplacedBy}`,\r\n },\r\n\r\n {\r\n id: 4,\r\n columnDef: ViewTenantsColumnSchemaDef.FEATURES,\r\n heading: this.tableColumns?.features,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${\r\n element?.features && element?.features?.length > 0\r\n ? this.formatFeaturesName(element?.features)\r\n : this.emptyFieldValueReplacedBy\r\n }`,\r\n },\r\n {\r\n id: 5,\r\n columnDef: ViewTenantsColumnSchemaDef.STATUS,\r\n heading: this.tableColumns?.status,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) =>\r\n `${element.status ? TenantStatus.ACTIVE : TenantStatus.INACTIVE}`,\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Format the features name in to single sentence with comma separated.\r\n * @memberof ViewTenantsListComponent\r\n */\r\n formatFeaturesName(features: Features[]): string {\r\n return features\r\n .map((feature: Features) => {\r\n // eslint-disable-next-line no-unused-expressions\r\n return feature.featureName;\r\n })\r\n ?.join(', ');\r\n }\r\n /**\r\n * Fetching details of tenants and initialize table view\r\n * @param {GetTenantsPayload} payload\r\n * @memberof ViewTenantsListComponent\r\n */\r\n getTenantsAndInitializeTableView(payload: GetTenantsPayload): void {\r\n this.tenantApplicationsService\r\n .getTenantsList(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n this.tableData = response?.body?.appDetails as TenantBasicInfo[];\r\n this.paginatorConfig.totalRecords = response?.body\r\n ?.totalRecords as number;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(error, this.constants?.errors);\r\n },\r\n });\r\n }\r\n /**\r\n * Sets the dialog options for create tenant modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantsListComponent\r\n */\r\n openCreateTenantForm(): void {\r\n this.tenantApplicationsService.setTenantFunctionType(\r\n TenantFunctionType.CREATE\r\n );\r\n const dialogOptions = {\r\n heading: this.viewTenantsConstants?.addTenant,\r\n isCloseNeeded: true,\r\n componentReference: CreateTenantApplicationComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-create-tenant');\r\n }\r\n /**\r\n * Opens modal component with received params and handles form submission success and errors.\r\n * @param {*} dialogOptions\r\n * @param {string} [className]\r\n * @return -returns nothing\r\n * @memberof ViewTenantsListComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-inferrable-types, no-unused-vars\r\n openModal(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogOptions: any,\r\n className?: string\r\n ): void {\r\n className = className ?? '';\r\n this.dialogRef = this.dialog?.open(ModalComponent, {\r\n data: dialogOptions,\r\n width: '',\r\n panelClass: ['ieeesa-modal-dialog', className],\r\n ariaModal: true,\r\n });\r\n this.dialogRef?.componentInstance?.submitFormResponse\r\n .pipe(takeUntil(this.destroy$))\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-unused-vars\r\n .subscribe((result: any) => {\r\n this.dialogRef?.close();\r\n const appTitle =\r\n this.tenantApplicationsService.getNewTenantInfo?.appTitle;\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${appTitle} ${this.createTenantScreenTexts?.message?.success?.submission}`\r\n );\r\n this.getTenantsAndInitializeTableView(this.getTenantsPayload());\r\n });\r\n this.dialogRef?.componentInstance?.formCancel\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.dialogRef?.close();\r\n });\r\n }\r\n /**\r\n * Sorts the tenants by application id or title in ascending or descending.\r\n * @param {Sort} sort\r\n * @memberof ViewTenantsListComponent\r\n */\r\n onSortTenants(sort: Sort): void {\r\n this.defaultSortedColumn = sort.active;\r\n this.defaultColumnSortDirection =\r\n sort.direction === TableColumnSortDirection.ASCENDING;\r\n this.sortConfig = {\r\n sort: sort,\r\n isSortedByAscending: this.defaultColumnSortDirection,\r\n };\r\n this.getTenantsAndInitializeTableView(this.getTenantsPayload());\r\n }\r\n /**\r\n * Constructs and returns the payload for fetching the tenants list.\r\n * @returns GetTenantsPayload\r\n */\r\n getTenantsPayload(): GetTenantsPayload {\r\n const payload: GetTenantsPayload = {\r\n payload: {\r\n offset: this.pageEvent?.pageIndex\r\n ? (this.pageEvent?.pageIndex as number)\r\n : 0,\r\n pageSize: this.pageEvent?.pageSize\r\n ? (this.pageEvent?.pageSize as number)\r\n : this.paginatorConfig?.recordsPerPage,\r\n sortedBy: this.sortConfig?.sort?.active\r\n ? (this.sortConfig?.sort?.active as string)\r\n : ViewTenantsColumnSchemaDef.APP_ID,\r\n sortedOrderBy: this.filterSortedOrderBy(\r\n this.sortConfig?.isSortedByAscending\r\n ? (this.sortConfig?.isSortedByAscending as boolean)\r\n : this.defaultColumnSortDirection\r\n ),\r\n },\r\n };\r\n return payload;\r\n }\r\n /**\r\n * Returning sorting order according to column definition.\r\n * @param defaultColumnSortDirection\r\n * @returns SortOrderBy.ASC | SortOrderBy.DESC\r\n */\r\n filterSortedOrderBy(defaultColumnSortDirection: boolean): string {\r\n return defaultColumnSortDirection ? SortOrderBy.ASC : SortOrderBy.DESC;\r\n }\r\n /**\r\n * Get the the records according to pagination.\r\n * @param {{\r\n * pageOffset: number;\r\n * pageLimit: number;\r\n * }} pageEvent\r\n * @memberof ViewTenantsListComponent\r\n */\r\n onTablePaginationChange(pageEvent: PageEvent): void {\r\n this.pageEvent = pageEvent;\r\n this.getTenantsAndInitializeTableView(this.getTenantsPayload());\r\n }\r\n /**\r\n * Navigates to view tenants detail component.\r\n * @param {{tenantInfo: TenantBasicInfo}}\r\n * @memberof ViewTenantsListComponent\r\n */\r\n navigateToViewTenantDetails(tenantInfo: TenantBasicInfo): void {\r\n if (tenantInfo) {\r\n this.tenantApplicationsService.setSelectedTenantInformation(tenantInfo);\r\n }\r\n if (this.routePaths?.viewTenantDetails)\r\n this.router.navigate([this.routePaths?.viewTenantDetails]);\r\n else this.viewTenantsDetails.emit(tenantInfo);\r\n }\r\n /**\r\n * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantsListComponent\r\n * @return -returns nothing\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-view-tenants-list\"\r\n [ngClass]=\"{ 'ieeesa-view-tenants-list__mobile': isMobileView }\"\r\n>\r\n <p class=\"ieeesa-headline-lg-32 py-3 mb-0\">\r\n {{ tenantsPageInfo.tenantsTitle }}\r\n </p>\r\n <div class=\"ieeesa-view-tenants-list__content\">\r\n <div class=\"d-flex justify-content-end\">\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button me-3\"\r\n [attr.aria-label]=\"viewTenantsConstants?.ariaLabel?.add\"\r\n (click)=\"openCreateTenantForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ viewTenantsConstants?.addTenant }}\r\n </button>\r\n </div>\r\n <ieeesa-data-table\r\n [tableDataInfo]=\"tableData\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [tableActions]=\"tableActions\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [defaultSortedColumn]=\"defaultSortedColumn\"\r\n (sortChange)=\"onSortTenants($event)\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (rowLink)=\"navigateToViewTenantDetails($event)\"\r\n ></ieeesa-data-table>\r\n </div>\r\n</div>\r\n","export enum FeaturePermissionId {\r\n // eslint-disable-next-line no-unused-vars\r\n MEETINGS_AND_EVENTS = 'FEATURE_049753e8-ea5c-4fad-adb0-e1456e69c7a5',\r\n // eslint-disable-next-line no-unused-vars\r\n BALLOTS = 'FEATURE_a0ad3616-20dc-43da-813f-9b76d33f227a',\r\n}\r\n","import { Component, Input, OnDestroy, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { BreakpointObserverService } from '@ieeesa-npm/utility';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport {\r\n RadioOption,\r\n FileUploadService,\r\n ImagePreviewComponent,\r\n} from '@ieeesa-npm/presentation';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantBasicInfo } from '../../models/tenant.model';\r\n\r\n@Component({\r\n selector: 'ieeesa-tenant-basic-details',\r\n standalone: true,\r\n imports: [CommonModule, ImagePreviewComponent],\r\n templateUrl: './tenant-basic-details.component.html',\r\n styleUrls: ['./tenant-basic-details.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class TenantBasicDetailsComponent implements OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n isMobileView = false;\r\n constants = screenText;\r\n basicDetailTexts = this.constants?.viewTenants?.tenantBasicDetails?.label;\r\n tenantBackgroundColor!: string;\r\n selectedAppType!: string;\r\n selectedAppTypeLabel!: string;\r\n logo!: string;\r\n basicInfo!: TenantBasicInfo;\r\n imageUrl!: string;\r\n @Input()\r\n set tenantDetails(value: TenantBasicInfo) {\r\n this.basicInfo = value;\r\n this.logo = this.basicInfo?.appLogo as string;\r\n this.selectedAppType = this.basicInfo?.appType as string;\r\n if (this.basicInfo) {\r\n this.getAppType();\r\n this.getFileDownloadPresignedUrls(this.logo);\r\n }\r\n }\r\n\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private fileUploadService: FileUploadService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result?.matches;\r\n });\r\n this.tenantAppService.getApplicationType();\r\n this.fileUploadService.setApiBaseUrl(this.tenantAppService?.apiBaseUrl);\r\n }\r\n\r\n /**\r\n * Gets the application types.\r\n * @memberof TenantBasicDetailsComponent\r\n */\r\n getAppType(): void {\r\n const appTypes = this.tenantAppService.appTypeInfo;\r\n const selectedType = appTypes?.filter(\r\n (appType) => appType.id === this.basicInfo?.appType\r\n ) as RadioOption[];\r\n this.selectedAppTypeLabel = selectedType[0]?.label;\r\n }\r\n\r\n /**\r\n * Retrieves presigned URL for downloading files from Amazon S3 bucket.\r\n * @memberof TenantBasicDetailsComponent\r\n */\r\n getFileDownloadPresignedUrls(fileName: string): void {\r\n this.fileUploadService\r\n .getFileDownloadPresignedUrls(fileName)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n next: (response: any) => {\r\n this.imageUrl = response?.body;\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: Error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Downloads file from AWS S3 using a presigned URL.\r\n * @memberof TenantBasicDetailsComponent\r\n */\r\n downloadFile(presignedUrl: string): void {\r\n this.fileUploadService\r\n .downloadFile(presignedUrl)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n next: (response: any) => {\r\n this.imageUrl = response as string;\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<div *ngIf=\"basicInfo\" class=\"ieeesa-tenant-basic-info d-flex flex-start flex-column\">\r\n <p class=\"ieeesa-body-color-sm-14 mb-0\">{{ basicDetailTexts.title }}</p>\r\n <p class=\"ieeesa-body-md-16\">{{ basicInfo.appTitle }}</p>\r\n <p class=\"ieeesa-body-color-sm-14 mb-2\">{{ basicDetailTexts.logo }}</p>\r\n <ng-container>\r\n <ieeesa-image-preview\r\n class=\"pb-3\"\r\n [imageUrl]=\"imageUrl\"\r\n ></ieeesa-image-preview>\r\n </ng-container>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.heading\r\n }}</span>\r\n <p class=\"ieeesa-title-sm-16\">{{ basicInfo.appHeading }}</p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.description\r\n }}</span>\r\n <p class=\"ieeesa-title-sm-16 me-4\">{{ basicInfo.appDescription }}</p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-2\">{{\r\n basicDetailTexts.bgColor\r\n }}</span>\r\n <p\r\n class=\"ieeesa-tenant-basic-info__bgColor\"\r\n [ngStyle]=\"{ 'background-color': basicInfo.backgroundColor }\"\r\n ></p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.helpLink\r\n }}</span>\r\n <p class=\"ieeesa-title-sm-16\">{{ basicInfo.appHelpLink }}</p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.listOfFeatures\r\n }}</span>\r\n <ul [ngClass]=\"isMobileView ? '' : 'd-flex gap-5'\">\r\n <li class=\"ieeesa-body-md-16\" *ngFor=\"let feature of basicInfo.features\">\r\n {{ feature?.featureName }}\r\n </li>\r\n </ul>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{\r\n basicDetailTexts.domainURL\r\n }}</span>\r\n <p class=\"ieeesa-title-sm-16\">{{ basicInfo.appDomainUrl }}</p>\r\n <span class=\"ieeesa-body-color-sm-14 mb-0\">{{ basicDetailTexts.type }}</span>\r\n <p class=\"ieeesa-body-md-16\">{{ selectedAppTypeLabel }}</p>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenTexts from '../../assets/constants.json';\r\nimport { FormGroup, Validators } from '@angular/forms';\r\nimport {\r\n AlignType,\r\n DynamicFormComponent,\r\n FieldConfig,\r\n FormControlType,\r\n FormGrid,\r\n FormModel,\r\n SelectOption,\r\n} from '@ieeesa-npm/presentation';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { FormStatus, SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantFunctionType } from '../../models/tenant-function-type.model';\r\nimport { TenantBasicInfo } from '../../models/tenant.model';\r\nimport {\r\n RoleDetails,\r\n Role,\r\n CreateModifyRoleRequestPayload,\r\n CreateModifyRoleResponse,\r\n} from '../../models/roles-and-permissions.model';\r\nimport { RoleTypeOption } from '../../models/role-type.model';\r\nimport { RolesValidation } from '../../assets/tenant-validations';\r\nimport { AlertType, GlobalErrorHandlerService } from '@ieeesa-npm/utility';\r\nimport { HttpErrorResponse } from '@angular/common/http';\r\n@Component({\r\n selector: 'ieeesa-create-modify-role',\r\n standalone: true,\r\n imports: [CommonModule, DynamicFormComponent],\r\n templateUrl: './create-modify-role.component.html',\r\n styleUrls: ['./create-modify-role.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class CreateModifyRoleComponent implements OnInit, OnDestroy {\r\n destroy$ = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenTexts;\r\n createRoleTexts = this.constants?.createRole;\r\n leftButtonLabel = this.createRoleTexts?.label?.leftButtonLabel;\r\n rightButtonLabel = this.createRoleTexts?.label?.rightButtonLabel;\r\n colWidth: FormGrid = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };\r\n createRoleFormGroup!: FormModel;\r\n createModifyRoleFormGroupRef!: FormGroup;\r\n actionButtonAlign = AlignType.LEFT;\r\n @ViewChild(DynamicFormComponent)\r\n dynamicFormComponent!: DynamicFormComponent;\r\n @Output() submitFormResponse = new EventEmitter();\r\n @Output() formCancel = new EventEmitter();\r\n tenantFunctionType!: TenantFunctionType;\r\n selectedTenantInfo!: TenantBasicInfo | undefined;\r\n createModifyRolePayload!: CreateModifyRoleRequestPayload;\r\n roleTypeOptions!: SelectOption[];\r\n selectedRoleDetails!: RoleDetails;\r\n selectedRole!: Role;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService,\r\n // eslint-disable-next-line no-unused-vars\r\n private globalErrorHandlerService: GlobalErrorHandlerService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n ngOnInit(): void {\r\n this.tenantFunctionType = this.tenantAppService?.getTenantFunctionType();\r\n this.selectedTenantInfo =\r\n this.tenantAppService?.getSelectedTenantInformation();\r\n this.roleTypeOptions =\r\n this.tenantAppService?.getRoleTypeOption() as RoleTypeOption[];\r\n this.selectedRoleDetails =\r\n this.tenantAppService?.getSelectedRoleInformation() as Role;\r\n if (this.selectedRoleDetails) {\r\n this.selectedRole = this.tenantAppService?.roles?.find(\r\n ({ roleId }) => roleId === this.selectedRoleDetails?.roleId\r\n ) as Role;\r\n }\r\n this.initializeCreateRoleFormGroup();\r\n }\r\n\r\n /**\r\n * Constructs and returns the role type form field based on credit or edit role.\r\n * @return {FieldConfig} -role type form field.\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n getRoleTypeField(): FieldConfig {\r\n let roleTypeField: FieldConfig;\r\n if (this.tenantFunctionType === TenantFunctionType.EDIT_ROLE) {\r\n roleTypeField = {\r\n type: FormControlType?.TEXT_AREA,\r\n label: this.createRoleTexts?.label?.roleType,\r\n controlName: 'roleType',\r\n isReadonly: true,\r\n value: this.selectedRole?.roleTypeName,\r\n ariaMultiline: false,\r\n ariaLabel: this.createRoleTexts?.label?.ariaLabel?.roleType,\r\n ariaDescribedById:\r\n this.createRoleTexts?.label?.ariaDescribedById?.roleType,\r\n isResize: true,\r\n };\r\n } else {\r\n roleTypeField = {\r\n type: FormControlType?.SELECT,\r\n label: this.createRoleTexts?.label?.roleType + '*',\r\n controlName: 'roleType',\r\n isSortNeeded: false,\r\n value: '',\r\n validation: [Validators.required],\r\n dropdownOptions: this.roleTypeOptions,\r\n supportMessage: this.createRoleTexts?.supportText?.roleType,\r\n requiredErrorMessage: this.createRoleTexts?.message?.error?.required,\r\n ariaLabel: this.createRoleTexts?.label?.ariaLabel?.roleType,\r\n ariaDescribedById:\r\n this.createRoleTexts?.label?.ariaDescribedById?.roleType,\r\n };\r\n }\r\n return roleTypeField;\r\n }\r\n /**\r\n * Initialize the create/edit role form group array.\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n initializeCreateRoleFormGroup(): void {\r\n this.createRoleFormGroup = {\r\n formGroup: [\r\n {\r\n legend: '',\r\n controls: [\r\n {\r\n type: FormControlType.TEXT_AREA,\r\n label: this.createRoleTexts?.label?.appTitle,\r\n controlName: 'appTitle',\r\n value: this.selectedTenantInfo?.appTitle,\r\n ariaLabel: this.createRoleTexts?.label?.ariaLabel?.appTitle,\r\n ariaDescribedById:\r\n this.createRoleTexts?.label?.ariaDescribedById?.appTitle,\r\n isReadonly: true,\r\n ariaMultiline: false,\r\n isResize: true,\r\n },\r\n this.getRoleTypeField(),\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createRoleTexts?.label?.roleName + '*',\r\n controlName: 'roleName',\r\n value:\r\n this.tenantFunctionType === TenantFunctionType.EDIT_ROLE\r\n ? this.selectedRole?.roleName\r\n : '',\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(RolesValidation.roleNameMaxLength),\r\n ],\r\n supportMessage: this.createRoleTexts?.supportText?.roleName,\r\n requiredErrorMessage:\r\n this.createRoleTexts?.message?.error?.required,\r\n maxErrorMessage:\r\n this.createRoleTexts?.message?.error?.limit?.roleNameMaxChars,\r\n ariaLabel: this.createRoleTexts?.label?.ariaLabel?.roleName,\r\n ariaDescribedById:\r\n this.createRoleTexts?.label?.ariaDescribedById?.roleName,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n /**\r\n * Gets create/edit role form group reference.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n getCreateModifyRoleFormGroupRef(form: FormGroup[]): void {\r\n this.createModifyRoleFormGroupRef = form[0];\r\n }\r\n /**\r\n * Updates createModifyRoleFormGroupRef on add role form change event.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n onCreateModifyRoleFormChange(form: FormGroup[]): void {\r\n this.createModifyRoleFormGroupRef = form[0];\r\n }\r\n /**\r\n * Creates a new role on form submission and the form is valid.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n onCreateModifyRoleFormSubmit(form: FormGroup[]): void {\r\n form[0]?.markAllAsTouched();\r\n if (form[0].status === FormStatus.VALID) {\r\n this.createModifyRolePayload = this.getCreateModifyRolePayload(\r\n form[0].getRawValue()\r\n );\r\n // eslint-disable-next-line no-unused-expressions\r\n this.tenantFunctionType === TenantFunctionType.EDIT_ROLE\r\n ? this.editRole()\r\n : this.createRole();\r\n }\r\n }\r\n /**\r\n * Constructs create/edit role payload from the form data and returns.\r\n * @param {*} formData\r\n * @return {CreateModifyRoleRequestPayload}\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n getCreateModifyRolePayload(formData: any): CreateModifyRoleRequestPayload {\r\n const payload: CreateModifyRoleRequestPayload = {\r\n payload: {\r\n appId: this.selectedTenantInfo?.appId as string,\r\n roleName: formData?.roleName,\r\n },\r\n };\r\n if (this.tenantFunctionType === TenantFunctionType.EDIT_ROLE) {\r\n payload.payload.roleId = this.selectedRole?.roleId;\r\n } else {\r\n payload.payload.roleType = formData?.roleType?.id;\r\n }\r\n return payload;\r\n }\r\n /**\r\n * Post the creates new role form data to the server on form submission to create a new role.\r\n * @param {CreateRoleRequestPayload} createModifyRolePayload\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n createRole(): void {\r\n this.tenantAppService\r\n .createRole(this.createModifyRolePayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateModifyRoleResponse) => {\r\n if (response.status) {\r\n this.tenantAppService.setNewlyCreatedRoleInfo(\r\n this.createModifyRolePayload?.payload\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.handleErrors(error);\r\n },\r\n });\r\n }\r\n /**\r\n * Post the edited role form data to server on form submission to update the selected role information.\r\n * @param {CreateModifyRoleRequestPayload} createModifyRolePayload\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n editRole(): void {\r\n this.tenantAppService\r\n .editRole(this.createModifyRolePayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: CreateModifyRoleResponse) => {\r\n if (response.status) {\r\n this.tenantAppService.setNewlyCreatedRoleInfo(\r\n this.createModifyRolePayload?.payload\r\n );\r\n this.submitFormResponse.emit(response);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.handleErrors(error);\r\n },\r\n });\r\n }\r\n /**\r\n * Captures the server side errors and handles it based on the custom or Http errors.\r\n * @param {HttpErrorResponse} error\r\n * @return -returns nothing\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n handleErrors(error: any): void {\r\n const errorCodes = error?.error?.body?.errorCodes;\r\n if (Array.isArray(errorCodes) && !error?.error?.status) {\r\n if (errorCodes[0] === '3012') {\r\n const roleName = this.createModifyRolePayload?.payload?.roleName;\r\n const errorMessage = this.sharedService?.parseErrorMessage(\r\n errorCodes,\r\n this.createRoleTexts?.errors\r\n );\r\n this.sharedService.showAlertMessage(\r\n AlertType.ERROR,\r\n `${roleName} ${errorMessage}`\r\n );\r\n }\r\n } else if (error && error instanceof HttpErrorResponse) {\r\n this.globalErrorHandlerService?.handleError(error);\r\n }\r\n }\r\n /**\r\n * Emits form cancel event.\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n onFormCancel(): void {\r\n this.formCancel.emit();\r\n }\r\n\r\n /**\r\n * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.\r\n * @memberof CreateModifyRoleComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<ieeesa-dynamic-form\r\n *ngIf=\"createRoleFormGroup\"\r\n class=\"ieeesa-create-role-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createRoleFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateModifyRoleFormSubmit($event)\"\r\n (formChange)=\"onCreateModifyRoleFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateModifyRoleFormGroupRef($event)\"\r\n></ieeesa-dynamic-form>\r\n","/* eslint-disable no-unused-vars */\r\nexport enum RoleMenuAction {\r\n EDIT_ROLE = 1,\r\n DELETE_ROLE = 2,\r\n}\r\n","/* eslint-disable no-unused-vars */\r\nexport enum RoleAndPermissionsTableType {\r\n ROLE = 'ROLE',\r\n PERMISSION = 'PERMISSION',\r\n}\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormGroup } from '@angular/forms';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport {\r\n AlignType,\r\n FormGrid,\r\n FormModel,\r\n SelectOption,\r\n SlideToggleOption,\r\n FormControlType,\r\n DynamicFormComponent,\r\n DataTableComponent,\r\n TableColumnSchema,\r\n TableColumnType,\r\n} from '@ieeesa-npm/presentation';\r\nimport { AlertType } from '@ieeesa-npm/utility';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport {\r\n Permission,\r\n ModifiedRolesAndPermissionsMapping,\r\n RolesAndPermissionsRequestPayload,\r\n Role,\r\n RoleDetails,\r\n RoleOrPermissionMapping,\r\n RolePermissionMappingRequestPayload,\r\n} from '../../models/roles-and-permissions.model';\r\nimport { RoleAndPermissionsTableType } from '../../models/roles-and-permissions-table-type.model';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { FormUtilityService, SharedService } from '@ieeesa-npm/shared';\r\n\r\n@Component({\r\n selector: 'ieeesa-roles-and-permissions-mapping',\r\n standalone: true,\r\n imports: [CommonModule, DynamicFormComponent, DataTableComponent],\r\n templateUrl: './roles-and-permissions-mapping.component.html',\r\n styleUrls: ['./roles-and-permissions-mapping.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class RolesAndPermissionsMappingComponent implements OnInit, OnDestroy {\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenText;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n mapRolesAndPermissionsScreenTexts: any =\r\n this.constants?.mapRolesAndPermissions;\r\n formGroup!: FormModel;\r\n colWidth: FormGrid = { xs: 12, xl: 6, sm: 12, md: 12, lg: 6 };\r\n actionButtonAlign = AlignType.MIDDLE;\r\n leftButtonLabel =\r\n this.mapRolesAndPermissionsScreenTexts?.label?.leftButtonLabel;\r\n rightButtonLabel =\r\n this.mapRolesAndPermissionsScreenTexts?.label?.rightButtonLabel;\r\n roles: SelectOption[] = [];\r\n permissions: SelectOption[] = [];\r\n appId!: string;\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n tableColumnSchema: TableColumnSchema[] = [];\r\n tableData: RoleOrPermissionMapping[] = [];\r\n selectedRole!: RoleDetails;\r\n selectedPermission!: Permission;\r\n modifiedRolesAndPermissionsMapping: ModifiedRolesAndPermissionsMapping[] = [];\r\n tableHeading = '';\r\n rolePermissionMappingPayload: RolePermissionMappingRequestPayload = {\r\n payload: {\r\n appId: '',\r\n permissionId: null,\r\n roleId: null,\r\n },\r\n };\r\n @Output() formCancel = new EventEmitter();\r\n @ViewChild(DynamicFormComponent) dynamicFormComponent!: DynamicFormComponent;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars, no-empty-function, @typescript-eslint/no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService,\r\n // eslint-disable-next-line no-unused-vars\r\n public elementRef: ElementRef,\r\n // eslint-disable-next-line no-unused-vars\r\n private formUtilityService: FormUtilityService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n /**\r\n * Initializes form group and all the page defaults.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n ngOnInit(): void {\r\n this.appId = this.tenantAppService.getSelectedTenantInformation()\r\n ?.appId as string;\r\n this.formGroup = {\r\n formGroup: [\r\n {\r\n legend: this.mapRolesAndPermissionsScreenTexts?.legend,\r\n controls: [\r\n {\r\n controlName: 'role',\r\n label: this.mapRolesAndPermissionsScreenTexts?.label?.role,\r\n type: FormControlType.SELECT,\r\n dropdownOptions: this.roles,\r\n supportMessage:\r\n this.mapRolesAndPermissionsScreenTexts?.supportText?.role,\r\n ariaLabel:\r\n this.mapRolesAndPermissionsScreenTexts?.label?.ariaLabel?.role,\r\n ariaDescribedById:\r\n this.mapRolesAndPermissionsScreenTexts?.label?.ariaDescribedById\r\n ?.role,\r\n },\r\n {\r\n controlName: 'permission',\r\n label: this.mapRolesAndPermissionsScreenTexts?.label?.permission,\r\n type: FormControlType.SELECT,\r\n dropdownOptions: this.permissions,\r\n supportMessage:\r\n this.mapRolesAndPermissionsScreenTexts?.supportText?.permission,\r\n ariaLabel:\r\n this.mapRolesAndPermissionsScreenTexts?.label?.ariaLabel\r\n ?.permission,\r\n ariaDescribedById:\r\n this.mapRolesAndPermissionsScreenTexts?.label?.ariaDescribedById\r\n ?.permission,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n this.getRoles();\r\n this.getPermissions();\r\n this.sharedService.isAlertClosed\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n const alertModals = document.querySelectorAll(\r\n '.cdk-overlay-container ieeesa-alert'\r\n );\r\n if (alertModals.length) {\r\n (\r\n document.querySelector(\r\n '.cdk-overlay-container .mat-mdc-dialog-content .ieeesa-alert-box__close-button'\r\n ) as HTMLElement\r\n )?.focus();\r\n } else {\r\n (\r\n this.elementRef.nativeElement.querySelector(\r\n '.cdk-overlay-container .mat-mdc-dialog-content .ieeesa-select-field mat-select'\r\n ) as HTMLElement\r\n )?.focus();\r\n }\r\n });\r\n }\r\n /**\r\n * Constructs the role or permission table schema to display the associated mapping in a table view.\r\n * @param {FormGroup[]} formGroups\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n onRoleOrPermissionSelected(formGroups: FormGroup[]): void {\r\n this.tableColumnSchema = [];\r\n this.modifiedRolesAndPermissionsMapping = [];\r\n const formGroup = formGroups[0];\r\n const role = formGroup.get('role')?.value;\r\n const permission = formGroup.get('permission')?.value;\r\n if (role) {\r\n this.selectedRole = {\r\n roleId: role.id,\r\n roleName: role.name,\r\n };\r\n this.rolePermissionMappingPayload.payload.roleId = role?.id;\r\n }\r\n if (permission) {\r\n this.selectedPermission = {\r\n permissionId: permission.id,\r\n permissionName: permission.name,\r\n };\r\n this.rolePermissionMappingPayload.payload.permissionId = permission?.id;\r\n }\r\n this.rolePermissionMappingPayload.payload.appId = this.appId;\r\n if ((role && permission) || role) {\r\n this.tableHeading = `${this.mapRolesAndPermissionsScreenTexts?.roleTableCaption}<strong>${role?.name}</strong>`;\r\n this.tableColumnSchema.push({\r\n id: 1,\r\n columnDef: 'permission',\r\n heading: this.mapRolesAndPermissionsScreenTexts.tableColumns.permission,\r\n columnType: TableColumnType.TEXT,\r\n cellData: (permissionMapping: RoleOrPermissionMapping) =>\r\n permissionMapping?.roleOrPermissionName,\r\n });\r\n } else {\r\n this.tableColumnSchema.push({\r\n id: 1,\r\n columnDef: 'role',\r\n heading: this.mapRolesAndPermissionsScreenTexts.tableColumns.role,\r\n columnType: TableColumnType.TEXT,\r\n cellData: (roleMapping: RoleOrPermissionMapping) =>\r\n roleMapping?.roleOrPermissionName,\r\n });\r\n }\r\n if (permission) {\r\n const permissionHeading = `${this.mapRolesAndPermissionsScreenTexts?.permissionTableCaption}<strong>${permission?.name}</strong>`;\r\n this.tableHeading = role\r\n ? this.tableHeading + `</br>` + permissionHeading\r\n : permissionHeading;\r\n }\r\n this.tableColumnSchema.push({\r\n id: 2,\r\n columnDef: 'slideToggle',\r\n heading: this.mapRolesAndPermissionsScreenTexts.tableColumns.status,\r\n columnType: TableColumnType.SLIDE_TOGGLE,\r\n cellData: (roleMapping: RoleOrPermissionMapping) => {\r\n return {\r\n id: Math.floor(Math.random() * 1000) + 1,\r\n label: '',\r\n ariaLabel: roleMapping.roleOrPermissionName,\r\n checked: roleMapping.status,\r\n };\r\n },\r\n });\r\n this.dynamicFormComponent.isSubmitButtonDisabled = true;\r\n this.getRolePermissionMapping(this.rolePermissionMappingPayload);\r\n }\r\n /**\r\n * Gets the list of roles and displayed in the role dropdown.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n getRoles(): void {\r\n this.tenantAppService\r\n .getRoles(this.appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.status) {\r\n const rolesList = response?.body as Role[];\r\n rolesList.map((role: Role) => {\r\n this.roles.push({\r\n id: role.roleId,\r\n name: role.roleName,\r\n });\r\n });\r\n this.formUtilityService.updateFormControlOptions(\r\n 'role',\r\n 'dropdownOptions',\r\n this.roles,\r\n this.dynamicFormComponent\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.mapRolesAndPermissionsScreenTexts.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Gets the list of permissions and displayed in the permission dropdown.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n getPermissions(): void {\r\n this.tenantAppService\r\n .getPermissions(this.appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.status) {\r\n const permissionsList = response?.body as Permission[];\r\n permissionsList.map((permission: Permission) => {\r\n this.permissions.push({\r\n id: permission.permissionId,\r\n name: permission.permissionName,\r\n });\r\n });\r\n this.formUtilityService.updateFormControlOptions(\r\n 'permission',\r\n 'dropdownOptions',\r\n this.permissions,\r\n this.dynamicFormComponent\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.mapRolesAndPermissionsScreenTexts.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Gets the list of mapped roles/permissions from the backend api.\r\n * @param {RolePermissionMappingRequestPayload} payload\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n getRolePermissionMapping(payload: RolePermissionMappingRequestPayload): void {\r\n this.tableData = [];\r\n this.tenantAppService\r\n .getRolePermissionMapping(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n const payloadInfo = payload.payload;\r\n if (payloadInfo?.roleId && payloadInfo?.permissionId) {\r\n this.tableData.push({\r\n roleOrPermissionName: this.selectedPermission?.permissionName,\r\n roleOrPermissionId: this.selectedPermission?.permissionId,\r\n status: true,\r\n });\r\n } else if (payloadInfo?.roleId) {\r\n this.setTableData(\r\n this.permissions,\r\n response.body as Permission[],\r\n RoleAndPermissionsTableType.PERMISSION\r\n );\r\n } else {\r\n this.setTableData(\r\n this.roles,\r\n response.body as RoleDetails[],\r\n RoleAndPermissionsTableType.ROLE\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n const errorCodes = error?.error?.body?.errorCodes;\r\n // Returns error code 3020 when mapped roles does not exist for given permission id.\r\n if (errorCodes.includes('3020')) {\r\n this.setTableData(this.roles, [], RoleAndPermissionsTableType.ROLE);\r\n }\r\n // Returns error code 3021 when mapped permissions does not exist for given role id.\r\n else if (errorCodes.includes('3021')) {\r\n this.setTableData(\r\n this.permissions,\r\n [],\r\n RoleAndPermissionsTableType.PERMISSION\r\n );\r\n }\r\n // Returns error code 3017 when role permission mapping does not exist for given role id.\r\n else if (errorCodes.includes('3017')) {\r\n this.tableData.push({\r\n roleOrPermissionName: this.selectedPermission?.permissionName,\r\n roleOrPermissionId: this.selectedPermission?.permissionId,\r\n status: false,\r\n });\r\n } else\r\n this.sharedService.handleErrors(\r\n error,\r\n this.mapRolesAndPermissionsScreenTexts.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Displaying the mapped roles and permissions data into the data table.\r\n * @param {SelectOption[]} roleOrPermissions\r\n * @param {RoleDetails[] | Permission[]} mappedRoleOrPermissions\r\n * @param {RoleAndPermissionsTableType} tableType\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n setTableData(\r\n roleOrPermissions: SelectOption[],\r\n mappedRoleOrPermissions: RoleDetails[] | Permission[],\r\n tableType: RoleAndPermissionsTableType\r\n ): void {\r\n roleOrPermissions.map((roleOrPermission) => {\r\n this.tableData.push({\r\n roleOrPermissionName: roleOrPermission.name,\r\n roleOrPermissionId: roleOrPermission.id as string,\r\n status:\r\n tableType === RoleAndPermissionsTableType.ROLE\r\n ? mappedRoleOrPermissions.length > 0 &&\r\n (mappedRoleOrPermissions as RoleDetails[]).some(\r\n (mappedRoleOrPermission: RoleDetails) =>\r\n mappedRoleOrPermission.roleId === roleOrPermission.id\r\n )\r\n : mappedRoleOrPermissions.length > 0 &&\r\n (mappedRoleOrPermissions as Permission[]).some(\r\n (mappedRoleOrPermission) =>\r\n mappedRoleOrPermission.permissionId === roleOrPermission.id\r\n ),\r\n });\r\n });\r\n }\r\n /**\r\n * Constructs the payload based on the roles and permissions mapping (selection or deselection).\r\n * @param roleOrPermissionStatus\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n roleOrPermissionStatusChange(roleOrPermissionStatus: {\r\n slideToggle: SlideToggleOption;\r\n rowData: RoleOrPermissionMapping;\r\n }): void {\r\n if (\r\n (this.selectedRole?.roleId && this.selectedPermission?.permissionId) ||\r\n this.selectedRole?.roleId\r\n ) {\r\n if (\r\n this.modifiedRolesAndPermissionsMapping.find(\r\n (permission) =>\r\n permission.permissionId ===\r\n roleOrPermissionStatus.rowData.roleOrPermissionId\r\n )\r\n ) {\r\n this.modifiedRolesAndPermissionsMapping.splice(\r\n this.modifiedRolesAndPermissionsMapping.findIndex(\r\n (permission) =>\r\n permission.permissionId ===\r\n roleOrPermissionStatus.rowData.roleOrPermissionId\r\n ),\r\n 1\r\n );\r\n } else {\r\n this.modifiedRolesAndPermissionsMapping.push({\r\n roleId: this.selectedRole.roleId,\r\n permissionId: roleOrPermissionStatus.rowData.roleOrPermissionId,\r\n appId: this.appId,\r\n status: roleOrPermissionStatus.slideToggle.checked,\r\n });\r\n }\r\n } else if (this.selectedPermission?.permissionId) {\r\n if (\r\n this.modifiedRolesAndPermissionsMapping.find(\r\n (role) =>\r\n role.roleId === roleOrPermissionStatus.rowData.roleOrPermissionId\r\n )\r\n ) {\r\n this.modifiedRolesAndPermissionsMapping.splice(\r\n this.modifiedRolesAndPermissionsMapping.findIndex(\r\n (role) =>\r\n role.roleId === roleOrPermissionStatus.rowData.roleOrPermissionId\r\n ),\r\n 1\r\n );\r\n } else {\r\n this.modifiedRolesAndPermissionsMapping.push({\r\n roleId: roleOrPermissionStatus.rowData.roleOrPermissionId,\r\n permissionId: this.selectedPermission.permissionId,\r\n appId: this.appId,\r\n status: roleOrPermissionStatus.slideToggle.checked,\r\n });\r\n }\r\n }\r\n this.dynamicFormComponent.isSubmitButtonDisabled =\r\n !this.modifiedRolesAndPermissionsMapping.length;\r\n }\r\n /**\r\n * Submits the roles and permissions mappings to the server.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n onMapAndPermissionsFormSubmit(): void {\r\n const payload: RolesAndPermissionsRequestPayload = {\r\n payload: this.modifiedRolesAndPermissionsMapping,\r\n };\r\n this.dynamicFormComponent.isSubmitButtonDisabled = true;\r\n this.modifiedRolesAndPermissionsMapping = [];\r\n this.tenantAppService\r\n .saveRolePermissionMapping(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response) => {\r\n if (response?.status) {\r\n this.sharedService.showAlertMessage(\r\n AlertType.SUCCESS,\r\n this.mapRolesAndPermissionsScreenTexts.message.success\r\n .rolesAndPermissionsSubmission\r\n );\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.mapRolesAndPermissionsScreenTexts.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Closes the map and permissions modal.\r\n * @memberof MapPermissionsRolesComponent\r\n * @returns {void}\r\n */\r\n onMapAndPermissionsFormCancel(): void {\r\n this.formCancel.emit();\r\n }\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<ieeesa-dynamic-form\r\n [formGroups]=\"formGroup\"\r\n [colWidth]=\"colWidth\"\r\n [isSubmitButtonDisabled]=\"true\"\r\n [isLegendVisible]=\"true\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLeftButtonNeeded]=\"true\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n (dropdownChange)=\"onRoleOrPermissionSelected($event)\"\r\n (formSubmit)=\"onMapAndPermissionsFormSubmit()\"\r\n (formLeftButtonClicked)=\"onMapAndPermissionsFormCancel()\"\r\n>\r\n <ieeesa-data-table\r\n component\r\n *ngIf=\"tableData.length\"\r\n [columnSchemaInfo]=\"tableColumnSchema\"\r\n [tableColumnsHeaderText]=\"tableHeading\"\r\n [tableDataInfo]=\"tableData\"\r\n (rowSlideToggle)=\"roleOrPermissionStatusChange($event)\"\r\n ></ieeesa-data-table>\r\n</ieeesa-dynamic-form>\r\n","import { GroupTypeConfiguration } from '@ieeesa-npm/groups';\r\nimport { Menu } from '@ieeesa-npm/presentation';\r\nimport { Role } from './roles-and-permissions.model';\r\n\r\nexport interface ViewGroupTypesConfiguration extends GroupTypeConfiguration {\r\n roles: Role[] | null;\r\n hasGroup: boolean;\r\n}\r\n\r\nexport interface ViewGroupTypeResponse {\r\n status: boolean;\r\n message: string;\r\n body: ViewGroupTypesConfiguration[];\r\n}\r\n\r\nexport interface GroupTypeDetails {\r\n name: string;\r\n description: string;\r\n rosterType: string;\r\n businessRule: string;\r\n roles: string;\r\n hasGroup: boolean;\r\n menuAction?: Menu[];\r\n}\r\n\r\n/* eslint-disable no-unused-vars */\r\nexport enum GroupTypeSettings {\r\n ALLOW_SUB_GROUP = 'allowSubGroup',\r\n ALLOW_ROSTER = 'allowRoster',\r\n ALLOW_ALTERNATE_VOTING = 'allowAlternateVoting',\r\n HAS_CLASSIFICATION = 'hasClassification',\r\n}","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n DataTableComponent,\r\n Menu,\r\n TableColumnSchema,\r\n TableColumnType,\r\n} from '@ieeesa-npm/presentation';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport {\r\n GroupTypeDetails,\r\n GroupTypeSettings,\r\n ViewGroupTypeResponse,\r\n ViewGroupTypesConfiguration,\r\n} from '../../models/view-tenant-group-types.model';\r\nimport { Role } from '../../models/roles-and-permissions.model';\r\n\r\n/**\r\n * Component for viewing and managing tenant group types. Fetches the configured group types associated to the selected tenant and displays in tabular view.\r\n * @export\r\n * @class ViewTenantGroupTypesComponent\r\n * @implements {OnInit}\r\n */\r\n@Component({\r\n selector: 'ieeesa-view-tenant-group-types',\r\n standalone: true,\r\n imports: [CommonModule, DataTableComponent],\r\n templateUrl: './view-tenant-group-types.component.html',\r\n styleUrls: ['./view-tenant-group-types.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ViewTenantGroupTypesComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenText;\r\n columnHeading = this.constants?.viewGroupTypes?.tableColumns?.heading;\r\n settings = this.constants?.viewGroupTypes?.settings;\r\n tableRowActions: Menu[] = this.constants?.viewGroupTypes?.actionMenuItems;\r\n columnSchema: TableColumnSchema[] = [];\r\n groupTypes: GroupTypeDetails[] = [];\r\n appId = '';\r\n headerElementClassName = '.ieeesa-header';\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Fetches group types data from the server and initializes column schema.\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n ngOnInit(): void {\r\n this.appId = this.tenantAppService.getSelectedTenantInformation()\r\n ?.appId as string;\r\n this.tenantAppService\r\n .getGroupTypes(this.appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: ViewGroupTypeResponse) => {\r\n this.initializeColumnSchema();\r\n this.groupTypes = this.formatGroupTypesTableData(response);\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewGroupTypes?.errors\r\n );\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Formats raw group types data into a required format for display.\r\n * @param {ViewGroupTypeResponse} groupTypeRes\r\n * @return {GroupTypeDetails[]}\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n formatGroupTypesTableData(\r\n groupTypeRes: ViewGroupTypeResponse\r\n ): GroupTypeDetails[] {\r\n const formattedData: GroupTypeDetails[] = [];\r\n groupTypeRes?.body?.forEach((item: ViewGroupTypesConfiguration) => {\r\n const { configFieldValue, roles, hasGroup } = item;\r\n const { name, description, businessRule } = configFieldValue;\r\n const { rosterType, ...restBusinessRule } = businessRule as {\r\n rosterType: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n [key: string]: any;\r\n };\r\n const businessRuleString = this.transformBusinessRule(restBusinessRule);\r\n const roleNames = roles\r\n ? roles?.map((role: Role) => role?.roleName).join(', ')\r\n : '';\r\n const menuAction = JSON.parse(JSON.stringify(this.tableRowActions));\r\n menuAction[1].isDisabled = hasGroup;\r\n\r\n formattedData.push({\r\n name,\r\n description,\r\n rosterType,\r\n businessRule: businessRuleString,\r\n roles: roleNames,\r\n hasGroup: item.hasGroup,\r\n menuAction,\r\n });\r\n });\r\n return formattedData;\r\n }\r\n\r\n /**\r\n * Transforms business rule to required format in string.\r\n * @param {*} rule\r\n * @return {string}\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n transformBusinessRule(rule: any): string {\r\n const ruleStringArray: string[] = [];\r\n for (const setting of Object.values(GroupTypeSettings)) {\r\n if (rule[setting] === true) {\r\n ruleStringArray.push(this.settings[setting]);\r\n }\r\n }\r\n return ruleStringArray.join(', ');\r\n }\r\n\r\n /**\r\n * Initializes table column schema to display group types in tabular view.\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n initializeColumnSchema(): void {\r\n this.columnSchema = [\r\n {\r\n id: 1,\r\n columnDef: 'groupType',\r\n heading: this.columnHeading?.groupType,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.name}`,\r\n },\r\n {\r\n id: 2,\r\n columnDef: 'rosterType',\r\n heading: this.columnHeading?.rosterType,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.rosterType}`,\r\n },\r\n {\r\n id: 3,\r\n columnDef: 'description',\r\n heading: this.columnHeading?.description,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.description}`,\r\n },\r\n {\r\n id: 4,\r\n columnDef: 'applicableRoles',\r\n heading: this.columnHeading?.applicableRoles,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.roles}`,\r\n },\r\n {\r\n id: 5,\r\n columnDef: 'settings',\r\n heading: this.columnHeading?.settings,\r\n columnType: TableColumnType.TEXT,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.businessRule}`,\r\n },\r\n {\r\n id: 6,\r\n columnDef: 'action',\r\n heading: this.columnHeading?.action,\r\n columnType: TableColumnType.ACTIONS,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n cellData: (element: any) => `${element.menuAction}`,\r\n },\r\n ];\r\n }\r\n\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantGroupTypesComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<div class=\"ieeesa-view-tenant-group-types\">\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [isCellTextOverflowEllipsis]=\"true\"\r\n [tableDataInfo]=\"groupTypes\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n ></ieeesa-data-table>\r\n</div>","import {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport {\r\n AlertType,\r\n BreakpointObserverService,\r\n GlobalErrorHandlerService,\r\n ModalType,\r\n} from '@ieeesa-npm/utility';\r\nimport {\r\n AccordionInfo,\r\n ModalComponent,\r\n Menu,\r\n PaginatorConfig,\r\n SlideToggleComponent,\r\n TableActions,\r\n AlignType,\r\n ModalConfirmationComponent,\r\n IconButtonComponent,\r\n RadioOption,\r\n IconButton,\r\n SlideToggleOption,\r\n TableColumnSchema,\r\n TableColumnType,\r\n AccordionComponent,\r\n AccordionDetails,\r\n DataTableComponent,\r\n TableColumnMenuInfo,\r\n} from '@ieeesa-npm/presentation';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { Subject, takeUntil } from 'rxjs';\r\nimport * as screenText from '../../assets/constants.json';\r\nimport { RouterModule } from '@angular/router';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { TenantApplicationsService } from '../../services/tenant-applications.service';\r\nimport {\r\n TenantsPermissions,\r\n UserPermission,\r\n} from '../../models/tenants-permission.model';\r\nimport { SharedService } from '@ieeesa-npm/shared';\r\nimport { TenantsRoutesConfig } from '../../models/route-config.model';\r\nimport { Features } from '../../models/features.model';\r\nimport {\r\n TenantBasicInfo,\r\n TenantDetailsResponse,\r\n} from '../../models/tenant.model';\r\nimport { TenantFunctionType } from '../../models/tenant-function-type.model';\r\nimport { CreateTenantApplicationComponent } from '../create-tenant-application/create-tenant-application.component';\r\nimport { PageEvent } from '@angular/material/paginator';\r\nimport { MatDialog } from '@angular/material/dialog';\r\nimport {\r\n UpdateTenantStatusRequestPayload,\r\n UpdateTenantStatusResponse,\r\n} from '../../models/update-tenant-status.model';\r\nimport { FeaturePermissionId } from '../../models/feature-permission-id.model';\r\nimport {\r\n AppTypeConfig,\r\n GetAppTypesResponse,\r\n} from '../../models/app-type-config.model';\r\nimport { TenantBasicDetailsComponent } from '../tenant-basic-details/tenant-basic-details.component';\r\nimport {\r\n GetRolesAndPermissionsPayload,\r\n GetRolesAndPermissionsResponse,\r\n GetRolesResponse,\r\n Role,\r\n RolesAndPermissionsMapping,\r\n RolesAndPermissions,\r\n DeleteRoleRequestPayload,\r\n DeleteRoleResponse,\r\n PaginationInfo,\r\n RoleDetails,\r\n} from '../../models/roles-and-permissions.model';\r\nimport { PermissionType } from '../../models/permission-type.model';\r\nimport { CreateModifyRoleComponent } from '../create-modify-role/create-modify-role.component';\r\nimport { RoleMenuAction } from '../../models/role-menu-action.model';\r\nimport { RolesAndPermissionsMappingComponent } from '../roles-and-permissions-mapping/roles-and-permissions-mapping.component';\r\nimport { ViewTenantGroupTypesComponent } from '../view-tenant-group-types/view-tenant-group-types.component';\r\nimport {\r\n GetRoleTypesPayload,\r\n RoleTypeConfiguration,\r\n RoleTypeOption,\r\n RoleTypeResponse,\r\n} from '../../models/role-type.model';\r\n\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: 'ieeesa-view-tenant-details',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n SlideToggleComponent,\r\n AccordionComponent,\r\n MatDividerModule,\r\n TenantBasicDetailsComponent,\r\n IconButtonComponent,\r\n MatButtonModule,\r\n DataTableComponent,\r\n ViewTenantGroupTypesComponent,\r\n ],\r\n templateUrl: './view-tenant-details.component.html',\r\n styleUrls: ['./view-tenant-details.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class ViewTenantDetailsComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n @Input() apiBaseURL!: string;\r\n @Input() userPermissions!: UserPermission[];\r\n @Input() routePaths!: TenantsRoutesConfig;\r\n isMobileView = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n constants: any = screenText;\r\n tenantLabels = this.constants?.viewTenants?.label;\r\n slideToggleOption = {\r\n id: 1,\r\n label: this.constants?.viewTenants?.label?.active,\r\n checked: true,\r\n disabled: false,\r\n };\r\n editButton: IconButton = this.constants?.viewTenants?.buttons;\r\n tenantDetails!: TenantBasicInfo;\r\n accordionInfoList: AccordionInfo[] = JSON.parse(\r\n JSON.stringify(this.constants?.viewTenants?.tenantAccordionInfo)\r\n );\r\n appId = '';\r\n iconSize = this.constants?.viewRolesAndPermissions?.columnActionIconSize;\r\n rolesAndPermissionsTableCaption =\r\n this.constants?.viewRolesAndPermissions?.tableCaption;\r\n rolesAndPermissionsTableHeaderName =\r\n this.constants?.viewRolesAndPermissions?.tableColumnsHeaderText;\r\n rolesAndPermissionsTableSupportMessage =\r\n this.constants?.viewRolesAndPermissions?.scrollbarSupportMessage;\r\n permissionsColumnClassNumber = 1;\r\n menuItems: Menu[] =\r\n this.constants?.viewRolesAndPermissions?.columnActionMenuItems;\r\n columnSchema: TableColumnSchema[] = [];\r\n tableData: RolesAndPermissions[] = [];\r\n isRolesAndPermissionsExpanded = false;\r\n paginatorConfig: PaginatorConfig = {\r\n recordsPerPage: this.constants?.viewRolesAndPermissions?.pageSizeOptions[0],\r\n pageSizeOptions: this.constants?.viewRolesAndPermissions?.pageSizeOptions,\r\n totalRecords: 0,\r\n };\r\n tablePagination!: PaginationInfo;\r\n rolesAndPermissionsClassName =\r\n '.ieeesa-view-tenant-info__roles-and-permissions';\r\n headerElementClassName = '.ieeesa-header';\r\n tableActions: TableActions = {\r\n isPaginationNeeded: true,\r\n };\r\n viewTenantsRouteUrl!: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogRef: any;\r\n accordionDetails = AccordionDetails;\r\n appTypeOptions!: RadioOption[];\r\n isBasicDetailsExpanded = false;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n editTenantScreenTexts: any = this.constants?.editTenant;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n deleteRoleScreenTexts: any = this.constants?.deleteRole;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n mapRolesAndPermissionsScreenTexts: any =\r\n this.constants?.mapRolesAndPermissions;\r\n alignmentType = AlignType;\r\n userTenantsPermissions!: TenantsPermissions[];\r\n permissionType = PermissionType;\r\n functionType!: TenantFunctionType;\r\n createRoleScreenTexts = this.constants?.createRole;\r\n roleMenuElement!: HTMLElement;\r\n selectedRoleInfo: RoleDetails = {\r\n roleId: '',\r\n roleName: '',\r\n };\r\n isGroupTypesExpanded = false;\r\n roleTypeOptions: RoleTypeOption[] = [];\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public dialog: MatDialog,\r\n // eslint-disable-next-line no-unused-vars\r\n private breakpointObserverService: BreakpointObserverService,\r\n // eslint-disable-next-line no-unused-vars\r\n private tenantAppService: TenantApplicationsService,\r\n // eslint-disable-next-line no-unused-vars\r\n public globalErrorHandlerService: GlobalErrorHandlerService,\r\n // eslint-disable-next-line no-unused-vars\r\n private sharedService: SharedService\r\n ) {\r\n this.breakpointObserverService\r\n .getBreakpoint()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: { matches: boolean }) => {\r\n this.isMobileView = result?.matches;\r\n });\r\n }\r\n\r\n /**\r\n * Initializes view tenant details component.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnInit(): void {\r\n this.tenantDetails =\r\n this.tenantAppService?.getSelectedTenantInformation() as TenantBasicInfo;\r\n this.slideToggleOption.checked = this.tenantDetails?.status as boolean;\r\n this.slideToggleOption.label = this.tenantDetails?.status\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n this.routePaths = this.routePaths ?? this.constants?.routeConfigPath;\r\n this.viewTenantsRouteUrl = `/${this.routePaths?.viewTenants}`;\r\n this.tenantAppService?.setAppConfig(this.apiBaseURL, this.userPermissions);\r\n this.userTenantsPermissions = this.tenantAppService?.filterPermission(\r\n this.userPermissions\r\n );\r\n this.appId = this.tenantAppService.getSelectedTenantInformation()\r\n ?.appId as string;\r\n this.tablePagination = {\r\n offset: 0,\r\n pageSize: this.paginatorConfig.pageSizeOptions[0],\r\n };\r\n this.getTenantDetails(this.appId);\r\n this.getApplicationTypes();\r\n }\r\n /**\r\n * Gets the selected tenant details from server.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getTenantDetails(appId: string): void {\r\n this.tenantAppService\r\n .getTenantDetails(appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: TenantDetailsResponse) => {\r\n if (response?.status) {\r\n this.tenantDetails = response?.body as TenantBasicInfo;\r\n this.tenantAppService.setSelectedTenantInformation(\r\n this.tenantDetails\r\n );\r\n this.slideToggleOption.checked = this.tenantDetails\r\n .status as boolean;\r\n this.slideToggleOption.label = this.tenantDetails.status\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n const features = this.tenantDetails.features as Features[];\r\n features.map((feature: Features) => {\r\n if (\r\n feature?.featureId ===\r\n FeaturePermissionId.MEETINGS_AND_EVENTS ||\r\n feature?.featureId === FeaturePermissionId.BALLOTS\r\n )\r\n this.accordionInfoList.push({\r\n id: this.accordionInfoList.length + 1,\r\n isDisabled: false,\r\n title: feature?.featureName,\r\n });\r\n });\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants.errors\r\n );\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Display the corresponding tenant basic or feature details based on selected accordion.\r\n * @param {AccordionInfo} accordionInfo\r\n * @param {boolean} expanded\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n showTenantDetails(accordionInfo: AccordionInfo, expanded: boolean): void {\r\n const accordionId = accordionInfo.id as number;\r\n switch (accordionId) {\r\n case 1: {\r\n this.isBasicDetailsExpanded = expanded;\r\n if (expanded) {\r\n this.getApplicationTypes();\r\n }\r\n break;\r\n }\r\n case 2: {\r\n this.isRolesAndPermissionsExpanded = expanded;\r\n if (expanded) {\r\n this.columnSchema = [];\r\n this.paginatorConfig.recordsPerPage =\r\n this.constants?.viewRolesAndPermissions?.pageSizeOptions[0];\r\n this.tablePagination.offset = 0;\r\n this.tablePagination.pageSize = this.paginatorConfig.recordsPerPage;\r\n this.getRolesAndInitializeTableSchema();\r\n }\r\n break;\r\n }\r\n case 3: {\r\n this.isGroupTypesExpanded = expanded;\r\n break;\r\n }\r\n }\r\n }\r\n /**\r\n * Fetches the configured roles of the selected tenant and creates the column schema.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getRolesAndInitializeTableSchema(): void {\r\n this.tenantAppService\r\n .getRoles(this.appId)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetRolesResponse) => {\r\n if (response?.status) {\r\n this.getRolesAndPermissionsAndInitializeTableView({\r\n payload: {\r\n offset: this.tablePagination.offset,\r\n pageSize: this.tablePagination.pageSize,\r\n },\r\n });\r\n const rolesList = this.tenantAppService.sortRolesByRoleType(\r\n response?.body as Role[]\r\n );\r\n this.tenantAppService.setRolesInfo(rolesList);\r\n const cellValue =\r\n this.constants.viewRolesAndPermissions.tableCellValue;\r\n this.columnSchema = [\r\n {\r\n id: 0,\r\n columnDef: 'permissions',\r\n heading:\r\n this.constants.viewRolesAndPermissions.tableColumn\r\n .permissions,\r\n columnType: TableColumnType.TEXT,\r\n cellData: (rolesAndPermissions: RolesAndPermissions) =>\r\n rolesAndPermissions.permission,\r\n isStickyColumn: true,\r\n },\r\n ];\r\n rolesList.map((role: Role, index) => {\r\n this.columnSchema.push({\r\n id: index + 1,\r\n columnDef: role.roleId,\r\n heading: role.roleName,\r\n columnType: TableColumnType.TEXT,\r\n hasColumnActions: true,\r\n cellData: (rolesAndPermissions: RolesAndPermissions) => {\r\n return rolesAndPermissions.roleIdsList.find(\r\n (roleId: string) => role.roleId === roleId\r\n )\r\n ? cellValue.yes\r\n : cellValue.no;\r\n },\r\n });\r\n });\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Fetches the roles and permissions mappings for the selected tenant and and initialize table view.\r\n * @param {GetRolesAndPermissionsPayload} payload\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getRolesAndPermissionsAndInitializeTableView(\r\n payload: GetRolesAndPermissionsPayload\r\n ): void {\r\n this.tenantAppService\r\n .getRolesAndPermissionsMappings(this.appId, payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetRolesAndPermissionsResponse) => {\r\n if (response?.status) {\r\n this.tableData = [];\r\n this.paginatorConfig.totalRecords = response?.body\r\n ?.totalRecords as number;\r\n const rolesAndPermissionsList = response?.body\r\n ?.rolePermissionDetails as RolesAndPermissionsMapping[];\r\n rolesAndPermissionsList.map((permission) => {\r\n let roleIdsList: string[] = [];\r\n roleIdsList = permission.roleList.map((role) => role.roleId);\r\n this.tableData.push({\r\n permission: permission.permissionName,\r\n roleIdsList: roleIdsList,\r\n });\r\n });\r\n }\r\n },\r\n error: (error) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Fetch the roles and permissions records based on offset and page size while the pagination changes.\r\n * @param {PageEvent} pageEvent\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n onTablePaginationChange(pageEvent: PageEvent): void {\r\n this.tablePagination = {\r\n offset: pageEvent.pageIndex,\r\n pageSize: pageEvent.pageSize,\r\n };\r\n this.getRolesAndPermissionsAndInitializeTableView({\r\n payload: {\r\n offset: pageEvent.pageIndex,\r\n pageSize: pageEvent.pageSize,\r\n },\r\n });\r\n }\r\n /**\r\n * Captures the selected role's information and performs edit or delete action basis on the selected menu item.\r\n * @param {TableColumnMenuInfo} roleMenuInfo\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n onRoleMenuClick(roleMenuInfo: TableColumnMenuInfo) {\r\n this.selectedRoleInfo.roleId = roleMenuInfo?.tableColumnInfo?.columnDef;\r\n this.selectedRoleInfo.roleName = roleMenuInfo?.tableColumnInfo?.heading;\r\n this.tenantAppService?.setSelectedRoleInformation(this.selectedRoleInfo);\r\n if (roleMenuInfo?.menuActionInfo?.id === RoleMenuAction.DELETE_ROLE) {\r\n this.openDeleteRoleModal();\r\n } else if (roleMenuInfo?.menuActionInfo?.id === RoleMenuAction.EDIT_ROLE) {\r\n this.openEditRoleForm();\r\n }\r\n }\r\n /**\r\n * Keeps track of the accordion based on the element's ID in DOM tree.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n trackByAccordionFn(index: number, item: AccordionInfo): number {\r\n return item?.id as number;\r\n }\r\n /**\r\n * Gets the role types and updates the form control.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getRoleTypes(): void {\r\n const payload: GetRoleTypesPayload = {\r\n payload: {\r\n appId: this.tenantDetails?.appId as string,\r\n configFieldName: 'role_type',\r\n },\r\n };\r\n this.tenantAppService\r\n .getRoleTypes(payload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: RoleTypeResponse) => {\r\n if (response?.status) {\r\n this.roleTypeOptions = this.tenantAppService.getRoleTypeOptions(\r\n response?.body as RoleTypeConfiguration[]\r\n );\r\n this.tenantAppService?.setRoleTypeOption(this.roleTypeOptions);\r\n if (this.functionType === TenantFunctionType.CREATE_ROLE) {\r\n this.openCreateRoleForm();\r\n }\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.createRoleScreenTexts?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Sets the dialog options for create role modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openCreateRoleForm(): void {\r\n this.tenantAppService?.setTenantFunctionType(\r\n TenantFunctionType?.CREATE_ROLE\r\n );\r\n this.functionType = TenantFunctionType.CREATE_ROLE;\r\n if (this.roleTypeOptions.length > 0) {\r\n const dialogOptions = {\r\n heading: this.constants?.createRole?.heading,\r\n isCloseNeeded: true,\r\n componentReference: CreateModifyRoleComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-create-modify-role');\r\n } else {\r\n this.getRoleTypes();\r\n }\r\n }\r\n /**\r\n * Sets the dialog options for edit role modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openEditRoleForm(): void {\r\n this.tenantAppService?.setTenantFunctionType(TenantFunctionType?.EDIT_ROLE);\r\n this.functionType = TenantFunctionType.EDIT_ROLE;\r\n const dialogOptions = {\r\n heading: this.selectedRoleInfo?.roleName,\r\n isCloseNeeded: true,\r\n componentReference: CreateModifyRoleComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-create-modify-role');\r\n }\r\n /**\r\n * Sets the dialog options for edit tenant modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openEditTenantForm(): void {\r\n this.tenantAppService?.setTenantFunctionType(TenantFunctionType?.EDIT);\r\n this.functionType = TenantFunctionType.EDIT;\r\n const dialogOptions = {\r\n heading: this.tenantDetails?.appTitle,\r\n isCloseNeeded: true,\r\n componentReference: CreateTenantApplicationComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-edit-tenant');\r\n }\r\n\r\n /**\r\n * Opens modal component with received params and handles form submission success and errors.\r\n * @param {*} dialogOptions\r\n * @param {string} [className]\r\n * @return -returns nothing\r\n * @memberof ViewTenantsDetailsComponent\r\n */\r\n openModal(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogOptions: any,\r\n className?: string\r\n ): void {\r\n className = className ?? '';\r\n this.dialogRef = this.dialog?.open(ModalComponent, {\r\n data: dialogOptions,\r\n width: '',\r\n panelClass: ['ieeesa-modal-dialog', className],\r\n ariaModal: true,\r\n });\r\n this.dialogRef?.componentInstance?.submitFormResponse\r\n .pipe(takeUntil(this.destroy$))\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-unused-vars\r\n .subscribe((result: any) => {\r\n this.dialogRef?.close();\r\n switch (this.functionType) {\r\n case TenantFunctionType?.EDIT: {\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${this.tenantDetails?.appTitle} ${this.editTenantScreenTexts?.message?.success?.submission}`\r\n );\r\n this.tenantDetails = {\r\n ...(this.tenantAppService.getSelectedTenantInformation() as TenantBasicInfo),\r\n };\r\n break;\r\n }\r\n case TenantFunctionType?.CREATE_ROLE: {\r\n const promptMessage = this.createRoleScreenTexts?.message?.success;\r\n const roleInfo = this.tenantAppService?.getNewlyCreatedRoleInfo();\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${promptMessage?.submission1} ${roleInfo?.roleName} ${promptMessage?.submission2} ${this.tenantDetails?.appTitle}. ${promptMessage?.submission3}`\r\n );\r\n this.getRolesAndInitializeTableSchema();\r\n break;\r\n }\r\n case TenantFunctionType?.EDIT_ROLE: {\r\n const promptMessage = this.createRoleScreenTexts?.message?.success;\r\n const roleInfo = this.tenantAppService?.getNewlyCreatedRoleInfo();\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${roleInfo?.roleName} ${promptMessage?.modify} ${this.tenantDetails?.appTitle}.`\r\n );\r\n this.getRolesAndInitializeTableSchema();\r\n break;\r\n }\r\n }\r\n });\r\n this.dialogRef?.componentInstance?.formCancel\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.dialogRef?.close();\r\n if (\r\n this.tenantAppService.getTenantFunctionType() ===\r\n TenantFunctionType.MAP_PERMISSION_AND_ROLE\r\n )\r\n this.getRolesAndInitializeTableSchema();\r\n });\r\n this.dialogRef?.componentInstance?.modalConfirm\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n if (\r\n this.tenantAppService.getTenantFunctionType() ===\r\n TenantFunctionType.MAP_PERMISSION_AND_ROLE\r\n )\r\n this.getRolesAndInitializeTableSchema();\r\n });\r\n }\r\n /**\r\n * Calls openTenantStatusConfirmationModal to change the status of tenant on slide toggle change.\r\n * @param {SlideToggleOption} slideToggleOption\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n onSlideToggleChange(slideToggleOption: SlideToggleOption): void {\r\n this.openTenantStatusConfirmationModal(slideToggleOption?.checked);\r\n }\r\n /**\r\n * Opens the confirmation modal to inactivate/reactivate the tenant.\r\n * @param {boolean} isActivate\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openTenantStatusConfirmationModal(isActivate: boolean): void {\r\n const confirmationInfo = this.constants?.viewTenants?.confirmationInfo;\r\n const statusText = isActivate\r\n ? confirmationInfo?.promptMessageActivate\r\n : confirmationInfo?.promptMessageInactivate;\r\n const updateTenantStatusModalOptions = {\r\n leftButtonLabel: confirmationInfo?.leftButtonLabel,\r\n rightButtonLabel: confirmationInfo?.rightButtonLabel,\r\n promptMessage: `${confirmationInfo?.promptMessage} ${statusText} ${this.tenantDetails?.appTitle}?`,\r\n actionButtonAlign: this.alignmentType?.MIDDLE,\r\n };\r\n this.dialogRef = this.dialog?.open(ModalConfirmationComponent, {\r\n data: updateTenantStatusModalOptions,\r\n width: 'auto',\r\n autoFocus: 'dialog',\r\n ariaLabel: confirmationInfo?.ariaLabel?.alert,\r\n });\r\n this.dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: boolean) => {\r\n if (result) {\r\n this.updateTenantStatus(isActivate);\r\n } else {\r\n this.setSlideToggleStatus(isActivate);\r\n }\r\n });\r\n }\r\n /**\r\n * Opens the map permissions and roles modal.\r\n * @memberof ViewTenantDetailsComponent\r\n * @returns {void}\r\n */\r\n openMapRolesAndPermissionsForm(): void {\r\n this.tenantAppService?.setTenantFunctionType(\r\n TenantFunctionType?.MAP_PERMISSION_AND_ROLE\r\n );\r\n const dialogOptions = {\r\n heading: this.mapRolesAndPermissionsScreenTexts.heading,\r\n isCloseNeeded: true,\r\n modalType: ModalType.FORM,\r\n componentReference: RolesAndPermissionsMappingComponent,\r\n };\r\n this.openModal(dialogOptions, 'ieeesa-map-permissions-and-roles');\r\n }\r\n /**\r\n * Updates the tenant status to the server using http request and display success/error message based on request response (success or failure).\r\n * @param {boolean} isActivate\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n updateTenantStatus(isActivate: boolean): void {\r\n const updateTenantStatusRequestPayload: UpdateTenantStatusRequestPayload = {\r\n payload: {\r\n appId: this.tenantDetails?.appId,\r\n status: isActivate,\r\n },\r\n };\r\n this.tenantAppService\r\n .updateTenantStatus(updateTenantStatusRequestPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: UpdateTenantStatusResponse) => {\r\n this.dialogRef?.close();\r\n if (res?.status) {\r\n this.slideToggleOption.label = isActivate\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n this.tenantDetails.status = isActivate;\r\n this.tenantDetails = Object.assign({}, this.tenantDetails);\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.setSlideToggleStatus(isActivate);\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Sets slide toggle checked status and label.\r\n * @param {boolean} isActivate\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n setSlideToggleStatus(isActivate: boolean): void {\r\n this.slideToggleOption.checked = !isActivate;\r\n this.slideToggleOption.label = !isActivate\r\n ? this.tenantLabels?.active\r\n : this.tenantLabels?.inactive;\r\n }\r\n\r\n /**\r\n * Gets the application/tenant types.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n getApplicationTypes(): void {\r\n this.tenantAppService\r\n .getApplicationTypes()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (response: GetAppTypesResponse) => {\r\n if (response?.status) {\r\n this.appTypeOptions =\r\n this.tenantAppService.getApplicationTypeOptions(\r\n response?.body as AppTypeConfig[]\r\n );\r\n this.tenantAppService.setApplicationType(\r\n this.appTypeOptions as RadioOption[]\r\n );\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Validates permission based access for provided feature.\r\n * @param {PermissionType} permissionType\r\n * @return {boolean}\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n validateAccess(permissionType: PermissionType): boolean {\r\n return this.tenantAppService.validateAccess(\r\n permissionType,\r\n this.userTenantsPermissions\r\n );\r\n }\r\n /**\r\n * Posts the details of the role to be deleted to the server using http request and display success/error message based on request response (success or failure).\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n deleteRole(): void {\r\n const deleteRoleRequestPayload: DeleteRoleRequestPayload = {\r\n payload: {\r\n appId: this.tenantDetails?.appId,\r\n roleId: this.selectedRoleInfo?.roleId,\r\n },\r\n };\r\n this.tenantAppService\r\n .deleteRole(deleteRoleRequestPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res: DeleteRoleResponse) => {\r\n if (res?.status) {\r\n this.sharedService.showAlertMessage(\r\n AlertType?.SUCCESS,\r\n `${this.selectedRoleInfo?.roleName} ${this.deleteRoleScreenTexts?.message?.success?.submission} ${this.tenantDetails?.appTitle}.`\r\n );\r\n this.getRolesAndInitializeTableSchema();\r\n }\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n error: (error: any) => {\r\n this.sharedService.handleErrors(\r\n error,\r\n this.constants?.viewTenants?.errors\r\n );\r\n },\r\n });\r\n }\r\n /**\r\n * Sets the role menu HTMLElement.\r\n * @param {HTMLElement} menuButton\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n selectedRoleMenuElement(menuButton: HTMLElement): void {\r\n this.roleMenuElement = menuButton;\r\n }\r\n /**\r\n * Opens the confirmation modal to get user confirmation to delete the role.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n openDeleteRoleModal(): void {\r\n const confirmationInfo = this.constants?.viewTenants?.confirmationInfo;\r\n const deleteRoleModalOptions = {\r\n leftButtonLabel: confirmationInfo?.leftButtonLabel,\r\n rightButtonLabel: confirmationInfo?.rightButtonLabel,\r\n promptMessage: `${confirmationInfo?.deleteRoleConfirmationMessage} ${this.selectedRoleInfo?.roleName}? ${confirmationInfo?.deleteRolePromptMessage} ${this.tenantDetails?.appTitle}.`,\r\n actionButtonAlign: this.alignmentType?.MIDDLE,\r\n };\r\n this.dialogRef = this.dialog?.open(ModalConfirmationComponent, {\r\n data: deleteRoleModalOptions,\r\n width: '25%',\r\n panelClass: [\r\n 'ieeesa-modal-confirm-dialog',\r\n 'ieeesa-delete-role-confirm-dialog',\r\n ],\r\n autoFocus: 'dialog',\r\n ariaLabel: confirmationInfo?.ariaLabel?.alert,\r\n });\r\n this.dialogRef\r\n .afterClosed()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe((result: boolean) => {\r\n if (result) {\r\n this.deleteRole();\r\n } else this.roleMenuElement?.focus();\r\n });\r\n }\r\n /**\r\n * Performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof ViewTenantDetailsComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.roleTypeOptions = [];\r\n this.tenantAppService?.setRoleTypeOption(this.roleTypeOptions);\r\n this.destroy$?.next(true);\r\n this.destroy$?.unsubscribe();\r\n }\r\n}\r\n","<div\r\n class=\"ieeesa-view-tenant-info px-4 pb-4\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--bg-white'\r\n : 'ieeesa-view-tenant-info--bg-blue'\r\n \"\r\n>\r\n <div\r\n class=\"d-flex justify-content-between gap-lg-4 gap-md-3 gap-sm-2 gap-3\"\r\n [ngClass]=\"isMobileView ? 'flex-column gap-2 pb-3' : 'align-item-center'\"\r\n >\r\n <div\r\n class=\"d-flex gap-lg-4 gap-md-3 gap-sm-3 gap-3 ps-0 align-items-md-center align-items-xl-center\"\r\n [ngClass]=\"isMobileView ? 'flex-column' : ''\"\r\n >\r\n <p\r\n class=\"mb-0 ieeesa-headline-lg-32 py-3\"\r\n [ngClass]=\"isMobileView ? '' : 'ieeesa-view-tenant-info--title'\"\r\n >\r\n {{ tenantDetails?.appTitle }}\r\n </p>\r\n <div class=\"d-flex gap-lg-2 gap-md-2 gap-sm-2 gap-2\">\r\n <span\r\n class=\"mb-0 ieeesa-title-sm-14 mt-1\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'ieeesa-view-tenant-info--app-id'\"\r\n >\r\n {{ tenantLabels?.appId }}:\r\n </span>\r\n {{ tenantDetails?.appId }}\r\n <ng-container *ngIf=\"tenantDetails?.appId !== tenantLabels?.saAppId\">\r\n <mat-divider [vertical]=\"true\"></mat-divider>\r\n <span\r\n class=\"mb-0 mt-1 ieeesa-title-sm-14 ieeesa-view-tenant-info--app-status\"\r\n [ngClass]=\"isMobileView ? 'p-0' : ''\"\r\n >\r\n {{ tenantLabels?.status }}:\r\n </span>\r\n <ieeesa-slide-toggle\r\n [slideToggle]=\"slideToggleOption\"\r\n (slideToggleChange)=\"onSlideToggleChange($event)\"\r\n ></ieeesa-slide-toggle>\r\n </ng-container>\r\n </div>\r\n </div>\r\n <a\r\n class=\"ieeesa-btn-label-lg-bold-16 text-decoration-none mt-lg-3 mt-xl-6 p-sm-0 p-md-0\"\r\n href=\"javascript:void(0)\"\r\n rel=\"noopener noreferrer\"\r\n [routerLink]=\"viewTenantsRouteUrl\"\r\n [ngClass]=\"\r\n isMobileView\r\n ? 'ieeesa-view-tenant-info--link-mobile'\r\n : 'ieeesa-view-tenant-info--link'\r\n \"\r\n >{{ tenantLabels?.viewAllApps }}</a\r\n >\r\n </div>\r\n <div\r\n class=\"ieeesa-view-tenant-info__accordion ieeesa-view-tenant-info__accordion--blue-bg\"\r\n [ngClass]=\"isMobileView ? 'ieeesa-view-tenant-info__accordion--info' : ''\"\r\n >\r\n <ng-container\r\n *ngFor=\"\r\n let accordionInfo of accordionInfoList;\r\n trackBy: trackByAccordionFn\r\n \"\r\n >\r\n <ng-container [ngSwitch]=\"accordionInfo.id\">\r\n <ng-container *ngSwitchCase=\"accordionDetails.BASIC_DETAILS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__accordion-info\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <ieeesa-icon-button\r\n *ngIf=\"\r\n isBasicDetailsExpanded &&\r\n validateAccess(permissionType.MANAGE_TENANT)\r\n \"\r\n actions\r\n class=\"ieeesa-button\"\r\n [iconButton]=\"editButton\"\r\n (iconButtonClick)=\"openEditTenantForm()\"\r\n ></ieeesa-icon-button>\r\n <ng-container component *ngIf=\"isBasicDetailsExpanded\">\r\n <ieeesa-tenant-basic-details\r\n [tenantDetails]=\"tenantDetails\"\r\n ></ieeesa-tenant-basic-details>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.ROLES_AND_PERMISSIONS\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isRolesAndPermissionsExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n (click)=\"openCreateRoleForm()\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ constants.viewRolesAndPermissions.actionButtonLabels.addRole\r\n }}\r\n </button>\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button\"\r\n (click)=\"openMapRolesAndPermissionsForm()\"\r\n [ngClass]=\"isMobileView ? 'p-0' : 'px-2 py-2'\"\r\n >\r\n {{ constants.viewRolesAndPermissions.actionButtonLabels\r\n .mapPermissionsRoles }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isRolesAndPermissionsExpanded\">\r\n <mat-divider\r\n class=\"ieeesa-view-tenant-info__roles-and-permissions__divider\"\r\n ></mat-divider>\r\n <ieeesa-data-table\r\n *ngIf=\"columnSchema.length\"\r\n [tableDataInfo]=\"tableData\"\r\n [headerElementClassName]=\"headerElementClassName\"\r\n [columnSchemaInfo]=\"columnSchema\"\r\n [caption]=\"rolesAndPermissionsTableCaption\"\r\n [paginatorConfig]=\"paginatorConfig\"\r\n [tableActions]=\"tableActions\"\r\n [isScrollSupportMessageNeeded]=\"true\"\r\n [tableColumnActionMenuSize]=\"iconSize\"\r\n [tableColumnActions]=\"menuItems\"\r\n [customStickyHeaderNeeded]=\"true\"\r\n [tableColumnsHeaderText]=\"rolesAndPermissionsTableHeaderName\"\r\n [scrollbarSupportMessage]=\"\r\n rolesAndPermissionsTableSupportMessage\r\n \"\r\n [verticalColumnHeaderNumber]=\"permissionsColumnClassNumber\"\r\n (paginationChange)=\"onTablePaginationChange($event)\"\r\n (tableColumnMenuActionClick)=\"onRoleMenuClick($event)\"\r\n (tableColumnMenuToggleButton)=\"selectedRoleMenuElement($event)\"\r\n ></ieeesa-data-table>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchCase=\"accordionDetails.GROUP_TYPES\">\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n class=\"ieeesa-view-tenant-info__group-types\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n >\r\n <div\r\n actions\r\n *ngIf=\"isGroupTypesExpanded\"\r\n class=\"d-flex gap-3\"\r\n [ngClass]=\"\r\n isMobileView ? 'mb-3 px-4' : 'ieeesa-view-tenant-info__actions'\r\n \"\r\n >\r\n <button\r\n mat-button\r\n class=\"mat-tertiary-button p-2\"\r\n *ngIf=\"validateAccess(permissionType.MANAGE_TENANT)\"\r\n >\r\n {{ constants.viewGroupTypes.actionButtonLabels.addGroupType }}\r\n </button>\r\n </div>\r\n <ng-container component *ngIf=\"isGroupTypesExpanded\">\r\n <ieeesa-view-tenant-group-types></ieeesa-view-tenant-group-types>\r\n </ng-container>\r\n </ieeesa-accordion>\r\n </ng-container>\r\n <ng-container *ngSwitchDefault>\r\n <ieeesa-accordion\r\n [accordionInfo]=\"accordionInfo\"\r\n (accordionOpened)=\"showTenantDetails(accordionInfo, $event)\"\r\n ></ieeesa-accordion>\r\n </ng-container>\r\n </ng-container>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","/* eslint-disable no-empty-function */\r\nimport { Component } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n@Component({\r\n selector: 'ieeesa-tenant-applications',\r\n standalone: true,\r\n imports: [CommonModule, MatButtonModule],\r\n templateUrl: './tenant-applications.component.html',\r\n styleUrls: ['./tenant-applications.component.scss'],\r\n})\r\nexport class TenantApplicationsComponent {}\r\n","","/* eslint-disable no-unused-vars */\r\nexport enum AppType {\r\n GENERIC = 'Generic',\r\n STANDALONE = 'Standalone'\r\n}","import { NgModule } from '@angular/core';\r\n@NgModule({\r\n declarations: [\r\n ],\r\n imports: [],\r\n exports: [],\r\n})\r\nexport class TenantApplicationsModule {}\r\n","/*\r\n * Public API Surface of tenants\r\n */\r\nexport * from './lib/components/view-tenants-list/view-tenants-list.component';\r\nexport * from './lib/components/view-tenant-details/view-tenant-details.component';\r\nexport * from './lib/components/create-tenant-application/create-tenant-application.component';\r\nexport * from './lib/tenant-applications.component';\r\nexport * from './lib/components/tenant-basic-details/tenant-basic-details.component';\r\nexport * from './lib/components/create-modify-role/create-modify-role.component';\r\nexport * from './lib/components/roles-and-permissions-mapping/roles-and-permissions-mapping.component';\r\nexport * from './lib/components/view-tenant-group-types/view-tenant-group-types.component';\r\n\r\nexport * from './lib/models/app-type-config.model';\r\nexport * from './lib/models/app-type.model';\r\nexport * from './lib/models/tenant.model';\r\nexport * from './lib/models/features.model';\r\nexport * from './lib/models/form-status.model';\r\nexport * from './lib/models/permission-type.model';\r\nexport * from './lib/models/tenants-permission.model';\r\nexport * from './lib/models/route-config.model';\r\nexport * from './lib/models/table-column-schema-view-tenant-list.model';\r\nexport * from './lib/models/roles-and-permissions.model';\r\nexport * from './lib/models/update-tenant-status.model';\r\nexport * from './lib/models/tenant-function-type.model';\r\nexport * from './lib/models/role-type.model';\r\nexport * from './lib/models/role-menu-action.model';\r\nexport * from './lib/models/roles-and-permissions-table-type.model';\r\nexport * from './lib/models/view-tenant-group-types.model';\r\n\r\nexport * from './lib/services/tenant-applications.service';\r\nexport * from './lib/services/tenant-permissions-map.service';\r\nexport * from './lib/services/tenant-permissions.service';\r\n\r\nexport * from './lib/assets/tenant-validations';\r\n\r\nexport * from './lib/tenant-applications.module';\r\nexport * from './lib/models/feature-permission-id.model';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["screenTexts?.viewTenants","screenTexts?.createTenant","i1","i2.TenantPermissionsService","i3.TenantPermissionsMapService","screenTexts","i2.TenantApplicationsService","i3","constants","i4.TenantApplicationsService","i5","i6","i1.TenantApplicationsService","i4","FormStatus","i2","i3.TenantApplicationsService","i7","i8"],"mappings":"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"}