@masterteam/governance 0.0.7 → 0.0.9
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.
- package/assets/governance.css +1 -1
- package/assets/i18n/ar.json +130 -7
- package/assets/i18n/en.json +129 -6
- package/fesm2022/masterteam-governance.mjs +1834 -530
- package/fesm2022/masterteam-governance.mjs.map +1 -1
- package/package.json +4 -4
- package/types/masterteam-governance.d.ts +120 -48
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"masterteam-governance.mjs","sources":["../../../../packages/masterteam/governance/src/store/governance/governance.actions.ts","../../../../packages/masterteam/governance/src/store/governance/governance.model.ts","../../../../packages/masterteam/governance/src/store/governance/governance.state.ts","../../../../packages/masterteam/governance/src/store/governance/governance.facade.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.html","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.html","../../../../packages/masterteam/governance/src/masterteam-governance.ts"],"sourcesContent":["import {\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\n\r\nexport class SetLevelId {\r\n static readonly type = '[Governance] Set Level ID';\r\n constructor(public levelId: number) {}\r\n}\r\n\r\nexport class GetGovernanceRules {\r\n static readonly type = '[Governance] Get Rules';\r\n}\r\n\r\nexport class GetGovernanceRule {\r\n static readonly type = '[Governance] Get Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class GetGovernanceRuleTypes {\r\n static readonly type = '[Governance] Get Rule Types';\r\n}\r\n\r\nexport class AddGovernanceRule {\r\n static readonly type = '[Governance] Add Rule';\r\n constructor(public rule: CreateGovernanceRuleDto) {}\r\n}\r\n\r\nexport class UpdateGovernanceRule {\r\n static readonly type = '[Governance] Update Rule';\r\n constructor(\r\n public id: number,\r\n public rule: UpdateGovernanceRuleDto,\r\n ) {}\r\n}\r\n\r\nexport class DeleteGovernanceRule {\r\n static readonly type = '[Governance] Delete Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ToggleGovernanceRuleActive {\r\n static readonly type = '[Governance] Toggle Rule Active';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ClearSelectedRule {\r\n static readonly type = '[Governance] Clear Selected Rule';\r\n}\r\n\r\nexport class ResetGovernanceState {\r\n static readonly type = '[Governance] Reset State';\r\n}\r\n\r\nexport class GetModules {\r\n static readonly type = '[Governance] Get Modules';\r\n}\r\n\r\n/**\r\n * Get request schemas for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetRequestSchemas {\r\n static readonly type = '[Governance] Get Request Schemas';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Get properties for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetProperties {\r\n static readonly type = '[Governance] Get Properties';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Clear request schemas (when scope/module changes)\r\n */\r\nexport class ClearRequestSchemas {\r\n static readonly type = '[Governance] Clear Request Schemas';\r\n}\r\n\r\n/**\r\n * Clear properties (when scope/module changes)\r\n */\r\nexport class ClearProperties {\r\n static readonly type = '[Governance] Clear Properties';\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\n// ============================================================================\r\n// Translatable Interface\r\n// ============================================================================\r\n\r\nexport interface Translatable {\r\n en: string;\r\n ar: string;\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Enum\r\n// ============================================================================\r\n\r\nexport enum GovernanceRuleTypeEnum {\r\n ModuleExists = 1,\r\n ModuleDoesNotExist = 2,\r\n ModuleMaxCount = 3,\r\n ModuleMinCount = 4,\r\n FieldRequired = 5,\r\n FieldValue = 6,\r\n PhaseGateModuleRequired = 7,\r\n NoActiveRequest = 8,\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Definition (from API)\r\n// ============================================================================\r\n\r\n/**\r\n * Option for select/multi-select fields\r\n */\r\nexport interface ConfigurationFieldOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Options source indicator for select fields\r\n * - 'auto-populated': Options already in response (modules, phase gates, statuses)\r\n * - 'static': Hardcoded options in response\r\n * - 'requestSchema': Fetch from request schema endpoint\r\n * - 'properties': Fetch from properties endpoint\r\n * - null/undefined: No options needed (text/number fields)\r\n */\r\nexport type OptionsSource =\r\n | 'auto-populated'\r\n | 'static'\r\n | 'requestSchema'\r\n | 'properties'\r\n | null;\r\n\r\n/**\r\n * Configuration field schema - now array-based with key property\r\n */\r\nexport interface ConfigurationFieldSchema {\r\n key: string; // Field identifier (e.g., \"moduleKey\", \"maxCount\")\r\n type:\r\n | 'text'\r\n | 'textarea'\r\n | 'number'\r\n | 'select'\r\n | 'multi-select'\r\n | 'checkbox'\r\n | 'date';\r\n label: Translatable;\r\n required?: boolean;\r\n defaultValue?: any;\r\n min?: number; // For number inputs\r\n max?: number; // For number inputs\r\n options?: ConfigurationFieldOption[]; // For select/multi-select\r\n optionsSource?: OptionsSource; // Indicates where to get options\r\n colSpan?: number; // Grid layout (1-12)\r\n}\r\n\r\nexport interface GovernanceRuleType {\r\n type: string; // Enum value as string (e.g., \"10\" for ModuleMaxCount)\r\n key: string; // Enum key (e.g., \"ModuleMaxCount\")\r\n name: Translatable;\r\n description: Translatable;\r\n supportedScopes: string[]; // [\"Module\", \"Level\", \"PhaseGate\"]\r\n supportedOperations: string[]; // [\"Create\", \"Update\", \"Delete\"]\r\n configurationSchema: ConfigurationFieldSchema[]; // Now an array\r\n}\r\n\r\n// ============================================================================\r\n// Governance Rule Entity\r\n// ============================================================================\r\n\r\nexport interface GovernanceRule {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n description?: Translatable;\r\n errorMessage: Translatable;\r\n ruleType: GovernanceRuleTypeEnum;\r\n ruleTypeKey: string; // \"ModuleMaxCount\"\r\n targetScope: string; // \"Level\", \"Module\", \"PhaseGate\"\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n levelId: number;\r\n configuration: Record<string, any>;\r\n priority: number;\r\n isActive: boolean;\r\n stopOnFailure: boolean;\r\n createdAt: string;\r\n createdBy?: string;\r\n modifiedAt?: string;\r\n modifiedBy?: string;\r\n}\r\n\r\n// ============================================================================\r\n// Create/Update DTOs\r\n// ============================================================================\r\n\r\nexport interface CreateGovernanceRuleDto {\r\n key: string;\r\n name: Record<string, string>; // { en: \"...\", ar: \"...\" }\r\n description?: Record<string, string>;\r\n errorMessage: Record<string, string>;\r\n ruleType: string; // \"ModuleMaxCount\"\r\n targetScope: string;\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n configuration?: Record<string, any>;\r\n priority: number;\r\n stopOnFailure: boolean;\r\n}\r\n\r\nexport interface UpdateGovernanceRuleDto extends CreateGovernanceRuleDto {\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Governance Violation (for error handling)\r\n// ============================================================================\r\n\r\nexport interface GovernanceViolation {\r\n ruleKey: string;\r\n message: string;\r\n details?: any;\r\n}\r\n\r\nexport interface GovernanceViolationError {\r\n type: 'GovernanceViolation';\r\n title: string;\r\n status: 403;\r\n violations: GovernanceViolation[];\r\n}\r\n\r\n// ============================================================================\r\n// Module Reference (for Target Module select)\r\n// ============================================================================\r\n\r\nexport interface GovernanceModule {\r\n id: string;\r\n key: string;\r\n name: Translatable;\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// State Model\r\n// ============================================================================\r\n\r\nexport enum GovernanceActionKey {\r\n GetRules = 'getRules',\r\n GetRule = 'getRule',\r\n GetRuleTypes = 'getRuleTypes',\r\n AddRule = 'addRule',\r\n UpdateRule = 'updateRule',\r\n DeleteRule = 'deleteRule',\r\n ToggleRuleActive = 'toggleRuleActive',\r\n GetModules = 'getModules',\r\n GetRequestSchemas = 'getRequestSchemas',\r\n GetProperties = 'getProperties',\r\n}\r\n\r\n// ============================================================================\r\n// Request Schema (for requestSchemaId field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceRequestSchema {\r\n id: number;\r\n name: Translatable;\r\n isPublished: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Property (for propertyKey field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceProperty {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n}\r\n\r\nexport interface GovernanceStateModel extends LoadingStateShape<GovernanceActionKey> {\r\n levelId: number | null;\r\n rules: GovernanceRule[];\r\n ruleTypes: GovernanceRuleType[];\r\n selectedRule: GovernanceRule | null;\r\n modules: GovernanceModule[];\r\n requestSchemas: GovernanceRequestSchema[];\r\n properties: GovernanceProperty[];\r\n}\r\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceRule,\r\n GovernanceRuleType,\r\n GovernanceModule,\r\n GovernanceActionKey,\r\n GovernanceStateModel,\r\n GovernanceRequestSchema,\r\n GovernanceProperty,\r\n} from './governance.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\n\r\nconst DEFAULTS: GovernanceStateModel = {\r\n levelId: null,\r\n rules: [],\r\n ruleTypes: [],\r\n modules: [],\r\n requestSchemas: [],\r\n properties: [],\r\n selectedRule: null,\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\n@State<GovernanceStateModel>({\r\n name: 'governance',\r\n defaults: DEFAULTS,\r\n})\r\n@Injectable()\r\nexport class GovernanceState extends CrudStateBase<\r\n GovernanceRule,\r\n GovernanceStateModel,\r\n GovernanceActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLevelId(state: GovernanceStateModel): number | null {\r\n return state.levelId;\r\n }\r\n\r\n @Selector()\r\n static getRules(state: GovernanceStateModel): GovernanceRule[] {\r\n return state.rules;\r\n }\r\n\r\n @Selector()\r\n static getRuleTypes(state: GovernanceStateModel): GovernanceRuleType[] {\r\n return state.ruleTypes;\r\n }\r\n\r\n @Selector()\r\n static getSelectedRule(state: GovernanceStateModel): GovernanceRule | null {\r\n return state.selectedRule;\r\n }\r\n\r\n @Selector()\r\n static getModules(state: GovernanceStateModel): GovernanceModule[] {\r\n return state.modules;\r\n }\r\n\r\n @Selector()\r\n static getRequestSchemas(\r\n state: GovernanceStateModel,\r\n ): GovernanceRequestSchema[] {\r\n return state.requestSchemas;\r\n }\r\n\r\n @Selector()\r\n static getProperties(state: GovernanceStateModel): GovernanceProperty[] {\r\n return state.properties;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: GovernanceStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: GovernanceStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // Level Context\r\n // ============================================================================\r\n\r\n @Action(SetLevelId)\r\n setLevelId(ctx: StateContext<GovernanceStateModel>, { levelId }: SetLevelId) {\r\n ctx.patchState({ levelId });\r\n }\r\n\r\n @Action(ResetGovernanceState)\r\n resetState(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.setState(DEFAULTS);\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n @Action(GetGovernanceRules)\r\n getRules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule[]>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n rules: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRule)\r\n getRule(ctx: StateContext<GovernanceStateModel>, { id }: GetGovernanceRule) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRule,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedRule: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRuleTypes)\r\n getRuleTypes(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRuleType[]>>(\r\n `control-panel/governance/rule-types?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRuleTypes,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n ruleTypes: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddGovernanceRule)\r\n addRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { rule }: AddGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.post<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n rule,\r\n );\r\n\r\n return this.create(ctx, {\r\n key: GovernanceActionKey.AddRule,\r\n request$: req$,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(UpdateGovernanceRule)\r\n updateRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id, rule }: UpdateGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.put<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n rule,\r\n );\r\n\r\n return this.update(ctx, {\r\n key: GovernanceActionKey.UpdateRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(DeleteGovernanceRule)\r\n deleteRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: DeleteGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.delete<Response<void>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return this.delete(ctx, {\r\n key: GovernanceActionKey.DeleteRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(ToggleGovernanceRuleActive)\r\n toggleRuleActive(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: ToggleGovernanceRuleActive,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.patch<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}/toggle`,\r\n {},\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.ToggleRuleActive,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const updatedRule = response.data;\r\n if (!updatedRule) return {};\r\n\r\n return {\r\n rules: this.adapter.upsertOne(state.rules, updatedRule, 'id'),\r\n };\r\n },\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Reference Data Actions\r\n // ============================================================================\r\n\r\n @Action(GetModules)\r\n getModules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceModule[]>>(\r\n `Modules?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetModules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n // Only keep active modules for Target Module selection\r\n modules: (response.data ?? []).filter((m) => m.isActive),\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearSelectedRule)\r\n clearSelectedRule(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ selectedRule: null });\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n @Action(GetRequestSchemas)\r\n getRequestSchemas(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetRequestSchemas,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n // Level scope: ProcessBuilder/level/{levelId}/{moduleType}/{moduleId}/requestSchema\r\n // Module scope: ProcessBuilder/level/{levelId}/module/{targetModuleId}/{moduleType}/{moduleId}/requestSchema\r\n let basePath = `ProcessBuilder/level/${levelId}`;\r\n\r\n // For Module scope, we need to find the module by key to get its ID\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath += `/module/${targetModule.id}`;\r\n }\r\n }\r\n\r\n // Get request schemas (assuming a common endpoint pattern)\r\n const req$ = this.http.get<Response<GovernanceRequestSchema[]>>(\r\n `${basePath}/requestSchema`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRequestSchemas,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n requestSchemas: (response.data ?? []).filter((s) => s.isPublished),\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetProperties)\r\n getProperties(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetProperties,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n let basePath = `Properties?LevelId=${levelId}`;\r\n\r\n // For Module scope, add module filter\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath = `Properties?LevelId=${levelId}&ModuleId=${targetModule.id}`;\r\n }\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceProperty[]>>(basePath);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetProperties,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n properties: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearRequestSchemas)\r\n clearRequestSchemas(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ requestSchemas: [] });\r\n }\r\n\r\n @Action(ClearProperties)\r\n clearProperties(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ properties: [] });\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceActionKey,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\nimport { GovernanceState } from './governance.state';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GovernanceFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly levelId = select(GovernanceState.getLevelId);\r\n readonly rules = select(GovernanceState.getRules);\r\n readonly ruleTypes = select(GovernanceState.getRuleTypes);\r\n readonly selectedRule = select(GovernanceState.getSelectedRule);\r\n readonly modules = select(GovernanceState.getModules);\r\n readonly requestSchemas = select(GovernanceState.getRequestSchemas);\r\n readonly properties = select(GovernanceState.getProperties);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(GovernanceState.getLoadingActive);\r\n private readonly errors = select(GovernanceState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingRules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRules),\r\n );\r\n readonly isLoadingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRule),\r\n );\r\n readonly isLoadingRuleTypes = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRuleTypes),\r\n );\r\n readonly isAddingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.AddRule),\r\n );\r\n readonly isUpdatingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.UpdateRule),\r\n );\r\n readonly isDeletingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.DeleteRule),\r\n );\r\n readonly isTogglingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.ToggleRuleActive),\r\n );\r\n readonly isLoadingModules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetModules),\r\n );\r\n readonly isLoadingRequestSchemas = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRequestSchemas),\r\n );\r\n readonly isLoadingProperties = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetProperties),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly rulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRules] ?? null,\r\n );\r\n readonly ruleError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRule] ?? null,\r\n );\r\n readonly ruleTypesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRuleTypes] ?? null,\r\n );\r\n readonly addRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.AddRule] ?? null,\r\n );\r\n readonly updateRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.UpdateRule] ?? null,\r\n );\r\n readonly deleteRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.DeleteRule] ?? null,\r\n );\r\n readonly modulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetModules] ?? null,\r\n );\r\n readonly requestSchemasError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRequestSchemas] ?? null,\r\n );\r\n readonly propertiesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetProperties] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Derived Data - Computed from data selectors\r\n // ============================================================================\r\n readonly activeRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === true),\r\n );\r\n\r\n readonly inactiveRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === false),\r\n );\r\n\r\n readonly rulesCount = computed(() => this.rules().length);\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n setLevelId(levelId: number) {\r\n return this.store.dispatch(new SetLevelId(levelId));\r\n }\r\n\r\n getRules() {\r\n return this.store.dispatch(new GetGovernanceRules());\r\n }\r\n\r\n getRule(id: number) {\r\n return this.store.dispatch(new GetGovernanceRule(id));\r\n }\r\n\r\n getRuleTypes() {\r\n return this.store.dispatch(new GetGovernanceRuleTypes());\r\n }\r\n\r\n getModules() {\r\n return this.store.dispatch(new GetModules());\r\n }\r\n\r\n addRule(rule: CreateGovernanceRuleDto) {\r\n return this.store.dispatch(new AddGovernanceRule(rule));\r\n }\r\n\r\n updateRule(id: number, rule: UpdateGovernanceRuleDto) {\r\n return this.store.dispatch(new UpdateGovernanceRule(id, rule));\r\n }\r\n\r\n deleteRule(id: number) {\r\n return this.store.dispatch(new DeleteGovernanceRule(id));\r\n }\r\n\r\n toggleRuleActive(id: number) {\r\n return this.store.dispatch(new ToggleGovernanceRuleActive(id));\r\n }\r\n\r\n clearSelectedRule() {\r\n return this.store.dispatch(new ClearSelectedRule());\r\n }\r\n\r\n resetState() {\r\n return this.store.dispatch(new ResetGovernanceState());\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n getRequestSchemas(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(\r\n new GetRequestSchemas(targetScope, targetModuleKey),\r\n );\r\n }\r\n\r\n getProperties(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(new GetProperties(targetScope, targetModuleKey));\r\n }\r\n\r\n clearRequestSchemas() {\r\n return this.store.dispatch(new ClearRequestSchemas());\r\n }\r\n\r\n clearProperties() {\r\n return this.store.dispatch(new ClearProperties());\r\n }\r\n}\r\n","import {\r\n Component,\r\n inject,\r\n OnInit,\r\n effect,\r\n input,\r\n computed,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { DialogService, ModalRef } from '@masterteam/components/dialog';\r\nimport {\r\n DynamicFormConfig,\r\n TextFieldConfig,\r\n TextareaFieldConfig,\r\n NumberFieldConfig,\r\n SelectFieldConfig,\r\n MultiSelectFieldConfig,\r\n ToggleFieldConfig,\r\n DateFieldConfig,\r\n ValidatorConfig,\r\n BaseFieldConfig,\r\n} from '@masterteam/components';\r\nimport {\r\n GovernanceRule,\r\n GovernanceFacade,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n GovernanceRuleType,\r\n ConfigurationFieldSchema,\r\n ConfigurationFieldOption,\r\n} from '../../../store/governance';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\n\r\n@Component({\r\n selector: 'mt-governance-rule-form',\r\n templateUrl: './governance-rule-form.html',\r\n styleUrls: ['./governance-rule-form.css'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n TranslocoDirective,\r\n SkeletonModule,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n TranslocoPipe,\r\n ],\r\n providers: [DialogService],\r\n})\r\nexport default class GovernanceRuleForm implements OnInit {\r\n // ============================================================================\r\n // Injected Services\r\n // ============================================================================\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly facade = inject(GovernanceFacade);\r\n\r\n // ============================================================================\r\n // Input - rule to edit (null for create)\r\n // ============================================================================\r\n ruleForEdit = input<GovernanceRule | null>(null);\r\n\r\n // ============================================================================\r\n // Facade Data\r\n // ============================================================================\r\n selectedRule = this.facade.selectedRule;\r\n ruleTypes = this.facade.ruleTypes;\r\n isLoadingRule = this.facade.isLoadingRule;\r\n isAddingRule = this.facade.isAddingRule;\r\n isUpdatingRule = this.facade.isUpdatingRule;\r\n\r\n // For optionsSource: 'auto-populated' (modules from API)\r\n modules = this.facade.modules;\r\n\r\n // For optionsSource: 'requestSchema' and 'properties'\r\n requestSchemas = this.facade.requestSchemas;\r\n properties = this.facade.properties;\r\n isLoadingRequestSchemas = this.facade.isLoadingRequestSchemas;\r\n isLoadingProperties = this.facade.isLoadingProperties;\r\n\r\n // ============================================================================\r\n // Form Control\r\n // ============================================================================\r\n ruleFormControl = new FormControl();\r\n formValue = toSignal(this.ruleFormControl.valueChanges);\r\n\r\n // ============================================================================\r\n // Selected Rule Type (from form value)\r\n // ============================================================================\r\n selectedRuleType = computed(() => {\r\n const formValue = this.formValue();\r\n const ruleTypeKey = formValue?.ruleType;\r\n if (!ruleTypeKey) return null;\r\n return this.ruleTypes().find((rt) => rt.type === ruleTypeKey) ?? null;\r\n });\r\n\r\n // ============================================================================\r\n // Target Scope and Module Key (from form value)\r\n // ============================================================================\r\n targetScope = computed(() => this.formValue()?.targetScope ?? 'Level');\r\n targetModuleKey = computed(() => this.formValue()?.targetModuleKey ?? null);\r\n\r\n // ============================================================================\r\n // Options from state for optionsSource: 'requestSchema'\r\n // ============================================================================\r\n requestSchemaOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.requestSchemas().map((schema) => ({\r\n label: schema.name[lang] || schema.name.en,\r\n value: schema.id.toString(),\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Options from state for optionsSource: 'properties'\r\n // ============================================================================\r\n propertyOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.properties().map((prop) => ({\r\n label: prop.name[lang] || prop.name.en,\r\n value: prop.key,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Module Options for optionsSource: 'auto-populated' (moduleKey, requiredModuleKey)\r\n // ============================================================================\r\n moduleOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.modules().map((mod) => ({\r\n label: mod.name[lang] || mod.name.en,\r\n value: mod.key,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Scope Options based on selected rule type\r\n // ============================================================================\r\n scopeOptions = computed(() => {\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: 'Level', value: 'Level' },\r\n { label: 'Module', value: 'Module' },\r\n { label: 'PhaseGate', value: 'PhaseGate' },\r\n ];\r\n }\r\n return ruleType.supportedScopes.map((scope) => ({\r\n label: scope,\r\n value: scope,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Operation Options based on selected rule type\r\n // ============================================================================\r\n operationOptions = computed(() => {\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: 'All', value: '' },\r\n { label: 'Create', value: 'Create' },\r\n { label: 'Update', value: 'Update' },\r\n { label: 'Delete', value: 'Delete' },\r\n ];\r\n }\r\n return [\r\n { label: 'All', value: '' },\r\n ...ruleType.supportedOperations.map((op) => ({\r\n label: op,\r\n value: op,\r\n })),\r\n ];\r\n });\r\n\r\n // ============================================================================\r\n // Rule Type Options\r\n // ============================================================================\r\n ruleTypeOptions = computed(() => {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n return this.ruleTypes().map((rt) => ({\r\n label: rt.name[lang] || rt.name.en,\r\n value: rt.type,\r\n }));\r\n });\r\n\r\n // ============================================================================\r\n // Dynamic Form Configuration\r\n // ============================================================================\r\n formConfig = computed<DynamicFormConfig>(() => {\r\n const t = (key: string) =>\r\n this.translocoService.translate(`governance.${key}`);\r\n const ruleType = this.selectedRuleType();\r\n const isEdit = !!this.ruleForEdit()?.id;\r\n\r\n return {\r\n sections: [\r\n // Section 1: Basic Information\r\n {\r\n key: 'basicInfo',\r\n type: 'header',\r\n label: t('basic-information'),\r\n order: 1,\r\n fields: [\r\n new TextFieldConfig({\r\n key: 'key',\r\n label: t('rule-key'),\r\n placeholder: 'e.g., charter-required',\r\n validators: [\r\n ValidatorConfig.required(),\r\n ValidatorConfig.pattern(\r\n '^[a-z0-9-]+$',\r\n 'Only lowercase letters, numbers and hyphens allowed',\r\n ),\r\n ],\r\n order: 1,\r\n colSpan: 6,\r\n disabled: isEdit,\r\n }),\r\n new NumberFieldConfig({\r\n key: 'priority',\r\n label: t('priority'),\r\n placeholder: '10',\r\n validators: [ValidatorConfig.required()],\r\n min: 0,\r\n max: 1000,\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n new TextFieldConfig({\r\n key: 'name_en',\r\n label: t('name-en'),\r\n placeholder: t('name-en-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 3,\r\n colSpan: 6,\r\n }),\r\n new TextFieldConfig({\r\n key: 'name_ar',\r\n label: t('name-ar'),\r\n placeholder: t('name-ar-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 4,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'description_en',\r\n label: t('description-en'),\r\n placeholder: t('description-en-placeholder'),\r\n order: 5,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'description_ar',\r\n label: t('description-ar'),\r\n placeholder: t('description-ar-placeholder'),\r\n order: 6,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'errorMessage_en',\r\n label: t('error-message-en'),\r\n placeholder: t('error-message-en-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 7,\r\n colSpan: 6,\r\n }),\r\n new TextareaFieldConfig({\r\n key: 'errorMessage_ar',\r\n label: t('error-message-ar'),\r\n placeholder: t('error-message-ar-placeholder'),\r\n validators: [ValidatorConfig.required()],\r\n order: 8,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n // Section 2: Rule Target\r\n {\r\n key: 'ruleTarget',\r\n type: 'header',\r\n label: t('rule-target'),\r\n order: 2,\r\n fields: [\r\n new SelectFieldConfig({\r\n key: 'ruleType',\r\n label: t('rule-type'),\r\n options: this.ruleTypeOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n colSpan: 6,\r\n disabled: isEdit,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetScope',\r\n label: t('target-scope'),\r\n options: this.scopeOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetModuleKey',\r\n label: t('target-module'),\r\n options: this.moduleOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 3,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'targetScope',\r\n value: 'Module',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetOperationKey',\r\n label: t('target-operation'),\r\n options: this.operationOptions(),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 4,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n // Section 3: Rule-Specific Configuration (dynamic)\r\n ...(ruleType ? [this.buildConfigurationSection(ruleType)] : []),\r\n // Section 4: Execution Settings\r\n {\r\n key: 'executionSettings',\r\n type: 'header',\r\n label: t('execution-settings'),\r\n order: 4,\r\n fields: [\r\n new ToggleFieldConfig({\r\n key: 'stopOnFailure',\r\n label: t('stop-on-failure'),\r\n order: 1,\r\n colSpan: 6,\r\n }),\r\n new ToggleFieldConfig({\r\n key: 'isActive',\r\n label: t('active-rule'),\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n });\r\n\r\n // ============================================================================\r\n // Constructor with Effect for Form Population\r\n // ============================================================================\r\n constructor() {\r\n // Effect to populate form when editing existing rule\r\n effect(() => {\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (this.selectedRule() && ruleId) {\r\n const rule = this.selectedRule();\r\n if (!rule) return;\r\n\r\n // Unpack rule data to form format\r\n const formData = this.unpackRuleToForm(rule);\r\n this.ruleFormControl.patchValue(formData);\r\n } else {\r\n // Default values for new rule\r\n this.ruleFormControl.reset({\r\n priority: 10,\r\n stopOnFailure: true,\r\n isActive: true,\r\n targetScope: 'Module',\r\n });\r\n }\r\n });\r\n\r\n // Effect to apply default values when rule type changes (for new rules only)\r\n effect(() => {\r\n const ruleType = this.selectedRuleType();\r\n const ruleId = this.ruleForEdit()?.id;\r\n\r\n // Only apply defaults for new rules (not editing)\r\n if (ruleType && !ruleId) {\r\n const defaults = this.getDefaultsFromSchema(ruleType);\r\n if (Object.keys(defaults).length > 0) {\r\n const currentValue = this.ruleFormControl.value ?? {};\r\n this.ruleFormControl.patchValue({ ...currentValue, ...defaults });\r\n }\r\n }\r\n });\r\n\r\n // Effect to fetch requestSchemas and properties when scope/module changes\r\n // This runs when configurationSchema has fields with optionsSource = 'requestSchema' or 'properties'\r\n effect(() => {\r\n const ruleType = this.selectedRuleType();\r\n const scope = this.targetScope();\r\n const moduleKey = this.targetModuleKey();\r\n\r\n if (!ruleType) return;\r\n\r\n // Check if any field needs requestSchema options\r\n const needsRequestSchemas = ruleType.configurationSchema.some(\r\n (f) => f.optionsSource === 'requestSchema',\r\n );\r\n\r\n // Check if any field needs properties options\r\n const needsProperties = ruleType.configurationSchema.some(\r\n (f) => f.optionsSource === 'properties',\r\n );\r\n // For Module scope, we need a target module key\r\n if (scope === 'Module' && !moduleKey) {\r\n // Clear options when module is not selected\r\n if (needsRequestSchemas) {\r\n this.facade.clearRequestSchemas();\r\n }\r\n if (needsProperties) {\r\n this.facade.clearProperties();\r\n }\r\n return;\r\n }\r\n\r\n // Fetch options based on scope\r\n if (needsRequestSchemas) {\r\n this.facade.getRequestSchemas(scope, moduleKey ?? undefined);\r\n }\r\n\r\n if (needsProperties) {\r\n this.facade.getProperties(scope, moduleKey ?? undefined);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Extract default values from rule type's configuration schema\r\n */\r\n private getDefaultsFromSchema(\r\n ruleType: GovernanceRuleType,\r\n ): Record<string, any> {\r\n const defaults: Record<string, any> = {};\r\n for (const field of ruleType.configurationSchema) {\r\n if (field.defaultValue !== undefined) {\r\n defaults[`config_${field.key}`] = field.defaultValue;\r\n }\r\n }\r\n return defaults;\r\n }\r\n\r\n ngOnInit(): void {\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (ruleId) {\r\n this.facade.getRule(ruleId);\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Submit Handler\r\n // ============================================================================\r\n onSubmit() {\r\n if (!this.ruleFormControl.valid) {\r\n return;\r\n }\r\n\r\n const formValue = this.ruleFormControl.value;\r\n const ruleId = this.ruleForEdit()?.id;\r\n\r\n if (ruleId) {\r\n // Update\r\n const payload = this.packFormToUpdateDto(formValue);\r\n this.facade.updateRule(ruleId, payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n } else {\r\n // Create\r\n const payload = this.packFormToCreateDto(formValue);\r\n this.facade.addRule(payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Build Configuration Section Based on Rule Type\r\n // ============================================================================\r\n private buildConfigurationSection(ruleType: GovernanceRuleType) {\r\n const t = (key: string) =>\r\n this.translocoService.translate(`governance.${key}`);\r\n\r\n return {\r\n key: 'configuration',\r\n type: 'header' as const,\r\n label: t('rule-configuration'),\r\n order: 3,\r\n fields: this.buildConfigFieldsForType(ruleType),\r\n };\r\n }\r\n\r\n private buildConfigFieldsForType(\r\n ruleType: GovernanceRuleType,\r\n ): BaseFieldConfig[] {\r\n const lang = this.translocoService.getActiveLang() as 'en' | 'ar';\r\n\r\n // Build fields dynamically from configurationSchema array\r\n return ruleType.configurationSchema.map((field, index) =>\r\n this.schemaFieldToFormField(field, index + 1, lang),\r\n );\r\n }\r\n\r\n /**\r\n * Convert a ConfigurationFieldSchema to DynamicForm BaseFieldConfig\r\n */\r\n private schemaFieldToFormField(\r\n field: ConfigurationFieldSchema,\r\n order: number,\r\n lang: 'en' | 'ar',\r\n ): BaseFieldConfig {\r\n const label = field.label[lang] || field.label.en;\r\n const colSpan = field.colSpan ?? 6;\r\n const validators = field.required ? [ValidatorConfig.required()] : [];\r\n\r\n switch (field.type) {\r\n case 'text':\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'textarea':\r\n return new TextareaFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'number':\r\n return new NumberFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n min: field.min,\r\n max: field.max,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'select':\r\n return new SelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: this.getOptionsForField(field),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'multi-select':\r\n return new MultiSelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: this.getOptionsForField(field),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'checkbox':\r\n return new ToggleFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n order,\r\n colSpan,\r\n });\r\n\r\n case 'date':\r\n return new DateFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n\r\n default:\r\n // Fallback to text field for unknown types\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get options for a field based on its optionsSource\r\n * - 'static' or 'auto-populated': Use options from schema (already in API response)\r\n * - 'requestSchema': Use fetched request schemas from state\r\n * - 'properties': Use fetched properties from state\r\n */\r\n private getOptionsForField(\r\n field: ConfigurationFieldSchema,\r\n ): ConfigurationFieldOption[] {\r\n switch (field.optionsSource) {\r\n case 'requestSchema':\r\n return this.requestSchemaOptions();\r\n\r\n case 'properties':\r\n return this.propertyOptions();\r\n\r\n case 'auto-populated':\r\n case 'static':\r\n default:\r\n // Use options directly from schema\r\n return field.options ?? [];\r\n }\r\n }\r\n\r\n // ============================================================================\r\n // Data Transformation Helpers\r\n // ============================================================================\r\n private unpackRuleToForm(rule: GovernanceRule): Record<string, any> {\r\n const formData: Record<string, any> = {\r\n key: rule.key,\r\n priority: rule.priority,\r\n name_en: rule.name?.en ?? '',\r\n name_ar: rule.name?.ar ?? '',\r\n description_en: rule.description?.en ?? '',\r\n description_ar: rule.description?.ar ?? '',\r\n errorMessage_en: rule.errorMessage?.en ?? '',\r\n errorMessage_ar: rule.errorMessage?.ar ?? '',\r\n ruleType: rule.ruleTypeKey,\r\n targetScope: rule.targetScope,\r\n targetModuleKey: rule.targetModuleKey ?? '',\r\n targetOperationKey: rule.targetOperationKey ?? '',\r\n stopOnFailure: rule.stopOnFailure,\r\n isActive: rule.isActive,\r\n };\r\n\r\n // Unpack configuration fields with config_ prefix\r\n if (rule.configuration) {\r\n Object.entries(rule.configuration).forEach(([key, value]) => {\r\n formData[`config_${key}`] = value;\r\n });\r\n }\r\n\r\n return formData;\r\n }\r\n\r\n private packFormToCreateDto(\r\n formValue: Record<string, any>,\r\n ): CreateGovernanceRuleDto {\r\n return {\r\n key: formValue['key'],\r\n name: {\r\n en: formValue['name_en'],\r\n ar: formValue['name_ar'],\r\n },\r\n description:\r\n formValue['description_en'] || formValue['description_ar']\r\n ? {\r\n en: formValue['description_en'] ?? '',\r\n ar: formValue['description_ar'] ?? '',\r\n }\r\n : undefined,\r\n errorMessage: {\r\n en: formValue['errorMessage_en'],\r\n ar: formValue['errorMessage_ar'],\r\n },\r\n ruleType: formValue['ruleType'],\r\n targetScope: formValue['targetScope'],\r\n targetModuleKey: formValue['targetModuleKey'] || undefined,\r\n targetOperationKey: formValue['targetOperationKey'] || undefined,\r\n configuration: this.extractConfiguration(formValue),\r\n priority: formValue['priority'],\r\n stopOnFailure: formValue['stopOnFailure'] ?? true,\r\n };\r\n }\r\n\r\n private packFormToUpdateDto(\r\n formValue: Record<string, any>,\r\n ): UpdateGovernanceRuleDto {\r\n return {\r\n ...this.packFormToCreateDto(formValue),\r\n isActive: formValue['isActive'] ?? true,\r\n };\r\n }\r\n\r\n private extractConfiguration(\r\n formValue: Record<string, any>,\r\n ): Record<string, any> {\r\n const config: Record<string, any> = {};\r\n Object.entries(formValue).forEach(([key, value]) => {\r\n if (\r\n key.startsWith('config_') &&\r\n value !== null &&\r\n value !== undefined &&\r\n value !== ''\r\n ) {\r\n const configKey = key.replace('config_', '');\r\n config[configKey] = value;\r\n }\r\n });\r\n return Object.keys(config).length > 0 ? config : (undefined as any);\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div\r\n [class]=\"'flex flex-col gap-3 p-4 overflow-y-auto ' + modal.contentClass\"\r\n >\r\n @if (isLoadingRule()) {\r\n <p-skeleton class=\"my-4 mt-7\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"6rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n } @else {\r\n <mt-dynamic-form\r\n [formConfig]=\"formConfig()\"\r\n [formControl]=\"ruleFormControl\"\r\n />\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"'cancel' | transloco\"\r\n severity=\"secondary\"\r\n variant=\"outlined\"\r\n (click)=\"ref.close()\"\r\n />\r\n <mt-button\r\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\r\n [loading]=\"isAddingRule() || isUpdatingRule()\"\r\n [disabled]=\"!ruleFormControl.valid\"\r\n (click)=\"onSubmit()\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n inject,\r\n linkedSignal,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport {\r\n CellChangeEvent,\r\n ColumnDef,\r\n Table,\r\n TableAction,\r\n} from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { GovernanceFacade } from '../../../store/governance';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport GovernanceRuleForm from '../governance-rule-form/governance-rule-form';\r\nimport { finalize } from 'rxjs';\r\nimport { Icon } from '@masterteam/icons';\r\nimport { Chip } from '@masterteam/components/chip';\r\nimport { GovernanceRule } from '../../../store/governance';\r\n\r\n@Component({\r\n selector: 'mt-governance-rules-list',\r\n styleUrl: './governance-rules-list.css',\r\n templateUrl: './governance-rules-list.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SkeletonModule,\r\n Table,\r\n TranslocoDirective,\r\n Icon,\r\n Chip,\r\n ],\r\n})\r\nexport default class GovernanceRulesList implements OnDestroy {\r\n // ============================================================================\r\n // Template References for Custom Columns\r\n // ============================================================================\r\n typeCol = viewChild.required<TemplateRef<any>>('typeCol');\r\n scopeCol = viewChild.required<TemplateRef<any>>('scopeCol');\r\n priorityCol = viewChild.required<TemplateRef<any>>('priorityCol');\r\n\r\n // ============================================================================\r\n // Services\r\n // ============================================================================\r\n private readonly facade = inject(GovernanceFacade);\r\n readonly modal: ModalService = inject(ModalService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n // ============================================================================\r\n // Breadcrumb\r\n // ============================================================================\r\n breadcrumbItems = linkedSignal(() => [\r\n {\r\n label: '',\r\n icon: 'general.home-line',\r\n routerLink: '/control-panel/workspaces',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.control-panel'),\r\n routerLink: '/control-panel',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.governance-rules'),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Data Computed from Facade\r\n // ============================================================================\r\n rules = computed(() => {\r\n const tab = this.activeTab();\r\n const all = this.allRules();\r\n const activeRules = this.activeRules();\r\n const inactiveRules = this.inactiveRules();\r\n\r\n switch (tab) {\r\n case 'active':\r\n return activeRules;\r\n case 'inactive':\r\n return inactiveRules;\r\n case 'all':\r\n default:\r\n return all;\r\n }\r\n });\r\n\r\n // ============================================================================\r\n // Tabs\r\n // ============================================================================\r\n tabs = signal([\r\n {\r\n label: this.translocoService.translate('governance.all'),\r\n value: 'all',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: 'active',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: 'inactive',\r\n },\r\n ]);\r\n activeTab = signal<string>('all');\r\n\r\n // ============================================================================\r\n // Table Actions\r\n // ============================================================================\r\n tableActions = signal<TableAction[]>([\r\n {\r\n icon: 'general.plus',\r\n label: this.translocoService.translate('governance.add-rule'),\r\n color: 'primary',\r\n action: () => {\r\n this.openRuleDialog();\r\n },\r\n },\r\n ]);\r\n\r\n deletingRowIds = signal<any[]>([]);\r\n\r\n rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'custom.pencil',\r\n tooltip: this.translocoService.translate('edit'),\r\n color: 'primary',\r\n action: (row: GovernanceRule) => {\r\n this.facade.clearSelectedRule();\r\n this.openRuleDialog(row);\r\n },\r\n },\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.translocoService.translate('delete'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row: GovernanceRule) => {\r\n this.deletingRowIds.update((ids) => [...ids, row.id]);\r\n this.facade\r\n .deleteRule(row.id)\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row.id),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n },\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: GovernanceRule) => this.deletingRowIds().includes(row.id),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Table Columns\r\n // ============================================================================\r\n tableColumns = linkedSignal<ColumnDef[]>(() => [\r\n {\r\n key: 'priority',\r\n label: this.translocoService.translate('governance.priority'),\r\n type: 'custom',\r\n customCellTpl: this.priorityCol(),\r\n sortable: true,\r\n },\r\n {\r\n key: 'name.en',\r\n label: this.translocoService.translate('governance.name'),\r\n type: 'text',\r\n sortable: true,\r\n },\r\n {\r\n key: 'ruleTypeKey',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n type: 'custom',\r\n customCellTpl: this.typeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n options: this.getRuleTypeOptions(),\r\n },\r\n },\r\n {\r\n key: 'targetScope',\r\n label: this.translocoService.translate('governance.scope'),\r\n type: 'custom',\r\n customCellTpl: this.scopeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.scope'),\r\n options: [\r\n {\r\n label: this.translocoService.translate('governance.scope-level'),\r\n value: 'Level',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.scope-module'),\r\n value: 'Module',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.scope-phase-gate',\r\n ),\r\n value: 'PhaseGate',\r\n },\r\n ],\r\n },\r\n },\r\n {\r\n key: 'targetModuleKey',\r\n label: this.translocoService.translate('governance.target-module'),\r\n type: 'text',\r\n },\r\n {\r\n key: 'isActive',\r\n label: this.translocoService.translate('governance.status'),\r\n type: 'boolean',\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.status'),\r\n options: [\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: true,\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: false,\r\n },\r\n ],\r\n },\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Private\r\n // ============================================================================\r\n loading = this.facade.isLoadingRules;\r\n private allRules = this.facade.rules;\r\n private activeRules = this.facade.activeRules;\r\n private inactiveRules = this.facade.inactiveRules;\r\n\r\n ngOnDestroy(): void {\r\n this.facade.resetState();\r\n }\r\n\r\n openRuleDialog(rule: GovernanceRule | null = null) {\r\n const modalType: 'drawer' | 'dialog' = rule ? 'drawer' : 'drawer';\r\n this.modal.openModal(GovernanceRuleForm, modalType, {\r\n header: rule\r\n ? this.translocoService.translate('governance.edit-rule')\r\n : this.translocoService.translate('governance.add-rule'),\r\n styleClass: '!w-[50rem] !absolute ',\r\n position: modalType === 'drawer' ? 'end' : '',\r\n appendTo: modalType === 'drawer' ? 'page-content' : 'body',\r\n dismissableMask: true,\r\n dismissible: true,\r\n inputValues: {\r\n ruleForEdit: rule,\r\n },\r\n });\r\n }\r\n\r\n onCellChange(event: CellChangeEvent) {\r\n if (event.column === 'isActive' && event.type === 'boolean') {\r\n this.facade.toggleRuleActive(event.row.id);\r\n }\r\n }\r\n\r\n private getRuleTypeOptions() {\r\n return [\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleExists',\r\n ),\r\n value: 'ModuleExists',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleDoesNotExist',\r\n ),\r\n value: 'ModuleDoesNotExist',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleMaxCount',\r\n ),\r\n value: 'ModuleMaxCount',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleMinCount',\r\n ),\r\n value: 'ModuleMinCount',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.FieldRequired',\r\n ),\r\n value: 'FieldRequired',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.FieldValue',\r\n ),\r\n value: 'FieldValue',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.PhaseGateModuleRequired',\r\n ),\r\n value: 'PhaseGateModuleRequired',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.NoActiveRequest',\r\n ),\r\n value: 'NoActiveRequest',\r\n },\r\n ];\r\n }\r\n\r\n getRuleTypeChipClass(ruleTypeKey: string): string {\r\n const classes: Record<string, string> = {\r\n ModuleExists: 'bg-blue-100 text-blue-700',\r\n ModuleDoesNotExist: 'bg-red-100 text-red-700',\r\n ModuleMaxCount: 'bg-amber-100 text-amber-700',\r\n ModuleMinCount: 'bg-orange-100 text-orange-700',\r\n FieldRequired: 'bg-purple-100 text-purple-700',\r\n FieldValue: 'bg-indigo-100 text-indigo-700',\r\n PhaseGateModuleRequired: 'bg-green-100 text-green-700',\r\n NoActiveRequest: 'bg-rose-100 text-rose-700',\r\n };\r\n return classes[ruleTypeKey] ?? 'bg-slate-100 text-slate-700';\r\n }\r\n\r\n getScopeIcon(scope: string): string {\r\n const icons: Record<string, string> = {\r\n Level: 'general.layers-three-01',\r\n Module: 'general.cube-01',\r\n PhaseGate: 'general.flag-01',\r\n };\r\n return icons[scope] ?? 'general.file-02';\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <!-- Rule Type Column Template -->\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"row.ruleTypeKey\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <!-- Scope Column Template -->\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-lg\"\r\n [icon]=\"getScopeIcon(row.targetScope)\"\r\n ></mt-icon>\r\n <span>{{ row.targetScope }}</span>\r\n @if (row.targetModuleKey) {\r\n <span class=\"text-slate-500\">→ {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Priority Column Template -->\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Table -->\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"masterteam-governance.mjs","sources":["../../../../packages/masterteam/governance/src/store/governance/governance.actions.ts","../../../../packages/masterteam/governance/src/store/governance/governance.model.ts","../../../../packages/masterteam/governance/src/store/governance/governance.state.ts","../../../../packages/masterteam/governance/src/store/governance/governance.facade.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.models.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.mapper.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.config.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.summary.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/internal/governance-rule-form.utils.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rule-form/governance-rule-form.html","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.ts","../../../../packages/masterteam/governance/src/lib/governance/governance-rules-list/governance-rules-list.html","../../../../packages/masterteam/governance/src/masterteam-governance.ts"],"sourcesContent":["import {\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\n\r\nexport class SetLevelId {\r\n static readonly type = '[Governance] Set Level ID';\r\n constructor(public levelId: number) {}\r\n}\r\n\r\nexport class GetGovernanceRules {\r\n static readonly type = '[Governance] Get Rules';\r\n}\r\n\r\nexport class GetGovernanceRule {\r\n static readonly type = '[Governance] Get Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class GetGovernanceRuleTypes {\r\n static readonly type = '[Governance] Get Rule Types';\r\n}\r\n\r\nexport class AddGovernanceRule {\r\n static readonly type = '[Governance] Add Rule';\r\n constructor(public rule: CreateGovernanceRuleDto) {}\r\n}\r\n\r\nexport class UpdateGovernanceRule {\r\n static readonly type = '[Governance] Update Rule';\r\n constructor(\r\n public id: number,\r\n public rule: UpdateGovernanceRuleDto,\r\n ) {}\r\n}\r\n\r\nexport class DeleteGovernanceRule {\r\n static readonly type = '[Governance] Delete Rule';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ToggleGovernanceRuleActive {\r\n static readonly type = '[Governance] Toggle Rule Active';\r\n constructor(public id: number) {}\r\n}\r\n\r\nexport class ClearSelectedRule {\r\n static readonly type = '[Governance] Clear Selected Rule';\r\n}\r\n\r\nexport class ResetGovernanceState {\r\n static readonly type = '[Governance] Reset State';\r\n}\r\n\r\nexport class GetModules {\r\n static readonly type = '[Governance] Get Modules';\r\n}\r\n\r\n/**\r\n * Get request schemas for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetRequestSchemas {\r\n static readonly type = '[Governance] Get Request Schemas';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Get properties for a specific scope\r\n * @param targetScope - 'Level' or 'Module'\r\n * @param targetModuleKey - Required if scope is 'Module'\r\n */\r\nexport class GetProperties {\r\n static readonly type = '[Governance] Get Properties';\r\n constructor(\r\n public targetScope: string,\r\n public targetModuleKey?: string,\r\n ) {}\r\n}\r\n\r\n/**\r\n * Clear request schemas (when scope/module changes)\r\n */\r\nexport class ClearRequestSchemas {\r\n static readonly type = '[Governance] Clear Request Schemas';\r\n}\r\n\r\n/**\r\n * Clear properties (when scope/module changes)\r\n */\r\nexport class ClearProperties {\r\n static readonly type = '[Governance] Clear Properties';\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\n// ============================================================================\r\n// Translatable Interface\r\n// ============================================================================\r\n\r\nexport interface Translatable {\r\n en: string;\r\n ar: string;\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Enum\r\n// ============================================================================\r\n\r\nexport enum GovernanceRuleTypeEnum {\r\n ModuleExists = 1,\r\n ModuleDoesNotExist = 2,\r\n ModuleMaxCount = 3,\r\n ModuleMinCount = 4,\r\n FieldRequired = 5,\r\n FieldValue = 6,\r\n PhaseGateModuleRequired = 7,\r\n NoActiveRequest = 8,\r\n}\r\n\r\n// ============================================================================\r\n// Rule Type Definition (from API)\r\n// ============================================================================\r\n\r\n/**\r\n * Option for select/multi-select fields\r\n */\r\nexport interface ConfigurationFieldOption {\r\n label: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * Options source indicator for select fields\r\n * - 'auto-populated': Options already in response (modules, phase gates, statuses)\r\n * - 'static': Hardcoded options in response\r\n * - 'requestSchema': Fetch from request schema endpoint\r\n * - 'properties': Fetch from properties endpoint\r\n * - null/undefined: No options needed (text/number fields)\r\n */\r\nexport type OptionsSource =\r\n | 'auto-populated'\r\n | 'static'\r\n | 'requestSchema'\r\n | 'properties'\r\n | null;\r\n\r\n/**\r\n * Configuration field schema - now array-based with key property\r\n */\r\nexport interface ConfigurationFieldSchema {\r\n key: string; // Field identifier (e.g., \"moduleKey\", \"maxCount\")\r\n type:\r\n | 'text'\r\n | 'textarea'\r\n | 'number'\r\n | 'select'\r\n | 'multi-select'\r\n | 'checkbox'\r\n | 'date';\r\n label: Translatable;\r\n required?: boolean;\r\n defaultValue?: any;\r\n min?: number; // For number inputs\r\n max?: number; // For number inputs\r\n options?: ConfigurationFieldOption[]; // For select/multi-select\r\n optionsSource?: OptionsSource; // Indicates where to get options\r\n colSpan?: number; // Grid layout (1-12)\r\n}\r\n\r\nexport interface GovernanceRuleType {\r\n type: string; // Enum value as string (e.g., \"10\" for ModuleMaxCount)\r\n key: string; // Enum key (e.g., \"ModuleMaxCount\")\r\n name: Translatable;\r\n description: Translatable;\r\n supportedScopes: string[]; // [\"Module\", \"Level\", \"PhaseGate\"]\r\n supportedOperations: string[]; // [\"Create\", \"Update\", \"Delete\"]\r\n configurationSchema: ConfigurationFieldSchema[]; // Now an array\r\n}\r\n\r\n// ============================================================================\r\n// Governance Rule Entity\r\n// ============================================================================\r\n\r\nexport interface GovernanceRule {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n description?: Translatable;\r\n errorMessage: Translatable;\r\n ruleType: GovernanceRuleTypeEnum;\r\n ruleTypeKey: string; // \"ModuleMaxCount\"\r\n targetScope: string; // \"Level\", \"Module\", \"PhaseGate\"\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n levelId: number;\r\n configuration: Record<string, any>;\r\n priority: number;\r\n isActive: boolean;\r\n stopOnFailure: boolean;\r\n createdAt: string;\r\n createdBy?: string;\r\n modifiedAt?: string;\r\n modifiedBy?: string;\r\n}\r\n\r\n// ============================================================================\r\n// Create/Update DTOs\r\n// ============================================================================\r\n\r\nexport interface CreateGovernanceRuleDto {\r\n key: string;\r\n name: Record<string, string>; // { en: \"...\", ar: \"...\" }\r\n description?: Record<string, string>;\r\n errorMessage: Record<string, string>;\r\n ruleType: string; // \"ModuleMaxCount\"\r\n targetScope: string;\r\n targetModuleKey?: string;\r\n targetOperationKey?: string;\r\n configuration?: Record<string, any>;\r\n priority: number;\r\n stopOnFailure: boolean;\r\n}\r\n\r\nexport interface UpdateGovernanceRuleDto extends CreateGovernanceRuleDto {\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Governance Violation (for error handling)\r\n// ============================================================================\r\n\r\nexport interface GovernanceViolation {\r\n ruleKey: string;\r\n message: string;\r\n details?: any;\r\n}\r\n\r\nexport interface GovernanceViolationError {\r\n type: 'GovernanceViolation';\r\n title: string;\r\n status: 403;\r\n violations: GovernanceViolation[];\r\n}\r\n\r\n// ============================================================================\r\n// Module Reference (for Target Module select)\r\n// ============================================================================\r\n\r\nexport interface GovernanceModule {\r\n id: string;\r\n key: string;\r\n name: Translatable;\r\n isActive: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// State Model\r\n// ============================================================================\r\n\r\nexport enum GovernanceActionKey {\r\n GetRules = 'getRules',\r\n GetRule = 'getRule',\r\n GetRuleTypes = 'getRuleTypes',\r\n AddRule = 'addRule',\r\n UpdateRule = 'updateRule',\r\n DeleteRule = 'deleteRule',\r\n ToggleRuleActive = 'toggleRuleActive',\r\n GetModules = 'getModules',\r\n GetRequestSchemas = 'getRequestSchemas',\r\n GetProperties = 'getProperties',\r\n}\r\n\r\n// ============================================================================\r\n// Request Schema (for requestSchemaId field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceRequestSchema {\r\n id: number;\r\n name: Translatable;\r\n isPublished: boolean;\r\n}\r\n\r\n// ============================================================================\r\n// Property (for propertyKey field)\r\n// ============================================================================\r\n\r\nexport interface GovernanceProperty {\r\n id: number;\r\n key: string;\r\n name: Translatable;\r\n}\r\n\r\nexport interface GovernanceStateModel extends LoadingStateShape<GovernanceActionKey> {\r\n levelId: number | null;\r\n rules: GovernanceRule[];\r\n ruleTypes: GovernanceRuleType[];\r\n selectedRule: GovernanceRule | null;\r\n modules: GovernanceModule[];\r\n requestSchemas: GovernanceRequestSchema[];\r\n properties: GovernanceProperty[];\r\n}\r\n","import { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceRule,\r\n GovernanceRuleType,\r\n GovernanceModule,\r\n GovernanceActionKey,\r\n GovernanceStateModel,\r\n GovernanceRequestSchema,\r\n GovernanceProperty,\r\n} from './governance.model';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\n\r\nconst DEFAULTS: GovernanceStateModel = {\r\n levelId: null,\r\n rules: [],\r\n ruleTypes: [],\r\n modules: [],\r\n requestSchemas: [],\r\n properties: [],\r\n selectedRule: null,\r\n loadingActive: [],\r\n errors: {},\r\n};\r\n\r\n@State<GovernanceStateModel>({\r\n name: 'governance',\r\n defaults: DEFAULTS,\r\n})\r\n@Injectable()\r\nexport class GovernanceState extends CrudStateBase<\r\n GovernanceRule,\r\n GovernanceStateModel,\r\n GovernanceActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n\r\n // ============================================================================\r\n // Selectors - Individual data selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLevelId(state: GovernanceStateModel): number | null {\r\n return state.levelId;\r\n }\r\n\r\n @Selector()\r\n static getRules(state: GovernanceStateModel): GovernanceRule[] {\r\n return state.rules;\r\n }\r\n\r\n @Selector()\r\n static getRuleTypes(state: GovernanceStateModel): GovernanceRuleType[] {\r\n return state.ruleTypes;\r\n }\r\n\r\n @Selector()\r\n static getSelectedRule(state: GovernanceStateModel): GovernanceRule | null {\r\n return state.selectedRule;\r\n }\r\n\r\n @Selector()\r\n static getModules(state: GovernanceStateModel): GovernanceModule[] {\r\n return state.modules;\r\n }\r\n\r\n @Selector()\r\n static getRequestSchemas(\r\n state: GovernanceStateModel,\r\n ): GovernanceRequestSchema[] {\r\n return state.requestSchemas;\r\n }\r\n\r\n @Selector()\r\n static getProperties(state: GovernanceStateModel): GovernanceProperty[] {\r\n return state.properties;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: GovernanceStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(state: GovernanceStateModel): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // Level Context\r\n // ============================================================================\r\n\r\n @Action(SetLevelId)\r\n setLevelId(ctx: StateContext<GovernanceStateModel>, { levelId }: SetLevelId) {\r\n ctx.patchState({ levelId });\r\n }\r\n\r\n @Action(ResetGovernanceState)\r\n resetState(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.setState(DEFAULTS);\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n\r\n @Action(GetGovernanceRules)\r\n getRules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule[]>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n rules: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRule)\r\n getRule(ctx: StateContext<GovernanceStateModel>, { id }: GetGovernanceRule) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRule,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedRule: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetGovernanceRuleTypes)\r\n getRuleTypes(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceRuleType[]>>(\r\n `control-panel/governance/rule-types?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRuleTypes,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n ruleTypes: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(AddGovernanceRule)\r\n addRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { rule }: AddGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.post<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules`,\r\n rule,\r\n );\r\n\r\n return this.create(ctx, {\r\n key: GovernanceActionKey.AddRule,\r\n request$: req$,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(UpdateGovernanceRule)\r\n updateRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id, rule }: UpdateGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.put<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n rule,\r\n );\r\n\r\n return this.update(ctx, {\r\n key: GovernanceActionKey.UpdateRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(DeleteGovernanceRule)\r\n deleteRule(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: DeleteGovernanceRule,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.delete<Response<void>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}`,\r\n );\r\n\r\n return this.delete(ctx, {\r\n key: GovernanceActionKey.DeleteRule,\r\n request$: req$,\r\n uniqueKey: 'id',\r\n id,\r\n stateProperty: (state) => state.rules,\r\n });\r\n }\r\n\r\n @Action(ToggleGovernanceRuleActive)\r\n toggleRuleActive(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { id }: ToggleGovernanceRuleActive,\r\n ) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.patch<Response<GovernanceRule>>(\r\n `control-panel/levels/${levelId}/governance-rules/${id}/toggle`,\r\n {},\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.ToggleRuleActive,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const updatedRule = response.data;\r\n if (!updatedRule) return {};\r\n\r\n return {\r\n rules: this.adapter.upsertOne(state.rules, updatedRule, 'id'),\r\n };\r\n },\r\n });\r\n }\r\n\r\n // ============================================================================\r\n // Reference Data Actions\r\n // ============================================================================\r\n\r\n @Action(GetModules)\r\n getModules(ctx: StateContext<GovernanceStateModel>) {\r\n const { levelId } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceModule[]>>(\r\n `Modules?LevelId=${levelId}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetModules,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n // Only keep active modules for Target Module selection\r\n modules: (response.data ?? []).filter((m) => m.isActive),\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearSelectedRule)\r\n clearSelectedRule(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ selectedRule: null });\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n @Action(GetRequestSchemas)\r\n getRequestSchemas(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetRequestSchemas,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n // Level scope: ProcessBuilder/level/{levelId}/{moduleType}/{moduleId}/requestSchema\r\n // Module scope: ProcessBuilder/level/{levelId}/module/{targetModuleId}/{moduleType}/{moduleId}/requestSchema\r\n let basePath = `ProcessBuilder/level/${levelId}`;\r\n\r\n // For Module scope, we need to find the module by key to get its ID\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath += `/module/${targetModule.id}`;\r\n }\r\n }\r\n\r\n // Get request schemas (assuming a common endpoint pattern)\r\n const req$ = this.http.get<Response<GovernanceRequestSchema[]>>(\r\n `${basePath}/requestSchema`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetRequestSchemas,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n requestSchemas: (response.data ?? []).filter((s) => s.isPublished),\r\n }),\r\n });\r\n }\r\n\r\n @Action(GetProperties)\r\n getProperties(\r\n ctx: StateContext<GovernanceStateModel>,\r\n { targetScope, targetModuleKey }: GetProperties,\r\n ) {\r\n const { levelId, modules } = ctx.getState();\r\n if (!levelId) {\r\n return;\r\n }\r\n\r\n // Build endpoint based on scope\r\n let basePath = `Properties?LevelId=${levelId}`;\r\n\r\n // For Module scope, add module filter\r\n if (targetScope === 'Module' && targetModuleKey) {\r\n const targetModule = modules.find((m) => m.key === targetModuleKey);\r\n if (targetModule) {\r\n basePath = `Properties?LevelId=${levelId}&ModuleId=${targetModule.id}`;\r\n }\r\n }\r\n\r\n const req$ = this.http.get<Response<GovernanceProperty[]>>(basePath);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: GovernanceActionKey.GetProperties,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n properties: response.data ?? [],\r\n }),\r\n });\r\n }\r\n\r\n @Action(ClearRequestSchemas)\r\n clearRequestSchemas(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ requestSchemas: [] });\r\n }\r\n\r\n @Action(ClearProperties)\r\n clearProperties(ctx: StateContext<GovernanceStateModel>) {\r\n ctx.patchState({ properties: [] });\r\n }\r\n}\r\n","import { Injectable, computed, inject } from '@angular/core';\r\nimport { Store, select } from '@ngxs/store';\r\nimport {\r\n SetLevelId,\r\n GetGovernanceRules,\r\n GetGovernanceRule,\r\n GetGovernanceRuleTypes,\r\n AddGovernanceRule,\r\n UpdateGovernanceRule,\r\n DeleteGovernanceRule,\r\n ToggleGovernanceRuleActive,\r\n ClearSelectedRule,\r\n ResetGovernanceState,\r\n GetModules,\r\n GetRequestSchemas,\r\n GetProperties,\r\n ClearRequestSchemas,\r\n ClearProperties,\r\n} from './governance.actions';\r\nimport {\r\n GovernanceActionKey,\r\n CreateGovernanceRuleDto,\r\n UpdateGovernanceRuleDto,\r\n} from './governance.model';\r\nimport { GovernanceState } from './governance.state';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class GovernanceFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly levelId = select(GovernanceState.getLevelId);\r\n readonly rules = select(GovernanceState.getRules);\r\n readonly ruleTypes = select(GovernanceState.getRuleTypes);\r\n readonly selectedRule = select(GovernanceState.getSelectedRule);\r\n readonly modules = select(GovernanceState.getModules);\r\n readonly requestSchemas = select(GovernanceState.getRequestSchemas);\r\n readonly properties = select(GovernanceState.getProperties);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(GovernanceState.getLoadingActive);\r\n private readonly errors = select(GovernanceState.getErrors);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingRules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRules),\r\n );\r\n readonly isLoadingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRule),\r\n );\r\n readonly isLoadingRuleTypes = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRuleTypes),\r\n );\r\n readonly isAddingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.AddRule),\r\n );\r\n readonly isUpdatingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.UpdateRule),\r\n );\r\n readonly isDeletingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.DeleteRule),\r\n );\r\n readonly isTogglingRule = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.ToggleRuleActive),\r\n );\r\n readonly isLoadingModules = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetModules),\r\n );\r\n readonly isLoadingRequestSchemas = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetRequestSchemas),\r\n );\r\n readonly isLoadingProperties = computed(() =>\r\n this.loadingActive().includes(GovernanceActionKey.GetProperties),\r\n );\r\n\r\n // ============================================================================\r\n // Error Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly rulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRules] ?? null,\r\n );\r\n readonly ruleError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRule] ?? null,\r\n );\r\n readonly ruleTypesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRuleTypes] ?? null,\r\n );\r\n readonly addRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.AddRule] ?? null,\r\n );\r\n readonly updateRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.UpdateRule] ?? null,\r\n );\r\n readonly deleteRuleError = computed(\r\n () => this.errors()[GovernanceActionKey.DeleteRule] ?? null,\r\n );\r\n readonly modulesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetModules] ?? null,\r\n );\r\n readonly requestSchemasError = computed(\r\n () => this.errors()[GovernanceActionKey.GetRequestSchemas] ?? null,\r\n );\r\n readonly propertiesError = computed(\r\n () => this.errors()[GovernanceActionKey.GetProperties] ?? null,\r\n );\r\n\r\n // ============================================================================\r\n // Derived Data - Computed from data selectors\r\n // ============================================================================\r\n readonly activeRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === true),\r\n );\r\n\r\n readonly inactiveRules = computed(() =>\r\n this.rules().filter((r) => r.isActive === false),\r\n );\r\n\r\n readonly rulesCount = computed(() => this.rules().length);\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n\r\n setLevelId(levelId: number) {\r\n return this.store.dispatch(new SetLevelId(levelId));\r\n }\r\n\r\n getRules() {\r\n return this.store.dispatch(new GetGovernanceRules());\r\n }\r\n\r\n getRule(id: number) {\r\n return this.store.dispatch(new GetGovernanceRule(id));\r\n }\r\n\r\n getRuleTypes() {\r\n return this.store.dispatch(new GetGovernanceRuleTypes());\r\n }\r\n\r\n getModules() {\r\n return this.store.dispatch(new GetModules());\r\n }\r\n\r\n addRule(rule: CreateGovernanceRuleDto) {\r\n return this.store.dispatch(new AddGovernanceRule(rule));\r\n }\r\n\r\n updateRule(id: number, rule: UpdateGovernanceRuleDto) {\r\n return this.store.dispatch(new UpdateGovernanceRule(id, rule));\r\n }\r\n\r\n deleteRule(id: number) {\r\n return this.store.dispatch(new DeleteGovernanceRule(id));\r\n }\r\n\r\n toggleRuleActive(id: number) {\r\n return this.store.dispatch(new ToggleGovernanceRuleActive(id));\r\n }\r\n\r\n clearSelectedRule() {\r\n return this.store.dispatch(new ClearSelectedRule());\r\n }\r\n\r\n resetState() {\r\n return this.store.dispatch(new ResetGovernanceState());\r\n }\r\n\r\n // ============================================================================\r\n // Request Schema & Properties Actions (for optionsSource)\r\n // ============================================================================\r\n\r\n getRequestSchemas(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(\r\n new GetRequestSchemas(targetScope, targetModuleKey),\r\n );\r\n }\r\n\r\n getProperties(targetScope: string, targetModuleKey?: string) {\r\n return this.store.dispatch(new GetProperties(targetScope, targetModuleKey));\r\n }\r\n\r\n clearRequestSchemas() {\r\n return this.store.dispatch(new ClearRequestSchemas());\r\n }\r\n\r\n clearProperties() {\r\n return this.store.dispatch(new ClearProperties());\r\n }\r\n}\r\n","import {\r\n ConfigurationFieldSchema,\r\n GovernanceRule,\r\n Translatable,\r\n GovernanceRuleType,\r\n} from '../../../../store/governance';\r\n\r\nexport type GovernanceRuleAppliesTo =\r\n | 'level'\r\n | 'any-module'\r\n | 'specific-module'\r\n | 'phase-gate';\r\n\r\nexport type GovernanceRuleActionKey = 'create' | 'update' | 'delete';\r\n\r\nexport type GovernanceRuleRecipeKey =\r\n | 'require-module'\r\n | 'prevent-module'\r\n | 'module-max-count'\r\n | 'module-min-count'\r\n | 'phase-gate-completed'\r\n | 'phase-gate-module-required'\r\n | 'no-active-request'\r\n | 'property-value';\r\n\r\nexport interface GovernanceRuleWizardFormValue {\r\n key: string;\r\n name: Translatable;\r\n description: Translatable;\r\n errorMessage: Translatable;\r\n appliesTo: GovernanceRuleAppliesTo;\r\n selectedModuleKey: string | null;\r\n actionKey: GovernanceRuleActionKey | null;\r\n recipeKey: GovernanceRuleRecipeKey | null;\r\n requiredModuleKey: string | null;\r\n blockedModuleKey: string | null;\r\n countedModuleKey: string | null;\r\n countValue: number | null;\r\n phaseGateSchemaId: string | null;\r\n requestSchemaId: string | null;\r\n blockingStatuses: string[];\r\n propertyKey: string | null;\r\n operator: string | null;\r\n expectedValue: string;\r\n priority: number | null;\r\n stopOnFailure: boolean;\r\n isActive: boolean;\r\n}\r\n\r\nexport interface GovernanceLegacyFormValue {\r\n key: string;\r\n priority: number | null;\r\n name: Translatable;\r\n description: Translatable;\r\n errorMessage: Translatable;\r\n ruleType: string;\r\n targetScope: string;\r\n targetModuleKey: string;\r\n targetOperationKey: string;\r\n stopOnFailure: boolean;\r\n isActive: boolean;\r\n [key: string]: unknown;\r\n}\r\n\r\nexport interface GovernanceRuleRecipeDefinition {\r\n key: GovernanceRuleRecipeKey;\r\n ruleTypeKeys: readonly string[];\r\n labelKey: string;\r\n}\r\n\r\nexport interface GovernanceTranslatedOption<TValue extends string = string> {\r\n value: TValue;\r\n labelKey: string;\r\n}\r\n\r\nexport const GOVERNANCE_RULE_RECIPE_DEFINITIONS: readonly GovernanceRuleRecipeDefinition[] =\r\n [\r\n {\r\n key: 'require-module',\r\n ruleTypeKeys: ['ModuleExists'],\r\n labelKey: 'wizard.recipes.require-module.label',\r\n },\r\n {\r\n key: 'prevent-module',\r\n ruleTypeKeys: ['ModuleNotExists', 'ModuleDoesNotExist'],\r\n labelKey: 'wizard.recipes.prevent-module.label',\r\n },\r\n {\r\n key: 'module-max-count',\r\n ruleTypeKeys: ['ModuleMaxCount'],\r\n labelKey: 'wizard.recipes.module-max-count.label',\r\n },\r\n {\r\n key: 'module-min-count',\r\n ruleTypeKeys: ['ModuleMinCount'],\r\n labelKey: 'wizard.recipes.module-min-count.label',\r\n },\r\n {\r\n key: 'phase-gate-completed',\r\n ruleTypeKeys: ['PhaseGateCompleted'],\r\n labelKey: 'wizard.recipes.phase-gate-completed.label',\r\n },\r\n {\r\n key: 'phase-gate-module-required',\r\n ruleTypeKeys: ['PhaseGateModuleRequired'],\r\n labelKey: 'wizard.recipes.phase-gate-module-required.label',\r\n },\r\n {\r\n key: 'no-active-request',\r\n ruleTypeKeys: ['NoActiveRequest'],\r\n labelKey: 'wizard.recipes.no-active-request.label',\r\n },\r\n {\r\n key: 'property-value',\r\n ruleTypeKeys: ['PropertyValueEquals', 'FieldValue'],\r\n labelKey: 'wizard.recipes.property-value.label',\r\n },\r\n ];\r\n\r\nexport const GOVERNANCE_APPLIES_TO_OPTIONS: GovernanceTranslatedOption<GovernanceRuleAppliesTo>[] =\r\n [\r\n {\r\n value: 'level',\r\n labelKey: 'wizard.applies-to.level.label',\r\n },\r\n {\r\n value: 'any-module',\r\n labelKey: 'wizard.applies-to.any-module.label',\r\n },\r\n {\r\n value: 'specific-module',\r\n labelKey: 'wizard.applies-to.specific-module.label',\r\n },\r\n {\r\n value: 'phase-gate',\r\n labelKey: 'wizard.applies-to.phase-gate.label',\r\n },\r\n ];\r\n\r\nexport const GOVERNANCE_ACTION_OPTIONS: GovernanceTranslatedOption<GovernanceRuleActionKey>[] =\r\n [\r\n {\r\n value: 'create',\r\n labelKey: 'wizard.actions.create',\r\n },\r\n {\r\n value: 'update',\r\n labelKey: 'wizard.actions.update',\r\n },\r\n {\r\n value: 'delete',\r\n labelKey: 'wizard.actions.delete',\r\n },\r\n ];\r\n\r\nexport const GOVERNANCE_OPERATOR_OPTIONS: GovernanceTranslatedOption[] = [\r\n {\r\n value: 'Equals',\r\n labelKey: 'wizard.operators.Equals',\r\n },\r\n {\r\n value: 'NotEquals',\r\n labelKey: 'wizard.operators.NotEquals',\r\n },\r\n {\r\n value: 'Contains',\r\n labelKey: 'wizard.operators.Contains',\r\n },\r\n {\r\n value: 'GreaterThan',\r\n labelKey: 'wizard.operators.GreaterThan',\r\n },\r\n {\r\n value: 'LessThan',\r\n labelKey: 'wizard.operators.LessThan',\r\n },\r\n];\r\n\r\nexport const GOVERNANCE_PROPERTY_OPERATORS = [\r\n 'Equals',\r\n 'NotEquals',\r\n 'Contains',\r\n 'GreaterThan',\r\n 'LessThan',\r\n] as const;\r\n\r\nexport const DEFAULT_BLOCKING_STATUSES = [\r\n 'Pending',\r\n 'Draft',\r\n 'InProgress',\r\n] as const;\r\n\r\nexport const DEFAULT_GOVERNANCE_RULE_FORM_VALUE: GovernanceRuleWizardFormValue =\r\n {\r\n key: '',\r\n name: { en: '', ar: '' },\r\n description: { en: '', ar: '' },\r\n errorMessage: { en: '', ar: '' },\r\n appliesTo: 'any-module',\r\n selectedModuleKey: null,\r\n actionKey: null,\r\n recipeKey: null,\r\n requiredModuleKey: null,\r\n blockedModuleKey: null,\r\n countedModuleKey: null,\r\n countValue: 1,\r\n phaseGateSchemaId: null,\r\n requestSchemaId: null,\r\n blockingStatuses: [],\r\n propertyKey: null,\r\n operator: 'Equals',\r\n expectedValue: '',\r\n priority: 10,\r\n stopOnFailure: true,\r\n isActive: true,\r\n };\r\n\r\nexport function readGovernanceRuleTypeKey(\r\n ruleType: GovernanceRuleType,\r\n): string {\r\n return String(ruleType.key ?? ruleType.type ?? '').trim();\r\n}\r\n\r\nexport function readGovernanceRuleKey(rule: GovernanceRule): string {\r\n return String(rule.ruleTypeKey ?? '').trim();\r\n}\r\n\r\nexport function resolveRecipeDefinition(\r\n recipeKey: GovernanceRuleRecipeKey | null,\r\n): GovernanceRuleRecipeDefinition | null {\r\n return (\r\n GOVERNANCE_RULE_RECIPE_DEFINITIONS.find(\r\n (definition) => definition.key === recipeKey,\r\n ) ?? null\r\n );\r\n}\r\n\r\nexport function resolveRecipeByRuleTypeKey(\r\n ruleTypeKey: string | null | undefined,\r\n): GovernanceRuleRecipeKey | null {\r\n const normalized = String(ruleTypeKey ?? '').trim();\r\n if (!normalized) {\r\n return null;\r\n }\r\n\r\n return (\r\n GOVERNANCE_RULE_RECIPE_DEFINITIONS.find((definition) =>\r\n definition.ruleTypeKeys.some((key) => key === normalized),\r\n )?.key ?? null\r\n );\r\n}\r\n\r\nexport function findRuleTypeByRecipe(\r\n ruleTypes: GovernanceRuleType[],\r\n recipeKey: GovernanceRuleRecipeKey | null,\r\n): GovernanceRuleType | null {\r\n const definition = resolveRecipeDefinition(recipeKey);\r\n if (!definition) {\r\n return null;\r\n }\r\n\r\n return (\r\n ruleTypes.find((ruleType) =>\r\n definition.ruleTypeKeys.includes(readGovernanceRuleTypeKey(ruleType)),\r\n ) ?? null\r\n );\r\n}\r\n\r\nexport function findConfigurationSchemaField(\r\n ruleType: GovernanceRuleType | null,\r\n fieldKey: string,\r\n): ConfigurationFieldSchema | null {\r\n if (!ruleType) {\r\n return null;\r\n }\r\n\r\n return (\r\n ruleType.configurationSchema.find((field) => field.key === fieldKey) ?? null\r\n );\r\n}\r\n","import {\r\n CreateGovernanceRuleDto,\r\n GovernanceRule,\r\n GovernanceRuleType,\r\n UpdateGovernanceRuleDto,\r\n} from '../../../../store/governance';\r\nimport {\r\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\r\n GovernanceLegacyFormValue,\r\n GovernanceRuleActionKey,\r\n GovernanceRuleAppliesTo,\r\n GovernanceRuleRecipeKey,\r\n GovernanceRuleWizardFormValue,\r\n readGovernanceRuleKey,\r\n readGovernanceRuleTypeKey,\r\n resolveRecipeByRuleTypeKey,\r\n} from './governance-rule-form.models';\r\n\r\nexport function mapAppliesToToTargetScope(\r\n appliesTo: GovernanceRuleAppliesTo,\r\n): 'Level' | 'Module' | 'PhaseGate' {\r\n switch (appliesTo) {\r\n case 'level':\r\n return 'Level';\r\n case 'phase-gate':\r\n return 'PhaseGate';\r\n case 'any-module':\r\n case 'specific-module':\r\n default:\r\n return 'Module';\r\n }\r\n}\r\n\r\nexport function mapActionToOperationKey(\r\n actionKey: GovernanceRuleActionKey,\r\n): 'Create' | 'Update' | 'Delete' {\r\n switch (actionKey) {\r\n case 'update':\r\n return 'Update';\r\n case 'delete':\r\n return 'Delete';\r\n case 'create':\r\n default:\r\n return 'Create';\r\n }\r\n}\r\n\r\nexport function mapOperationKeyToAction(\r\n operationKey: string | null | undefined,\r\n): GovernanceRuleActionKey | null {\r\n switch (\r\n String(operationKey ?? '')\r\n .trim()\r\n .toLowerCase()\r\n ) {\r\n case 'create':\r\n return 'create';\r\n case 'update':\r\n return 'update';\r\n case 'delete':\r\n return 'delete';\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nfunction toNullableString(value: unknown): string | null {\r\n if (value === null || value === undefined) {\r\n return null;\r\n }\r\n\r\n const text = String(value).trim();\r\n return text ? text : null;\r\n}\r\n\r\nfunction toNullableNumber(value: unknown): number | null {\r\n if (value === null || value === undefined || value === '') {\r\n return null;\r\n }\r\n\r\n const numeric =\r\n typeof value === 'number'\r\n ? value\r\n : Number(String(value).replace(/[^\\d.-]/g, ''));\r\n return Number.isFinite(numeric) ? numeric : null;\r\n}\r\n\r\nfunction toStringArray(value: unknown): string[] {\r\n if (!Array.isArray(value)) {\r\n return [];\r\n }\r\n\r\n return value\r\n .map((item) => toNullableString(item))\r\n .filter((item): item is string => !!item);\r\n}\r\n\r\nfunction trimBilingualValue(\n value:\n | GovernanceRuleWizardFormValue['name']\n | GovernanceLegacyFormValue['name'],\n) {\n return {\r\n en: value.en.trim(),\r\n ar: value.ar.trim(),\r\n };\n}\n\nfunction normalizeKeySegment(value: string): string {\n return value\n .normalize('NFKD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '');\n}\n\nfunction resolveRuleKey(\n currentKey: unknown,\n name: GovernanceRuleWizardFormValue['name'] | GovernanceLegacyFormValue['name'],\n fallback: unknown,\n): string {\n const existingKey = toNullableString(currentKey);\n if (existingKey) {\n return existingKey;\n }\n\n const nameKey = normalizeKeySegment(name.en);\n if (nameKey) {\n return nameKey;\n }\n\n const fallbackKey = normalizeKeySegment(String(fallback ?? ''));\n return fallbackKey || 'governance-rule';\n}\n\nfunction buildRecipeConfiguration(\n formValue: GovernanceRuleWizardFormValue,\n): Record<string, unknown> | undefined {\n switch (formValue.recipeKey) {\r\n case 'require-module': {\r\n const requiredModuleKey = toNullableString(formValue.requiredModuleKey);\r\n if (!requiredModuleKey) {\r\n return undefined;\r\n }\r\n\r\n const minCount = toNullableNumber(formValue.countValue);\r\n return minCount && minCount > 1\r\n ? { requiredModuleKey, minCount }\r\n : { requiredModuleKey };\r\n }\r\n case 'prevent-module': {\r\n const moduleKey = toNullableString(formValue.blockedModuleKey);\r\n return moduleKey ? { moduleKey } : undefined;\r\n }\r\n case 'module-max-count': {\r\n const moduleKey = toNullableString(formValue.countedModuleKey);\r\n const maxCount = toNullableNumber(formValue.countValue);\r\n return moduleKey && maxCount !== null\r\n ? { moduleKey, maxCount }\r\n : undefined;\r\n }\r\n case 'module-min-count': {\r\n const moduleKey = toNullableString(formValue.countedModuleKey);\r\n const minCount = toNullableNumber(formValue.countValue);\r\n return moduleKey && minCount !== null\r\n ? { moduleKey, minCount }\r\n : undefined;\r\n }\r\n case 'phase-gate-completed': {\r\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\r\n return phaseGateSchemaId !== null ? { phaseGateSchemaId } : undefined;\r\n }\r\n case 'phase-gate-module-required': {\r\n const requiredModuleKey = toNullableString(formValue.requiredModuleKey);\r\n if (!requiredModuleKey) {\r\n return undefined;\r\n }\r\n\r\n const phaseGateSchemaId = toNullableNumber(formValue.phaseGateSchemaId);\r\n return phaseGateSchemaId !== null\r\n ? { requiredModuleKey, phaseGateSchemaId }\r\n : { requiredModuleKey };\r\n }\r\n case 'no-active-request': {\r\n const requestSchemaId = toNullableNumber(formValue.requestSchemaId);\r\n const blockingStatuses = toStringArray(formValue.blockingStatuses);\r\n const configuration: Record<string, unknown> = {};\r\n\r\n if (requestSchemaId !== null) {\r\n configuration['requestSchemaId'] = requestSchemaId;\r\n }\r\n\r\n if (blockingStatuses.length > 0) {\r\n configuration['blockingStatuses'] = blockingStatuses;\r\n }\r\n\r\n return Object.keys(configuration).length > 0 ? configuration : undefined;\r\n }\r\n case 'property-value': {\r\n const propertyKey = toNullableString(formValue.propertyKey);\r\n const operator = toNullableString(formValue.operator);\r\n const expectedValue = toNullableString(formValue.expectedValue);\r\n return propertyKey && operator && expectedValue !== null\r\n ? { propertyKey, operator, expectedValue }\r\n : undefined;\r\n }\r\n default:\r\n return undefined;\r\n }\r\n}\r\n\r\nexport function buildCreatePayload(\n formValue: GovernanceRuleWizardFormValue,\n ruleType: GovernanceRuleType,\n): CreateGovernanceRuleDto {\n const name = trimBilingualValue(formValue.name);\n const description = trimBilingualValue(formValue.description);\n const errorMessage = trimBilingualValue(formValue.errorMessage);\n const ruleTypeKey = readGovernanceRuleTypeKey(ruleType);\n\n return {\n key: resolveRuleKey(formValue.key, name, ruleTypeKey),\n name,\n description: description.en || description.ar ? description : undefined,\n errorMessage,\n ruleType: ruleTypeKey,\n targetScope: mapAppliesToToTargetScope(formValue.appliesTo),\n targetModuleKey:\n formValue.appliesTo === 'specific-module'\n ? (toNullableString(formValue.selectedModuleKey) ?? undefined)\r\n : undefined,\r\n targetOperationKey:\r\n formValue.actionKey !== null\r\n ? mapActionToOperationKey(formValue.actionKey)\r\n : undefined,\r\n configuration: buildRecipeConfiguration(formValue),\r\n priority: toNullableNumber(formValue.priority) ?? 10,\r\n stopOnFailure: formValue.stopOnFailure ?? true,\r\n };\r\n}\r\n\r\nexport function buildUpdatePayload(\r\n formValue: GovernanceRuleWizardFormValue,\r\n ruleType: GovernanceRuleType,\r\n): UpdateGovernanceRuleDto {\r\n return {\r\n ...buildCreatePayload(formValue, ruleType),\r\n isActive: formValue.isActive ?? true,\r\n };\r\n}\r\n\r\nexport function mapRuleToWizardFormValue(\r\n rule: GovernanceRule,\r\n): GovernanceRuleWizardFormValue | null {\r\n const recipeKey = resolveRecipeByRuleTypeKey(readGovernanceRuleKey(rule));\r\n if (!recipeKey) {\r\n return null;\r\n }\r\n\r\n const appliesTo = resolveAppliesTo(rule, recipeKey);\r\n const actionKey = mapOperationKeyToAction(rule.targetOperationKey);\r\n if (!actionKey) {\r\n return null;\r\n }\r\n\r\n const configuration = rule.configuration ?? {};\r\n const formValue: GovernanceRuleWizardFormValue = {\r\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\r\n key: rule.key ?? '',\r\n name: {\r\n en: rule.name?.en ?? '',\r\n ar: rule.name?.ar ?? '',\r\n },\r\n description: {\r\n en: rule.description?.en ?? '',\r\n ar: rule.description?.ar ?? '',\r\n },\r\n errorMessage: {\r\n en: rule.errorMessage?.en ?? '',\r\n ar: rule.errorMessage?.ar ?? '',\r\n },\r\n appliesTo,\r\n selectedModuleKey:\r\n appliesTo === 'specific-module'\r\n ? toNullableString(rule.targetModuleKey)\r\n : null,\r\n actionKey,\r\n recipeKey,\r\n priority: rule.priority ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.priority,\r\n stopOnFailure: rule.stopOnFailure ?? true,\r\n isActive: rule.isActive ?? true,\r\n requiredModuleKey: toNullableString(\r\n configuration['requiredModuleKey'] ?? configuration['moduleKey'],\r\n ),\r\n blockedModuleKey: toNullableString(configuration['moduleKey']),\r\n countedModuleKey: toNullableString(configuration['moduleKey']),\r\n countValue:\r\n toNullableNumber(\r\n configuration['maxCount'] ??\r\n configuration['minCount'] ??\r\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\r\n ) ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\r\n phaseGateSchemaId: toNullableString(configuration['phaseGateSchemaId']),\r\n requestSchemaId: toNullableString(configuration['requestSchemaId']),\r\n blockingStatuses: toStringArray(configuration['blockingStatuses']),\r\n propertyKey: toNullableString(\r\n configuration['propertyKey'] ?? configuration['fieldKey'],\r\n ),\r\n operator:\r\n toNullableString(configuration['operator']) ??\r\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE.operator,\r\n expectedValue:\r\n toNullableString(\r\n configuration['expectedValue'] ?? configuration['value'],\r\n ) ?? '',\r\n };\r\n\r\n if (recipeKey === 'prevent-module') {\r\n formValue.blockedModuleKey = toNullableString(configuration['moduleKey']);\r\n formValue.requiredModuleKey = null;\r\n }\r\n\r\n if (recipeKey === 'phase-gate-completed') {\r\n formValue.requiredModuleKey = null;\r\n }\r\n\r\n if (recipeKey === 'no-active-request') {\r\n formValue.requiredModuleKey = null;\r\n formValue.blockedModuleKey = null;\r\n formValue.countedModuleKey = null;\r\n }\r\n\r\n if (recipeKey === 'property-value') {\r\n formValue.requiredModuleKey = null;\r\n formValue.blockedModuleKey = null;\r\n formValue.countedModuleKey = null;\r\n }\r\n\r\n return formValue;\r\n}\r\n\r\nfunction resolveAppliesTo(\r\n rule: GovernanceRule,\r\n recipeKey: GovernanceRuleRecipeKey,\r\n): GovernanceRuleAppliesTo {\r\n const scope = String(rule.targetScope ?? '').trim();\r\n const targetModuleKey = String(rule.targetModuleKey ?? '').trim();\r\n\r\n if (scope === 'Level') {\r\n return 'level';\r\n }\r\n\r\n if (\r\n scope === 'PhaseGate' ||\r\n ((recipeKey === 'phase-gate-completed' ||\r\n recipeKey === 'phase-gate-module-required') &&\r\n targetModuleKey.toLowerCase() === 'phasegate')\r\n ) {\r\n return 'phase-gate';\r\n }\r\n\r\n return targetModuleKey ? 'specific-module' : 'any-module';\r\n}\r\n\r\nexport function mapRuleToLegacyFormValue(\r\n rule: GovernanceRule,\r\n): GovernanceLegacyFormValue {\r\n const formData: GovernanceLegacyFormValue = {\r\n key: rule.key,\r\n priority: rule.priority,\r\n name: {\r\n en: rule.name?.en ?? '',\r\n ar: rule.name?.ar ?? '',\r\n },\r\n description: {\r\n en: rule.description?.en ?? '',\r\n ar: rule.description?.ar ?? '',\r\n },\r\n errorMessage: {\r\n en: rule.errorMessage?.en ?? '',\r\n ar: rule.errorMessage?.ar ?? '',\r\n },\r\n ruleType: rule.ruleTypeKey,\r\n targetScope: rule.targetScope,\r\n targetModuleKey: rule.targetModuleKey ?? '',\r\n targetOperationKey: rule.targetOperationKey ?? '',\r\n stopOnFailure: rule.stopOnFailure,\r\n isActive: rule.isActive,\r\n };\r\n\r\n Object.entries(rule.configuration ?? {}).forEach(([key, value]) => {\r\n formData[`config_${key}`] = value;\r\n });\r\n\r\n return formData;\r\n}\r\n\r\nexport function packLegacyFormToCreateDto(\n formValue: GovernanceLegacyFormValue,\n): CreateGovernanceRuleDto {\n const name = trimBilingualValue(formValue.name);\n const description = trimBilingualValue(formValue.description);\n const errorMessage = trimBilingualValue(formValue.errorMessage);\n const ruleType = String(formValue.ruleType ?? '');\n\n return {\n key: resolveRuleKey(formValue.key, name, ruleType),\n name,\n description: description.en || description.ar ? description : undefined,\n errorMessage,\n ruleType,\n targetScope: String(formValue.targetScope ?? ''),\n targetModuleKey: String(formValue.targetModuleKey ?? '') || undefined,\n targetOperationKey: String(formValue.targetOperationKey ?? '') || undefined,\n configuration: extractLegacyConfiguration(formValue),\r\n priority: Number(formValue.priority ?? 0),\r\n stopOnFailure: Boolean(formValue.stopOnFailure ?? true),\r\n };\r\n}\r\n\r\nexport function packLegacyFormToUpdateDto(\r\n formValue: GovernanceLegacyFormValue,\r\n): UpdateGovernanceRuleDto {\r\n return {\r\n ...packLegacyFormToCreateDto(formValue),\r\n isActive: Boolean(formValue.isActive ?? true),\r\n };\r\n}\r\n\r\nfunction extractLegacyConfiguration(\r\n formValue: GovernanceLegacyFormValue,\r\n): Record<string, unknown> | undefined {\r\n const configuration: Record<string, unknown> = {};\r\n\r\n Object.entries(formValue).forEach(([key, value]) => {\r\n if (\r\n key.startsWith('config_') &&\r\n value !== null &&\r\n value !== undefined &&\r\n value !== ''\r\n ) {\r\n configuration[key.replace('config_', '')] = value;\r\n }\r\n });\r\n\r\n return Object.keys(configuration).length > 0 ? configuration : undefined;\r\n}\r\n","import {\r\n BaseFieldConfig,\r\n DateFieldConfig,\r\n DynamicFormConfig,\r\n MultiSelectFieldConfig,\r\n NumberFieldConfig,\r\n RadioCardsFieldConfig,\r\n SelectFieldConfig,\r\n TextareaFieldConfig,\r\n TextFieldConfig,\r\n ToggleFieldConfig,\r\n ValidatorConfig,\r\n} from '@masterteam/components';\r\nimport {\r\n ConfigurationFieldOption,\r\n ConfigurationFieldSchema,\r\n GovernanceRuleType,\r\n} from '../../../../store/governance';\r\nimport { GovernanceRuleRecipeKey } from './governance-rule-form.models';\r\nimport { GOVERNANCE_OPERATOR_OPTIONS } from './governance-rule-form.models';\r\n\r\ntype GovernanceTranslateFn = (\r\n key: string,\r\n params?: Record<string, string | number | null | undefined>,\r\n) => string;\r\n\r\nexport interface GovernanceWizardFormConfigContext {\r\n translate: GovernanceTranslateFn;\r\n isEdit: boolean;\r\n recipeKey: GovernanceRuleRecipeKey | null;\r\n appliesToOptions: { id: string; name: string }[];\r\n actionOptions: { id: string; name: string }[];\r\n recipeOptions: { id: string; name: string }[];\r\n moduleOptions: ConfigurationFieldOption[];\r\n requestSchemaOptions: ConfigurationFieldOption[];\r\n propertyOptions: ConfigurationFieldOption[];\r\n phaseGateOptions: ConfigurationFieldOption[];\r\n blockingStatuses: string[];\r\n}\r\n\r\nexport interface GovernanceLegacyFormConfigContext {\r\n translate: GovernanceTranslateFn;\r\n isEdit: boolean;\r\n langCode: 'en' | 'ar';\r\n selectedRuleType: GovernanceRuleType | null;\r\n ruleTypeOptions: ConfigurationFieldOption[];\r\n scopeOptions: ConfigurationFieldOption[];\r\n operationOptions: ConfigurationFieldOption[];\r\n moduleOptions: ConfigurationFieldOption[];\r\n requestSchemaOptions: ConfigurationFieldOption[];\r\n propertyOptions: ConfigurationFieldOption[];\r\n}\r\n\r\nexport function buildWizardFormConfig({\r\n translate,\r\n isEdit,\r\n recipeKey,\r\n appliesToOptions,\r\n actionOptions,\r\n recipeOptions,\r\n moduleOptions,\r\n requestSchemaOptions,\r\n propertyOptions,\r\n phaseGateOptions,\r\n blockingStatuses,\r\n}: GovernanceWizardFormConfigContext): DynamicFormConfig {\r\n const statusOptions = blockingStatuses.map((status) => ({\r\n label: status,\r\n value: status,\r\n }));\r\n const operatorOptions = GOVERNANCE_OPERATOR_OPTIONS.map((option) => ({\r\n label: translate(option.labelKey),\r\n value: option.value,\r\n }));\r\n const countLabel =\r\n recipeKey === 'module-min-count'\r\n ? translate('wizard.min-count-label')\r\n : translate('wizard.max-count-label');\r\n\r\n return {\r\n sections: [\r\n {\r\n key: 'basicInfo',\r\n type: 'header',\n label: translate('basic-information'),\n order: 1,\n fields: [\n new TextFieldConfig({\n key: 'name.en',\n label: translate('name-en'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 1,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.ar',\n label: translate('name-ar'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n order: 2,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.en',\n label: translate('description-en'),\n rows: 3,\n order: 3,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.ar',\n label: translate('description-ar'),\n rows: 3,\n order: 4,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.en',\n label: translate('error-message-en'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n rows: 3,\n order: 5,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.ar',\n label: translate('error-message-ar'),\n validators: [\n ValidatorConfig.required(translate('wizard.required-message')),\n ],\n rows: 3,\n order: 6,\n colSpan: 6,\n }),\n ],\n },\n {\r\n key: 'appliesTo',\r\n type: 'header',\r\n label: translate('wizard.where-question'),\r\n order: 2,\r\n fields: [\r\n new RadioCardsFieldConfig({\r\n key: 'appliesTo',\r\n options: appliesToOptions,\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 1,\r\n colSpan: 12,\r\n size: 'small',\r\n }),\r\n new SelectFieldConfig({\r\n key: 'selectedModuleKey',\r\n label: translate('wizard.specific-module-label'),\r\n placeholder: translate('wizard.select-placeholder'),\r\n options: moduleOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 2,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'appliesTo',\r\n value: 'specific-module',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n ],\r\n },\r\n {\r\n key: 'action',\r\n type: 'header',\r\n label: translate('wizard.when-question'),\r\n order: 3,\r\n fields: [\r\n new RadioCardsFieldConfig({\r\n key: 'actionKey',\r\n options: actionOptions,\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 1,\r\n colSpan: 12,\r\n size: 'small',\r\n }),\r\n ],\r\n },\r\n {\r\n key: 'recipe',\r\n type: 'header',\r\n label: translate('wizard.what-question'),\r\n order: 4,\r\n fields: [\r\n new RadioCardsFieldConfig({\r\n key: 'recipeKey',\r\n options: recipeOptions,\r\n optionLabel: 'name',\r\n optionValue: 'id',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 1,\r\n colSpan: 12,\r\n size: 'small',\r\n }),\r\n ],\r\n },\r\n {\r\n key: 'details',\r\n type: 'header',\r\n label: translate('wizard.details-question'),\r\n order: 5,\r\n fields: [\r\n new SelectFieldConfig({\r\n key: 'requiredModuleKey',\r\n label: translate('wizard.required-module-label'),\r\n placeholder: translate('wizard.select-placeholder'),\r\n options: moduleOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 1,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'require-module',\r\n action: 'show',\r\n },\r\n {\r\n key: 'recipeKey',\r\n value: 'phase-gate-module-required',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'blockedModuleKey',\r\n label: translate('wizard.blocked-module-label'),\r\n placeholder: translate('wizard.select-placeholder'),\r\n options: moduleOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 2,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'prevent-module',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'countedModuleKey',\r\n label: translate('wizard.counted-module-label'),\r\n placeholder: translate('wizard.select-placeholder'),\r\n options: moduleOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 3,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'module-max-count',\r\n action: 'show',\r\n },\r\n {\r\n key: 'recipeKey',\r\n value: 'module-min-count',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new NumberFieldConfig({\r\n key: 'countValue',\r\n label: countLabel,\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ValidatorConfig.min(1),\r\n ],\r\n min: 1,\r\n order: 4,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'module-max-count',\r\n action: 'show',\r\n },\r\n {\r\n key: 'recipeKey',\r\n value: 'module-min-count',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'phaseGateCompletedSchemaId',\r\n label: translate('wizard.phase-gate-required-label'),\r\n placeholder: translate('wizard.select-placeholder'),\r\n options: phaseGateOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 5,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'phase-gate-completed',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'phaseGateOptionalSchemaId',\r\n label: translate('wizard.phase-gate-optional-label'),\r\n placeholder: translate('wizard.select-placeholder'),\r\n options: phaseGateOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 6,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'phase-gate-module-required',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'requestSchemaId',\r\n label: translate('wizard.request-schema-label'),\r\n placeholder: translate('wizard.request-schema-hint'),\r\n options: requestSchemaOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 7,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'no-active-request',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new MultiSelectFieldConfig({\r\n key: 'blockingStatuses',\r\n label: translate('wizard.blocking-statuses-label'),\r\n placeholder: translate('wizard.select-placeholder'),\r\n options: statusOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 8,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'no-active-request',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'propertyKey',\r\n label: translate('wizard.property-label'),\r\n placeholder: translate('wizard.select-placeholder'),\r\n options: propertyOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 9,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'property-value',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'operator',\r\n label: translate('wizard.operator-label'),\r\n placeholder: translate('wizard.select-placeholder'),\r\n options: operatorOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 10,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'property-value',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new TextFieldConfig({\r\n key: 'expectedValue',\r\n label: translate('wizard.expected-value-label'),\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ],\r\n order: 11,\r\n colSpan: 12,\r\n relations: [\r\n {\r\n key: 'recipeKey',\r\n value: 'property-value',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n ],\r\n },\r\n {\r\n key: 'advanced',\r\n type: 'header',\r\n label: translate('execution-settings'),\r\n order: 6,\r\n fields: [\r\n new NumberFieldConfig({\r\n key: 'priority',\r\n label: translate('priority'),\r\n validators: [\r\n ValidatorConfig.required(translate('wizard.required-message')),\r\n ValidatorConfig.min(0),\r\n ],\r\n min: 0,\r\n max: 1000,\r\n order: 1,\r\n colSpan: 6,\r\n }),\r\n new ToggleFieldConfig({\r\n key: 'stopOnFailure',\r\n label: translate('stop-on-failure'),\r\n order: 2,\r\n colSpan: 12,\r\n }),\r\n new ToggleFieldConfig({\r\n key: 'isActive',\r\n label: translate('active-rule'),\r\n hidden: !isEdit,\r\n order: 3,\r\n colSpan: 12,\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n}\r\n\r\nexport function buildLegacyFormConfig({\r\n translate,\r\n isEdit,\r\n langCode,\r\n selectedRuleType,\r\n ruleTypeOptions,\r\n scopeOptions,\r\n operationOptions,\r\n moduleOptions,\r\n requestSchemaOptions,\r\n propertyOptions,\r\n}: GovernanceLegacyFormConfigContext): DynamicFormConfig {\r\n return {\r\n sections: [\r\n {\r\n key: 'basicInfo',\r\n type: 'header',\n label: translate('basic-information'),\n order: 1,\n fields: [\n new NumberFieldConfig({\n key: 'priority',\n label: translate('priority'),\n placeholder: '10',\n validators: [ValidatorConfig.required(), ValidatorConfig.min(0)],\n min: 0,\n max: 1000,\n order: 1,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.en',\n label: translate('name-en'),\n placeholder: translate('name-en-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 2,\n colSpan: 6,\n }),\n new TextFieldConfig({\n key: 'name.ar',\n label: translate('name-ar'),\n placeholder: translate('name-ar-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 3,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.en',\n label: translate('description-en'),\n placeholder: translate('description-en-placeholder'),\n order: 4,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'description.ar',\n label: translate('description-ar'),\n placeholder: translate('description-ar-placeholder'),\n order: 5,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.en',\n label: translate('error-message-en'),\n placeholder: translate('error-message-en-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 6,\n colSpan: 6,\n }),\n new TextareaFieldConfig({\n key: 'errorMessage.ar',\n label: translate('error-message-ar'),\n placeholder: translate('error-message-ar-placeholder'),\n validators: [ValidatorConfig.required()],\n order: 7,\n colSpan: 6,\n }),\n ],\n },\n {\r\n key: 'ruleTarget',\r\n type: 'header',\r\n label: translate('rule-target'),\r\n order: 2,\r\n fields: [\r\n new SelectFieldConfig({\r\n key: 'ruleType',\r\n label: translate('rule-type'),\r\n options: ruleTypeOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n colSpan: 6,\r\n readonly: isEdit,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetScope',\r\n label: translate('target-scope'),\r\n options: scopeOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators: [ValidatorConfig.required()],\r\n order: 2,\r\n colSpan: 6,\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetModuleKey',\r\n label: translate('target-module'),\r\n options: moduleOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 3,\r\n colSpan: 6,\r\n relations: [\r\n {\r\n key: 'targetScope',\r\n value: 'Module',\r\n action: 'show',\r\n },\r\n ],\r\n }),\r\n new SelectFieldConfig({\r\n key: 'targetOperationKey',\r\n label: translate('target-operation'),\r\n options: operationOptions,\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n order: 4,\r\n colSpan: 6,\r\n }),\r\n ],\r\n },\r\n ...(selectedRuleType\r\n ? [\r\n buildLegacyConfigurationSection({\r\n translate,\r\n ruleType: selectedRuleType,\r\n langCode,\r\n requestSchemaOptions,\r\n propertyOptions,\r\n }),\r\n ]\r\n : []),\r\n {\r\n key: 'executionSettings',\r\n type: 'header',\r\n label: translate('execution-settings'),\r\n order: 4,\r\n fields: [\r\n new ToggleFieldConfig({\r\n key: 'stopOnFailure',\r\n label: translate('stop-on-failure'),\r\n order: 1,\r\n colSpan: 12,\r\n }),\r\n new ToggleFieldConfig({\r\n key: 'isActive',\r\n label: translate('active-rule'),\r\n order: 2,\r\n colSpan: 12,\r\n }),\r\n ],\r\n },\r\n ],\r\n };\r\n}\r\n\r\ninterface GovernanceLegacyConfigurationSectionContext {\r\n translate: GovernanceTranslateFn;\r\n ruleType: GovernanceRuleType;\r\n langCode: 'en' | 'ar';\r\n requestSchemaOptions: ConfigurationFieldOption[];\r\n propertyOptions: ConfigurationFieldOption[];\r\n}\r\n\r\nfunction buildLegacyConfigurationSection({\r\n translate,\r\n ruleType,\r\n langCode,\r\n requestSchemaOptions,\r\n propertyOptions,\r\n}: GovernanceLegacyConfigurationSectionContext) {\r\n return {\r\n key: 'configuration',\r\n type: 'header' as const,\r\n label: translate('rule-configuration'),\r\n order: 3,\r\n fields: ruleType.configurationSchema.map((field, index) =>\r\n schemaFieldToFormField({\r\n field,\r\n order: index + 1,\r\n langCode,\r\n requestSchemaOptions,\r\n propertyOptions,\r\n }),\r\n ),\r\n };\r\n}\r\n\r\ninterface GovernanceSchemaFieldToFormFieldContext {\r\n field: ConfigurationFieldSchema;\r\n order: number;\r\n langCode: 'en' | 'ar';\r\n requestSchemaOptions: ConfigurationFieldOption[];\r\n propertyOptions: ConfigurationFieldOption[];\r\n}\r\n\r\nfunction schemaFieldToFormField({\r\n field,\r\n order,\r\n langCode,\r\n requestSchemaOptions,\r\n propertyOptions,\r\n}: GovernanceSchemaFieldToFormFieldContext): BaseFieldConfig {\r\n const label = field.label[langCode] || field.label.en;\r\n const colSpan = field.colSpan ?? 6;\r\n const validators = field.required ? [ValidatorConfig.required()] : [];\r\n\r\n switch (field.type) {\r\n case 'text':\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n case 'textarea':\r\n return new TextareaFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n case 'number':\r\n return new NumberFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n min: field.min,\r\n max: field.max,\r\n order,\r\n colSpan,\r\n });\r\n case 'select':\r\n return new SelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: getLegacyOptionsForField(\r\n field,\r\n requestSchemaOptions,\r\n propertyOptions,\r\n ),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n case 'multi-select':\r\n return new MultiSelectFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n options: getLegacyOptionsForField(\r\n field,\r\n requestSchemaOptions,\r\n propertyOptions,\r\n ),\r\n optionLabel: 'label',\r\n optionValue: 'value',\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n case 'checkbox':\r\n return new ToggleFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n order,\r\n colSpan,\r\n });\r\n case 'date':\r\n return new DateFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n default:\r\n return new TextFieldConfig({\r\n key: `config_${field.key}`,\r\n label,\r\n validators,\r\n order,\r\n colSpan,\r\n });\r\n }\r\n}\r\n\r\nfunction getLegacyOptionsForField(\r\n field: ConfigurationFieldSchema,\r\n requestSchemaOptions: ConfigurationFieldOption[],\r\n propertyOptions: ConfigurationFieldOption[],\r\n): ConfigurationFieldOption[] {\r\n switch (field.optionsSource) {\r\n case 'requestSchema':\r\n return requestSchemaOptions;\r\n case 'properties':\r\n return propertyOptions;\r\n case 'auto-populated':\r\n case 'static':\r\n default:\r\n return field.options ?? [];\r\n }\r\n}\r\n","import { ConfigurationFieldOption } from '../../../../store/governance';\r\nimport {\r\n GOVERNANCE_OPERATOR_OPTIONS,\r\n GovernanceRuleActionKey,\r\n GovernanceRuleAppliesTo,\r\n GovernanceRuleWizardFormValue,\r\n} from './governance-rule-form.models';\r\n\r\nexport interface GovernanceSummaryContext {\r\n value: GovernanceRuleWizardFormValue;\r\n moduleOptions: ConfigurationFieldOption[];\r\n requestSchemaOptions: ConfigurationFieldOption[];\r\n propertyOptions: ConfigurationFieldOption[];\r\n phaseGateOptions: ConfigurationFieldOption[];\r\n translate: (\r\n key: string,\r\n params?: Record<string, string | number | null | undefined>,\r\n ) => string;\r\n}\r\n\r\nexport function buildActionPrompt(\r\n appliesTo: GovernanceRuleAppliesTo,\r\n actionKey: GovernanceRuleActionKey,\r\n translate: GovernanceSummaryContext['translate'],\r\n): string {\r\n return translate('wizard.summary.action', {\r\n object: translate(`wizard.summary.objects.${appliesTo}`),\r\n action: translate(`wizard.summary.actions.${actionKey}`),\r\n });\r\n}\r\n\r\nexport function buildSummary({\r\n value,\r\n translate,\r\n ...context\r\n}: GovernanceSummaryContext): string {\r\n if (!value.actionKey || !value.recipeKey) {\r\n return translate('wizard.summary-empty');\r\n }\r\n\r\n return translate('wizard.summary.full', {\r\n action: buildActionPrompt(value.appliesTo, value.actionKey, translate),\r\n detail: resolveRecipeSummary({ value, translate, ...context }),\r\n });\r\n}\r\n\r\nfunction resolveRecipeSummary({\r\n value,\r\n moduleOptions,\r\n requestSchemaOptions,\r\n propertyOptions,\r\n phaseGateOptions,\r\n translate,\r\n}: GovernanceSummaryContext): string {\r\n switch (value.recipeKey) {\r\n case 'require-module': {\r\n const moduleLabel = findOptionLabel(\r\n moduleOptions,\r\n value.requiredModuleKey,\r\n );\r\n return translate('wizard.summary.require-module', {\r\n module:\r\n moduleLabel ??\r\n value.requiredModuleKey ??\r\n translate('wizard.summary.fallbacks.module'),\r\n });\r\n }\r\n case 'prevent-module': {\r\n const moduleLabel = findOptionLabel(\r\n moduleOptions,\r\n value.blockedModuleKey,\r\n );\r\n return translate('wizard.summary.prevent-module', {\r\n module:\r\n moduleLabel ??\r\n value.blockedModuleKey ??\r\n translate('wizard.summary.fallbacks.selected-module'),\r\n });\r\n }\r\n case 'module-max-count':\r\n return translate('wizard.summary.module-max-count', {\r\n count: value.countValue ?? 0,\r\n module:\r\n findOptionLabel(moduleOptions, value.countedModuleKey) ??\r\n value.countedModuleKey ??\r\n translate('wizard.summary.fallbacks.modules'),\r\n });\r\n case 'module-min-count':\r\n return translate('wizard.summary.module-min-count', {\r\n count: value.countValue ?? 0,\r\n module:\r\n findOptionLabel(moduleOptions, value.countedModuleKey) ??\r\n value.countedModuleKey ??\r\n translate('wizard.summary.fallbacks.modules'),\r\n });\r\n case 'phase-gate-completed': {\r\n const phaseGateLabel = findOptionLabel(\r\n phaseGateOptions,\r\n value.phaseGateSchemaId,\r\n );\r\n return translate('wizard.summary.phase-gate-completed', {\r\n phaseGate:\r\n phaseGateLabel ?? translate('wizard.summary.fallbacks.phase-gate'),\r\n });\r\n }\r\n case 'phase-gate-module-required': {\r\n const moduleLabel = findOptionLabel(\r\n moduleOptions,\r\n value.requiredModuleKey,\r\n );\r\n return translate('wizard.summary.phase-gate-module-required', {\r\n module:\r\n moduleLabel ??\r\n value.requiredModuleKey ??\r\n translate('wizard.summary.fallbacks.required-module'),\r\n });\r\n }\r\n case 'no-active-request': {\r\n const requestLabel = findOptionLabel(\r\n requestSchemaOptions,\r\n value.requestSchemaId,\r\n );\r\n return translate('wizard.summary.no-active-request', {\r\n request: requestLabel ?? translate('wizard.summary.fallbacks.request'),\r\n });\r\n }\r\n case 'property-value': {\r\n const propertyLabel =\r\n findOptionLabel(propertyOptions, value.propertyKey) ??\r\n value.propertyKey ??\r\n translate('wizard.summary.fallbacks.property');\r\n\r\n return translate('wizard.summary.property-value', {\r\n property: propertyLabel,\r\n operator: resolveOperatorText(value.operator, translate),\r\n expectedValue: value.expectedValue || '',\r\n }).trim();\r\n }\r\n default:\r\n return translate('wizard.summary-empty');\r\n }\r\n}\r\n\r\nfunction resolveOperatorText(\r\n operator: string | null,\r\n translate: GovernanceSummaryContext['translate'],\r\n): string {\r\n const option = GOVERNANCE_OPERATOR_OPTIONS.find(\r\n (item) => item.value === operator,\r\n );\r\n\r\n return option\r\n ? translate(option.labelKey).toLowerCase()\r\n : translate('wizard.summary.fallbacks.operator');\r\n}\r\n\r\nfunction findOptionLabel(\r\n options: ConfigurationFieldOption[],\r\n value: string | null,\r\n): string | null {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return options.find((option) => option.value === value)?.label ?? null;\r\n}\r\n","import { GovernanceRuleType } from '../../../../store/governance';\r\nimport {\r\n mapActionToOperationKey,\r\n mapAppliesToToTargetScope,\r\n} from './governance-rule-form.mapper';\r\nimport {\r\n DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\r\n GovernanceLegacyFormValue,\r\n GovernanceRuleActionKey,\r\n GovernanceRuleAppliesTo,\r\n GovernanceRuleRecipeDefinition,\r\n GovernanceRuleRecipeKey,\r\n GovernanceRuleWizardFormValue,\r\n readGovernanceRuleTypeKey,\r\n resolveRecipeDefinition,\r\n} from './governance-rule-form.models';\r\n\r\nexport type GovernanceRuleWizardFormState = GovernanceRuleWizardFormValue & {\r\n phaseGateCompletedSchemaId: string | null;\r\n phaseGateOptionalSchemaId: string | null;\r\n};\r\n\r\nexport const DEFAULT_WIZARD_FORM_STATE: GovernanceRuleWizardFormState = {\r\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE,\r\n phaseGateCompletedSchemaId: null,\r\n phaseGateOptionalSchemaId: null,\r\n};\r\n\r\nexport function mapWizardFormValueToState(\r\n value: GovernanceRuleWizardFormValue,\r\n): GovernanceRuleWizardFormState {\r\n return {\r\n ...DEFAULT_WIZARD_FORM_STATE,\r\n ...value,\r\n phaseGateCompletedSchemaId:\r\n value.recipeKey === 'phase-gate-completed'\r\n ? value.phaseGateSchemaId\r\n : null,\r\n phaseGateOptionalSchemaId:\r\n value.recipeKey === 'phase-gate-module-required'\r\n ? value.phaseGateSchemaId\r\n : null,\r\n };\r\n}\r\n\r\nexport function normalizeWizardFormState(\r\n value: Partial<GovernanceRuleWizardFormState> | null | undefined,\r\n): GovernanceRuleWizardFormState {\r\n return {\r\n ...DEFAULT_WIZARD_FORM_STATE,\r\n ...value,\r\n name: {\r\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.name,\r\n ...value?.name,\r\n },\r\n description: {\r\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.description,\r\n ...value?.description,\r\n },\r\n errorMessage: {\r\n ...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.errorMessage,\r\n ...value?.errorMessage,\r\n },\r\n selectedModuleKey: value?.selectedModuleKey ?? null,\r\n actionKey: value?.actionKey ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.actionKey,\r\n recipeKey: value?.recipeKey ?? null,\r\n requiredModuleKey: value?.requiredModuleKey ?? null,\r\n blockedModuleKey: value?.blockedModuleKey ?? null,\r\n countedModuleKey: value?.countedModuleKey ?? null,\r\n countValue:\r\n value?.countValue ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.countValue,\r\n phaseGateCompletedSchemaId: value?.phaseGateCompletedSchemaId ?? null,\r\n phaseGateOptionalSchemaId: value?.phaseGateOptionalSchemaId ?? null,\r\n phaseGateSchemaId: value?.phaseGateSchemaId ?? null,\r\n requestSchemaId: value?.requestSchemaId ?? null,\r\n blockingStatuses: Array.isArray(value?.blockingStatuses)\r\n ? value.blockingStatuses\r\n : [...DEFAULT_GOVERNANCE_RULE_FORM_VALUE.blockingStatuses],\r\n propertyKey: value?.propertyKey ?? null,\r\n operator: value?.operator ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.operator,\r\n expectedValue:\r\n value?.expectedValue ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.expectedValue,\r\n priority: value?.priority ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.priority,\r\n stopOnFailure:\r\n value?.stopOnFailure ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.stopOnFailure,\r\n isActive: value?.isActive ?? DEFAULT_GOVERNANCE_RULE_FORM_VALUE.isActive,\r\n };\r\n}\r\n\r\nexport function mapWizardStateToWizardValue(\r\n state: GovernanceRuleWizardFormState,\r\n): GovernanceRuleWizardFormValue {\r\n return {\r\n key: state.key,\r\n name: {\r\n en: state.name.en,\r\n ar: state.name.ar,\r\n },\r\n description: {\r\n en: state.description.en,\r\n ar: state.description.ar,\r\n },\r\n errorMessage: {\r\n en: state.errorMessage.en,\r\n ar: state.errorMessage.ar,\r\n },\r\n appliesTo: state.appliesTo,\r\n selectedModuleKey: state.selectedModuleKey,\r\n actionKey: state.actionKey,\r\n recipeKey: state.recipeKey,\r\n requiredModuleKey: state.requiredModuleKey,\r\n blockedModuleKey: state.blockedModuleKey,\r\n countedModuleKey: state.countedModuleKey,\r\n countValue: state.countValue,\r\n phaseGateSchemaId:\r\n state.phaseGateCompletedSchemaId ??\r\n state.phaseGateOptionalSchemaId ??\r\n null,\r\n requestSchemaId: state.requestSchemaId,\r\n blockingStatuses: [...state.blockingStatuses],\r\n propertyKey: state.propertyKey,\r\n operator: state.operator,\r\n expectedValue: state.expectedValue,\r\n priority: state.priority,\r\n stopOnFailure: state.stopOnFailure,\r\n isActive: state.isActive,\r\n };\r\n}\r\n\r\nexport function resolveRecipeDefinitionForRuleType(\r\n ruleType: GovernanceRuleType,\r\n): GovernanceRuleRecipeDefinition | null {\r\n return resolveRecipeDefinition(\r\n resolveRecipeDefinitionKeyForRuleType(ruleType),\r\n );\r\n}\r\n\r\nexport function resolveRecipeDefinitionKeyForRuleType(\r\n ruleType: GovernanceRuleType,\r\n): GovernanceRuleRecipeKey | null {\r\n switch (readGovernanceRuleTypeKey(ruleType)) {\r\n case 'ModuleExists':\r\n return 'require-module';\r\n case 'ModuleNotExists':\r\n case 'ModuleDoesNotExist':\r\n return 'prevent-module';\r\n case 'ModuleMaxCount':\r\n return 'module-max-count';\r\n case 'ModuleMinCount':\r\n return 'module-min-count';\r\n case 'PhaseGateCompleted':\r\n return 'phase-gate-completed';\r\n case 'PhaseGateModuleRequired':\r\n return 'phase-gate-module-required';\r\n case 'NoActiveRequest':\r\n return 'no-active-request';\r\n case 'PropertyValueEquals':\r\n case 'FieldValue':\r\n return 'property-value';\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\nexport function hasCompatibleRecipe(\r\n ruleTypes: GovernanceRuleType[],\r\n appliesTo: GovernanceRuleAppliesTo,\r\n actionKey: GovernanceRuleActionKey,\r\n): boolean {\r\n return ruleTypes.some((ruleType) =>\r\n !!resolveRecipeDefinitionForRuleType(ruleType) &&\r\n isRuleTypeCompatible(ruleType, appliesTo, actionKey),\r\n );\r\n}\r\n\r\nexport function isRuleTypeCompatible(\r\n ruleType: GovernanceRuleType,\r\n appliesTo: GovernanceRuleAppliesTo,\r\n actionKey: GovernanceRuleActionKey,\r\n): boolean {\r\n return (\r\n ruleType.supportedScopes.includes(mapAppliesToToTargetScope(appliesTo)) &&\r\n ruleType.supportedOperations.includes(mapActionToOperationKey(actionKey))\r\n );\r\n}\r\n\r\nexport function areWizardStatesEqual(\r\n current: GovernanceRuleWizardFormState,\r\n next: GovernanceRuleWizardFormState,\r\n): boolean {\r\n return (\r\n current.key === next.key &&\r\n current.name.en === next.name.en &&\r\n current.name.ar === next.name.ar &&\r\n current.description.en === next.description.en &&\r\n current.description.ar === next.description.ar &&\r\n current.errorMessage.en === next.errorMessage.en &&\r\n current.errorMessage.ar === next.errorMessage.ar &&\r\n current.appliesTo === next.appliesTo &&\r\n current.selectedModuleKey === next.selectedModuleKey &&\r\n current.actionKey === next.actionKey &&\r\n current.recipeKey === next.recipeKey &&\r\n current.requiredModuleKey === next.requiredModuleKey &&\r\n current.blockedModuleKey === next.blockedModuleKey &&\r\n current.countedModuleKey === next.countedModuleKey &&\r\n current.countValue === next.countValue &&\r\n current.phaseGateCompletedSchemaId === next.phaseGateCompletedSchemaId &&\r\n current.phaseGateOptionalSchemaId === next.phaseGateOptionalSchemaId &&\r\n current.phaseGateSchemaId === next.phaseGateSchemaId &&\r\n current.requestSchemaId === next.requestSchemaId &&\r\n current.propertyKey === next.propertyKey &&\r\n current.operator === next.operator &&\r\n current.expectedValue === next.expectedValue &&\r\n current.priority === next.priority &&\r\n current.stopOnFailure === next.stopOnFailure &&\r\n current.isActive === next.isActive &&\r\n areStringArraysEqual(current.blockingStatuses, next.blockingStatuses)\r\n );\r\n}\r\n\r\nexport function areLegacyFormValuesEqual(\r\n current: GovernanceLegacyFormValue | null,\r\n next: GovernanceLegacyFormValue | null,\r\n): boolean {\r\n if (current === next) {\r\n return true;\r\n }\r\n\r\n if (!current || !next) {\r\n return current === next;\r\n }\r\n\r\n if (\r\n current.key !== next.key ||\r\n current.priority !== next.priority ||\r\n current.name.en !== next.name.en ||\r\n current.name.ar !== next.name.ar ||\r\n current.description.en !== next.description.en ||\r\n current.description.ar !== next.description.ar ||\r\n current.errorMessage.en !== next.errorMessage.en ||\r\n current.errorMessage.ar !== next.errorMessage.ar ||\r\n current.ruleType !== next.ruleType ||\r\n current.targetScope !== next.targetScope ||\r\n current.targetModuleKey !== next.targetModuleKey ||\r\n current.targetOperationKey !== next.targetOperationKey ||\r\n current.stopOnFailure !== next.stopOnFailure ||\r\n current.isActive !== next.isActive\r\n ) {\r\n return false;\r\n }\r\n\r\n const currentKeys = Object.keys(current);\r\n const nextKeys = Object.keys(next);\r\n\r\n if (currentKeys.length !== nextKeys.length) {\r\n return false;\r\n }\r\n\r\n return currentKeys.every((key) => {\r\n if (\r\n key === 'key' ||\r\n key === 'priority' ||\r\n key === 'name' ||\r\n key === 'description' ||\r\n key === 'errorMessage' ||\r\n key === 'ruleType' ||\r\n key === 'targetScope' ||\r\n key === 'targetModuleKey' ||\r\n key === 'targetOperationKey' ||\r\n key === 'stopOnFailure' ||\r\n key === 'isActive'\r\n ) {\r\n return true;\r\n }\r\n\r\n const currentValue = current[key];\r\n const nextValue = next[key];\r\n\r\n if (Array.isArray(currentValue) || Array.isArray(nextValue)) {\r\n return (\r\n Array.isArray(currentValue) &&\r\n Array.isArray(nextValue) &&\r\n areUnknownArraysEqual(currentValue, nextValue)\r\n );\r\n }\r\n\r\n return currentValue === nextValue;\r\n });\r\n}\r\n\r\nfunction areStringArraysEqual(current: string[], next: string[]): boolean {\r\n if (current.length !== next.length) {\r\n return false;\r\n }\r\n\r\n return current.every((value, index) => value === next[index]);\r\n}\r\n\r\nfunction areUnknownArraysEqual(current: unknown[], next: unknown[]): boolean {\r\n if (current.length !== next.length) {\r\n return false;\r\n }\r\n\r\n return current.every((value, index) => value === next[index]);\r\n}\r\n","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n OnInit,\r\n untracked,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { toSignal } from '@angular/core/rxjs-interop';\r\nimport { map } from 'rxjs';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { ModalRef } from '@masterteam/components/dialog';\r\nimport { DynamicFormConfig } from '@masterteam/components';\r\nimport { ToastService } from '@masterteam/components/toast';\r\nimport {\r\n ConfigurationFieldOption,\r\n CreateGovernanceRuleDto,\r\n GovernanceFacade,\r\n GovernanceRule,\r\n UpdateGovernanceRuleDto,\r\n} from '../../../store/governance';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport {\r\n buildCreatePayload,\r\n buildUpdatePayload,\r\n mapRuleToLegacyFormValue,\r\n mapRuleToWizardFormValue,\r\n packLegacyFormToCreateDto,\r\n packLegacyFormToUpdateDto,\r\n} from './internal/governance-rule-form.mapper';\r\nimport {\r\n buildLegacyFormConfig,\r\n buildWizardFormConfig,\r\n} from './internal/governance-rule-form.config';\r\nimport {\r\n DEFAULT_BLOCKING_STATUSES,\r\n findConfigurationSchemaField,\r\n findRuleTypeByRecipe,\r\n GOVERNANCE_ACTION_OPTIONS,\r\n GOVERNANCE_APPLIES_TO_OPTIONS,\r\n GovernanceLegacyFormValue,\r\n GovernanceRuleRecipeDefinition,\r\n GovernanceRuleWizardFormValue,\r\n readGovernanceRuleTypeKey,\r\n} from './internal/governance-rule-form.models';\r\nimport {\r\n buildActionPrompt,\r\n buildSummary,\r\n} from './internal/governance-rule-form.summary';\r\nimport {\r\n areLegacyFormValuesEqual,\r\n areWizardStatesEqual,\r\n DEFAULT_WIZARD_FORM_STATE,\r\n GovernanceRuleWizardFormState,\r\n hasCompatibleRecipe,\r\n isRuleTypeCompatible,\r\n mapWizardFormValueToState,\r\n mapWizardStateToWizardValue,\r\n normalizeWizardFormState,\r\n resolveRecipeDefinitionForRuleType,\r\n} from './internal/governance-rule-form.utils';\r\n\r\n@Component({\r\n selector: 'mt-governance-rule-form',\r\n templateUrl: './governance-rule-form.html',\r\n styleUrls: ['./governance-rule-form.css'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n SkeletonModule,\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n ],\r\n host: {\r\n class: 'block h-full',\r\n },\r\n})\r\nexport default class GovernanceRuleForm implements OnInit {\r\n readonly modal = inject(ModalService);\r\n readonly ref: ModalRef = inject(ModalRef);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly facade = inject(GovernanceFacade);\r\n private readonly toast = inject(ToastService);\r\n\r\n readonly ruleForEdit = input<GovernanceRule | null>(null);\r\n readonly dynamicFormRef = viewChild(DynamicForm);\r\n\r\n readonly selectedRule = this.facade.selectedRule;\r\n readonly ruleTypes = this.facade.ruleTypes;\r\n readonly isLoadingRule = this.facade.isLoadingRule;\r\n readonly isLoadingRuleTypes = this.facade.isLoadingRuleTypes;\r\n readonly isAddingRule = this.facade.isAddingRule;\r\n readonly isUpdatingRule = this.facade.isUpdatingRule;\r\n readonly modules = this.facade.modules;\r\n readonly requestSchemas = this.facade.requestSchemas;\r\n readonly properties = this.facade.properties;\r\n\r\n readonly wizardFormControl = new FormControl<GovernanceRuleWizardFormState>(\r\n DEFAULT_WIZARD_FORM_STATE,\r\n { nonNullable: true },\r\n );\r\n\r\n readonly legacyFormControl =\r\n new FormControl<GovernanceLegacyFormValue | null>(null);\r\n\r\n private readonly wizardStateRaw = toSignal(\r\n this.wizardFormControl.valueChanges.pipe(\r\n map((value) => value ?? DEFAULT_WIZARD_FORM_STATE),\r\n ),\r\n { initialValue: this.wizardFormControl.value },\r\n );\r\n\r\n private readonly legacyFormValue = toSignal(\r\n this.legacyFormControl.valueChanges.pipe(\r\n map(() => this.legacyFormControl.value),\r\n ),\r\n { initialValue: this.legacyFormControl.value },\r\n );\r\n\r\n private readonly activeLang = toSignal(this.translocoService.langChanges$, {\r\n initialValue: this.translocoService.getActiveLang(),\r\n });\r\n\r\n readonly langCode = computed<'en' | 'ar'>(() =>\r\n this.activeLang() === 'ar' ? 'ar' : 'en',\r\n );\r\n\r\n readonly isEditMode = computed(() => !!this.ruleForEdit()?.id);\r\n readonly wizardState = computed(() =>\r\n normalizeWizardFormState(this.wizardStateRaw()),\r\n );\r\n readonly wizardValue = computed<GovernanceRuleWizardFormValue>(() =>\r\n mapWizardStateToWizardValue(this.wizardState()),\r\n );\r\n\r\n readonly moduleOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.langCode();\r\n return this.modules().map((module) => ({\r\n label: module.name[lang] || module.name.en,\r\n value: module.key,\r\n }));\r\n });\r\n\r\n readonly requestSchemaOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.langCode();\r\n return this.requestSchemas().map((schema) => ({\r\n label: schema.name[lang] || schema.name.en,\r\n value: String(schema.id),\r\n }));\r\n });\r\n\r\n readonly propertyOptions = computed<ConfigurationFieldOption[]>(() => {\r\n const lang = this.langCode();\r\n return this.properties().map((property) => ({\r\n label: property.name[lang] || property.name.en,\r\n value: property.key,\r\n }));\r\n });\r\n\r\n readonly appliesToCardOptions = computed(() =>\r\n GOVERNANCE_APPLIES_TO_OPTIONS.map((option) => ({\r\n id: option.value,\r\n name: this.translate(option.labelKey),\r\n })),\r\n );\r\n\r\n readonly availableActionOptions = computed(() => {\r\n return GOVERNANCE_ACTION_OPTIONS.filter((option) =>\r\n hasCompatibleRecipe(\r\n this.ruleTypes(),\r\n this.wizardValue().appliesTo,\r\n option.value,\r\n ),\r\n );\r\n });\r\n\r\n readonly actionCardOptions = computed(() =>\r\n this.availableActionOptions().map((option) => ({\r\n id: option.value,\r\n name: buildActionPrompt(\r\n this.wizardValue().appliesTo,\r\n option.value,\r\n this.translate.bind(this),\r\n ),\r\n })),\r\n );\r\n\r\n readonly availableRecipeDefinitions = computed(() => {\r\n const actionKey = this.wizardValue().actionKey;\r\n if (!actionKey) {\r\n return [];\r\n }\r\n\r\n return this.ruleTypes()\r\n .map((ruleType) => {\r\n const recipe = resolveRecipeDefinitionForRuleType(ruleType);\r\n if (!recipe) {\r\n return null;\r\n }\r\n\r\n return isRuleTypeCompatible(\r\n ruleType,\r\n this.wizardValue().appliesTo,\r\n actionKey,\r\n )\r\n ? recipe\r\n : null;\r\n })\r\n .filter(\r\n (recipe, index, items): recipe is GovernanceRuleRecipeDefinition =>\r\n !!recipe &&\r\n items.findIndex((item) => item?.key === recipe.key) === index,\r\n );\r\n });\r\n\r\n readonly recipeCardOptions = computed(() =>\r\n this.availableRecipeDefinitions().map((recipe) => ({\r\n id: recipe.key,\r\n name: this.translate(recipe.labelKey),\r\n })),\r\n );\r\n\r\n readonly selectedRuleType = computed(() =>\r\n findRuleTypeByRecipe(this.ruleTypes(), this.wizardValue().recipeKey),\r\n );\r\n\r\n readonly useLegacyEditor = computed(() => {\r\n if (!this.ruleForEdit()?.id) {\r\n return false;\r\n }\r\n\r\n const rule = this.selectedRule();\r\n return !!rule && !mapRuleToWizardFormValue(rule);\r\n });\r\n\r\n readonly isInitializing = computed(() => {\r\n if (this.ruleForEdit()?.id && this.isLoadingRule()) {\r\n return true;\r\n }\r\n\r\n return this.ruleTypes().length === 0 && this.isLoadingRuleTypes();\r\n });\r\n\r\n readonly noRecipesAvailable = computed(\r\n () =>\r\n !this.useLegacyEditor() &&\r\n !!this.wizardValue().actionKey &&\r\n this.recipeCardOptions().length === 0,\r\n );\r\n readonly hasReviewSummary = computed(() => {\r\n if (this.useLegacyEditor()) {\r\n return false;\r\n }\r\n\r\n const value = this.wizardValue();\r\n return !!value.actionKey && !!value.recipeKey;\r\n });\r\n\r\n readonly canSubmit = computed(() => {\r\n if (this.useLegacyEditor()) {\r\n return this.legacyFormControl.valid;\r\n }\r\n\r\n return (\r\n this.wizardFormControl.valid &&\r\n !!this.selectedRuleType() &&\r\n !!this.wizardValue().actionKey &&\r\n !!this.wizardValue().recipeKey\r\n );\r\n });\r\n\r\n readonly reviewSummary = computed(() =>\r\n buildSummary({\r\n value: this.wizardValue(),\r\n moduleOptions: this.moduleOptions(),\r\n requestSchemaOptions: this.requestSchemaOptions(),\r\n propertyOptions: this.propertyOptions(),\r\n phaseGateOptions: this.getPhaseGateOptions(),\r\n translate: this.translate.bind(this),\r\n }),\r\n );\r\n readonly wizardFormConfig = computed<DynamicFormConfig>(() =>\r\n buildWizardFormConfig({\r\n translate: this.translate.bind(this),\r\n isEdit: this.isEditMode(),\r\n recipeKey: this.wizardValue().recipeKey,\r\n appliesToOptions: this.appliesToCardOptions(),\r\n actionOptions: this.actionCardOptions(),\r\n recipeOptions: this.recipeCardOptions(),\r\n moduleOptions: this.moduleOptions(),\r\n requestSchemaOptions: this.requestSchemaOptions(),\r\n propertyOptions: this.propertyOptions(),\r\n phaseGateOptions: this.getPhaseGateOptions(),\r\n blockingStatuses: this.getBlockingStatusOptions(),\r\n }),\r\n );\r\n\r\n readonly selectedLegacyRuleType = computed(() => {\r\n const ruleTypeKey = String(this.legacyFormValue()?.ruleType ?? '').trim();\r\n if (!ruleTypeKey) {\r\n return null;\r\n }\r\n\r\n return (\r\n this.ruleTypes().find((ruleType) => {\r\n const catalogKey = readGovernanceRuleTypeKey(ruleType);\r\n return (\r\n catalogKey === ruleTypeKey || String(ruleType.type) === ruleTypeKey\r\n );\r\n }) ?? null\r\n );\r\n });\r\n\r\n readonly scopeOptions = computed(() => {\r\n const ruleType = this.selectedLegacyRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: this.translateScopeLabel('Level'), value: 'Level' },\r\n { label: this.translateScopeLabel('Module'), value: 'Module' },\r\n { label: this.translateScopeLabel('PhaseGate'), value: 'PhaseGate' },\r\n ];\r\n }\r\n\r\n return ruleType.supportedScopes.map((scope) => ({\r\n label: this.translateScopeLabel(scope),\r\n value: scope,\r\n }));\r\n });\r\n\r\n readonly operationOptions = computed(() => {\r\n const ruleType = this.selectedLegacyRuleType();\r\n if (!ruleType) {\r\n return [\r\n { label: this.translate('all'), value: '' },\r\n { label: this.translateOperationLabel('Create'), value: 'Create' },\r\n { label: this.translateOperationLabel('Update'), value: 'Update' },\r\n { label: this.translateOperationLabel('Delete'), value: 'Delete' },\r\n ];\r\n }\r\n\r\n return [\r\n { label: this.translate('all'), value: '' },\r\n ...ruleType.supportedOperations.map((operation) => ({\r\n label: this.translateOperationLabel(operation),\r\n value: operation,\r\n })),\r\n ];\r\n });\r\n\r\n readonly legacyFormConfig = computed<DynamicFormConfig>(() =>\r\n buildLegacyFormConfig({\r\n translate: this.translate.bind(this),\r\n isEdit: this.isEditMode(),\r\n langCode: this.langCode(),\r\n selectedRuleType: this.selectedLegacyRuleType(),\r\n ruleTypeOptions: this.ruleTypeOptions(),\r\n scopeOptions: this.scopeOptions(),\r\n operationOptions: this.operationOptions(),\r\n moduleOptions: this.moduleOptions(),\r\n requestSchemaOptions: this.requestSchemaOptions(),\r\n propertyOptions: this.propertyOptions(),\r\n }),\r\n );\r\n\r\n constructor() {\r\n effect(() => {\r\n if (\r\n this.wizardValue().appliesTo !== 'specific-module' &&\r\n this.wizardValue().selectedModuleKey\r\n ) {\r\n this.patchWizardState({ selectedModuleKey: null });\r\n }\r\n });\r\n\r\n effect(() => {\r\n const currentAction = this.wizardValue().actionKey;\r\n if (\r\n !currentAction ||\r\n this.availableActionOptions().some(\r\n (option) => option.value === currentAction,\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n this.patchWizardState({ actionKey: null, recipeKey: null });\r\n });\r\n\r\n effect(() => {\r\n const currentRecipe = this.wizardValue().recipeKey;\r\n if (\r\n !currentRecipe ||\r\n this.availableRecipeDefinitions().some(\r\n (definition) => definition.key === currentRecipe,\r\n )\r\n ) {\r\n return;\r\n }\r\n\r\n this.patchWizardState({ recipeKey: null });\r\n });\r\n\r\n effect(() => {\r\n const editing = !!this.ruleForEdit()?.id;\r\n\r\n if (!editing) {\r\n this.resetWizardForm();\r\n if (this.legacyFormControl.value !== null) {\r\n this.legacyFormControl.reset(null);\r\n }\r\n return;\r\n }\r\n\r\n const rule = this.selectedRule();\r\n if (!rule) {\r\n return;\r\n }\r\n\r\n const wizardValue = mapRuleToWizardFormValue(rule);\r\n if (wizardValue) {\r\n this.setWizardState(mapWizardFormValueToState(wizardValue));\r\n if (this.legacyFormControl.value !== null) {\r\n this.legacyFormControl.reset(null);\r\n }\r\n return;\r\n }\r\n\r\n this.resetWizardForm();\r\n const nextLegacyValue = mapRuleToLegacyFormValue(rule);\r\n if (\r\n !areLegacyFormValuesEqual(this.legacyFormControl.value, nextLegacyValue)\r\n ) {\r\n this.legacyFormControl.setValue(nextLegacyValue);\r\n }\r\n });\r\n\r\n effect(() => {\r\n const recipeKey = this.wizardValue().recipeKey;\r\n const appliesTo = this.wizardValue().appliesTo;\r\n const targetModuleKey =\r\n appliesTo === 'specific-module'\r\n ? (this.wizardValue().selectedModuleKey ?? undefined)\r\n : undefined;\r\n const targetScope =\r\n appliesTo === 'level'\r\n ? 'Level'\r\n : appliesTo === 'phase-gate'\r\n ? 'PhaseGate'\r\n : 'Module';\r\n const needsRequestSchemas = recipeKey === 'no-active-request';\r\n const needsProperties = recipeKey === 'property-value';\r\n\r\n if (!needsRequestSchemas && !needsProperties) {\r\n this.clearReferenceData();\r\n return;\r\n }\r\n\r\n if (\r\n targetScope === 'Module' &&\r\n appliesTo === 'specific-module' &&\r\n !targetModuleKey\r\n ) {\r\n this.clearReferenceData();\r\n return;\r\n }\r\n\r\n if (needsRequestSchemas) {\r\n this.facade.getRequestSchemas(targetScope, targetModuleKey);\r\n }\r\n\r\n if (needsProperties) {\r\n this.facade.getProperties(targetScope, targetModuleKey);\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (!this.ruleTypes().length) {\r\n this.facade.getRuleTypes();\r\n }\r\n\r\n if (!this.modules().length) {\r\n this.facade.getModules();\r\n }\r\n\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (ruleId) {\r\n this.facade.getRule(ruleId);\r\n }\r\n }\r\n\r\n onSubmit(): void {\r\n this.dynamicFormRef()?.form.markAllAsTouched();\r\n\r\n if (this.useLegacyEditor()) {\r\n if (!this.legacyFormControl.valid) {\r\n this.toast.warn(\r\n this.translate('wizard.complete-required-fields'),\r\n this.translate('warning'),\r\n );\r\n return;\r\n }\r\n\r\n this.submitLegacyForm();\r\n return;\r\n }\r\n\r\n if (!this.wizardValue().actionKey || !this.wizardValue().recipeKey) {\r\n this.toast.warn(\r\n this.translate('wizard.summary-empty'),\r\n this.translate('warning'),\r\n );\r\n return;\r\n }\r\n\r\n if (!this.canSubmit()) {\r\n this.toast.warn(\r\n this.translate('wizard.complete-required-fields'),\r\n this.translate('warning'),\r\n );\r\n return;\r\n }\r\n\r\n const ruleType = this.selectedRuleType();\r\n if (!ruleType) {\r\n return;\r\n }\r\n\r\n const ruleId = this.ruleForEdit()?.id;\r\n const payloadValue = this.wizardValue();\r\n\r\n if (ruleId) {\r\n this.saveUpdate(ruleId, buildUpdatePayload(payloadValue, ruleType));\r\n return;\r\n }\r\n\r\n this.saveCreate(buildCreatePayload(payloadValue, ruleType));\r\n }\r\n\r\n getPhaseGateOptions(): ConfigurationFieldOption[] {\r\n return (\r\n findConfigurationSchemaField(this.selectedRuleType(), 'phaseGateSchemaId')\r\n ?.options ?? []\r\n );\r\n }\r\n\r\n getBlockingStatusOptions(): string[] {\r\n const field = findConfigurationSchemaField(\r\n this.selectedRuleType(),\r\n 'blockingStatuses',\r\n );\r\n\r\n if (field?.options?.length) {\r\n return field.options.map((option) => option.value);\r\n }\r\n\r\n return [...DEFAULT_BLOCKING_STATUSES];\r\n }\r\n\r\n private translate(\r\n key: string,\r\n params?: Record<string, string | number | null | undefined>,\r\n ): string {\r\n const lang = this.activeLang();\r\n return this.translocoService.translate(`governance.${key}`, params, lang);\r\n }\r\n\r\n private translateScopeLabel(scope: string): string {\r\n switch (scope) {\r\n case 'Level':\r\n return this.translate('scope-level');\r\n case 'Module':\r\n return this.translate('scope-module');\r\n case 'PhaseGate':\r\n return this.translate('scope-phase-gate');\r\n default:\r\n return scope;\r\n }\r\n }\r\n\r\n private translateOperationLabel(operation: string): string {\r\n switch (operation) {\r\n case 'Create':\r\n return this.translate('create');\r\n case 'Update':\r\n return this.translate('update');\r\n case 'Delete':\r\n return this.translate('delete');\r\n default:\r\n return operation;\r\n }\r\n }\r\n\r\n private patchWizardState(\r\n patch: Partial<GovernanceRuleWizardFormState>,\r\n ): void {\r\n const currentState = normalizeWizardFormState(\r\n this.wizardFormControl.getRawValue(),\r\n );\r\n const nextState = normalizeWizardFormState({\r\n ...currentState,\r\n ...patch,\r\n });\r\n\r\n if (areWizardStatesEqual(currentState, nextState)) {\r\n return;\r\n }\r\n\r\n this.wizardFormControl.setValue(nextState);\r\n }\r\n\r\n private setWizardState(state: GovernanceRuleWizardFormState): void {\r\n const currentState = normalizeWizardFormState(\r\n this.wizardFormControl.getRawValue(),\r\n );\r\n const nextState = normalizeWizardFormState(state);\r\n if (areWizardStatesEqual(currentState, nextState)) {\r\n return;\r\n }\r\n\r\n this.wizardFormControl.setValue(nextState);\r\n }\r\n\r\n private resetWizardForm(): void {\r\n this.setWizardState(DEFAULT_WIZARD_FORM_STATE);\r\n }\r\n\r\n private clearReferenceData(): void {\r\n const hasRequestSchemas = untracked(() => this.requestSchemas().length > 0);\r\n const hasProperties = untracked(() => this.properties().length > 0);\r\n\r\n if (hasRequestSchemas) {\r\n this.facade.clearRequestSchemas();\r\n }\r\n\r\n if (hasProperties) {\r\n this.facade.clearProperties();\r\n }\r\n }\r\n\r\n private saveCreate(payload: CreateGovernanceRuleDto): void {\r\n this.facade.addRule(payload).subscribe({\r\n next: () => this.ref.close(true),\r\n error: () => {},\r\n });\r\n }\r\n\r\n private saveUpdate(id: number, payload: UpdateGovernanceRuleDto): void {\r\n this.facade.updateRule(id, payload).subscribe({\r\n next: () => this.ref.close(true),\r\n error: () => {},\r\n });\r\n }\r\n\r\n private submitLegacyForm(): void {\r\n if (!this.legacyFormControl.valid) {\r\n return;\r\n }\r\n\r\n const formValue = this.legacyFormControl.value;\r\n if (!formValue) {\r\n return;\r\n }\r\n\r\n const ruleId = this.ruleForEdit()?.id;\r\n if (ruleId) {\r\n this.saveUpdate(ruleId, packLegacyFormToUpdateDto(formValue));\r\n return;\r\n }\r\n\r\n this.saveCreate(packLegacyFormToCreateDto(formValue));\r\n }\r\n\r\n private ruleTypeOptions(): ConfigurationFieldOption[] {\r\n const lang = this.langCode();\r\n return this.ruleTypes().map((ruleType) => ({\r\n label: ruleType.name[lang] || ruleType.name.en,\r\n value: readGovernanceRuleTypeKey(ruleType),\r\n }));\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div\r\n [class]=\"\r\n 'governance-rule-form-content flex min-h-0 flex-1 flex-col gap-4 overflow-y-auto p-4 sm:p-5 ' +\r\n modal.contentClass\r\n \"\r\n >\r\n @if (isInitializing()) {\r\n <div class=\"space-y-4\">\r\n <p-skeleton height=\"4rem\" />\r\n <p-skeleton height=\"12rem\" />\r\n <p-skeleton height=\"12rem\" />\r\n </div>\r\n } @else if (useLegacyEditor()) {\r\n <section class=\"rounded-2xl border border-amber-200 bg-amber-50/70 p-4\">\r\n <p class=\"m-0 text-sm font-semibold text-slate-900\">\r\n {{ t(\"wizard.legacy-title\") }}\r\n </p>\r\n <p class=\"mt-1 mb-0 text-sm leading-6 text-slate-600\">\r\n {{ t(\"wizard.legacy-description\") }}\r\n </p>\r\n </section>\r\n\r\n <mt-dynamic-form\r\n [formConfig]=\"legacyFormConfig()\"\r\n [formControl]=\"legacyFormControl\"\r\n />\r\n } @else {\r\n @if (noRecipesAvailable()) {\r\n <section\r\n class=\"rounded-2xl border border-orange-200 bg-orange-50/80 p-4\"\r\n >\r\n <p class=\"m-0 text-sm font-semibold text-slate-900\">\r\n {{ t(\"wizard.no-recipes-title\") }}\r\n </p>\r\n <p class=\"mt-1 mb-0 text-sm leading-6 text-slate-600\">\r\n {{ t(\"wizard.no-recipes-description\") }}\r\n </p>\r\n </section>\r\n }\r\n\r\n <mt-dynamic-form\r\n [formConfig]=\"wizardFormConfig()\"\r\n [formControl]=\"wizardFormControl\"\r\n />\r\n\r\n @if (hasReviewSummary()) {\r\n <section class=\"rounded-2xl border border-slate-900 bg-slate-900 p-4\">\r\n <p\r\n class=\"m-0 text-xs font-semibold uppercase tracking-[0.18em] text-white/70\"\r\n >\r\n {{ t(\"wizard.summary-title\") }}\r\n </p>\r\n <p class=\"mt-2 mb-0 text-sm leading-6 text-white\">\r\n {{ reviewSummary() }}\r\n </p>\r\n </section>\r\n }\r\n }\r\n </div>\r\n\r\n <div\r\n [class]=\"\r\n 'governance-rule-form-footer ' +\r\n modal.footerClass +\r\n ' flex-col gap-2 sm:flex-row sm:items-center sm:justify-end'\r\n \"\r\n >\r\n <mt-button\n severity=\"secondary\"\n [label]=\"'cancel' | transloco\"\n (click)=\"ref.close()\"\n styleClass=\"w-full sm:w-auto\"\n />\n\r\n <mt-button\r\n [label]=\"ruleForEdit() ? t('update') : t('create')\"\r\n [loading]=\"isAddingRule() || isUpdatingRule()\"\r\n [disabled]=\"isAddingRule() || isUpdatingRule()\"\r\n (click)=\"onSubmit()\"\r\n styleClass=\"w-full sm:w-auto\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n inject,\r\n linkedSignal,\r\n OnDestroy,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport {\r\n CellChangeEvent,\r\n ColumnDef,\r\n Table,\r\n TableAction,\r\n} from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { GovernanceFacade } from '../../../store/governance';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport GovernanceRuleForm from '../governance-rule-form/governance-rule-form';\r\nimport { finalize } from 'rxjs';\r\nimport { Icon } from '@masterteam/icons';\r\nimport { Chip } from '@masterteam/components/chip';\r\nimport { GovernanceRule } from '../../../store/governance';\r\n\r\n@Component({\r\n selector: 'mt-governance-rules-list',\r\n styleUrl: './governance-rules-list.css',\r\n templateUrl: './governance-rules-list.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n SkeletonModule,\r\n Table,\r\n TranslocoDirective,\r\n Icon,\r\n Chip,\r\n ],\r\n})\r\nexport default class GovernanceRulesList implements OnDestroy {\r\n // ============================================================================\r\n // Template References for Custom Columns\r\n // ============================================================================\r\n typeCol = viewChild.required<TemplateRef<any>>('typeCol');\r\n scopeCol = viewChild.required<TemplateRef<any>>('scopeCol');\r\n priorityCol = viewChild.required<TemplateRef<any>>('priorityCol');\r\n\r\n // ============================================================================\r\n // Services\r\n // ============================================================================\r\n private readonly facade = inject(GovernanceFacade);\r\n readonly modal: ModalService = inject(ModalService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n // ============================================================================\r\n // Breadcrumb\r\n // ============================================================================\r\n breadcrumbItems = linkedSignal(() => [\r\n {\r\n label: '',\r\n icon: 'general.home-line',\r\n routerLink: '/control-panel/workspaces',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.control-panel'),\r\n routerLink: '/control-panel',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.governance-rules'),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Data Computed from Facade\r\n // ============================================================================\r\n rules = computed(() => {\r\n const tab = this.activeTab();\r\n const all = this.allRules();\r\n const activeRules = this.activeRules();\r\n const inactiveRules = this.inactiveRules();\r\n\r\n switch (tab) {\r\n case 'active':\r\n return activeRules;\r\n case 'inactive':\r\n return inactiveRules;\r\n case 'all':\r\n default:\r\n return all;\r\n }\r\n });\r\n\r\n // ============================================================================\r\n // Tabs\r\n // ============================================================================\r\n tabs = signal([\r\n {\r\n label: this.translocoService.translate('governance.all'),\r\n value: 'all',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: 'active',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: 'inactive',\r\n },\r\n ]);\r\n activeTab = signal<string>('all');\r\n\r\n // ============================================================================\r\n // Table Actions\r\n // ============================================================================\r\n tableActions = signal<TableAction[]>([\r\n {\r\n icon: 'general.plus',\r\n label: this.translocoService.translate('governance.add-rule'),\r\n color: 'primary',\r\n action: () => {\r\n this.openRuleDialog();\r\n },\r\n },\r\n ]);\r\n\r\n deletingRowIds = signal<any[]>([]);\r\n\r\n rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'custom.pencil',\r\n tooltip: this.translocoService.translate('edit'),\r\n color: 'primary',\r\n action: (row: GovernanceRule) => {\r\n this.facade.clearSelectedRule();\r\n this.openRuleDialog(row);\r\n },\r\n },\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.translocoService.translate('delete'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row: GovernanceRule) => {\r\n this.deletingRowIds.update((ids) => [...ids, row.id]);\r\n this.facade\r\n .deleteRule(row.id)\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row.id),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n },\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: GovernanceRule) => this.deletingRowIds().includes(row.id),\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Table Columns\r\n // ============================================================================\r\n tableColumns = linkedSignal<ColumnDef[]>(() => [\r\n {\r\n key: 'priority',\r\n label: this.translocoService.translate('governance.priority'),\r\n type: 'custom',\r\n customCellTpl: this.priorityCol(),\r\n sortable: true,\r\n },\r\n {\r\n key: 'name.en',\r\n label: this.translocoService.translate('governance.name'),\r\n type: 'text',\r\n sortable: true,\r\n },\r\n {\r\n key: 'ruleTypeKey',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n type: 'custom',\r\n customCellTpl: this.typeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.rule-type'),\r\n options: this.getRuleTypeOptions(),\r\n },\r\n },\r\n {\r\n key: 'targetScope',\r\n label: this.translocoService.translate('governance.scope'),\r\n type: 'custom',\r\n customCellTpl: this.scopeCol(),\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.scope'),\r\n options: [\r\n {\r\n label: this.translocoService.translate('governance.scope-level'),\r\n value: 'Level',\r\n },\r\n {\r\n label: this.translocoService.translate('governance.scope-module'),\r\n value: 'Module',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.scope-phase-gate',\r\n ),\r\n value: 'PhaseGate',\r\n },\r\n ],\r\n },\r\n },\r\n {\r\n key: 'targetModuleKey',\r\n label: this.translocoService.translate('governance.target-module'),\r\n type: 'text',\r\n },\r\n {\r\n key: 'isActive',\r\n label: this.translocoService.translate('governance.status'),\r\n type: 'boolean',\r\n filterConfig: {\r\n type: 'select',\r\n label: this.translocoService.translate('governance.status'),\r\n options: [\r\n {\r\n label: this.translocoService.translate('governance.active'),\r\n value: true,\r\n },\r\n {\r\n label: this.translocoService.translate('governance.inactive'),\r\n value: false,\r\n },\r\n ],\r\n },\r\n },\r\n ]);\r\n\r\n // ============================================================================\r\n // Private\r\n // ============================================================================\r\n loading = this.facade.isLoadingRules;\r\n private allRules = this.facade.rules;\r\n private activeRules = this.facade.activeRules;\r\n private inactiveRules = this.facade.inactiveRules;\r\n\r\n ngOnDestroy(): void {\r\n this.facade.resetState();\r\n }\r\n\r\n openRuleDialog(rule: GovernanceRule | null = null) {\r\n const modalType: 'drawer' | 'dialog' = rule ? 'drawer' : 'drawer';\r\n this.modal.openModal(GovernanceRuleForm, modalType, {\r\n header: rule\r\n ? this.translocoService.translate('governance.edit-rule')\r\n : this.translocoService.translate('governance.add-rule'),\r\n styleClass: '!w-[50rem] !absolute ',\r\n position: modalType === 'drawer' ? 'end' : '',\r\n appendTo: modalType === 'drawer' ? 'page-content' : 'body',\r\n dismissableMask: true,\r\n dismissible: true,\r\n inputValues: {\r\n ruleForEdit: rule,\r\n },\r\n });\r\n }\r\n\r\n onCellChange(event: CellChangeEvent) {\r\n if (event.column === 'isActive' && event.type === 'boolean') {\r\n this.facade.toggleRuleActive(event.row.id);\r\n }\r\n }\r\n\r\n private getRuleTypeOptions() {\r\n return [\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleExists',\r\n ),\r\n value: 'ModuleExists',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleDoesNotExist',\r\n ),\r\n value: 'ModuleDoesNotExist',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleMaxCount',\r\n ),\r\n value: 'ModuleMaxCount',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.ModuleMinCount',\r\n ),\r\n value: 'ModuleMinCount',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.FieldRequired',\r\n ),\r\n value: 'FieldRequired',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.FieldValue',\r\n ),\r\n value: 'FieldValue',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.PhaseGateModuleRequired',\r\n ),\r\n value: 'PhaseGateModuleRequired',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'governance.rule-types.NoActiveRequest',\r\n ),\r\n value: 'NoActiveRequest',\r\n },\r\n ];\r\n }\r\n\r\n getRuleTypeChipClass(ruleTypeKey: string): string {\r\n const classes: Record<string, string> = {\r\n ModuleExists: 'bg-blue-100 text-blue-700',\r\n ModuleDoesNotExist: 'bg-red-100 text-red-700',\r\n ModuleMaxCount: 'bg-amber-100 text-amber-700',\r\n ModuleMinCount: 'bg-orange-100 text-orange-700',\r\n FieldRequired: 'bg-purple-100 text-purple-700',\r\n FieldValue: 'bg-indigo-100 text-indigo-700',\r\n PhaseGateModuleRequired: 'bg-green-100 text-green-700',\r\n NoActiveRequest: 'bg-rose-100 text-rose-700',\r\n };\r\n return classes[ruleTypeKey] ?? 'bg-slate-100 text-slate-700';\r\n }\r\n\r\n getScopeIcon(scope: string): string {\r\n const icons: Record<string, string> = {\r\n Level: 'general.layers-three-01',\r\n Module: 'general.cube-01',\r\n PhaseGate: 'general.flag-01',\r\n };\r\n return icons[scope] ?? 'general.file-02';\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'governance'\">\r\n <div class=\"space-y-4\">\r\n <!-- Rule Type Column Template -->\r\n <ng-template #typeCol let-row>\r\n <mt-chip\r\n [label]=\"row.ruleTypeKey\"\r\n [styleClass]=\"getRuleTypeChipClass(row.ruleTypeKey)\"\r\n />\r\n </ng-template>\r\n\r\n <!-- Scope Column Template -->\r\n <ng-template #scopeCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-icon\r\n class=\"text-lg\"\r\n [icon]=\"getScopeIcon(row.targetScope)\"\r\n ></mt-icon>\r\n <span>{{ row.targetScope }}</span>\r\n @if (row.targetModuleKey) {\r\n <span class=\"text-slate-500\">→ {{ row.targetModuleKey }}</span>\r\n }\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Priority Column Template -->\r\n <ng-template #priorityCol let-row>\r\n <div\r\n class=\"flex items-center justify-center w-8 h-8 rounded-full bg-slate-100 text-slate-700 font-semibold text-sm\"\r\n >\r\n {{ row.priority }}\r\n </div>\r\n </ng-template>\r\n\r\n <!-- Table -->\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"rules()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n (cellChange)=\"onCellChange($event)\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|