@acorex/connectivity 20.3.0-next.8 → 20.3.0-next.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.
@@ -3,7 +3,7 @@ import * as i2$1 from '@acorex/platform/auth';
3
3
  import { AXPAuthStrategy, AXP_TENANT_LOADER, AXP_APPLICATION_LOADER, AXP_FEATURE_LOADER, AXP_PERMISSION_LOADER, AXPSessionService, AXPAuthModule } from '@acorex/platform/auth';
4
4
  import * as i1$1 from '@acorex/platform/core';
5
5
  import { AXPDataGenerator, AXPActivityLogProvider, AXP_ACTIVITY_LOG_PROVIDER, AXP_DATASOURCE_DEFINITION_PROVIDER, AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, objectKeyValueTransforms, AXPSystemActionType, applySortArray, applyFilterArray, AXPExpressionEvaluatorService } from '@acorex/platform/core';
6
- import { AXPEntityDefinitionRegistryService, AXPEntityStorageService, AXP_DATA_SEEDER_TOKEN, AXMEntityCrudServiceImpl, AXP_ENTITY_STORAGE_BACKEND, AXPMiddlewareEntityStorageService, AXP_ENTITY_STORAGE_MIDDLEWARE, eventDispatchMiddleware, AXPDataSeederService } from '@acorex/platform/layout/entity';
6
+ import { AXPEntityDefinitionRegistryService, AXPEntityStorageService, AXP_DATA_SEEDER_TOKEN, AXMEntityCrudServiceImpl, AXP_ENTITY_STORAGE_BACKEND, AXPMiddlewareAbortError, AXPMiddlewareEntityStorageService, AXP_ENTITY_STORAGE_MIDDLEWARE, eventDispatchMiddleware, AXPDataSeederService } from '@acorex/platform/layout/entity';
7
7
  import * as i0 from '@angular/core';
8
8
  import { inject, Injectable, NgModule, Injector, runInInjectionContext } from '@angular/core';
9
9
  import { AXMDeviceSessionsService, AXMSessionStatusTypes, AXMDeviceSessionsServiceImpl, AXM_AUTH_CONFIG_TOKEN } from '@acorex/modules/auth';
@@ -30,10 +30,10 @@ import { AXPWidgetsCatalog } from '@acorex/platform/layout/builder';
30
30
  import { RootConfig as RootConfig$8 } from '@acorex/modules/locale-management';
31
31
  import { RootConfig as RootConfig$9 } from '@acorex/modules/location-management';
32
32
  import { RootConfig as RootConfig$a } from '@acorex/modules/log-management';
33
+ import { AXPWidgetsList } from '@acorex/modules/common';
34
+ import { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER, RootConfig as RootConfig$g, AXPReportDefinitionService } from '@acorex/modules/report-management';
33
35
  import { RootConfig as RootConfig$c, AXMOrgChartNodeType } from '@acorex/modules/organization-management';
34
36
  import { RootConfig as RootConfig$d } from '@acorex/modules/human-capital-management';
35
- import { AXP_REPORT_CATEGORY_PROVIDER, AXP_REPORT_DEFINITION_PROVIDER, RootConfig as RootConfig$g, AXPReportDefinitionService } from '@acorex/modules/report-management';
36
- import { AXPWidgetsList } from '@acorex/modules/common';
37
37
  import { RootConfig as RootConfig$e } from '@acorex/modules/platform-management';
38
38
  import { RootConfig as RootConfig$f } from '@acorex/modules/project-management';
39
39
  import { RootConfig as RootConfig$i } from '@acorex/modules/training-management';
@@ -4443,15 +4443,15 @@ function generateMetadataCategories() {
4443
4443
  'Version Control': 'Document versioning and change tracking',
4444
4444
  'Access Control': 'User permissions and access management',
4445
4445
  'Document Types': 'Classification and categorization of documents',
4446
- 'Standards': 'Quality standards and specifications',
4447
- 'Testing': 'Test procedures and results tracking',
4448
- 'Validation': 'Data validation and verification processes',
4449
- 'Regulations': 'Regulatory requirements and compliance rules',
4446
+ Standards: 'Quality standards and specifications',
4447
+ Testing: 'Test procedures and results tracking',
4448
+ Validation: 'Data validation and verification processes',
4449
+ Regulations: 'Regulatory requirements and compliance rules',
4450
4450
  'Audit Trail': 'Activity logging and audit documentation',
4451
- 'Certifications': 'Certification and accreditation tracking',
4452
- 'Planning': 'Project planning and scheduling metadata',
4453
- 'Resources': 'Resource allocation and management',
4454
- 'Timeline': 'Project timeline and milestone tracking',
4451
+ Certifications: 'Certification and accreditation tracking',
4452
+ Planning: 'Project planning and scheduling metadata',
4453
+ Resources: 'Resource allocation and management',
4454
+ Timeline: 'Project timeline and milestone tracking',
4455
4455
  };
4456
4456
  categories.push({ id, title, description: descriptionMap[title] ?? '', parentId, childCount: 0 });
4457
4457
  });
@@ -4463,16 +4463,14 @@ function generateMetadataCategories() {
4463
4463
  }
4464
4464
  const METADATA_CATEGORY_MOCK = generateMetadataCategories();
4465
4465
  // Interface definitions for different metadata types
4466
- const titleInterface$1 = '{"type":"text-editor","path":"title","options":{"validations":[{"rule":"required","message":"This field is required."}]}}';
4467
- const descriptionInterface$1 = '{"type":"large-text-editor","path":"description","options":{}}';
4466
+ const titleInterface = '{"type":"text-editor","path":"title","options":{"validations":[{"rule":"required","message":"This field is required."}]}}';
4467
+ const descriptionInterface = '{"type":"large-text-editor","path":"description","options":{}}';
4468
4468
  const versionInterface = '{"type":"text-editor","path":"version","options":{"validations":[{"rule":"required","message":"This field is required."}]}}';
4469
4469
  const dateInterface = '{"type":"date-time-editor","path":"date","options":{"validations":[{"rule":"required","message":"This field is required."}]}}';
4470
4470
  const numberInterface = '{"type":"number-editor","path":"number","options":{"validations":[{"rule":"required","message":"This field is required."}]}}';
4471
4471
  const selectInterface = '{"type":"select-editor","path":"select","options":{"dataSource":"languages","validations":[{"rule":"required","message":"This field is required."}]}}';
4472
4472
  const checkboxInterface = '{"type":"checkbox-editor","path":"checkbox","options":{"label":"Checkbox"}}';
4473
4473
  const textAreaInterface = '{"type":"large-text-editor","path":"textarea","options":{}}';
4474
- const emailInterface = '{"type":"email-editor","path":"email","options":{"validations":[{"rule":"required","message":"This field is required."}]}}';
4475
- const urlInterface = '{"type":"link-editor","path":"url","options":{"validations":[{"rule":"required","message":"This field is required."}]}}';
4476
4474
  const textInterface = '{"type":"text-editor","path":"text","options":{"validations":[{"rule":"required","message":"This field is required."}]}}';
4477
4475
  const METADATA_MOCK = [
4478
4476
  // General - Common metadata fields
@@ -4481,7 +4479,7 @@ const METADATA_MOCK = [
4481
4479
  name: 'title',
4482
4480
  title: 'Title',
4483
4481
  defaultValue: '',
4484
- interface: titleInterface$1,
4482
+ interface: titleInterface,
4485
4483
  categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'General').id],
4486
4484
  categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'General')],
4487
4485
  },
@@ -4490,7 +4488,7 @@ const METADATA_MOCK = [
4490
4488
  name: 'description',
4491
4489
  title: 'Description',
4492
4490
  defaultValue: '',
4493
- interface: descriptionInterface$1,
4491
+ interface: descriptionInterface,
4494
4492
  categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'General').id],
4495
4493
  categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'General')],
4496
4494
  },
@@ -4503,15 +4501,6 @@ const METADATA_MOCK = [
4503
4501
  categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'General').id],
4504
4502
  categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'General')],
4505
4503
  },
4506
- {
4507
- id: AXPDataGenerator.uuid(),
4508
- name: 'created-by',
4509
- title: 'Created By',
4510
- defaultValue: '',
4511
- interface: emailInterface,
4512
- categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'General').id],
4513
- categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'General')],
4514
- },
4515
4504
  {
4516
4505
  id: AXPDataGenerator.uuid(),
4517
4506
  name: 'status',
@@ -4572,7 +4561,7 @@ const METADATA_MOCK = [
4572
4561
  name: 'document-title',
4573
4562
  title: 'Document Title',
4574
4563
  defaultValue: '',
4575
- interface: titleInterface$1,
4564
+ interface: titleInterface,
4576
4565
  categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Version Control').id],
4577
4566
  categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Version Control')],
4578
4567
  },
@@ -4613,15 +4602,6 @@ const METADATA_MOCK = [
4613
4602
  categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Access Control').id],
4614
4603
  categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Access Control')],
4615
4604
  },
4616
- {
4617
- id: AXPDataGenerator.uuid(),
4618
- name: 'owner',
4619
- title: 'Document Owner',
4620
- defaultValue: '',
4621
- interface: emailInterface,
4622
- categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Access Control').id],
4623
- categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Access Control')],
4624
- },
4625
4605
  {
4626
4606
  id: AXPDataGenerator.uuid(),
4627
4607
  name: 'permissions',
@@ -4725,15 +4705,6 @@ const METADATA_MOCK = [
4725
4705
  categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Validation').id],
4726
4706
  categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Validation')],
4727
4707
  },
4728
- {
4729
- id: AXPDataGenerator.uuid(),
4730
- name: 'validator',
4731
- title: 'Validator',
4732
- defaultValue: '',
4733
- interface: emailInterface,
4734
- categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Validation').id],
4735
- categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Validation')],
4736
- },
4737
4708
  {
4738
4709
  id: AXPDataGenerator.uuid(),
4739
4710
  name: 'validation-notes',
@@ -4790,15 +4761,6 @@ const METADATA_MOCK = [
4790
4761
  categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Audit Trail').id],
4791
4762
  categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Audit Trail')],
4792
4763
  },
4793
- {
4794
- id: AXPDataGenerator.uuid(),
4795
- name: 'auditor',
4796
- title: 'Auditor',
4797
- defaultValue: '',
4798
- interface: emailInterface,
4799
- categoryIds: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Audit Trail').id],
4800
- categories: [METADATA_CATEGORY_MOCK.find((c) => c.title === 'Audit Trail')],
4801
- },
4802
4764
  // Compliance - Certifications
4803
4765
  {
4804
4766
  id: AXPDataGenerator.uuid(),
@@ -5232,119 +5194,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
5232
5194
  type: Injectable
5233
5195
  }] });
5234
5196
 
5235
- const checkbox$1 = '{"type":"document-layout","children":[{"type":"page-layout","children":[{"type":"checkbox-editor","name":"checkbox-editor1","options":{"label":"i accept","readonly":false,"disabled":false},"defaultValue":false,"path":"accept-check-box"}],"name":"page-layout1"}],"name":"document"}';
5236
- const color = '{"type":"document-layout","children":[{"type":"page-layout","children":[{"type":"block-layout","name":"block-layout1","options":{"flexDirection":{"id":"ax-flex-row"},"flexJustifyContent":{"id":"ax-justify-normal"},"flexAlignItems":{"id":"ax-items-start"},"gap":2,"flexWrap":{"id":"ax-flex-nowrap"},"spacing":{"margin":"0px 0px 0px 0px","padding":"0px 0px 0px 0px"},"border":{"width":"0px","radius":"0px","color":"#000000","style":"none"},"flexOptions":{"gap":"0px","flexDirection":"row","flexWrap":"nowrap","justifyContent":"flex-start","alignItems":"flex-start"}}},"children":[{"type":"color-editor","name":"color-editor1","options":{"readonly":false,"disabled":false,"validations":{"required":{"rule":"required","message":"This field is required."}},"placeholder":"pick color"},"path":"color-box"}]}],"name":"page-layout1"}],"name":"document"}';
5237
- const titleInterface = `{
5238
- "type": "document-layout",
5239
- "children": [
5240
- {
5241
- "type": "page-layout",
5242
- "children": [
5243
- {
5244
- "type": "title-editor",
5245
- "name": "title-editor1",
5246
- "meta": {
5247
- "header": true
5248
- },
5249
- "options": {
5250
- "multiple": false,
5251
- "disabled": false,
5252
- "hasClearButton": false,
5253
- "validations": {
5254
- "regex": null,
5255
- "required": {
5256
- "rule": "required",
5257
- "message": "This field is required."
5258
- }
5259
- }
5260
- },
5261
- "defaultValue": "",
5262
- "path": "title"
5263
- }
5264
- ],
5265
- "name": "page-layout1"
5266
- }
5267
- ],
5268
- "name": "document"
5269
- }`;
5270
- const descriptionInterface = `{
5271
- "type": "document-layout",
5272
- "children": [
5273
- {
5274
- "type": "page-layout",
5275
- "children": [
5276
- {
5277
- "type": "description-editor",
5278
- "name": "description-editor1",
5279
- "meta": {
5280
- "header": true
5281
- },
5282
- "options": {
5283
- "multiple": false,
5284
- "disabled": false,
5285
- "hasClearButton": false,
5286
- },
5287
- "defaultValue": "",
5288
- "path": "description"
5289
- }
5290
- ],
5291
- "name": "page-layout1"
5292
- }
5293
- ],
5294
- "name": "document"
5295
- }`;
5296
- const contractNumberInterface = `{
5297
- "type": "document-layout",
5298
- "children": [
5299
- {
5300
- "type": "page-layout",
5301
- "children": [
5302
- {
5303
- "type": "number-editor",
5304
- "name": "number-editor1",
5305
- "meta": {
5306
- "header": true
5307
- },
5308
- "options": {
5309
- "multiple": false,
5310
- "disabled": false,
5311
- "hasClearButton": false,
5312
- },
5313
- "defaultValue": "",
5314
- "path": "contract-number"
5315
- }
5316
- ],
5317
- "name": "page-layout1"
5318
- }
5319
- ],
5320
- "name": "document"
5321
- }`;
5322
- const evaluatorInterface = `{
5323
- "type": "document-layout",
5324
- "children": [
5325
- {
5326
- "type": "page-layout",
5327
- "children": [
5328
- {
5329
- "type": "text-editor",
5330
- "name": "text-editor1",
5331
- "meta": {
5332
- "header": true
5333
- },
5334
- "options": {
5335
- "multiple": false,
5336
- "disabled": false,
5337
- "hasClearButton": false,
5338
- },
5339
- "defaultValue": "",
5340
- "path": "evaluator"
5341
- }
5342
- ],
5343
- "name": "page-layout1"
5344
- }
5345
- ],
5346
- "name": "document"
5347
- }`;
5348
5197
  const DOCUMENT_TYPES = [
5349
5198
  {
5350
5199
  id: AXPDataGenerator.uuid(),
@@ -5356,14 +5205,14 @@ const DOCUMENT_TYPES = [
5356
5205
  enableExpiration: false,
5357
5206
  requiresReview: true,
5358
5207
  requiresDistribution: false,
5359
- meta: [
5208
+ metaData: [
5360
5209
  {
5361
5210
  id: AXPDataGenerator.uuid(),
5362
5211
  text: 'Description',
5363
5212
  // "parentId": "9e3c7586-4722-4170-bc55-e612ca2ab4b5",
5364
5213
  hasCheckbox: true,
5365
5214
  isSelected: true,
5366
- interface: '{"type":"document-layout","children":[{"type":"page-layout","children":[{"type":"text-editor","name":"description-editor1","meta":{"header":true},"options":{"multiple":false,"disabled":false,"hasClearButton":false},"defaultValue":"","path":"description"}],"name":"page-layout1"}],"name":"document"}',
5215
+ interface: '{"type":"text-editor","name":"description-editor1","meta":{"header":true},"options":{"multiple":false,"disabled":false,"hasClearButton":false},"defaultValue":"","path":"description"}',
5367
5216
  name: 'description',
5368
5217
  title: 'Description',
5369
5218
  isRequired: true,
@@ -5411,7 +5260,7 @@ const DOCUMENT_TYPES = [
5411
5260
  requiresReview: false,
5412
5261
  requiresDistribution: false,
5413
5262
  control: { isSystem: true },
5414
- meta: [],
5263
+ metaData: [],
5415
5264
  type: {
5416
5265
  selectedItems: [],
5417
5266
  context: {
@@ -5432,14 +5281,14 @@ const DOCUMENT_TYPES = [
5432
5281
  enableExpiration: true,
5433
5282
  requiresReview: true,
5434
5283
  requiresDistribution: true,
5435
- meta: [
5284
+ metaData: [
5436
5285
  {
5437
5286
  id: AXPDataGenerator.uuid(),
5438
5287
  text: 'Description',
5439
5288
  // "parentId": "9e3c7586-4722-4170-bc55-e612ca2ab4b5",
5440
5289
  hasCheckbox: true,
5441
5290
  isSelected: true,
5442
- interface: '{"type":"document-layout","children":[{"type":"page-layout","children":[{"type":"text-editor","name":"description-editor1","meta":{"header":true},"options":{"multiple":false,"disabled":false,"hasClearButton":false},"defaultValue":"","path":"description"}],"name":"page-layout1"}],"name":"document"}',
5291
+ interface: '{"type":"text-editor","name":"description-editor1","meta":{"header":true},"options":{"multiple":false,"disabled":false,"hasClearButton":false},"defaultValue":"","path":"description"}',
5443
5292
  name: 'description',
5444
5293
  title: 'Description',
5445
5294
  isRequired: true,
@@ -21436,11 +21285,739 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
21436
21285
  type: Injectable
21437
21286
  }] });
21438
21287
 
21288
+ //#region ---- Imports ----
21289
+ //#endregion
21290
+ //#region ---- Category & Report Data (Log Management) ----
21291
+ const LOG_REPORT_ROOT_CATEGORY_ID = 'log-management.reports.root';
21292
+ const LOG_REPORT_AUDIT_CATEGORY_ID = 'log-management.reports.audit';
21293
+ const LOG_REPORT_IDENTITY_CATEGORY_ID = 'log-management.reports.identity-audit-log';
21294
+ const LOG_REPORT_CATEGORIES = [
21295
+ {
21296
+ id: LOG_REPORT_ROOT_CATEGORY_ID,
21297
+ title: 'Log Management',
21298
+ description: 'Reports related to application logs',
21299
+ hasChild: true,
21300
+ },
21301
+ {
21302
+ id: LOG_REPORT_AUDIT_CATEGORY_ID,
21303
+ parentId: LOG_REPORT_ROOT_CATEGORY_ID,
21304
+ title: 'Audit Logs',
21305
+ description: 'User actions and system audit trail',
21306
+ hasReport: true,
21307
+ },
21308
+ {
21309
+ id: LOG_REPORT_IDENTITY_CATEGORY_ID,
21310
+ parentId: LOG_REPORT_ROOT_CATEGORY_ID,
21311
+ title: 'Identity Audit Log',
21312
+ description: 'Authentication and identity management logs',
21313
+ hasReport: true,
21314
+ },
21315
+ ];
21316
+ const LOG_REPORT_DEFINITIONS = [
21317
+ {
21318
+ id: 'log-management.report.audit-trail-by-user',
21319
+ title: 'Audit Trail by User',
21320
+ description: 'Comprehensive audit trail showing user actions, system events, and entity changes',
21321
+ categoryIds: [LOG_REPORT_AUDIT_CATEGORY_ID],
21322
+ parameterGroups: [
21323
+ {
21324
+ name: 'period',
21325
+ title: 'Period',
21326
+ parameters: [
21327
+ {
21328
+ path: 'startDate',
21329
+ title: 'Start Date',
21330
+ widget: { type: AXPWidgetsList.Editors.DateTimeBox, options: { format: 'date' } },
21331
+ },
21332
+ {
21333
+ path: 'endDate',
21334
+ title: 'End Date',
21335
+ widget: { type: AXPWidgetsList.Editors.DateTimeBox, options: { format: 'date' } },
21336
+ },
21337
+ ],
21338
+ },
21339
+ {
21340
+ name: 'filters',
21341
+ title: 'Filters',
21342
+ parameters: [
21343
+ {
21344
+ path: 'userName',
21345
+ title: 'User Name',
21346
+ widget: { type: AXPWidgetsList.Editors.TextBox, options: { placeholder: 'Filter by username' } },
21347
+ },
21348
+ {
21349
+ path: 'httpMethod',
21350
+ title: 'HTTP Method',
21351
+ widget: {
21352
+ type: AXPWidgetsList.Editors.SelectBox,
21353
+ options: {
21354
+ dataSource: ['GET', 'POST', 'PUT', 'DELETE', 'PATCH'],
21355
+ multiple: true,
21356
+ },
21357
+ },
21358
+ },
21359
+ {
21360
+ path: 'httpStatusCode',
21361
+ title: 'HTTP Status',
21362
+ widget: {
21363
+ type: AXPWidgetsList.Editors.SelectBox,
21364
+ options: {
21365
+ dataSource: ['200', '201', '400', '401', '403', '404', '500'],
21366
+ multiple: true,
21367
+ },
21368
+ },
21369
+ },
21370
+ ],
21371
+ },
21372
+ ],
21373
+ layouts: [
21374
+ {
21375
+ id: 'table',
21376
+ title: 'Table View',
21377
+ layout: {
21378
+ type: 'table',
21379
+ columns: [
21380
+ {
21381
+ field: 'executionTime',
21382
+ title: 'Date',
21383
+ visible: true,
21384
+ width: 180,
21385
+ align: 'left',
21386
+ widget: {
21387
+ type: AXPWidgetsList.Editors.DateTimeBox,
21388
+ options: { format: 'datetime' },
21389
+ path: 'executionTime',
21390
+ },
21391
+ },
21392
+ {
21393
+ field: 'userName',
21394
+ title: 'User Name',
21395
+ visible: true,
21396
+ width: 150,
21397
+ align: 'left',
21398
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'userName' },
21399
+ },
21400
+ {
21401
+ field: 'tenantName',
21402
+ title: 'Tenant',
21403
+ visible: true,
21404
+ width: 120,
21405
+ align: 'left',
21406
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'tenantName' },
21407
+ },
21408
+ {
21409
+ field: 'httpMethod',
21410
+ title: 'Method',
21411
+ visible: true,
21412
+ width: 80,
21413
+ align: 'center',
21414
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'httpMethod' },
21415
+ },
21416
+ {
21417
+ field: 'url',
21418
+ title: 'URL',
21419
+ visible: true,
21420
+ width: 300,
21421
+ align: 'left',
21422
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'url' },
21423
+ },
21424
+ {
21425
+ field: 'httpStatusCode',
21426
+ title: 'Status',
21427
+ visible: true,
21428
+ width: 80,
21429
+ align: 'center',
21430
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'httpStatusCode' },
21431
+ },
21432
+ {
21433
+ field: 'httpStatus',
21434
+ title: 'HTTP Status',
21435
+ visible: true,
21436
+ width: 100,
21437
+ align: 'center',
21438
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'httpStatus' },
21439
+ },
21440
+ {
21441
+ field: 'executionDuration',
21442
+ title: 'Duration (ms)',
21443
+ visible: true,
21444
+ width: 120,
21445
+ align: 'right',
21446
+ widget: { type: AXPWidgetsList.Editors.NumberBox, path: 'executionDuration' },
21447
+ },
21448
+ {
21449
+ field: 'clientIpAddress',
21450
+ title: 'Client IP',
21451
+ visible: true,
21452
+ width: 120,
21453
+ align: 'left',
21454
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'clientIpAddress' },
21455
+ },
21456
+ {
21457
+ field: 'clientName',
21458
+ title: 'Client',
21459
+ visible: true,
21460
+ width: 120,
21461
+ align: 'left',
21462
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'clientName' },
21463
+ },
21464
+ {
21465
+ field: 'correlationId',
21466
+ title: 'Correlation ID',
21467
+ visible: true,
21468
+ width: 200,
21469
+ align: 'left',
21470
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'correlationId' },
21471
+ },
21472
+ {
21473
+ field: 'comments',
21474
+ title: 'Comments',
21475
+ visible: true,
21476
+ width: 200,
21477
+ align: 'left',
21478
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'comments' },
21479
+ },
21480
+ {
21481
+ field: 'exceptions',
21482
+ title: 'Exceptions',
21483
+ visible: false,
21484
+ width: 200,
21485
+ align: 'left',
21486
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'exceptions' },
21487
+ },
21488
+ {
21489
+ field: 'impersonatorUserName',
21490
+ title: 'Impersonated By',
21491
+ visible: false,
21492
+ width: 150,
21493
+ align: 'left',
21494
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'impersonatorUserName' },
21495
+ },
21496
+ ],
21497
+ options: {
21498
+ pagination: true,
21499
+ },
21500
+ },
21501
+ dataSource: {
21502
+ type: 'custom',
21503
+ provider: 'mock-data',
21504
+ },
21505
+ export: {
21506
+ fileNameTemplate: 'AuditTrailByUser_{date}_{user}',
21507
+ pdf: {
21508
+ enabled: true,
21509
+ pageSize: 'A4',
21510
+ headerEnabled: true,
21511
+ footerEnabled: true,
21512
+ showPageNumbers: true,
21513
+ },
21514
+ },
21515
+ },
21516
+ ],
21517
+ defaultLayoutId: 'table',
21518
+ },
21519
+ {
21520
+ id: 'log-management.report.login-logs',
21521
+ title: 'Login Logs',
21522
+ description: 'Authentication and login activity reports',
21523
+ categoryIds: [LOG_REPORT_IDENTITY_CATEGORY_ID],
21524
+ parameterGroups: [
21525
+ {
21526
+ name: 'period',
21527
+ title: 'Period',
21528
+ parameters: [
21529
+ {
21530
+ path: 'startDate',
21531
+ title: 'Start Date',
21532
+ widget: { type: AXPWidgetsList.Editors.DateTimeBox, options: { format: 'date' } },
21533
+ },
21534
+ {
21535
+ path: 'endDate',
21536
+ title: 'End Date',
21537
+ widget: { type: AXPWidgetsList.Editors.DateTimeBox, options: { format: 'date' } },
21538
+ },
21539
+ ],
21540
+ },
21541
+ {
21542
+ name: 'filters',
21543
+ title: 'Filters',
21544
+ parameters: [
21545
+ {
21546
+ path: 'userName',
21547
+ title: 'User Name',
21548
+ widget: { type: AXPWidgetsList.Editors.TextBox, options: { placeholder: 'Filter by username' } },
21549
+ },
21550
+ {
21551
+ path: 'status',
21552
+ title: 'Login Status',
21553
+ widget: {
21554
+ type: AXPWidgetsList.Editors.SelectBox,
21555
+ options: {
21556
+ dataSource: ['Success', 'Failed'],
21557
+ multiple: true,
21558
+ },
21559
+ },
21560
+ },
21561
+ ],
21562
+ },
21563
+ ],
21564
+ layouts: [
21565
+ {
21566
+ id: 'table',
21567
+ title: 'Table View',
21568
+ layout: {
21569
+ type: 'table',
21570
+ columns: [
21571
+ {
21572
+ field: 'userName',
21573
+ title: 'User Name',
21574
+ visible: true,
21575
+ width: 150,
21576
+ align: 'left',
21577
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'userName' },
21578
+ },
21579
+ {
21580
+ field: 'httpStatus',
21581
+ title: 'HTTP Status',
21582
+ visible: true,
21583
+ width: 100,
21584
+ align: 'center',
21585
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'httpStatus' },
21586
+ },
21587
+ {
21588
+ field: 'clientName',
21589
+ title: 'Client',
21590
+ visible: true,
21591
+ width: 120,
21592
+ align: 'left',
21593
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'clientName' },
21594
+ },
21595
+ {
21596
+ field: 'tenantName',
21597
+ title: 'Tenant',
21598
+ visible: true,
21599
+ width: 120,
21600
+ align: 'left',
21601
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'tenantName' },
21602
+ },
21603
+ {
21604
+ field: 'applicationName',
21605
+ title: 'Application',
21606
+ visible: true,
21607
+ width: 150,
21608
+ align: 'left',
21609
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'applicationName' },
21610
+ },
21611
+ {
21612
+ field: 'impersonatorUserName',
21613
+ title: 'Impersonated By',
21614
+ visible: false,
21615
+ width: 200,
21616
+ align: 'left',
21617
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'impersonatorUserName' },
21618
+ },
21619
+ {
21620
+ field: 'executionTime',
21621
+ title: 'Execution Time',
21622
+ visible: true,
21623
+ width: 180,
21624
+ align: 'right',
21625
+ widget: {
21626
+ type: AXPWidgetsList.Editors.DateTimeBox,
21627
+ options: { format: 'datetime' },
21628
+ path: 'executionTime',
21629
+ },
21630
+ },
21631
+ ],
21632
+ options: {
21633
+ pagination: true,
21634
+ },
21635
+ },
21636
+ dataSource: {
21637
+ type: 'custom',
21638
+ provider: 'mock-data',
21639
+ },
21640
+ export: {
21641
+ fileNameTemplate: 'LoginLogs_{date}_{user}',
21642
+ pdf: {
21643
+ enabled: true,
21644
+ pageSize: 'A4',
21645
+ headerEnabled: true,
21646
+ footerEnabled: true,
21647
+ showPageNumbers: true,
21648
+ },
21649
+ },
21650
+ },
21651
+ ],
21652
+ defaultLayoutId: 'table',
21653
+ },
21654
+ {
21655
+ id: 'log-management.report.change-password-logs',
21656
+ title: 'Change Password Logs',
21657
+ description: 'Password change activity and security events',
21658
+ categoryIds: [LOG_REPORT_IDENTITY_CATEGORY_ID],
21659
+ parameterGroups: [
21660
+ {
21661
+ name: 'period',
21662
+ title: 'Period',
21663
+ parameters: [
21664
+ {
21665
+ path: 'startDate',
21666
+ title: 'Start Date',
21667
+ widget: { type: AXPWidgetsList.Editors.DateTimeBox, options: { format: 'date' } },
21668
+ },
21669
+ {
21670
+ path: 'endDate',
21671
+ title: 'End Date',
21672
+ widget: { type: AXPWidgetsList.Editors.DateTimeBox, options: { format: 'date' } },
21673
+ },
21674
+ ],
21675
+ },
21676
+ {
21677
+ name: 'filters',
21678
+ title: 'Filters',
21679
+ parameters: [
21680
+ {
21681
+ path: 'userName',
21682
+ title: 'User Name',
21683
+ widget: { type: AXPWidgetsList.Editors.TextBox, options: { placeholder: 'Filter by username' } },
21684
+ },
21685
+ {
21686
+ path: 'status',
21687
+ title: 'Change Status',
21688
+ widget: {
21689
+ type: AXPWidgetsList.Editors.SelectBox,
21690
+ options: {
21691
+ dataSource: ['Success', 'Failed'],
21692
+ multiple: true,
21693
+ },
21694
+ },
21695
+ },
21696
+ ],
21697
+ },
21698
+ ],
21699
+ layouts: [
21700
+ {
21701
+ id: 'table',
21702
+ title: 'Table View',
21703
+ layout: {
21704
+ type: 'table',
21705
+ columns: [
21706
+ {
21707
+ field: 'userName',
21708
+ title: 'User Name',
21709
+ visible: true,
21710
+ width: 150,
21711
+ align: 'left',
21712
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'userName' },
21713
+ },
21714
+ {
21715
+ field: 'httpStatus',
21716
+ title: 'HTTP Status',
21717
+ visible: true,
21718
+ width: 100,
21719
+ align: 'center',
21720
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'httpStatus' },
21721
+ },
21722
+ {
21723
+ field: 'clientName',
21724
+ title: 'Client',
21725
+ visible: true,
21726
+ width: 120,
21727
+ align: 'left',
21728
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'clientName' },
21729
+ },
21730
+ {
21731
+ field: 'tenantName',
21732
+ title: 'Tenant',
21733
+ visible: true,
21734
+ width: 120,
21735
+ align: 'left',
21736
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'tenantName' },
21737
+ },
21738
+ {
21739
+ field: 'applicationName',
21740
+ title: 'Application',
21741
+ visible: true,
21742
+ width: 150,
21743
+ align: 'left',
21744
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'applicationName' },
21745
+ },
21746
+ {
21747
+ field: 'impersonatorUserName',
21748
+ title: 'Impersonated By',
21749
+ visible: false,
21750
+ width: 150,
21751
+ align: 'left',
21752
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'impersonatorUserName' },
21753
+ },
21754
+ {
21755
+ field: 'executionTime',
21756
+ title: 'Date',
21757
+ visible: true,
21758
+ width: 180,
21759
+ align: 'left',
21760
+ widget: {
21761
+ type: AXPWidgetsList.Editors.DateTimeBox,
21762
+ options: { format: 'datetime' },
21763
+ path: 'executionTime',
21764
+ },
21765
+ },
21766
+ ],
21767
+ options: {
21768
+ pagination: true,
21769
+ },
21770
+ },
21771
+ dataSource: {
21772
+ type: 'custom',
21773
+ provider: 'mock-data',
21774
+ },
21775
+ export: {
21776
+ fileNameTemplate: 'ChangePasswordLogs_{date}_{user}',
21777
+ pdf: {
21778
+ enabled: true,
21779
+ pageSize: 'A4',
21780
+ headerEnabled: true,
21781
+ footerEnabled: true,
21782
+ showPageNumbers: true,
21783
+ },
21784
+ },
21785
+ },
21786
+ ],
21787
+ defaultLayoutId: 'table',
21788
+ },
21789
+ {
21790
+ id: 'log-management.report.identity-error-logs',
21791
+ title: 'Identity Error Logs',
21792
+ description: 'Authentication errors, token failures, and security violations',
21793
+ categoryIds: [LOG_REPORT_IDENTITY_CATEGORY_ID],
21794
+ parameterGroups: [
21795
+ {
21796
+ name: 'period',
21797
+ title: 'Period',
21798
+ parameters: [
21799
+ {
21800
+ path: 'startDate',
21801
+ title: 'Start Date',
21802
+ widget: { type: AXPWidgetsList.Editors.DateTimeBox, options: { format: 'date' } },
21803
+ },
21804
+ {
21805
+ path: 'endDate',
21806
+ title: 'End Date',
21807
+ widget: { type: AXPWidgetsList.Editors.DateTimeBox, options: { format: 'date' } },
21808
+ },
21809
+ ],
21810
+ },
21811
+ {
21812
+ name: 'filters',
21813
+ title: 'Filters',
21814
+ parameters: [
21815
+ {
21816
+ path: 'userName',
21817
+ title: 'User Name',
21818
+ widget: { type: AXPWidgetsList.Editors.TextBox, options: { placeholder: 'Filter by username' } },
21819
+ },
21820
+ {
21821
+ path: 'errorType',
21822
+ title: 'Error Type',
21823
+ widget: {
21824
+ type: AXPWidgetsList.Editors.SelectBox,
21825
+ options: {
21826
+ dataSource: ['Token Expired', 'Invalid Credentials', 'Rate Limited', 'User Not Found'],
21827
+ multiple: true,
21828
+ },
21829
+ },
21830
+ },
21831
+ ],
21832
+ },
21833
+ ],
21834
+ layouts: [
21835
+ {
21836
+ id: 'table',
21837
+ title: 'Table View',
21838
+ layout: {
21839
+ type: 'table',
21840
+ columns: [
21841
+ {
21842
+ field: 'executionTime',
21843
+ title: 'Date',
21844
+ visible: true,
21845
+ width: 180,
21846
+ align: 'left',
21847
+ widget: {
21848
+ type: AXPWidgetsList.Editors.DateTimeBox,
21849
+ options: { format: 'datetime' },
21850
+ path: 'executionTime',
21851
+ },
21852
+ },
21853
+ {
21854
+ field: 'userName',
21855
+ title: 'User Name',
21856
+ visible: true,
21857
+ width: 150,
21858
+ align: 'left',
21859
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'userName' },
21860
+ },
21861
+ {
21862
+ field: 'tenantName',
21863
+ title: 'Tenant',
21864
+ visible: true,
21865
+ width: 120,
21866
+ align: 'left',
21867
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'tenantName' },
21868
+ },
21869
+ {
21870
+ field: 'httpMethod',
21871
+ title: 'Method',
21872
+ visible: true,
21873
+ width: 80,
21874
+ align: 'center',
21875
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'httpMethod' },
21876
+ },
21877
+ {
21878
+ field: 'url',
21879
+ title: 'URL',
21880
+ visible: true,
21881
+ width: 300,
21882
+ align: 'left',
21883
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'url' },
21884
+ },
21885
+ {
21886
+ field: 'httpStatusCode',
21887
+ title: 'Status',
21888
+ visible: true,
21889
+ width: 80,
21890
+ align: 'center',
21891
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'httpStatusCode' },
21892
+ },
21893
+ {
21894
+ field: 'executionDuration',
21895
+ title: 'Duration (ms)',
21896
+ visible: true,
21897
+ width: 120,
21898
+ align: 'right',
21899
+ widget: { type: AXPWidgetsList.Editors.NumberBox, path: 'executionDuration' },
21900
+ },
21901
+ {
21902
+ field: 'clientIpAddress',
21903
+ title: 'Client IP',
21904
+ visible: true,
21905
+ width: 120,
21906
+ align: 'left',
21907
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'clientIpAddress' },
21908
+ },
21909
+ {
21910
+ field: 'clientName',
21911
+ title: 'Client',
21912
+ visible: true,
21913
+ width: 120,
21914
+ align: 'left',
21915
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'clientName' },
21916
+ },
21917
+ {
21918
+ field: 'correlationId',
21919
+ title: 'Correlation ID',
21920
+ visible: true,
21921
+ width: 200,
21922
+ align: 'left',
21923
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'correlationId' },
21924
+ },
21925
+ {
21926
+ field: 'comments',
21927
+ title: 'Comments',
21928
+ visible: true,
21929
+ width: 200,
21930
+ align: 'left',
21931
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'comments' },
21932
+ },
21933
+ {
21934
+ field: 'exceptions',
21935
+ title: 'Exceptions',
21936
+ visible: true,
21937
+ width: 200,
21938
+ align: 'left',
21939
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'exceptions' },
21940
+ },
21941
+ {
21942
+ field: 'impersonatorUserName',
21943
+ title: 'Impersonated By',
21944
+ visible: false,
21945
+ width: 150,
21946
+ align: 'left',
21947
+ widget: { type: AXPWidgetsList.Editors.TextBox, path: 'impersonatorUserName' },
21948
+ },
21949
+ ],
21950
+ options: {
21951
+ pagination: true,
21952
+ },
21953
+ },
21954
+ dataSource: {
21955
+ type: 'custom',
21956
+ provider: 'mock-data',
21957
+ },
21958
+ export: {
21959
+ fileNameTemplate: 'IdentityErrorLogs_{date}_{user}',
21960
+ pdf: {
21961
+ enabled: true,
21962
+ pageSize: 'A4',
21963
+ headerEnabled: true,
21964
+ footerEnabled: true,
21965
+ showPageNumbers: true,
21966
+ },
21967
+ },
21968
+ },
21969
+ ],
21970
+ defaultLayoutId: 'table',
21971
+ },
21972
+ ];
21973
+ //#endregion
21974
+ //#region ---- Providers ----
21975
+ class AXCLogReportCategoryProvider {
21976
+ async getList(parentId) {
21977
+ if (!parentId)
21978
+ return LOG_REPORT_CATEGORIES.filter((c) => !c.parentId);
21979
+ return LOG_REPORT_CATEGORIES.filter((c) => c.parentId === parentId);
21980
+ }
21981
+ async getById(id) {
21982
+ return LOG_REPORT_CATEGORIES.find((c) => c.id === id);
21983
+ }
21984
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCLogReportCategoryProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
21985
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCLogReportCategoryProvider }); }
21986
+ }
21987
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCLogReportCategoryProvider, decorators: [{
21988
+ type: Injectable
21989
+ }] });
21990
+ class AXCLogReportDefinitionProvider {
21991
+ async getList(categoryId) {
21992
+ return LOG_REPORT_DEFINITIONS.filter((r) => r.categoryIds.includes(categoryId));
21993
+ }
21994
+ async getById(id) {
21995
+ return LOG_REPORT_DEFINITIONS.find((r) => r.id === id);
21996
+ }
21997
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCLogReportDefinitionProvider, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
21998
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCLogReportDefinitionProvider }); }
21999
+ }
22000
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCLogReportDefinitionProvider, decorators: [{
22001
+ type: Injectable
22002
+ }] });
22003
+ const AXC_LOG_REPORT_CATEGORY_PROVIDER = {
22004
+ provide: AXP_REPORT_CATEGORY_PROVIDER,
22005
+ useClass: AXCLogReportCategoryProvider,
22006
+ multi: true,
22007
+ };
22008
+ const AXC_LOG_REPORT_DEFINITION_PROVIDER = {
22009
+ provide: AXP_REPORT_DEFINITION_PROVIDER,
22010
+ useClass: AXCLogReportDefinitionProvider,
22011
+ multi: true,
22012
+ };
22013
+
21439
22014
  class AXCLogManagementMockModule {
21440
22015
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCLogManagementMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
21441
22016
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.8", ngImport: i0, type: AXCLogManagementMockModule }); }
21442
22017
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCLogManagementMockModule, providers: [
21443
22018
  { provide: AXP_DATA_SEEDER_TOKEN, useClass: AXMLogDataSeeder, multi: true },
22019
+ AXC_LOG_REPORT_CATEGORY_PROVIDER,
22020
+ AXC_LOG_REPORT_DEFINITION_PROVIDER,
21444
22021
  ] }); }
21445
22022
  }
21446
22023
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCLogManagementMockModule, decorators: [{
@@ -21451,6 +22028,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
21451
22028
  declarations: [],
21452
22029
  providers: [
21453
22030
  { provide: AXP_DATA_SEEDER_TOKEN, useClass: AXMLogDataSeeder, multi: true },
22031
+ AXC_LOG_REPORT_CATEGORY_PROVIDER,
22032
+ AXC_LOG_REPORT_DEFINITION_PROVIDER,
21454
22033
  ],
21455
22034
  }]
21456
22035
  }] });
@@ -28036,11 +28615,11 @@ class AXMReportMockDataService {
28036
28615
  generateMockDataForReport(reportDefinition, parameters, pageSize) {
28037
28616
  const reportTitle = reportDefinition.title.toLowerCase();
28038
28617
  const reportId = reportDefinition.id;
28039
- // Generate data based on report type
28618
+ // Generate data based on report type - check reportId first for log management reports
28040
28619
  if (reportId.includes('log-management.report.audit-trail') ||
28041
28620
  reportId.includes('log-management.report.login-logs') ||
28042
28621
  reportId.includes('log-management.report.change-password-logs') ||
28043
- reportId.includes('log-management.report.identity-audit-log-error-logs')) {
28622
+ reportId.includes('log-management.report.identity-error-logs')) {
28044
28623
  return this.generateAuditTrailData(reportDefinition, parameters, pageSize);
28045
28624
  }
28046
28625
  else if (reportTitle.includes('balance sheet') || reportTitle.includes('financial')) {
@@ -28067,14 +28646,41 @@ class AXMReportMockDataService {
28067
28646
  // Use imported log mock data
28068
28647
  const baseData = logMock;
28069
28648
  const data = [];
28649
+ // For Identity Error Logs, filter to only include failed operations
28650
+ let filteredBaseData = baseData;
28651
+ if (reportDefinition.id.includes('identity-error-logs')) {
28652
+ filteredBaseData = baseData.filter(item => item['httpStatus'] === 'failed' ||
28653
+ item['httpStatusCode'] >= 400);
28654
+ }
28655
+ // If no filtered data available, use all data
28656
+ if (filteredBaseData.length === 0) {
28657
+ filteredBaseData = baseData;
28658
+ }
28070
28659
  // Duplicate base data to reach pageSize
28071
28660
  for (let i = 0; i < pageSize; i++) {
28072
- const baseItem = baseData[i % baseData.length];
28661
+ const baseItem = filteredBaseData[i % filteredBaseData.length];
28073
28662
  const duplicatedItem = {
28074
- ...baseItem,
28075
- id: AXPDataGenerator.uuid(), // Generate new ID for each item
28076
- executionTime: this.getRandomPastDate(30), // Randomize execution time
28077
- correlationId: AXPDataGenerator.uuid(), // Generate new correlation ID
28663
+ id: AXPDataGenerator.uuid(),
28664
+ executionTime: this.getRandomPastDate(30),
28665
+ userName: baseItem['userName'] || 'Unknown User',
28666
+ tenantName: baseItem['tenantName'] || 'ark',
28667
+ httpMethod: baseItem['httpMethod'] || 'GET',
28668
+ url: baseItem['url'] || '/unknown',
28669
+ httpStatusCode: baseItem['httpStatusCode'] || 200,
28670
+ executionDuration: baseItem['executionDuration'] || 0,
28671
+ clientIpAddress: baseItem['clientIpAddress'] || '0.0.0.0',
28672
+ clientName: baseItem['clientName'] || 'Unknown Client',
28673
+ correlationId: AXPDataGenerator.uuid(),
28674
+ comments: baseItem['comments'] || '',
28675
+ exceptions: baseItem['exceptions'] || '',
28676
+ httpStatus: baseItem['httpStatus'] || 'unknown',
28677
+ applicationName: baseItem['applicationName'] || 'DemoApp',
28678
+ impersonatorUserName: baseItem['impersonatorUserName'] || null,
28679
+ // Include any other fields from baseItem
28680
+ ...Object.fromEntries(Object.entries(baseItem).filter(([key]) => !['id', 'executionTime', 'userName', 'tenantName', 'httpMethod', 'url',
28681
+ 'httpStatusCode', 'executionDuration', 'clientIpAddress', 'clientName',
28682
+ 'correlationId', 'comments', 'exceptions', 'httpStatus', 'applicationName',
28683
+ 'impersonatorUserName'].includes(key)))
28078
28684
  };
28079
28685
  data.push(duplicatedItem);
28080
28686
  }
@@ -28314,7 +28920,7 @@ class AXMReportExecuteCommand {
28314
28920
  else if (reportDefinition.id.includes('log-management.report.change-password-logs')) {
28315
28921
  filteredData = this.applyChangePasswordLogsFilters(allData, parameters);
28316
28922
  }
28317
- else if (reportDefinition.id.includes('log-management.report.identity-audit-log-error-logs')) {
28923
+ else if (reportDefinition.id.includes('log-management.report.identity-error-logs')) {
28318
28924
  filteredData = this.applyIdentityAuditLogErrorLogsFilters(allData, parameters);
28319
28925
  }
28320
28926
  // Debug logging
@@ -28842,7 +29448,7 @@ class AXMReportExecuteCommand {
28842
29448
  }
28843
29449
  }
28844
29450
  // Debug logging
28845
- console.log('🔍 Identity Audit Log Error Logs Filter Debug:', {
29451
+ console.log('🔍 Identity Error Logs Filter Debug:', {
28846
29452
  startDate,
28847
29453
  endDate,
28848
29454
  userNameFilter,
@@ -34933,12 +35539,129 @@ class AXCDexieEntityStorageService extends Dexie {
34933
35539
  if (request.sort && request.sort.length) {
34934
35540
  result = applySortArray(result, request.sort);
34935
35541
  }
34936
- result = applyFilterArray(result, request.filter ? [request.filter] : []);
35542
+ // Handle recursive category filtering
35543
+ if (request.filter && this.isCategoryFilter(request.filter)) {
35544
+ result = await this.applyRecursiveCategoryFilter(result, request.filter, entityName);
35545
+ }
35546
+ else {
35547
+ result = applyFilterArray(result, request.filter ? [request.filter] : []);
35548
+ }
35549
+ // Calculate childCount for category entities
35550
+ if (this.isCategoryEntity(entityName)) {
35551
+ result = await this.calculateChildCounts(result, entityName);
35552
+ }
34937
35553
  return Promise.resolve({
34938
35554
  total: result.length,
34939
35555
  items: result.slice(request.skip, (request.skip ?? 0) + (request.take ?? 0)),
34940
35556
  });
34941
35557
  }
35558
+ //#region ---- Private Helper Methods ----
35559
+ /**
35560
+ * Check if the entity is a category entity (ends with 'Category')
35561
+ */
35562
+ isCategoryEntity(entityName) {
35563
+ return entityName.endsWith('Category');
35564
+ }
35565
+ /**
35566
+ * Calculate childCount for each category entity
35567
+ */
35568
+ async calculateChildCounts(items, entityName) {
35569
+ return Promise.all(items.map(async (item) => {
35570
+ const childCount = await this.getDirectChildCount(item.id, entityName);
35571
+ return {
35572
+ ...item,
35573
+ childCount
35574
+ };
35575
+ }));
35576
+ }
35577
+ /**
35578
+ * Get the count of direct children for a category
35579
+ */
35580
+ async getDirectChildCount(categoryId, entityName) {
35581
+ const children = await this.table('entity-store')
35582
+ .where({ entityName })
35583
+ .filter((item) => item.parentId === categoryId)
35584
+ .toArray();
35585
+ return children.length;
35586
+ }
35587
+ /**
35588
+ * Check if the filter is a category filter (contains operator on categoryIds field)
35589
+ * Handles both simple filters and compound filters
35590
+ */
35591
+ isCategoryFilter(filter) {
35592
+ // Handle simple filter
35593
+ if (filter?.operator?.type === 'contains' &&
35594
+ (filter.field === 'categoryIds' || filter.field?.endsWith('Ids'))) {
35595
+ return true;
35596
+ }
35597
+ // Handle compound filter - check if any nested filter is a category filter
35598
+ if (filter?.logic && filter?.filters && Array.isArray(filter.filters)) {
35599
+ return filter.filters.some((nestedFilter) => nestedFilter?.operator?.type === 'contains' &&
35600
+ (nestedFilter.field === 'categoryIds' || nestedFilter.field?.endsWith('Ids')));
35601
+ }
35602
+ return false;
35603
+ }
35604
+ /**
35605
+ * Apply recursive category filtering - finds entities that belong to the category or any of its children
35606
+ */
35607
+ async applyRecursiveCategoryFilter(result, filter, entityName) {
35608
+ // Handle compound filter - find the category filter within it
35609
+ let categoryFilter = filter;
35610
+ let otherFilters = [];
35611
+ if (filter?.logic && filter?.filters && Array.isArray(filter.filters)) {
35612
+ // Find the category filter and collect other filters
35613
+ const categoryFilterIndex = filter.filters.findIndex((f) => f?.operator?.type === 'contains' &&
35614
+ (f.field === 'categoryIds' || f.field?.endsWith('Ids')));
35615
+ if (categoryFilterIndex !== -1) {
35616
+ categoryFilter = filter.filters[categoryFilterIndex];
35617
+ // Get all other filters (excluding the category filter)
35618
+ otherFilters = filter.filters.filter((_, index) => index !== categoryFilterIndex);
35619
+ }
35620
+ }
35621
+ if (!categoryFilter) {
35622
+ // Fallback to regular filtering if no category filter found
35623
+ return applyFilterArray(result, [filter]);
35624
+ }
35625
+ const categoryId = categoryFilter.value;
35626
+ const categoryField = categoryFilter.field;
35627
+ // Get all child category IDs recursively
35628
+ const allCategoryIds = await this.getAllChildCategoryIds(categoryId, entityName);
35629
+ // Filter results to include entities that belong to any of the collected category IDs
35630
+ let filteredResult = result.filter((item) => {
35631
+ const categoryIds = item[categoryField];
35632
+ if (!categoryIds)
35633
+ return false;
35634
+ // Handle both string and array formats
35635
+ const itemCategoryIds = Array.isArray(categoryIds) ? categoryIds : [categoryIds];
35636
+ // Check if any of the item's categories match any of the collected category IDs
35637
+ return itemCategoryIds.some((itemCategoryId) => allCategoryIds.includes(itemCategoryId));
35638
+ });
35639
+ // Apply other filters if they exist
35640
+ if (otherFilters.length > 0) {
35641
+ filteredResult = applyFilterArray(filteredResult, otherFilters);
35642
+ }
35643
+ return filteredResult;
35644
+ }
35645
+ /**
35646
+ * Recursively gets all child category IDs including the parent category itself
35647
+ */
35648
+ async getAllChildCategoryIds(categoryId, entityName) {
35649
+ const allIds = [categoryId];
35650
+ // Extract module name and entity name from entityName (e.g., "module.entity" -> "module" and "entity")
35651
+ const [moduleName, entityNameOnly] = entityName.split('.');
35652
+ const categoryEntityName = `${moduleName}.${entityNameOnly}Category`;
35653
+ // Get direct children
35654
+ const childrenResult = await this.table('entity-store').where({
35655
+ entityName: categoryEntityName
35656
+ }).toArray();
35657
+ const directChildren = childrenResult.filter((child) => child.parentId === categoryId);
35658
+ // Recursively get children of children
35659
+ for (const child of directChildren) {
35660
+ const childIds = await this.getAllChildCategoryIds(child.id, entityName);
35661
+ allIds.push(...childIds);
35662
+ }
35663
+ return allIds;
35664
+ }
34942
35665
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCDexieEntityStorageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
34943
35666
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCDexieEntityStorageService }); }
34944
35667
  }
@@ -34984,6 +35707,70 @@ const auditLoggerMiddleware = {
34984
35707
  },
34985
35708
  };
34986
35709
 
35710
+ const childCountMiddleware = {
35711
+ target: { ops: ['create', 'delete'], order: 20 },
35712
+ execute: async (ctx, next) => {
35713
+ // Check if entity name ends with "Category"
35714
+ if (!ctx.entityName.endsWith('Category')) {
35715
+ await next();
35716
+ return;
35717
+ }
35718
+ // For delete operations, get the entity data before deletion
35719
+ let entityDataBeforeDelete = null;
35720
+ if (ctx.op === 'delete') {
35721
+ try {
35722
+ entityDataBeforeDelete = await ctx.backend.getOne(ctx.entityName, ctx.id);
35723
+ }
35724
+ catch (error) {
35725
+ // Entity might not exist, continue anyway
35726
+ console.warn('Could not fetch entity before delete:', error);
35727
+ }
35728
+ }
35729
+ // Execute the operation first
35730
+ await next();
35731
+ // After successful operation, update childCount for parent categories
35732
+ await updateChildCountForParent(ctx, entityDataBeforeDelete);
35733
+ },
35734
+ };
35735
+ /**
35736
+ * Updates childCount for parent categories when a category entity is created, updated, or deleted
35737
+ */
35738
+ async function updateChildCountForParent(ctx, entityDataBeforeDelete) {
35739
+ try {
35740
+ let currentEntity = null;
35741
+ if (ctx.op === 'delete' && entityDataBeforeDelete) {
35742
+ // For delete operations, use the data we fetched before deletion
35743
+ currentEntity = entityDataBeforeDelete;
35744
+ }
35745
+ else {
35746
+ // For create operations, get the entity data after creation
35747
+ const id = ctx.result ?? ctx.data?.id ?? ctx.id;
35748
+ currentEntity = await ctx.backend.getOne(ctx.entityName, id);
35749
+ }
35750
+ if (!currentEntity || !currentEntity.parentId) {
35751
+ return; // No parent to update
35752
+ }
35753
+ // Count children for the parent category
35754
+ const childrenResult = await ctx.backend.query(ctx.entityName, {
35755
+ skip: 0,
35756
+ take: 1000, // Reasonable limit for counting
35757
+ filter: {
35758
+ field: 'parentId',
35759
+ operator: { type: 'equal' },
35760
+ value: currentEntity.parentId
35761
+ }
35762
+ });
35763
+ // Update parent's childCount
35764
+ await ctx.backend.updateOne(ctx.entityName, currentEntity.parentId, {
35765
+ childCount: childrenResult.items.length
35766
+ });
35767
+ }
35768
+ catch (error) {
35769
+ // Log error but don't fail the operation
35770
+ console.warn('Failed to update childCount:', error);
35771
+ }
35772
+ }
35773
+
34987
35774
  /**
34988
35775
  * File Cast Middleware - Handles file operations in entity storage
34989
35776
  *
@@ -35887,7 +36674,7 @@ async function isRuleActive(conditions, evaluator, extraScope) {
35887
36674
  const policyEnforceMiddleware = {
35888
36675
  target: { ops: ['create', 'update', 'delete', 'getOne', 'getAll', 'query'], order: 5 },
35889
36676
  execute: async (ctx, next) => {
35890
- //try { console.warn('[policy] enter-middleware', ctx.op, ctx.entityName, ctx.id); } catch {}
36677
+ // try { console.warn('[policy] enter-middleware', ctx.op, ctx.entityName, ctx.id); } catch {}
35891
36678
  // Prevent recursion: skip enforcement when querying the Policy entity itself
35892
36679
  const policyEntityFullName = `${RootConfig.module.name}.${RootConfig.entities.policy.name}`;
35893
36680
  if (ctx.entityName === policyEntityFullName) {
@@ -36012,7 +36799,11 @@ const policyEnforceMiddleware = {
36012
36799
  // Check if entire object is immutable
36013
36800
  const immutableAll = immutableTargets.includes('*');
36014
36801
  if (immutableAll) {
36015
- throw new Error('Update forbidden by policy: Record is marked as system and cannot be modified');
36802
+ throw new AXPMiddlewareAbortError('Update forbidden by policy: Record is marked as system and cannot be modified', {
36803
+ status: 409,
36804
+ code: 'POLICY_IMMUTABLE_RECORD',
36805
+ details: { entity: ctx.entityName, id: ctx.id },
36806
+ });
36016
36807
  }
36017
36808
  // For specific immutable/readonly fields, remove them from payload
36018
36809
  const forbiddenPaths = [];
@@ -36035,14 +36826,13 @@ const policyEnforceMiddleware = {
36035
36826
  if (uniqueForbidden.length > 0) {
36036
36827
  removeFields(ctx.data, uniqueForbidden);
36037
36828
  // Log which fields were removed
36038
- try {
36039
- console.warn('[policy] fields-removed', {
36040
- entity: ctx.entityName,
36041
- id: ctx.id,
36042
- removedFields: uniqueForbidden
36043
- });
36044
- }
36045
- catch { }
36829
+ // try {
36830
+ // console.warn('[policy] fields-removed', {
36831
+ // entity: ctx.entityName,
36832
+ // id: ctx.id,
36833
+ // removedFields: uniqueForbidden
36834
+ // });
36835
+ // } catch {}
36046
36836
  }
36047
36837
  }
36048
36838
  }
@@ -36082,11 +36872,15 @@ const policyEnforceMiddleware = {
36082
36872
  console.warn('[policy] delete-blocked', { entity: ctx.entityName, id: ctx.id });
36083
36873
  }
36084
36874
  catch { }
36085
- throw new Error('Delete forbidden by policy: Record is marked as system and cannot be deleted');
36875
+ throw new AXPMiddlewareAbortError('Delete forbidden by policy: Record is marked as system and cannot be deleted', {
36876
+ status: 409,
36877
+ code: 'POLICY_IMMUTABLE_RECORD',
36878
+ details: { entity: ctx.entityName, id: ctx.id },
36879
+ });
36086
36880
  }
36087
36881
  }
36088
36882
  await next();
36089
- //try { console.warn('[policy] after-next', ctx.op, ctx.entityName); } catch { }
36883
+ // try { console.warn('[policy] after-next', ctx.op, ctx.entityName); } catch {}
36090
36884
  // READ PATH (after next to transform response)
36091
36885
  if (ctx.op === 'getOne' || ctx.op === 'getAll' || ctx.op === 'query') {
36092
36886
  // Re-evaluate rules with result in scope (read conditions can depend on returned data)
@@ -36110,6 +36904,92 @@ const policyEnforceMiddleware = {
36110
36904
  },
36111
36905
  };
36112
36906
 
36907
+ const primaryMiddleware = {
36908
+ target: { ops: ['create', 'update'], order: 70 },
36909
+ execute: async (ctx, next) => {
36910
+ const backend = inject(AXP_ENTITY_STORAGE_BACKEND);
36911
+ // Check if this is a primary-related operation
36912
+ const isSettingPrimary = ctx.data && ctx.data.isPrimary === true;
36913
+ if (isSettingPrimary) {
36914
+ // Before setting a record as primary, unset all other primary records for this entity
36915
+ try {
36916
+ // Query all records for this entity to find existing primary records
36917
+ const queryResult = await ctx.backend.query(ctx.entityName, {
36918
+ filter: {
36919
+ field: null,
36920
+ logic: 'and',
36921
+ operator: null,
36922
+ filters: [
36923
+ {
36924
+ field: 'isPrimary',
36925
+ operator: { type: 'equal' },
36926
+ value: true
36927
+ }
36928
+ ]
36929
+ },
36930
+ skip: 0,
36931
+ take: 1000 // Get all primary records
36932
+ });
36933
+ // Update all existing primary records to set isPrimary = false
36934
+ if (queryResult.items && queryResult.items.length > 0) {
36935
+ for (const item of queryResult.items) {
36936
+ // Skip the current record being updated
36937
+ if (ctx.op === 'update' && item.id === ctx.id) {
36938
+ continue;
36939
+ }
36940
+ // Update the record to set isPrimary = false
36941
+ await ctx.backend.updateOne(ctx.entityName, item.id, { isPrimary: false });
36942
+ }
36943
+ }
36944
+ }
36945
+ catch (error) {
36946
+ console.error('Failed to unset existing primary records:', error);
36947
+ // Continue with the operation even if this fails
36948
+ }
36949
+ }
36950
+ // Execute the main operation
36951
+ await next();
36952
+ // After the operation, ensure only one primary record exists
36953
+ if (isSettingPrimary) {
36954
+ try {
36955
+ // Double-check: query again to ensure only one primary record exists
36956
+ const queryResult = await ctx.backend.query(ctx.entityName, {
36957
+ filter: {
36958
+ field: null,
36959
+ logic: 'and',
36960
+ operator: null,
36961
+ filters: [
36962
+ {
36963
+ field: 'isPrimary',
36964
+ operator: { type: 'equal' },
36965
+ value: true
36966
+ }
36967
+ ]
36968
+ },
36969
+ skip: 0,
36970
+ take: 1000
36971
+ });
36972
+ // If multiple primary records exist, keep only the most recent one
36973
+ if (queryResult.items && queryResult.items.length > 1) {
36974
+ // Sort by creation/update date to keep the most recent
36975
+ const sortedItems = queryResult.items.sort((a, b) => {
36976
+ const dateA = new Date(a.createdAt || a.updatedAt || 0);
36977
+ const dateB = new Date(b.createdAt || b.updatedAt || 0);
36978
+ return dateB.getTime() - dateA.getTime();
36979
+ });
36980
+ // Set all but the first (most recent) to isPrimary = false
36981
+ for (let i = 1; i < sortedItems.length; i++) {
36982
+ await ctx.backend.updateOne(ctx.entityName, sortedItems[i].id, { isPrimary: false });
36983
+ }
36984
+ }
36985
+ }
36986
+ catch (error) {
36987
+ console.error('Failed to ensure single primary record:', error);
36988
+ }
36989
+ }
36990
+ },
36991
+ };
36992
+
36113
36993
  class AXCMiddlewaresModule {
36114
36994
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.8", ngImport: i0, type: AXCMiddlewaresModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
36115
36995
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.1.8", ngImport: i0, type: AXCMiddlewaresModule }); }
@@ -36123,8 +37003,10 @@ class AXCMiddlewaresModule {
36123
37003
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: eventDispatchMiddleware },
36124
37004
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: mergeDetailRelationMiddleware },
36125
37005
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: identifierCommitMiddleware },
37006
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: childCountMiddleware },
36126
37007
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: auditLoggerMiddleware },
36127
37008
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: createFileCastMiddleware },
37009
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: primaryMiddleware },
36128
37010
  // Sample entity event listener to show logs for all entity.* events
36129
37011
  //{ provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, multi: true, useValue: AXCMockEntityLogListener },
36130
37012
  ] }); }
@@ -36145,8 +37027,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.8", ngImpor
36145
37027
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: eventDispatchMiddleware },
36146
37028
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: mergeDetailRelationMiddleware },
36147
37029
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: identifierCommitMiddleware },
37030
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: childCountMiddleware },
36148
37031
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: auditLoggerMiddleware },
36149
37032
  { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: createFileCastMiddleware },
37033
+ { provide: AXP_ENTITY_STORAGE_MIDDLEWARE, multi: true, useValue: primaryMiddleware },
36150
37034
  // Sample entity event listener to show logs for all entity.* events
36151
37035
  //{ provide: AXP_DISTRIBUTED_EVENT_LISTENER_PROVIDER, multi: true, useValue: AXCMockEntityLogListener },
36152
37036
  ],
@@ -37204,5 +38088,5 @@ const AXCMockEntityLogListener = {
37204
38088
  * Generated bundle index. Do not edit.
37205
38089
  */
37206
38090
 
37207
- export { APPLICATIONS, APPLICATIONS_MODULES, AXCAppTermDataSeeder, AXCAppVersionDataSeeder, AXCApplicationManagementMockModule, AXCApplicationTemplateDataSeeder, AXCAuthMockModule, AXCCalendarDataSeeder, AXCCalendarEventDataSeeder, AXCCalendarManagementMockModule, AXCCommonMockModule, AXCContactManagementMockModule, AXCContentManagementMockModule, AXCConversationMockModule, AXCCustomerManagementMockModule, AXCDashboardManagementMockModule, AXCDataManagementMockModule, AXCDexieEntityStorageService, AXCDocumentManagementMockModule, AXCFileStorageService, AXCFormTemplateManagementMockModule, AXCGlobalVariablesDataSeeder, AXCGoogleStrategyMock, AXCHelpDeskMockModule, AXCHumanCapitalManagementMockModule, AXCIdentifierManagementMockModule, AXCJsaSeeder, AXCLocaleManagementMockModule, AXCLocationManagementMockModule, AXCLockService, AXCLogManagementMockModule, AXCMeetingManagementMockModule, AXCMetaDataDefinitionDataSeeder, AXCMiddlewaresModule, AXCMockEntityLogListener, AXCMockModule, AXCNotificationManagementMockModule, AXCOrganizationManagementMockModule, AXCPartyManagementMockModule, AXCPlatformManagementMockModule, AXCProjectManagementMockModule, AXCQueryCategoryMetadataInheritanceQuery, AXCReportManagementMockModule, AXCSchedulerJobDataSeeder, AXCSchedulerJobManagementMockModule, AXCSecurityManagementMockModule, AXCTaskManagementMockModule, AXCTextTemplateCategoryDataSeeder, AXCTextTemplateDataSeeder, AXCTextTemplateManagementMockModule, AXCTrainingManagementMockModule, AXCUserPassStrategyMock, AXCWorkflowManagementMockModule, AXMAiResponderService, AXMBusinessUnitDataSeeder, AXMCalendarEventTypeSeeder, AXMEmployeeDataSeeder, AXMEmployeeSkillDataSeeder, AXMEmployeeSkillsCategoryProvider, AXMEmployeeSkillsReportDefinitionProvider, AXMEmploymentTypeDataSeeder, AXMFormDataSourcesProvider, AXMIndustryDataSeeder, AXMLeaveRequestDataSeeder, AXMMeetingDataSeeder, AXMMeetingFilesDataSeeder, AXMMeetingParticipantDataSeeder, AXMMeetingRoleTypeDataSeeder, AXMMeetingSessionDataSeeder, AXMMeetingTypeDataSeeder, AXMMeetingTypeFileTemplateDataSeeder, AXMPositionAssignmentDataSeeder, AXMPositionDataSeeder, AXMReportCategoryDataSeeder, AXMReportDefinitionDataSeeder, AXMReportExecuteCommand, AXMReportMockDataService, AXMResponsibilityDataSeeder, AXMRoleDataSeeder, AXMSkillDataSeeder, AXMSkillLevelDataSeeder, AXMTeamDataSeeder, AXM_EMPLOYEE_SKILLS_CATEGORY_PROVIDER, AXM_EMPLOYEE_SKILLS_DEFINITION_PROVIDER, AXPDashboardDataSeeder, AXPIdentifierDB, AXPMessageDataSeeder, AXPMockChecksumProvider, AXPMockClockProvider, AXPMockIdentifierService, AXPMockLookupProvider, AXPMockPolicyProvider, AXPMockSequenceProvider, AXPRoomDataSeeder, AXPSecurityManagementRoleDataSeeder, AXPSecurityManagementUserDataSeeder, AXPTaskBoardPlatformManagementTaskProvider, AXPTaskBoardProjectManagementTaskProvider, AXQEmployeeSkillsLevelPercentagesQuery, AXQEmployeeSkillsLevelsQuery, AXQEmployeeSkillsListQuery, AXQEmployeeSkillsSkillPercentagesQuery, AXQEmployeeSkillsStatsQuery, AXQEmployeeSkillsTrendQuery, BUSINESS_UNITS_MOCK, DASHBOARDS, EDITIONS, EMPLOYEES_MOCK, EMPLOYEE_SKILLS_MOCK, EMPLOYMENT_TYPES_MOCK, ENTITIES, FEATURES, GLOBAL_VARIABLES, LEAVE_REQUESTS_MOCK, MODULES, PERMISSIONS, POSITIONS_CATEGORY_MOCK, POSITIONS_MOCK, POSITION_ASSIGNMENTS_MOCK, PROPERTIES, RESPONSIBILITIES_CATEGORY_MOCK, RESPONSIBILITIES_MOCK, ROLES_CATEGORY_MOCK, ROLES_MOCK, SKILLS_CATEGORY_MOCK, SKILLS_MOCK, SKILL_LEVELS_MOCK, TASKS, TASK_STATUSES, TASK_TEMPLATES, TASK_TYPES, TEAMS_MOCK, TEXT_TEMPLATES, TEXT_TEMPLATE_CATEGORY, applications, auditLoggerMiddleware, calendarEventMock, calendarEventTypeMockData, calendarMock, createAndSaveDashboardForUser, createDashboardForUser, createFileCastMiddleware, findContactMethod, findEmployeeById, findPartyById, generateUserDashboard, identifierCommitMiddleware, meetingFilesMock, meetingIds, meetingMock, meetingParticipantMock, meetingRoleTypeMock, meetingSessionMock, meetingTimeSlotMock, meetingTypeFileTemplateMock, meetingTypeMock, mergeDetailRelationMiddleware, mockRoleDefinitions, mockUsers, participantIds, tenantsMock };
38091
+ export { APPLICATIONS, APPLICATIONS_MODULES, AXCAppTermDataSeeder, AXCAppVersionDataSeeder, AXCApplicationManagementMockModule, AXCApplicationTemplateDataSeeder, AXCAuthMockModule, AXCCalendarDataSeeder, AXCCalendarEventDataSeeder, AXCCalendarManagementMockModule, AXCCommonMockModule, AXCContactManagementMockModule, AXCContentManagementMockModule, AXCConversationMockModule, AXCCustomerManagementMockModule, AXCDashboardManagementMockModule, AXCDataManagementMockModule, AXCDexieEntityStorageService, AXCDocumentManagementMockModule, AXCFileStorageService, AXCFormTemplateManagementMockModule, AXCGlobalVariablesDataSeeder, AXCGoogleStrategyMock, AXCHelpDeskMockModule, AXCHumanCapitalManagementMockModule, AXCIdentifierManagementMockModule, AXCJsaSeeder, AXCLocaleManagementMockModule, AXCLocationManagementMockModule, AXCLockService, AXCLogManagementMockModule, AXCLogReportCategoryProvider, AXCLogReportDefinitionProvider, AXCMeetingManagementMockModule, AXCMetaDataDefinitionDataSeeder, AXCMiddlewaresModule, AXCMockEntityLogListener, AXCMockModule, AXCNotificationManagementMockModule, AXCOrganizationManagementMockModule, AXCPartyManagementMockModule, AXCPlatformManagementMockModule, AXCProjectManagementMockModule, AXCQueryCategoryMetadataInheritanceQuery, AXCReportManagementMockModule, AXCSchedulerJobDataSeeder, AXCSchedulerJobManagementMockModule, AXCSecurityManagementMockModule, AXCTaskManagementMockModule, AXCTextTemplateCategoryDataSeeder, AXCTextTemplateDataSeeder, AXCTextTemplateManagementMockModule, AXCTrainingManagementMockModule, AXCUserPassStrategyMock, AXCWorkflowManagementMockModule, AXC_LOG_REPORT_CATEGORY_PROVIDER, AXC_LOG_REPORT_DEFINITION_PROVIDER, AXMAiResponderService, AXMBusinessUnitDataSeeder, AXMCalendarEventTypeSeeder, AXMEmployeeDataSeeder, AXMEmployeeSkillDataSeeder, AXMEmployeeSkillsCategoryProvider, AXMEmployeeSkillsReportDefinitionProvider, AXMEmploymentTypeDataSeeder, AXMFormDataSourcesProvider, AXMIndustryDataSeeder, AXMLeaveRequestDataSeeder, AXMMeetingDataSeeder, AXMMeetingFilesDataSeeder, AXMMeetingParticipantDataSeeder, AXMMeetingRoleTypeDataSeeder, AXMMeetingSessionDataSeeder, AXMMeetingTypeDataSeeder, AXMMeetingTypeFileTemplateDataSeeder, AXMPositionAssignmentDataSeeder, AXMPositionDataSeeder, AXMReportCategoryDataSeeder, AXMReportDefinitionDataSeeder, AXMReportExecuteCommand, AXMReportMockDataService, AXMResponsibilityDataSeeder, AXMRoleDataSeeder, AXMSkillDataSeeder, AXMSkillLevelDataSeeder, AXMTeamDataSeeder, AXM_EMPLOYEE_SKILLS_CATEGORY_PROVIDER, AXM_EMPLOYEE_SKILLS_DEFINITION_PROVIDER, AXPDashboardDataSeeder, AXPIdentifierDB, AXPMessageDataSeeder, AXPMockChecksumProvider, AXPMockClockProvider, AXPMockIdentifierService, AXPMockLookupProvider, AXPMockPolicyProvider, AXPMockSequenceProvider, AXPRoomDataSeeder, AXPSecurityManagementRoleDataSeeder, AXPSecurityManagementUserDataSeeder, AXPTaskBoardPlatformManagementTaskProvider, AXPTaskBoardProjectManagementTaskProvider, AXQEmployeeSkillsLevelPercentagesQuery, AXQEmployeeSkillsLevelsQuery, AXQEmployeeSkillsListQuery, AXQEmployeeSkillsSkillPercentagesQuery, AXQEmployeeSkillsStatsQuery, AXQEmployeeSkillsTrendQuery, BUSINESS_UNITS_MOCK, DASHBOARDS, EDITIONS, EMPLOYEES_MOCK, EMPLOYEE_SKILLS_MOCK, EMPLOYMENT_TYPES_MOCK, ENTITIES, FEATURES, GLOBAL_VARIABLES, LEAVE_REQUESTS_MOCK, MODULES, PERMISSIONS, POSITIONS_CATEGORY_MOCK, POSITIONS_MOCK, POSITION_ASSIGNMENTS_MOCK, PROPERTIES, RESPONSIBILITIES_CATEGORY_MOCK, RESPONSIBILITIES_MOCK, ROLES_CATEGORY_MOCK, ROLES_MOCK, SKILLS_CATEGORY_MOCK, SKILLS_MOCK, SKILL_LEVELS_MOCK, TASKS, TASK_STATUSES, TASK_TEMPLATES, TASK_TYPES, TEAMS_MOCK, TEXT_TEMPLATES, TEXT_TEMPLATE_CATEGORY, applications, auditLoggerMiddleware, calendarEventMock, calendarEventTypeMockData, calendarMock, childCountMiddleware, createAndSaveDashboardForUser, createDashboardForUser, createFileCastMiddleware, findContactMethod, findEmployeeById, findPartyById, generateUserDashboard, identifierCommitMiddleware, meetingFilesMock, meetingIds, meetingMock, meetingParticipantMock, meetingRoleTypeMock, meetingSessionMock, meetingTimeSlotMock, meetingTypeFileTemplateMock, meetingTypeMock, mergeDetailRelationMiddleware, mockRoleDefinitions, mockUsers, participantIds, primaryMiddleware, tenantsMock };
37208
38092
  //# sourceMappingURL=acorex-connectivity-mock.mjs.map