@acorex/connectivity 19.3.0-next.1 → 19.3.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,29 +1,28 @@
1
1
  import { APPLICATION_SOURCE_NAME, MODULE_SOURCE_NAME, ENTITY_SOURCE_NAME, FEATURE_SOURCE_NAME, PERMISSION_SOURCE_NAME, PROPERTY_SOURCE_NAME, AXPModuleDesignerService } from '@acorex/modules/application-management';
2
2
  import { RootConfig as RootConfig$1, AXMFolderServiceImpl, AXMDocumentServiceImpl, AXMFolderService, AXMDocumentService } from '@acorex/modules/document-management';
3
- import { RootConfig as RootConfig$4, AXMNotificationEntityService } from '@acorex/modules/notification-management';
3
+ import { RootConfig as RootConfig$5, AXMNotificationEntityService } from '@acorex/modules/notification-management';
4
+ import { RootConfig as RootConfig$4, AXMDeviceSessionsServiceImpl, AXMSessionStatusTypes, AXMDeviceSessionsService } from '@acorex/modules/security-management';
4
5
  import * as i1$1 from '@acorex/platform/auth';
5
- import { AXPSessionService, AXPPermissionProviderService, AXPAuthModule } from '@acorex/platform/auth';
6
+ import { AXPSessionService, AXPAuthModule } from '@acorex/platform/auth';
6
7
  import { AXPDataGenerator, AXPRegionalService, AXPFileStorageStatus, AXPFileStorageService, AXP_SEARCH_PROVIDER } from '@acorex/platform/common';
7
- import { AXPEntityDefinitionRegistryService, AXPEntityStorageService, AXP_DATA_SEEDER_TOKEN } from '@acorex/platform/layout/entity';
8
+ import { AXPEntityDefinitionRegistryService, AXP_DATA_SEEDER_TOKEN, AXPEntityStorageService } from '@acorex/platform/layout/entity';
8
9
  import * as i0 from '@angular/core';
9
10
  import { inject, Injectable, NgModule } from '@angular/core';
10
11
  import { applySortArray, applyFilterArray, AXPDataGenerator as AXPDataGenerator$1 } from '@acorex/platform/core';
11
12
  import Dexie from 'dexie';
12
- import { AXMDashboardServiceImpl, RootConfig } from '@acorex/modules/common';
13
- import { AXPWeatherWidget } from '@acorex/platform/widgets';
14
- import { from, firstValueFrom } from 'rxjs';
13
+ import { AXPBarChartWidget, AXPClockCalendarWidget, AXPWeatherWidget, AXPStickyNoteWidget, AXPNotificationWidget, AXPDonutChartWidget, AXPGaugeChartWidget, AXPTaskListWidget } from '@acorex/platform/widgets';
14
+ import { RootConfig } from '@acorex/modules/common';
15
15
  import * as i1 from '@acorex/modules/conversation';
16
16
  import { AXMConverstionModuleConst, AXMChatServiceImpl, AXMCommentServiceImpl, AXMChatModule, AXMChatService } from '@acorex/modules/conversation';
17
17
  import { AXMFormTemplateTypes, RootConfig as RootConfig$2 } from '@acorex/modules/form-template-management';
18
- import { RootConfig as RootConfig$3 } from '@acorex/modules/security-management';
19
- import { AXMOrganizationNodeType, RootConfig as RootConfig$5 } from '@acorex/modules/organization-management';
20
- import { RootConfig as RootConfig$6 } from '@acorex/modules/platform-management';
18
+ import { RootConfig as RootConfig$3 } from '@acorex/modules/log-management';
19
+ import { AXMOrganizationNodeType, RootConfig as RootConfig$6 } from '@acorex/modules/organization-management';
20
+ import { RootConfig as RootConfig$7 } from '@acorex/modules/platform-management';
21
21
  import { AXTranslationService } from '@acorex/core/translation';
22
+ import { firstValueFrom } from 'rxjs';
22
23
  import { AXFileService } from '@acorex/core/file';
23
- import { RootConfig as RootConfig$7 } from '@acorex/modules/scheduler-job-management';
24
- import { AXP_WIDGET_DATASOURCE_PROVIDER } from '@acorex/platform/layout/builder';
25
- import { convertArrayToDataSource } from '@acorex/components/common';
26
- import { RootConfig as RootConfig$8 } from '@acorex/modules/text-template-management';
24
+ import { RootConfig as RootConfig$8 } from '@acorex/modules/scheduler-job-management';
25
+ import { RootConfig as RootConfig$9 } from '@acorex/modules/text-template-management';
27
26
 
28
27
  const APPLICATIONS = Array.from({ length: 5 }).map((_, i) => {
29
28
  const source = ['appOne', 'appTwo', 'appThree', 'myCoolApp', 'awesomeApp', 'superApp'];
@@ -375,15 +374,24 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
375
374
  }] });
376
375
 
377
376
  // Widget types that can be used for generating mock data
378
- const widgetTypes = ['bar-chart', 'donut-chart', 'gauge-chart', 'map', 'clock-calendar', 'weather', 'sticky-note'];
377
+ const widgetTypes = [
378
+ 'bar-chart',
379
+ 'donut-chart',
380
+ 'gauge-chart',
381
+ 'map',
382
+ 'clock-calendar',
383
+ 'weather',
384
+ 'sticky-note',
385
+ 'notification',
386
+ 'task-list',
387
+ ];
379
388
  // Generate bar chart widget
380
389
  function generateBarChartWidget() {
381
390
  const uniqueId = AXPDataGenerator$1.alphabet(3).toUpperCase();
382
391
  return {
383
392
  config: {
384
393
  id: AXPDataGenerator$1.uuid(),
385
- height: 5,
386
- width: 6,
394
+ ...AXPBarChartWidget?.meta?.['dimensions'],
387
395
  },
388
396
  node: {
389
397
  name: `bar-chart-${uniqueId}`,
@@ -400,7 +408,7 @@ function generateBarChartWidget() {
400
408
  width: 600,
401
409
  height: 400,
402
410
  color: ['red', 'yellow', 'blue'],
403
- hasOptions: true,
411
+ hasConfiguration: true,
404
412
  },
405
413
  },
406
414
  };
@@ -411,8 +419,7 @@ function generateClockCalendarWidget() {
411
419
  return {
412
420
  config: {
413
421
  id: AXPDataGenerator$1.uuid(),
414
- height: 5,
415
- width: 3,
422
+ ...AXPClockCalendarWidget?.meta?.['dimensions'],
416
423
  },
417
424
  node: {
418
425
  name: `clock-calendar-${uniqueId}`,
@@ -429,7 +436,7 @@ function generateClockCalendarWidget() {
429
436
  accentColor: AXPDataGenerator$1.color(),
430
437
  }),
431
438
  options: {
432
- hasOptions: true,
439
+ hasConfiguration: true,
433
440
  },
434
441
  },
435
442
  };
@@ -440,8 +447,7 @@ function generateWeatherWidget() {
440
447
  return {
441
448
  config: {
442
449
  id: AXPDataGenerator$1.uuid(),
443
- height: 7,
444
- width: 3,
450
+ ...AXPWeatherWidget?.meta?.['dimensions'],
445
451
  },
446
452
  node: {
447
453
  name: `weather-${uniqueId}`,
@@ -449,7 +455,7 @@ function generateWeatherWidget() {
449
455
  type: 'weather',
450
456
  options: {
451
457
  city: AXPDataGenerator$1.city(),
452
- hasOptions: true,
458
+ hasConfiguration: true,
453
459
  },
454
460
  meta: {
455
461
  ...AXPWeatherWidget.meta,
@@ -463,8 +469,7 @@ function generateStickyNoteWidget() {
463
469
  return {
464
470
  config: {
465
471
  id: AXPDataGenerator$1.uuid(),
466
- height: 3,
467
- width: 3,
472
+ ...AXPStickyNoteWidget?.meta?.['dimensions'],
468
473
  },
469
474
  node: {
470
475
  name: `sticky-note-${uniqueId}`,
@@ -473,7 +478,100 @@ function generateStickyNoteWidget() {
473
478
  defaultValue: `Note from ${AXPDataGenerator$1.firstName()} ${AXPDataGenerator$1.lastName()}:
474
479
  Remember to complete the ${AXPDataGenerator$1.pick(['project', 'task', 'meeting', 'report'])} by end of day.`,
475
480
  options: {
476
- hasOptions: false,
481
+ hasConfiguration: false,
482
+ },
483
+ },
484
+ };
485
+ }
486
+ // Generate notification widget
487
+ function generateNotificationWidget() {
488
+ const uniqueId = AXPDataGenerator$1.alphabet(3).toUpperCase();
489
+ // Generate 3-8 random notifications
490
+ const notifications = Array.from({ length: AXPDataGenerator$1.number(3, 8) }).map((_, index) => {
491
+ const firstName = AXPDataGenerator$1.firstName();
492
+ const lastName = AXPDataGenerator$1.lastName();
493
+ // Select a random notification type
494
+ const type = AXPDataGenerator$1.pick(['File', 'Person', 'Notification']);
495
+ // Select a random notification priority
496
+ const priority = AXPDataGenerator$1.pick(['Warning', 'Danger', 'Notice']);
497
+ // Create message based on type
498
+ let message = '';
499
+ switch (type) {
500
+ case 'File':
501
+ message = `New document "${AXPDataGenerator$1.alphabet(AXPDataGenerator$1.number(5, 20))}.${AXPDataGenerator$1.pick([
502
+ 'pdf',
503
+ 'docx',
504
+ 'xlsx',
505
+ ])}" has been shared with you`;
506
+ break;
507
+ case 'Person':
508
+ message = `${firstName} ${lastName} ${AXPDataGenerator$1.pick([
509
+ 'sent you a message',
510
+ 'mentioned you in a comment',
511
+ 'added you to a project',
512
+ 'requested your feedback',
513
+ ])}`;
514
+ break;
515
+ case 'Notification':
516
+ message = AXPDataGenerator$1.pick([
517
+ 'Your task is due tomorrow',
518
+ 'Meeting starts in 15 minutes',
519
+ 'Your report has been approved',
520
+ 'Project status has been updated',
521
+ 'New announcement from the team',
522
+ ]);
523
+ break;
524
+ }
525
+ // Create a random timestamp within the last week
526
+ const now = new Date();
527
+ const weekAgo = new Date();
528
+ weekAgo.setDate(now.getDate() - 7);
529
+ const timestamp = AXPDataGenerator$1.date(weekAgo, now);
530
+ // Make some notifications read and some unread
531
+ const isRead = index < 2 ? false : AXPDataGenerator$1.boolean();
532
+ return {
533
+ id: AXPDataGenerator$1.uuid(),
534
+ title: `${firstName} ${lastName}`,
535
+ body: message,
536
+ channel: 'InApp',
537
+ content: {
538
+ type,
539
+ data: {},
540
+ },
541
+ user: {
542
+ id: AXPDataGenerator$1.uuid(),
543
+ name: `${firstName} ${lastName}`,
544
+ // image: `assets/images/avatar/user-${AXPDataGenerator.number(1, 12)}.png`,
545
+ image: `https://picsum.photos/300/300`,
546
+ },
547
+ template: {
548
+ category: 'Inbox',
549
+ priority,
550
+ icon: `fa-light fa-${AXPDataGenerator$1.pick(['envelope', 'bell', 'file', 'user', 'calendar'])}`,
551
+ isPinned: AXPDataGenerator$1.boolean(),
552
+ },
553
+ readAt: isRead ? AXPDataGenerator$1.date(weekAgo, timestamp) : null,
554
+ createdAt: timestamp,
555
+ };
556
+ });
557
+ return {
558
+ config: {
559
+ id: AXPDataGenerator$1.uuid(),
560
+ ...AXPNotificationWidget?.meta?.['dimensions'],
561
+ },
562
+ node: {
563
+ name: `notification-${uniqueId}`,
564
+ path: 'notification',
565
+ type: 'notification',
566
+ defaultValue: {
567
+ data: notifications,
568
+ total: notifications.length,
569
+ },
570
+ options: {
571
+ maxItems: 10,
572
+ showAvatar: true,
573
+ showTimestamp: true,
574
+ hasConfiguration: true,
477
575
  },
478
576
  },
479
577
  };
@@ -484,8 +582,7 @@ function generateDonutChartWidget() {
484
582
  return {
485
583
  config: {
486
584
  id: AXPDataGenerator$1.uuid(),
487
- height: 4,
488
- width: 4,
585
+ ...AXPDonutChartWidget?.meta?.['dimensions'],
489
586
  },
490
587
  node: {
491
588
  name: `donut-chart-${uniqueId}`,
@@ -498,13 +595,13 @@ function generateDonutChartWidget() {
498
595
  { id: 'd', name: 'Dates', value: AXPDataGenerator$1.number(5, 20), color: '#9575CD' },
499
596
  ],
500
597
  options: {
501
- width: 250,
502
- height: 250,
598
+ width: 500,
599
+ height: 500,
503
600
  showLegend: true,
504
601
  showTooltip: true,
505
602
  showPercentage: true,
506
603
  showValue: true,
507
- hasOptions: true,
604
+ hasConfiguration: true,
508
605
  },
509
606
  },
510
607
  };
@@ -515,43 +612,158 @@ function generateGaugeChartWidget() {
515
612
  return {
516
613
  config: {
517
614
  id: AXPDataGenerator$1.uuid(),
518
- height: 4,
519
- width: 3,
615
+ ...AXPGaugeChartWidget?.meta?.['dimensions'],
520
616
  },
521
617
  node: {
522
618
  name: `gauge-chart-${uniqueId}`,
523
619
  path: 'gauge-chart',
524
620
  type: 'gauge-chart',
621
+ defaultValue: AXPDataGenerator$1.number(30, 90),
622
+ options: {
623
+ width: 250,
624
+ height: 250,
625
+ minValue: 0,
626
+ maxValue: 100,
627
+ label: 'CPU Usage',
628
+ animationDuration: 3000,
629
+ },
630
+ },
631
+ };
632
+ }
633
+ // Generate task list widget
634
+ function generateTaskListWidget() {
635
+ const uniqueId = AXPDataGenerator$1.alphabet(3).toUpperCase();
636
+ // Generate 5-12 random tasks
637
+ const tasks = Array.from({ length: AXPDataGenerator$1.number(5, 12) }).map((_, index) => {
638
+ // Generate random due date between yesterday and next month
639
+ const yesterday = new Date();
640
+ yesterday.setDate(yesterday.getDate() - 1);
641
+ const nextMonth = new Date();
642
+ nextMonth.setMonth(nextMonth.getMonth() + 1);
643
+ const dueDate = AXPDataGenerator$1.date(yesterday, nextMonth);
644
+ // Generate random task data
645
+ const firstName = AXPDataGenerator$1.firstName();
646
+ const lastName = AXPDataGenerator$1.lastName();
647
+ // Random priority
648
+ const priority = AXPDataGenerator$1.pick(['low', 'medium', 'high']);
649
+ // Random category
650
+ const category = AXPDataGenerator$1.pick([
651
+ 'Development',
652
+ 'Design',
653
+ 'Marketing',
654
+ 'Meeting',
655
+ 'Research',
656
+ 'Planning',
657
+ 'Documentation',
658
+ ]);
659
+ // Generate sample data for second person in a meeting task
660
+ const secondPersonFirstName = AXPDataGenerator$1.firstName();
661
+ const secondPersonLastName = AXPDataGenerator$1.lastName();
662
+ // Random task title
663
+ const taskTitle = AXPDataGenerator$1.pick([
664
+ `${AXPDataGenerator$1.pick(['Create', 'Update', 'Fix', 'Review', 'Finalize'])} ${AXPDataGenerator$1.pick([
665
+ 'dashboard',
666
+ 'report',
667
+ 'component',
668
+ 'feature',
669
+ 'documentation',
670
+ 'presentation',
671
+ ])}`,
672
+ `${AXPDataGenerator$1.pick([
673
+ 'Prepare',
674
+ 'Schedule',
675
+ 'Attend',
676
+ 'Summarize',
677
+ ])} meeting with ${secondPersonFirstName} ${secondPersonLastName}`,
678
+ `${AXPDataGenerator$1.pick(['Research', 'Analyze', 'Document'])} ${AXPDataGenerator$1.pick([
679
+ 'market trends',
680
+ 'user feedback',
681
+ 'competitor features',
682
+ 'new technology',
683
+ ])}`,
684
+ `${AXPDataGenerator$1.pick(['Deploy', 'Test', 'Debug'])} ${AXPDataGenerator$1.pick([
685
+ 'application',
686
+ 'feature',
687
+ 'hotfix',
688
+ 'release',
689
+ ])}`,
690
+ `${AXPDataGenerator$1.pick(['Contact', 'Follow up with', 'Email'])} ${firstName} about ${AXPDataGenerator$1.pick([
691
+ 'project status',
692
+ 'contract',
693
+ 'feedback',
694
+ 'requirements',
695
+ ])}`,
696
+ ]);
697
+ // Calculate days difference for due date
698
+ const today = new Date();
699
+ today.setHours(0, 0, 0, 0);
700
+ const dueDateCopy = new Date(dueDate);
701
+ dueDateCopy.setHours(0, 0, 0, 0);
702
+ const diffTime = dueDateCopy.getTime() - today.getTime();
703
+ const diffDays = Math.floor(diffTime / (1000 * 60 * 60 * 24));
704
+ // Task is completed if it's in the past 30% of the time
705
+ const isCompleted = diffDays < 0 ? Math.random() < 0.8 : Math.random() < 0.3;
706
+ return {
707
+ id: AXPDataGenerator$1.uuid(),
708
+ title: taskTitle,
709
+ completed: isCompleted,
710
+ priority: priority,
711
+ dueDate: dueDate,
712
+ category: category,
713
+ assignedTo: {
714
+ id: AXPDataGenerator$1.uuid(),
715
+ name: `${firstName} ${lastName}`,
716
+ image: Math.random() < 0.3 ? `https://i.pravatar.cc/150?u=${AXPDataGenerator$1.uuid()}` : undefined,
717
+ },
718
+ createdAt: AXPDataGenerator$1.date(new Date(new Date().setDate(new Date().getDate() - 30)), new Date()),
719
+ };
720
+ });
721
+ return {
722
+ config: {
723
+ id: AXPDataGenerator$1.uuid(),
724
+ ...AXPTaskListWidget?.meta?.['dimensions'],
725
+ },
726
+ node: {
727
+ name: `task-list-${uniqueId}`,
728
+ path: 'task-list',
729
+ type: 'task-list',
525
730
  defaultValue: {
526
- data: {
527
- id: 'gauge1',
528
- name: 'System Load',
529
- value: AXPDataGenerator$1.number(30, 90),
530
- color: '#2196F3',
531
- },
532
- options: {
533
- width: 250,
534
- height: 250,
535
- minValue: 0,
536
- maxValue: 100,
537
- label: 'CPU Usage',
538
- animationDuration: 3000,
539
- },
731
+ data: tasks,
732
+ },
733
+ options: {
734
+ maxItems: 10,
735
+ showDate: true,
736
+ showAssignee: true,
737
+ groupByCategory: AXPDataGenerator$1.boolean(),
738
+ showPriority: AXPDataGenerator$1.boolean(),
739
+ allowMarkComplete: true,
740
+ hasConfiguration: true,
540
741
  },
541
742
  },
542
743
  };
543
744
  }
544
745
  // Widget generator factory
545
746
  function getWidgetGenerator(type) {
546
- const generators = {
547
- 'bar-chart': generateBarChartWidget,
548
- 'clock-calendar': generateClockCalendarWidget,
549
- weather: generateWeatherWidget,
550
- 'sticky-note': generateStickyNoteWidget,
551
- 'donut-chart': generateDonutChartWidget,
552
- 'gauge-chart': generateGaugeChartWidget,
553
- };
554
- return generators[type] || generateBarChartWidget;
747
+ switch (type) {
748
+ case 'bar-chart':
749
+ return generateBarChartWidget;
750
+ case 'donut-chart':
751
+ return generateDonutChartWidget;
752
+ case 'gauge-chart':
753
+ return generateGaugeChartWidget;
754
+ case 'clock-calendar':
755
+ return generateClockCalendarWidget;
756
+ case 'weather':
757
+ return generateWeatherWidget;
758
+ case 'sticky-note':
759
+ return generateStickyNoteWidget;
760
+ case 'notification':
761
+ return generateNotificationWidget;
762
+ case 'task-list':
763
+ return generateTaskListWidget;
764
+ default:
765
+ return generateBarChartWidget;
766
+ }
555
767
  }
556
768
  // Generate a random dashboard widget
557
769
  function generateRandomWidget() {
@@ -568,7 +780,7 @@ function generateRandomDashboard() {
568
780
  name: `Dashboard ${AXPDataGenerator$1.firstName()}`,
569
781
  title: `${AXPDataGenerator$1.firstName()} Dashboard`,
570
782
  description: `This is a sample dashboard for ${AXPDataGenerator$1.firstName()} ${AXPDataGenerator$1.lastName()}`,
571
- widget: widgets,
783
+ widgets: widgets,
572
784
  createdAt: AXPDataGenerator$1.date(new Date(2023, 0, 1), new Date()),
573
785
  createdBy: `${AXPDataGenerator$1.firstName()} ${AXPDataGenerator$1.lastName()}`,
574
786
  };
@@ -580,137 +792,6 @@ function generateExtraRandomDashboards(count) {
580
792
  // Create dashboards: predefined + some random ones
581
793
  const DASHBOARDS = [...generateExtraRandomDashboards(AXPDataGenerator$1.number(2, 5))];
582
794
 
583
- class AXMDashboardMockService extends AXMDashboardServiceImpl {
584
- constructor() {
585
- // Call the parent constructor with the entity name
586
- super();
587
- // Use a different property name to avoid conflict with the private entityName in base class
588
- this.dashboardCollection = 'common_dashboards';
589
- // Use protected instead of private to match the visibility in the parent class
590
- this.mockStorage = inject(AXPEntityStorageService);
591
- // Initialize the storage with mock data
592
- this.mockStorage.initial(this.dashboardCollection, DASHBOARDS);
593
- }
594
- // Override getter for storageService from parent class
595
- get storageService() {
596
- return this.mockStorage;
597
- }
598
- // Override methods from AXMEntityCrudServiceImpl
599
- async insertOne(request) {
600
- const id = await this.mockStorage.insertOne(this.dashboardCollection, request);
601
- return id;
602
- }
603
- async getOne(id) {
604
- return this.mockStorage.getOne(this.dashboardCollection, id);
605
- }
606
- async deleteOne(id) {
607
- await this.mockStorage.deleteOne(this.dashboardCollection, id);
608
- }
609
- async updateOne(id, values) {
610
- await this.mockStorage.updateOne(this.dashboardCollection, id, values);
611
- return this.getOne(id);
612
- }
613
- async query(request = { skip: 0, take: 100 }) {
614
- const allItems = (await this.mockStorage.getAll(this.dashboardCollection));
615
- // Basic filtering if filter is provided in request
616
- let filteredItems = allItems;
617
- if (request.filter) {
618
- // Implement basic filtering if needed
619
- }
620
- // Pagination
621
- const skip = request.skip || 0;
622
- const take = request.take || 100;
623
- const items = filteredItems.slice(skip, skip + take);
624
- return {
625
- items,
626
- total: filteredItems.length,
627
- };
628
- }
629
- // Helper method to get all dashboards
630
- async getAll() {
631
- return this.mockStorage.getAll(this.dashboardCollection);
632
- }
633
- // Additional convenience methods specific to the mock service
634
- /**
635
- * Generate a random dashboard and add it to the store
636
- */
637
- async createRandomDashboard() {
638
- const dashboard = generateRandomDashboard();
639
- return this.insertOne(dashboard);
640
- }
641
- /**
642
- * Update widget configuration within a dashboard
643
- */
644
- async updateWidgetConfig(dashboardId, widgetId, config) {
645
- const dashboard = await this.getOne(dashboardId);
646
- if (!dashboard)
647
- return;
648
- const updatedWidgets = dashboard.widget.map((widget) => {
649
- if (widget.config.id === widgetId) {
650
- return {
651
- ...widget,
652
- config: {
653
- ...widget.config,
654
- ...config,
655
- },
656
- };
657
- }
658
- return widget;
659
- });
660
- await this.updateOne(dashboardId, {
661
- ...dashboard,
662
- widget: updatedWidgets,
663
- });
664
- }
665
- /**
666
- * Update widget node within a dashboard
667
- */
668
- async updateWidgetNode(dashboardId, widgetId, node) {
669
- const dashboard = await this.getOne(dashboardId);
670
- if (!dashboard)
671
- return;
672
- const updatedWidgets = dashboard.widget.map((widget) => {
673
- if (widget.config.id === widgetId) {
674
- return {
675
- ...widget,
676
- node: {
677
- ...widget.node,
678
- ...node,
679
- },
680
- };
681
- }
682
- return widget;
683
- });
684
- await this.updateOne(dashboardId, {
685
- ...dashboard,
686
- widget: updatedWidgets,
687
- });
688
- }
689
- /**
690
- * Get dashboards as Observable for the store
691
- */
692
- getDashboards() {
693
- return from(this.getAll());
694
- }
695
- /**
696
- * Save a dashboard (create or update)
697
- */
698
- async saveDashboard(dashboard) {
699
- if (dashboard.id) {
700
- await this.updateOne(dashboard.id, dashboard);
701
- return dashboard.id;
702
- }
703
- else {
704
- return this.insertOne(dashboard);
705
- }
706
- }
707
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDashboardMockService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
708
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDashboardMockService }); }
709
- }
710
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMDashboardMockService, decorators: [{
711
- type: Injectable
712
- }], ctorParameters: () => [] });
713
-
714
795
  class AXPDashboardDataSeeder {
715
796
  constructor() {
716
797
  this.storageService = inject(AXPDexieEntityStorageService);
@@ -725,41 +806,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
725
806
  type: Injectable
726
807
  }] });
727
808
 
728
- class AXCCommonMockModule {
729
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCCommonMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
730
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXCCommonMockModule }); }
731
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCCommonMockModule, providers: [
732
- {
733
- provide: AXMDashboardServiceImpl,
734
- useClass: AXMDashboardMockService,
735
- },
736
- {
737
- provide: AXP_DATA_SEEDER_TOKEN,
738
- useClass: AXPDashboardDataSeeder,
739
- multi: true,
740
- },
741
- ] }); }
742
- }
743
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCCommonMockModule, decorators: [{
744
- type: NgModule,
745
- args: [{
746
- imports: [],
747
- exports: [],
748
- declarations: [],
749
- providers: [
750
- {
751
- provide: AXMDashboardServiceImpl,
752
- useClass: AXMDashboardMockService,
753
- },
754
- {
755
- provide: AXP_DATA_SEEDER_TOKEN,
756
- useClass: AXPDashboardDataSeeder,
757
- multi: true,
758
- },
759
- ],
760
- }]
761
- }] });
762
-
763
809
  const generateChatUser = () => ({
764
810
  id: AXPDataGenerator.uuid(),
765
811
  userName: AXPDataGenerator.firstName().toLowerCase(),
@@ -2202,12 +2248,12 @@ function generateCategories() {
2202
2248
  { parent: 'Chemical Safety', children: ['Chemical Labeling', 'Exposure Limits', 'Emergency Showers'] },
2203
2249
  ];
2204
2250
  childCategories.forEach(({ parent, children }) => {
2205
- const parentCategory = categories.find((c) => c.title === parent);
2206
- if (parentCategory) {
2251
+ const parentCat = categories.find((c) => c.title === parent);
2252
+ if (parentCat) {
2207
2253
  children.forEach((title) => {
2208
- categories.push({ id: AXPDataGenerator$1.uuid(), title, parentId: parentCategory.id, childCount: 0 });
2254
+ categories.push({ id: AXPDataGenerator$1.uuid(), title, parentId: parentCat.id, childCount: 0 });
2209
2255
  });
2210
- parentCategory.childCount = children.length;
2256
+ parentCat.childCount = children.length;
2211
2257
  }
2212
2258
  });
2213
2259
  return categories;
@@ -2291,6 +2337,82 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
2291
2337
  }]
2292
2338
  }] });
2293
2339
 
2340
+ const projectMock = [
2341
+ {
2342
+ id: AXPDataGenerator.uuid(),
2343
+ level: 'Error',
2344
+ message: 'Cannot access a disposed object.',
2345
+ actionName: 'ACoreX.OIDC.AuthorizeController.GetToken (ACoreX.OIDC.HttpApi)',
2346
+ operation: 'CheckPassword',
2347
+ category: 'Authentication',
2348
+ tenantId: 'b1e7040f-f219-2f64-2893-3a0e9c2315de',
2349
+ tenantName: 'ark',
2350
+ userId: 'fb0c9a89-f57f-43dd-82c2-b50992bdde8c',
2351
+ utcTimestamp: '2025-04-15 11:53:46Z',
2352
+ type: 'auth',
2353
+ properties: {
2354
+ actionId: '50b5c660-bcc8-45bc-a111-42eab92c3adb',
2355
+ correlationId: 'de5ccac8485c4c7f9afaf15603c36227',
2356
+ requestId: '0HNBS2G24BO4E:00000002',
2357
+ requestPath: '/Token/GetToken',
2358
+ sourceContext: 'Microsoft.AspNetCore.Identity.UserManager',
2359
+ },
2360
+ },
2361
+ {
2362
+ id: AXPDataGenerator.uuid(),
2363
+ level: '2Error',
2364
+ message: '2Cannot access a disposed object.',
2365
+ actionName: '2ACoreX.OIDC.AuthorizeController.GetToken (ACoreX.OIDC.HttpApi)',
2366
+ operation: '2CheckPassword',
2367
+ category: '2Authentication',
2368
+ tenantId: '2b1e7040f-f219-2f64-2893-3a0e9c2315de',
2369
+ tenantName: '2ark',
2370
+ userId: '2fb0c9a89-f57f-43dd-82c2-b50992bdde8c',
2371
+ utcTimestamp: '2025-04-15 11:53:46Z',
2372
+ properties: {
2373
+ actionId: '50b5c660-bcc8-45bc-a111-42eab92c3adb',
2374
+ correlationId: 'de5ccac8485c4c7f9afaf15603c36227',
2375
+ requestId: '0HNBS2G24BO4E:00000002',
2376
+ requestPath: '2/Token/GetToken',
2377
+ sourceContext: '2Microsoft.AspNetCore.Identity.UserManager',
2378
+ },
2379
+ },
2380
+ {
2381
+ id: AXPDataGenerator.uuid(),
2382
+ level: '3Error',
2383
+ message: '3Cannot access a disposed object.',
2384
+ actionName: '3ACoreX.OIDC.AuthorizeController.GetToken (ACoreX.OIDC.HttpApi)',
2385
+ operation: '3CheckPassword',
2386
+ category: '3Authentication',
2387
+ tenantId: '3b1e7040f-f219-2f64-2893-3a0e9c2315de',
2388
+ tenantName: '3ark',
2389
+ userId: '3fb0c9a89-f57f-43dd-82c2-b50992bdde8c',
2390
+ utcTimestamp: '2025-04-15 11:53:46Z',
2391
+ properties: {
2392
+ actionId: '50b5c660-bcc8-45bc-a111-42eab92c3adb',
2393
+ correlationId: 'de5ccac8485c4c7f9afaf15603c36227',
2394
+ requestId: '0HNBS2G24BO4E:00000002',
2395
+ requestPath: '3/Token/GetToken',
2396
+ sourceContext: '3Microsoft.AspNetCore.Identity.UserManager',
2397
+ },
2398
+ },
2399
+ ];
2400
+
2401
+ // import { AXMLogManagementAxpLogEntityModel } from 'libs/modules/log-management/src/lib/entities/axp-log';
2402
+ class AXMLogDataSeeder {
2403
+ constructor() {
2404
+ this.storageService = inject(AXPDexieEntityStorageService);
2405
+ }
2406
+ async seed() {
2407
+ await this.storageService.initial(`${RootConfig$3.module.name}.${RootConfig$3.entities.axpLog.name}`, projectMock);
2408
+ }
2409
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMLogDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2410
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMLogDataSeeder }); }
2411
+ }
2412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXMLogDataSeeder, decorators: [{
2413
+ type: Injectable
2414
+ }] });
2415
+
2294
2416
  class MOCKStrategy {
2295
2417
  constructor() {
2296
2418
  this.entityRegistery = inject(AXPEntityDefinitionRegistryService);
@@ -2299,7 +2421,7 @@ class MOCKStrategy {
2299
2421
  return 'user-pass';
2300
2422
  }
2301
2423
  async signin(credentials) {
2302
- const entityRef = await this.entityRegistery.resolve(RootConfig$3.module.name, RootConfig$3.entities.users.name);
2424
+ const entityRef = await this.entityRegistery.resolve(RootConfig$4.module.name, RootConfig$4.entities.users.name);
2303
2425
  const accessToken = 'access_token';
2304
2426
  const refreshToken = 'refresh_token';
2305
2427
  try {
@@ -2478,7 +2600,7 @@ class AXCNotificationTemplateDataSeeder {
2478
2600
  this.storageService = inject(AXPDexieEntityStorageService);
2479
2601
  }
2480
2602
  async seed() {
2481
- await this.storageService.initial(`${RootConfig$4.module.name}.${RootConfig$4.entities.template.name}`, NOTIFICATION_TEMPLATES);
2603
+ await this.storageService.initial(`${RootConfig$5.module.name}.${RootConfig$5.entities.template.name}`, NOTIFICATION_TEMPLATES);
2482
2604
  }
2483
2605
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCNotificationTemplateDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
2484
2606
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCNotificationTemplateDataSeeder }); }
@@ -3033,61 +3155,159 @@ class AXCOrganizationManagementDataSeeder {
3033
3155
  async seed() {
3034
3156
  const uuid = AXPDataGenerator.uuid;
3035
3157
  // Departments
3036
- await this.storageService.initial(RootConfig$5.entities.department.source, [
3158
+ await this.storageService.initial(RootConfig$6.entities.department.source, [
3037
3159
  {
3038
3160
  id: uuid(),
3039
- title: 'Engineering Division',
3040
- description: 'A department focused on engineering projects and development.',
3161
+ title: 'Software Development',
3162
+ description: 'Responsible for designing, developing, and maintaining software applications.',
3163
+ manager: {
3164
+ id: uuid(),
3165
+ firstname: 'Michael',
3166
+ lastname: 'Johnson',
3167
+ employeeCode: 'EMP003',
3168
+ },
3169
+ country: 'USA',
3170
+ province: 'New York',
3171
+ city: 'New York City',
3041
3172
  },
3042
3173
  {
3043
3174
  id: uuid(),
3044
- title: 'Sales Division',
3045
- description: 'A department dedicated to driving sales and customer engagement.',
3175
+ title: 'Human Resources',
3176
+ description: 'Manages employee relations, hiring processes, and company policies.',
3177
+ manager: {
3178
+ id: uuid(),
3179
+ firstname: 'Lisa',
3180
+ lastname: 'Brown',
3181
+ employeeCode: 'EMP010',
3182
+ },
3183
+ country: 'USA',
3184
+ province: 'California',
3185
+ city: 'Los Angeles',
3046
3186
  },
3047
3187
  {
3048
3188
  id: uuid(),
3049
- title: 'Customer Support Division',
3050
- description: 'A department committed to delivering excellent customer service.',
3189
+ title: 'IT & Infrastructure',
3190
+ description: 'Handles IT systems, security, and infrastructure management.',
3191
+ manager: {
3192
+ id: uuid(),
3193
+ firstname: 'Robert',
3194
+ lastname: 'Wilson',
3195
+ employeeCode: 'EMP009',
3196
+ },
3197
+ country: 'Germany',
3198
+ province: 'Berlin',
3199
+ city: 'Berlin',
3200
+ },
3201
+ {
3202
+ id: uuid(),
3203
+ title: 'Project Management',
3204
+ description: 'Oversees project execution and ensures successful delivery.',
3205
+ manager: {
3206
+ id: uuid(),
3207
+ firstname: 'Jane',
3208
+ lastname: 'Smith',
3209
+ employeeCode: 'EMP002',
3210
+ },
3211
+ country: 'Japan',
3212
+ province: 'Tokyo',
3213
+ city: 'Tokyo',
3051
3214
  },
3052
3215
  ]);
3053
3216
  // Divisions
3054
- await this.storageService.initial(RootConfig$5.entities.division.source, [
3217
+ await this.storageService.initial(RootConfig$6.entities.division.source, [
3055
3218
  {
3056
3219
  id: uuid(),
3057
- title: 'Software Development',
3058
- description: 'A division within the Engineering Department responsible for developing software solutions.',
3220
+ title: 'Technology Division',
3221
+ description: 'Responsible for all technology-related projects and innovations.',
3222
+ manager: {
3223
+ id: uuid(),
3224
+ firstname: 'Michael',
3225
+ lastname: 'Johnson',
3226
+ employeeCode: 'EMP003',
3227
+ },
3228
+ country: 'USA',
3229
+ province: 'New York',
3230
+ city: 'New York City',
3059
3231
  },
3060
3232
  {
3061
3233
  id: uuid(),
3062
- title: 'Business Development',
3063
- description: 'A division within the Sales Department focused on expanding business opportunities.',
3234
+ title: 'Operations Division',
3235
+ description: 'Handles operational processes, logistics, and resource management.',
3236
+ manager: {
3237
+ id: uuid(),
3238
+ firstname: 'Robert',
3239
+ lastname: 'Wilson',
3240
+ employeeCode: 'EMP009',
3241
+ },
3242
+ country: 'Germany',
3243
+ province: 'Berlin',
3244
+ city: 'Berlin',
3064
3245
  },
3065
3246
  {
3066
3247
  id: uuid(),
3067
- title: 'Technical Support',
3068
- description: 'A division within the Customer Support Department that handles technical assistance.',
3248
+ title: 'Human Capital Division',
3249
+ description: 'Manages HR policies, recruitment, and employee relations.',
3250
+ manager: {
3251
+ id: uuid(),
3252
+ firstname: 'Lisa',
3253
+ lastname: 'Brown',
3254
+ employeeCode: 'EMP010',
3255
+ },
3256
+ country: 'Japan',
3257
+ province: 'Tokyo',
3258
+ city: 'Tokyo',
3069
3259
  },
3070
3260
  ]);
3071
3261
  // Branches
3072
- await this.storageService.initial(RootConfig$5.entities.branch.source, [
3262
+ await this.storageService.initial(RootConfig$6.entities.branch.source, [
3073
3263
  {
3074
3264
  id: uuid(),
3075
- title: 'San Francisco Office',
3076
- description: 'A branch office located in San Francisco, serving as a hub for West Coast operations.',
3265
+ title: 'Headquarters',
3266
+ code: 'BR_HQ',
3267
+ manager: {
3268
+ id: uuid(),
3269
+ firstname: 'Michael',
3270
+ lastname: 'Johnson',
3271
+ employeeCode: 'EMP003',
3272
+ },
3273
+ country: 'USA',
3274
+ province: 'New York',
3275
+ city: 'New York City',
3276
+ description: 'The main headquarters located in New York City, overseeing all global operations.',
3077
3277
  },
3078
3278
  {
3079
3279
  id: uuid(),
3080
- title: 'New York Office',
3081
- description: 'A branch office located in New York, catering to our East Coast clients.',
3280
+ title: 'European Branch',
3281
+ code: 'BR_EU',
3282
+ manager: {
3283
+ id: uuid(),
3284
+ firstname: 'Robert',
3285
+ lastname: 'Wilson',
3286
+ employeeCode: 'EMP009',
3287
+ },
3288
+ country: 'Germany',
3289
+ province: 'Berlin',
3290
+ city: 'Berlin',
3291
+ description: 'The European branch located in Berlin, responsible for all business in Europe.',
3082
3292
  },
3083
3293
  {
3084
3294
  id: uuid(),
3085
- title: 'Bangalore Office',
3086
- description: 'A branch office in Bangalore supporting our international operations.',
3295
+ title: 'Asia-Pacific Branch',
3296
+ code: 'BR_APAC',
3297
+ manager: {
3298
+ id: uuid(),
3299
+ firstname: 'Lisa',
3300
+ lastname: 'Brown',
3301
+ employeeCode: 'EMP010',
3302
+ },
3303
+ country: 'Japan',
3304
+ province: 'Tokyo',
3305
+ city: 'Tokyo',
3306
+ description: 'The Asia-Pacific branch located in Tokyo, managing operations in the APAC region.',
3087
3307
  },
3088
3308
  ]);
3089
3309
  // Positions
3090
- await this.storageService.initial(RootConfig$5.entities.position.source, [
3310
+ await this.storageService.initial(RootConfig$6.entities.position.source, [
3091
3311
  {
3092
3312
  id: uuid(),
3093
3313
  title: 'Backend Developer',
@@ -3119,8 +3339,31 @@ class AXCOrganizationManagementDataSeeder {
3119
3339
  description: 'A role providing specialized technical assistance and problem resolution.',
3120
3340
  },
3121
3341
  ]);
3342
+ // Roles
3343
+ await this.storageService.initial(RootConfig$6.entities.role.source, [
3344
+ {
3345
+ id: uuid(),
3346
+ title: 'Software Engineer',
3347
+ description: 'Responsible for developing and maintaining software applications.',
3348
+ },
3349
+ {
3350
+ id: uuid(),
3351
+ title: 'Project Manager',
3352
+ description: 'Oversees project execution, ensures timely delivery, and manages team coordination.',
3353
+ },
3354
+ {
3355
+ id: uuid(),
3356
+ title: 'HR Manager',
3357
+ description: 'Handles recruitment, employee relations, and organizational policies.',
3358
+ },
3359
+ {
3360
+ id: uuid(),
3361
+ title: 'System Administrator',
3362
+ description: 'Manages IT infrastructure, ensures security, and maintains system performance.',
3363
+ },
3364
+ ]);
3122
3365
  // Employment Types
3123
- await this.storageService.initial(RootConfig$5.entities.employmentType.source, [
3366
+ await this.storageService.initial(RootConfig$6.entities.employmentType.source, [
3124
3367
  {
3125
3368
  id: uuid(),
3126
3369
  title: 'Full-Time',
@@ -3147,32 +3390,178 @@ class AXCOrganizationManagementDataSeeder {
3147
3390
  description: 'An employment type for freelance and project-based work.',
3148
3391
  },
3149
3392
  ]);
3393
+ // Teams
3394
+ await this.storageService.initial(RootConfig$6.entities.team.source, [
3395
+ {
3396
+ id: uuid(),
3397
+ title: 'Backend Development Team',
3398
+ leader: {
3399
+ id: uuid(),
3400
+ firstname: 'Jane',
3401
+ lastname: 'Smith',
3402
+ employeeCode: 'EMP002',
3403
+ },
3404
+ member: [
3405
+ {
3406
+ id: uuid(),
3407
+ firstname: 'Michael',
3408
+ lastname: 'Johnson',
3409
+ employeeCode: 'EMP003',
3410
+ },
3411
+ {
3412
+ id: uuid(),
3413
+ firstname: 'Emma',
3414
+ lastname: 'Davis',
3415
+ employeeCode: 'EMP004',
3416
+ },
3417
+ ],
3418
+ description: 'This team focuses on backend development, server-side logic, and database integration.',
3419
+ },
3420
+ {
3421
+ id: uuid(),
3422
+ title: 'Sales and HR Team',
3423
+ leader: {
3424
+ id: uuid(),
3425
+ firstname: 'Robert',
3426
+ lastname: 'Wilson',
3427
+ employeeCode: 'EMP009',
3428
+ },
3429
+ member: [
3430
+ {
3431
+ id: uuid(),
3432
+ firstname: 'Lisa',
3433
+ lastname: 'Brown',
3434
+ employeeCode: 'EMP010',
3435
+ },
3436
+ ],
3437
+ description: 'This team focuses on sales and HR operations, including recruitment and client relations.',
3438
+ },
3439
+ ]);
3150
3440
  // Employees
3151
- await this.storageService.initial(RootConfig$5.entities.employee.source, [
3152
- { id: uuid(), firstname: 'Jane', lastname: 'Smith', birthDate: new Date('1985-02-15'), employeeID: 'EMP002' },
3441
+ await this.storageService.initial(RootConfig$6.entities.employee.source, [
3442
+ {
3443
+ id: uuid(),
3444
+ firstname: 'Jane',
3445
+ lastname: 'Smith',
3446
+ birthDate: new Date('1985-02-15'),
3447
+ employeeCode: 'EMP002',
3448
+ email: 'jane.smith@example.com',
3449
+ role: {
3450
+ id: uuid(),
3451
+ title: 'Software Engineer',
3452
+ description: 'Responsible for developing and maintaining software applications.',
3453
+ },
3454
+ position: {
3455
+ id: uuid(),
3456
+ title: 'Backend Developer',
3457
+ description: 'A role responsible for server-side logic and integration with databases.',
3458
+ },
3459
+ employmentType: {
3460
+ id: uuid(),
3461
+ title: 'Full-Time',
3462
+ description: 'An employment category for full-time engagements.',
3463
+ },
3464
+ hireDate: new Date('2010-06-01'),
3465
+ },
3153
3466
  {
3154
3467
  id: uuid(),
3155
3468
  firstname: 'Michael',
3156
3469
  lastname: 'Johnson',
3157
3470
  birthDate: new Date('1978-03-22'),
3158
- employeeID: 'EMP003',
3471
+ employeeCode: 'EMP003',
3472
+ email: 'michael.johnson@example.com',
3473
+ role: {
3474
+ id: uuid(),
3475
+ title: 'Project Manager',
3476
+ description: 'Oversees project execution, ensures timely delivery, and manages team coordination.',
3477
+ },
3478
+ position: {
3479
+ id: uuid(),
3480
+ title: 'Sales Manager',
3481
+ description: 'A leadership position overseeing sales strategies and team performance.',
3482
+ },
3483
+ employmentType: {
3484
+ id: uuid(),
3485
+ title: 'Full-Time',
3486
+ description: 'An employment category for full-time engagements.',
3487
+ },
3488
+ hireDate: new Date('2005-09-12'),
3489
+ },
3490
+ {
3491
+ id: uuid(),
3492
+ firstname: 'Emma',
3493
+ lastname: 'Davis',
3494
+ birthDate: new Date('1992-04-10'),
3495
+ employeeCode: 'EMP004',
3496
+ email: 'emma.davis@example.com',
3497
+ role: {
3498
+ id: uuid(),
3499
+ title: 'HR Manager',
3500
+ description: 'Handles recruitment, employee relations, and organizational policies.',
3501
+ },
3502
+ position: {
3503
+ id: uuid(),
3504
+ title: 'Call Center Representative',
3505
+ description: 'A position dedicated to managing inbound and outbound customer calls.',
3506
+ },
3507
+ employmentType: {
3508
+ id: uuid(),
3509
+ title: 'Part-Time',
3510
+ description: 'An employment category for part-time work schedules.',
3511
+ },
3512
+ hireDate: new Date('2018-01-15'),
3159
3513
  },
3160
- { id: uuid(), firstname: 'Emma', lastname: 'Davis', birthDate: new Date('1992-04-10'), employeeID: 'EMP004' },
3161
3514
  {
3162
3515
  id: uuid(),
3163
3516
  firstname: 'Robert',
3164
3517
  lastname: 'Wilson',
3165
3518
  birthDate: new Date('1980-09-18'),
3166
- employeeID: 'EMP009',
3519
+ employeeCode: 'EMP009',
3520
+ email: 'robert.wilson@example.com',
3521
+ role: {
3522
+ id: uuid(),
3523
+ title: 'System Administrator',
3524
+ description: 'Manages IT infrastructure, ensures security, and maintains system performance.',
3525
+ },
3526
+ position: {
3527
+ id: uuid(),
3528
+ title: 'Technical Support Specialist',
3529
+ description: 'A role providing specialized technical assistance and problem resolution.',
3530
+ },
3531
+ employmentType: {
3532
+ id: uuid(),
3533
+ title: 'Contract',
3534
+ description: 'An employment type based on fixed-term contractual agreements.',
3535
+ },
3536
+ hireDate: new Date('2012-03-05'),
3537
+ },
3538
+ {
3539
+ id: uuid(),
3540
+ firstname: 'Lisa',
3541
+ lastname: 'Brown',
3542
+ birthDate: new Date('1987-10-29'),
3543
+ employeeCode: 'EMP010',
3544
+ email: 'lisa.brown@example.com',
3545
+ role: {
3546
+ id: uuid(),
3547
+ title: 'HR Manager',
3548
+ description: 'Handles recruitment, employee relations, and organizational policies.',
3549
+ },
3550
+ position: {
3551
+ id: uuid(),
3552
+ title: 'Sales Representative',
3553
+ description: 'A role tasked with building client relationships and closing sales deals.',
3554
+ },
3555
+ employmentType: {
3556
+ id: uuid(),
3557
+ title: 'Internship',
3558
+ description: 'An employment type designed for internship programs.',
3559
+ },
3560
+ hireDate: new Date('2014-07-11'),
3167
3561
  },
3168
- { id: uuid(), firstname: 'Lisa', lastname: 'Brown', birthDate: new Date('1987-10-29'), employeeID: 'EMP010' },
3169
- { id: uuid(), firstname: 'Rahul', lastname: 'Sharma', birthDate: new Date('1982-07-14'), employeeID: 'EMP007' },
3170
- { id: uuid(), firstname: 'Priya', lastname: 'Kapoor', birthDate: new Date('1982-07-14'), employeeID: 'EMP007' },
3171
- { id: uuid(), firstname: 'Amit', lastname: 'Verma', birthDate: new Date('1982-07-14'), employeeID: 'EMP007' },
3172
- { id: uuid(), firstname: 'Vikram', lastname: 'Singh', birthDate: new Date('1982-07-14'), employeeID: 'EMP007' },
3173
3562
  ]);
3174
3563
  // Store Chart Data
3175
- await this.storageService.initial(RootConfig$5.entities.chart.source, [
3564
+ await this.storageService.initial(RootConfig$6.entities.chart.source, [
3176
3565
  {
3177
3566
  id: uuid(),
3178
3567
  version: '1.0',
@@ -3298,7 +3687,7 @@ class AXCAppTermDataSeeder {
3298
3687
  this.storageService = inject(AXPDexieEntityStorageService);
3299
3688
  }
3300
3689
  async seed() {
3301
- await this.storageService.initial(`${RootConfig$6.module.name}.${RootConfig$6.entities.appTerm.name}`, APP_TERMS);
3690
+ await this.storageService.initial(`${RootConfig$7.module.name}.${RootConfig$7.entities.appTerm.name}`, APP_TERMS);
3302
3691
  }
3303
3692
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCAppTermDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3304
3693
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCAppTermDataSeeder }); }
@@ -3333,7 +3722,7 @@ class AXCAppVersionDataSeeder {
3333
3722
  this.storageService = inject(AXPDexieEntityStorageService);
3334
3723
  }
3335
3724
  async seed() {
3336
- await this.storageService.initial(`${RootConfig$6.module.name}.${RootConfig$6.entities.appVersion.name}`, APP_VERSIONS);
3725
+ await this.storageService.initial(`${RootConfig$7.module.name}.${RootConfig$7.entities.appVersion.name}`, APP_VERSIONS);
3337
3726
  }
3338
3727
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCAppVersionDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3339
3728
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCAppVersionDataSeeder }); }
@@ -3364,7 +3753,7 @@ class AXCGlobalVariablesDataSeeder {
3364
3753
  this.storageService = inject(AXPDexieEntityStorageService);
3365
3754
  }
3366
3755
  async seed() {
3367
- await this.storageService.initial(`${RootConfig$6.module.name}.${RootConfig$6.entities.globalVariable.name}`, GLOBAL_VARIABLES);
3756
+ await this.storageService.initial(`${RootConfig$7.module.name}.${RootConfig$7.entities.globalVariable.name}`, GLOBAL_VARIABLES);
3368
3757
  }
3369
3758
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCGlobalVariablesDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3370
3759
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCGlobalVariablesDataSeeder }); }
@@ -3593,26 +3982,108 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
3593
3982
  type: Injectable
3594
3983
  }], ctorParameters: () => [] });
3595
3984
 
3985
+ function generateIssueTypes() {
3986
+ const issueTypes = [
3987
+ {
3988
+ id: AXPDataGenerator$1.uuid(),
3989
+ name: 'system-error',
3990
+ title: 'System Error',
3991
+ description: 'Technical issues related to system functionality, crashes, or unexpected errors',
3992
+ },
3993
+ {
3994
+ id: AXPDataGenerator$1.uuid(),
3995
+ name: 'performance',
3996
+ title: 'Performance Issue',
3997
+ description: 'Problems with system speed, response time, or resource usage',
3998
+ },
3999
+ {
4000
+ id: AXPDataGenerator$1.uuid(),
4001
+ name: 'security',
4002
+ title: 'Security Concern',
4003
+ description: 'Security-related issues, access problems, or potential vulnerabilities',
4004
+ },
4005
+ {
4006
+ id: AXPDataGenerator$1.uuid(),
4007
+ name: 'data',
4008
+ title: 'Data Issue',
4009
+ description: 'Problems with data integrity, synchronization, or corruption',
4010
+ },
4011
+ {
4012
+ id: AXPDataGenerator$1.uuid(),
4013
+ name: 'ui-ux',
4014
+ title: 'UI/UX Problem',
4015
+ description: 'Issues with user interface, layout, or user experience',
4016
+ },
4017
+ {
4018
+ id: AXPDataGenerator$1.uuid(),
4019
+ name: 'configuration',
4020
+ title: 'Configuration Error',
4021
+ description: 'Problems with system settings, environment configuration, or setup',
4022
+ },
4023
+ {
4024
+ id: AXPDataGenerator$1.uuid(),
4025
+ name: 'integration',
4026
+ title: 'Integration Issue',
4027
+ },
4028
+ {
4029
+ id: AXPDataGenerator$1.uuid(),
4030
+ name: 'network',
4031
+ title: 'Network Problem',
4032
+ description: 'Connectivity issues, network timeouts, or communication errors',
4033
+ },
4034
+ {
4035
+ id: AXPDataGenerator$1.uuid(),
4036
+ name: 'feature-request',
4037
+ title: 'Feature Request',
4038
+ description: 'Requests for new features, enhancements, or functionality improvements',
4039
+ },
4040
+ {
4041
+ id: AXPDataGenerator$1.uuid(),
4042
+ name: 'documentation',
4043
+ title: 'Documentation Issue',
4044
+ description: 'Problems with system documentation, help guides, or instructions',
4045
+ },
4046
+ ];
4047
+ return issueTypes;
4048
+ }
4049
+ const ISSUE_TYPES = generateIssueTypes();
4050
+
4051
+ class AXPIssueTypeDataSeeder {
4052
+ constructor() {
4053
+ this.storageService = inject(AXPDexieEntityStorageService);
4054
+ }
4055
+ async seed() {
4056
+ await this.storageService.initial(`${RootConfig$7.module.name}.${RootConfig$7.entities.issueType.name}`, ISSUE_TYPES);
4057
+ }
4058
+ }
4059
+
3596
4060
  const OHS_ID = AXPDataGenerator$1.uuid();
4061
+ const child1 = {
4062
+ id: AXPDataGenerator$1.uuid(),
4063
+ title: 'General',
4064
+ parentId: OHS_ID,
4065
+ childCount: 0,
4066
+ };
4067
+ const child2 = {
4068
+ id: AXPDataGenerator$1.uuid(),
4069
+ title: 'License',
4070
+ parentId: OHS_ID,
4071
+ childCount: 0,
4072
+ };
3597
4073
  const METADATA_CATEGORY_MOCK = [
3598
4074
  {
3599
4075
  id: AXPDataGenerator$1.uuid(),
3600
4076
  title: 'General',
4077
+ childCount: 0,
3601
4078
  },
3602
4079
  {
3603
4080
  id: OHS_ID,
3604
4081
  title: 'OHS',
4082
+ childCount: 2,
4083
+ children: [child1, child2],
3605
4084
  },
3606
- {
3607
- id: AXPDataGenerator$1.uuid(),
3608
- title: 'General',
3609
- parentId: OHS_ID,
3610
- },
3611
- {
3612
- id: AXPDataGenerator$1.uuid(),
3613
- title: 'License',
3614
- parentId: OHS_ID,
3615
- },
4085
+ child1,
4086
+ child2,
3616
4087
  ];
3617
4088
  const checkbox = '{"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"}';
3618
4089
  const colorboxInterface = '{"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"}';
@@ -3627,7 +4098,8 @@ const METADATA_MOCK = [
3627
4098
  title: 'Title',
3628
4099
  defaultValue: '',
3629
4100
  interface: titleInterface,
3630
- categoryId: METADATA_CATEGORY_MOCK[0].id,
4101
+ categoryIds: [METADATA_CATEGORY_MOCK[0].id],
4102
+ categories: [METADATA_CATEGORY_MOCK[0]],
3631
4103
  },
3632
4104
  {
3633
4105
  id: AXPDataGenerator$1.uuid(),
@@ -3635,7 +4107,8 @@ const METADATA_MOCK = [
3635
4107
  title: 'Description',
3636
4108
  defaultValue: '',
3637
4109
  interface: descriptionInterface,
3638
- categoryId: METADATA_CATEGORY_MOCK[0].id,
4110
+ categoryIds: [METADATA_CATEGORY_MOCK[0].id],
4111
+ categories: [METADATA_CATEGORY_MOCK[0]],
3639
4112
  },
3640
4113
  {
3641
4114
  id: AXPDataGenerator$1.uuid(),
@@ -3643,7 +4116,8 @@ const METADATA_MOCK = [
3643
4116
  title: 'Agreement Box',
3644
4117
  defaultValue: false,
3645
4118
  interface: checkbox,
3646
- categoryId: METADATA_CATEGORY_MOCK[2].id,
4119
+ categoryIds: [METADATA_CATEGORY_MOCK[2].id],
4120
+ categories: [METADATA_CATEGORY_MOCK[2]],
3647
4121
  },
3648
4122
  {
3649
4123
  id: AXPDataGenerator$1.uuid(),
@@ -3651,7 +4125,8 @@ const METADATA_MOCK = [
3651
4125
  title: 'Contract Number',
3652
4126
  defaultValue: '',
3653
4127
  interface: contractNumberInterface,
3654
- categoryId: METADATA_CATEGORY_MOCK[2].id,
4128
+ categoryIds: [METADATA_CATEGORY_MOCK[2].id],
4129
+ categories: [METADATA_CATEGORY_MOCK[2]],
3655
4130
  },
3656
4131
  {
3657
4132
  id: AXPDataGenerator$1.uuid(),
@@ -3659,7 +4134,8 @@ const METADATA_MOCK = [
3659
4134
  title: 'Evaluator',
3660
4135
  defaultValue: '',
3661
4136
  interface: evaluatorInterface,
3662
- categoryId: METADATA_CATEGORY_MOCK[3].id,
4137
+ categoryIds: [METADATA_CATEGORY_MOCK[3].id],
4138
+ categories: [METADATA_CATEGORY_MOCK[3]],
3663
4139
  },
3664
4140
  ];
3665
4141
 
@@ -3668,8 +4144,8 @@ class AXCMetaDataDefinitionDataSeeder {
3668
4144
  this.storageService = inject(AXPDexieEntityStorageService);
3669
4145
  }
3670
4146
  async seed() {
3671
- await this.storageService.initial(`${RootConfig$6.module.name}.${RootConfig$6.entities.metaDataDefinitionCategory.name}`, METADATA_CATEGORY_MOCK);
3672
- await this.storageService.initial(`${RootConfig$6.module.name}.${RootConfig$6.entities.metaDataDefinition.name}`, METADATA_MOCK);
4147
+ await this.storageService.initial(`${RootConfig$7.module.name}.${RootConfig$7.entities.metaDataDefinitionCategory.name}`, METADATA_CATEGORY_MOCK);
4148
+ await this.storageService.initial(`${RootConfig$7.module.name}.${RootConfig$7.entities.metaDataDefinition.name}`, METADATA_MOCK);
3673
4149
  }
3674
4150
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCMetaDataDefinitionDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3675
4151
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCMetaDataDefinitionDataSeeder }); }
@@ -3700,7 +4176,7 @@ class AXCSchedulerJobDataSeeder {
3700
4176
  this.storageService = inject(AXPDexieEntityStorageService);
3701
4177
  }
3702
4178
  async seed() {
3703
- await this.storageService.initial(`${RootConfig$7.module.name}.${RootConfig$7.entities.schedulerJob.name}`, SCHEDULER_JOB);
4179
+ await this.storageService.initial(`${RootConfig$8.module.name}.${RootConfig$8.entities.schedulerJob.name}`, SCHEDULER_JOB);
3704
4180
  }
3705
4181
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCSchedulerJobDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3706
4182
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCSchedulerJobDataSeeder }); }
@@ -3709,202 +4185,133 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
3709
4185
  type: Injectable
3710
4186
  }] });
3711
4187
 
3712
- class AXPSecurityManagementMockWidgetDataSourceProvider {
3713
- async items() {
3714
- return [
3715
- {
3716
- name: 'mock.securityUsers',
3717
- title: 'Security Users',
3718
- valueField: 'id',
3719
- textField: 'displayName',
3720
- columns: [
3721
- {
3722
- name: 'id',
3723
- title: 'Id',
3724
- },
3725
- {
3726
- name: 'username',
3727
- title: 'Username',
3728
- },
3729
- {
3730
- name: 'displayName',
3731
- title: 'Display Name',
3732
- },
3733
- ],
3734
- samples: [
3735
- {
3736
- id: '1',
3737
- username: 'johndoe',
3738
- displayName: 'John Doe',
3739
- },
3740
- {
3741
- id: '2',
3742
- username: 'janesmith',
3743
- displayName: 'Jane Smith',
3744
- },
3745
- ],
3746
- source: () => convertArrayToDataSource([
3747
- {
3748
- id: '1',
3749
- username: 'johndoe',
3750
- displayName: 'John Doe',
3751
- },
3752
- {
3753
- id: '2',
3754
- username: 'janesmith',
3755
- displayName: 'Jane Smith',
3756
- },
3757
- {
3758
- id: '3',
3759
- username: 'mikeross',
3760
- displayName: 'Mike Ross',
3761
- },
3762
- ]),
3763
- },
3764
- {
3765
- name: 'mock.securityRoles',
3766
- title: 'Security Roles',
3767
- valueField: 'id',
3768
- textField: 'title',
3769
- columns: [
3770
- {
3771
- name: 'id',
3772
- title: 'Id',
3773
- },
3774
- {
3775
- name: 'title',
3776
- title: 'Title',
3777
- },
3778
- ],
3779
- samples: [
3780
- {
3781
- id: 'admin',
3782
- title: 'Administrator',
3783
- },
3784
- {
3785
- id: 'user',
3786
- title: 'Regular User',
3787
- },
3788
- ],
3789
- source: () => convertArrayToDataSource([
3790
- {
3791
- id: 'admin',
3792
- title: 'Administrator',
3793
- },
3794
- {
3795
- id: 'manager',
3796
- title: 'Manager',
3797
- },
3798
- {
3799
- id: 'user',
3800
- title: 'Regular User',
3801
- },
3802
- ]),
3803
- },
3804
- ];
3805
- }
3806
- }
3807
-
3808
- class AXPSecurityManagementRoleDataSeeder {
3809
- constructor() {
3810
- this.storageService = inject(AXPDexieEntityStorageService);
3811
- this.permissionService = inject(AXPPermissionProviderService);
3812
- }
3813
- async seed() {
3814
- const permissions = await this.permissionService.permissions();
3815
- const permissionKeys = permissions.map((p) => p.name);
3816
- // Generate roles with random permissions from the actual permission list
3817
- const roles = mockRoleDefinitions.map((role) => ({
3818
- ...role,
3819
- permissions: this.getRandomPermissions(permissionKeys, 2, 5), // Get 2-5 random permissions
3820
- }));
3821
- await this.storageService.initial(`${RootConfig$3.module.name}.${RootConfig$3.entities.roles.name}`, roles);
4188
+ class AXCDeviceSessionService extends AXMDeviceSessionsServiceImpl {
4189
+ async terminate(id) {
4190
+ const item = await this.updateOne(id, {
4191
+ status: AXMSessionStatusTypes.revoked,
4192
+ });
4193
+ if (item.status != AXMSessionStatusTypes.revoked) {
4194
+ return false;
4195
+ }
4196
+ return true;
3822
4197
  }
3823
- getRandomPermissions(permissions, min, max) {
3824
- const count = Math.floor(Math.random() * (max - min + 1)) + min;
3825
- const shuffled = [...permissions].sort(() => 0.5 - Math.random());
3826
- return shuffled.slice(0, count);
4198
+ async query(request) {
4199
+ let filterByStatus = {
4200
+ field: 'status',
4201
+ value: AXMSessionStatusTypes.active,
4202
+ operator: { type: 'equal' },
4203
+ };
4204
+ request?.filter?.filters?.push(filterByStatus);
4205
+ let res = await super.query(request);
4206
+ return res;
3827
4207
  }
3828
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSecurityManagementRoleDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3829
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSecurityManagementRoleDataSeeder }); }
3830
4208
  }
3831
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSecurityManagementRoleDataSeeder, decorators: [{
3832
- type: Injectable
3833
- }] });
3834
4209
 
3835
- class AXPSecurityManagementUserDataSeeder {
4210
+ class AXPSecurityManagementDeviceSessionDataSeeder {
3836
4211
  constructor() {
3837
4212
  this.storageService = inject(AXPDexieEntityStorageService);
4213
+ this.sessionService = inject(AXPSessionService);
3838
4214
  }
3839
4215
  async seed() {
3840
- await this.storageService.initial(`${RootConfig$3.module.name}.${RootConfig$3.entities.users.name}`, this.generateUsers());
3841
- }
3842
- generateUsers() {
3843
- return mockUsers.map((user) => ({
3844
- id: user.id,
3845
- username: user.username,
3846
- firstname: user.firstname,
3847
- lastname: user.lastname,
3848
- nationalCode: user.nationalCode,
3849
- mobile: user.mobile,
3850
- password: '123',
3851
- roles: user.roleIds,
3852
- }));
4216
+ await this.storageService.initial(`${RootConfig$4.module.name}.${RootConfig$4.entities.deviceSessions.name}`, this.generateDeviceSessions());
4217
+ }
4218
+ generateDeviceSessions() {
4219
+ const deviceSessions = [];
4220
+ const clientNames = ['Client A', 'Client B', 'Client C', 'Client D', 'Client E'];
4221
+ const userAgents = [
4222
+ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36',
4223
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_7) AppleWebKit/537.36 Chrome/120.0.0.0 Safari/537.36',
4224
+ 'Mozilla/5.0 (Linux; Android 12) AppleWebKit/537.36 Chrome/120.0.0.0 Mobile Safari/537.36',
4225
+ 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_1 like Mac OS X) AppleWebKit/537.36 Version/16.1 Mobile/15E148 Safari/537.36',
4226
+ 'PostmanRuntime/7.43.0',
4227
+ ];
4228
+ const ipAddresses = ['192.168.1.101', '10.0.0.42', '172.16.254.23', '203.0.113.99', '8.8.4.4'];
4229
+ const locations = [
4230
+ 'New York, USA',
4231
+ 'Toronto, Canada',
4232
+ 'Berlin, Germany',
4233
+ 'Paris, France',
4234
+ 'Amsterdam, Netherlands',
4235
+ ];
4236
+ const browsers = ['Google Chrome', 'Mozilla Firefox', 'Microsoft Edge', 'Safari', 'Opera'];
4237
+ const devices = ['MacBook Pro', 'Windows Laptop', 'Android Phone', 'iPhone 13', 'iPad Pro'];
4238
+ const operatingSystems = ['macOS', 'Windows 11', 'Android 12', 'iOS 16', 'Linux Ubuntu 22.04'];
4239
+ for (let i = 0; i < 20; i++) {
4240
+ const userId = AXPDataGenerator.uuid();
4241
+ const applicationId = AXPDataGenerator.uuid();
4242
+ const tenantId = AXPDataGenerator.uuid();
4243
+ const lastModifierId = AXPDataGenerator.uuid();
4244
+ const authorizationId = AXPDataGenerator.uuid();
4245
+ const creationTime = new Date();
4246
+ creationTime.setMinutes(creationTime.getMinutes() - Math.floor(Math.random() * 1440)); // Past 24 hours
4247
+ const lastModificationTime = new Date(creationTime);
4248
+ lastModificationTime.setMinutes(creationTime.getMinutes() + Math.floor(Math.random() * 60)); // Random modification time
4249
+ const lastLoginDate = new Date();
4250
+ lastLoginDate.setDate(lastLoginDate.getDate() - Math.floor(Math.random() * 30)); // Past 30 days
4251
+ deviceSessions.push({
4252
+ id: AXPDataGenerator.uuid(),
4253
+ userId: userId,
4254
+ user: { id: userId, name: `User ${i + 1}` },
4255
+ application: { id: applicationId, name: 'ACoreX' },
4256
+ tenant: { id: tenantId, name: 'ACoreX Tenant' },
4257
+ applicationId: applicationId,
4258
+ tenantId: tenantId,
4259
+ clientName: clientNames[Math.floor(Math.random() * clientNames.length)],
4260
+ ipAddress: ipAddresses[Math.floor(Math.random() * ipAddresses.length)],
4261
+ userAgent: userAgents[Math.floor(Math.random() * userAgents.length)],
4262
+ authorizationId: authorizationId,
4263
+ status: AXMSessionStatusTypes.active,
4264
+ isActiveSession: Math.random() < 0.5, // Random true/false
4265
+ browser: browsers[Math.floor(Math.random() * browsers.length)],
4266
+ location: locations[Math.floor(Math.random() * locations.length)],
4267
+ deviceName: devices[Math.floor(Math.random() * devices.length)],
4268
+ operatingSystem: operatingSystems[Math.floor(Math.random() * operatingSystems.length)],
4269
+ lastLoginDate: lastLoginDate,
4270
+ });
4271
+ }
4272
+ if (this.sessionService.user?.id) {
4273
+ for (let i = 0; i < 5; i++) {
4274
+ const userId = this.sessionService.user.id;
4275
+ const applicationId = AXPDataGenerator.uuid();
4276
+ const tenantId = AXPDataGenerator.uuid();
4277
+ const authorizationId = AXPDataGenerator.uuid();
4278
+ const creationTime = new Date();
4279
+ creationTime.setMinutes(creationTime.getMinutes() - Math.floor(Math.random() * 1440)); // Past 24 hours
4280
+ const lastModificationTime = new Date(creationTime);
4281
+ lastModificationTime.setMinutes(creationTime.getMinutes() + Math.floor(Math.random() * 60)); // Random modification time
4282
+ const lastLoginDate = new Date();
4283
+ lastLoginDate.setDate(lastLoginDate.getDate() - Math.floor(Math.random() * 30)); // Past 30 days
4284
+ deviceSessions.push({
4285
+ id: AXPDataGenerator.uuid(),
4286
+ userId: userId,
4287
+ user: { id: userId, name: this.sessionService.user.name },
4288
+ application: { id: applicationId, name: 'ACoreX' },
4289
+ tenant: { id: tenantId, name: 'ACoreX Tenant' },
4290
+ applicationId: applicationId,
4291
+ tenantId: tenantId,
4292
+ clientName: clientNames[Math.floor(Math.random() * clientNames.length)],
4293
+ ipAddress: ipAddresses[Math.floor(Math.random() * ipAddresses.length)],
4294
+ userAgent: userAgents[Math.floor(Math.random() * userAgents.length)],
4295
+ authorizationId: authorizationId,
4296
+ status: AXMSessionStatusTypes.active,
4297
+ isActiveSession: i == 0 ? true : false,
4298
+ browser: browsers[Math.floor(Math.random() * browsers.length)],
4299
+ location: locations[Math.floor(Math.random() * locations.length)],
4300
+ deviceName: devices[Math.floor(Math.random() * devices.length)],
4301
+ operatingSystem: operatingSystems[Math.floor(Math.random() * operatingSystems.length)],
4302
+ lastLoginDate: lastLoginDate,
4303
+ });
4304
+ }
4305
+ }
4306
+ return deviceSessions;
3853
4307
  }
3854
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSecurityManagementUserDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
3855
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSecurityManagementUserDataSeeder }); }
4308
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSecurityManagementDeviceSessionDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4309
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSecurityManagementDeviceSessionDataSeeder }); }
3856
4310
  }
3857
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSecurityManagementUserDataSeeder, decorators: [{
4311
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXPSecurityManagementDeviceSessionDataSeeder, decorators: [{
3858
4312
  type: Injectable
3859
4313
  }] });
3860
4314
 
3861
- class AXCSecurityManagementMockModule {
3862
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCSecurityManagementMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
3863
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXCSecurityManagementMockModule }); }
3864
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCSecurityManagementMockModule, providers: [
3865
- {
3866
- provide: AXP_WIDGET_DATASOURCE_PROVIDER,
3867
- useClass: AXPSecurityManagementMockWidgetDataSourceProvider,
3868
- multi: true,
3869
- },
3870
- {
3871
- provide: AXP_DATA_SEEDER_TOKEN,
3872
- useClass: AXPSecurityManagementUserDataSeeder,
3873
- multi: true,
3874
- },
3875
- {
3876
- provide: AXP_DATA_SEEDER_TOKEN,
3877
- useClass: AXPSecurityManagementRoleDataSeeder,
3878
- multi: true,
3879
- },
3880
- ] }); }
3881
- }
3882
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCSecurityManagementMockModule, decorators: [{
3883
- type: NgModule,
3884
- args: [{
3885
- imports: [],
3886
- exports: [],
3887
- declarations: [],
3888
- providers: [
3889
- {
3890
- provide: AXP_WIDGET_DATASOURCE_PROVIDER,
3891
- useClass: AXPSecurityManagementMockWidgetDataSourceProvider,
3892
- multi: true,
3893
- },
3894
- {
3895
- provide: AXP_DATA_SEEDER_TOKEN,
3896
- useClass: AXPSecurityManagementUserDataSeeder,
3897
- multi: true,
3898
- },
3899
- {
3900
- provide: AXP_DATA_SEEDER_TOKEN,
3901
- useClass: AXPSecurityManagementRoleDataSeeder,
3902
- multi: true,
3903
- },
3904
- ],
3905
- }]
3906
- }] });
3907
-
3908
4315
  const TEXT_TEMPLATE_CATEGORY = [
3909
4316
  {
3910
4317
  id: AXPDataGenerator.uuid(),
@@ -4027,7 +4434,7 @@ class AXCTextTemplateCategoryDataSeeder {
4027
4434
  this.storageService = inject(AXPDexieEntityStorageService);
4028
4435
  }
4029
4436
  async seed() {
4030
- await this.storageService.initial(`${RootConfig$8.module.name}.${RootConfig$8.entities.category.name}`, TEXT_TEMPLATE_CATEGORY);
4437
+ await this.storageService.initial(`${RootConfig$9.module.name}.${RootConfig$9.entities.category.name}`, TEXT_TEMPLATE_CATEGORY);
4031
4438
  }
4032
4439
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCTextTemplateCategoryDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4033
4440
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCTextTemplateCategoryDataSeeder }); }
@@ -4041,7 +4448,7 @@ class AXCTextTemplateDataSeeder {
4041
4448
  this.storageService = inject(AXPDexieEntityStorageService);
4042
4449
  }
4043
4450
  async seed() {
4044
- await this.storageService.initial(`${RootConfig$8.module.name}.${RootConfig$8.entities.template.name}`, TEXT_TEMPLATES);
4451
+ await this.storageService.initial(`${RootConfig$9.module.name}.${RootConfig$9.entities.template.name}`, TEXT_TEMPLATES);
4045
4452
  }
4046
4453
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCTextTemplateDataSeeder, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
4047
4454
  static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCTextTemplateDataSeeder }); }
@@ -4054,9 +4461,7 @@ class AXCMockModule {
4054
4461
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCMockModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4055
4462
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.0.3", ngImport: i0, type: AXCMockModule, imports: [i1$1.AXPAuthModule, AXCFormTemplateManagementMockModule,
4056
4463
  AXCFOrganizationManagementMockModule,
4057
- AXCConversationMockModule,
4058
- AXCSecurityManagementMockModule,
4059
- AXCCommonMockModule] }); }
4464
+ AXCConversationMockModule] }); }
4060
4465
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCMockModule, providers: [
4061
4466
  AXPDexieEntityStorageService,
4062
4467
  {
@@ -4067,6 +4472,10 @@ class AXCMockModule {
4067
4472
  provide: AXPEntityStorageService,
4068
4473
  useClass: AXPDexieEntityStorageService,
4069
4474
  },
4475
+ {
4476
+ provide: AXMDeviceSessionsService,
4477
+ useClass: AXCDeviceSessionService,
4478
+ },
4070
4479
  {
4071
4480
  provide: AXP_DATA_SEEDER_TOKEN,
4072
4481
  useClass: AXCGlobalVariablesDataSeeder,
@@ -4087,6 +4496,11 @@ class AXCMockModule {
4087
4496
  useClass: AXCApplicationTemplateDataSeeder,
4088
4497
  multi: true,
4089
4498
  },
4499
+ {
4500
+ provide: AXP_DATA_SEEDER_TOKEN,
4501
+ useClass: AXPIssueTypeDataSeeder,
4502
+ multi: true,
4503
+ },
4090
4504
  {
4091
4505
  provide: AXP_DATA_SEEDER_TOKEN,
4092
4506
  useClass: AXCSchedulerJobDataSeeder,
@@ -4122,6 +4536,16 @@ class AXCMockModule {
4122
4536
  useClass: AXCDocumentTypeDataSeeder,
4123
4537
  multi: true,
4124
4538
  },
4539
+ {
4540
+ provide: AXP_DATA_SEEDER_TOKEN,
4541
+ useClass: AXPSecurityManagementDeviceSessionDataSeeder,
4542
+ multi: true,
4543
+ },
4544
+ {
4545
+ provide: AXP_DATA_SEEDER_TOKEN,
4546
+ useClass: AXPDashboardDataSeeder,
4547
+ multi: true,
4548
+ },
4125
4549
  {
4126
4550
  provide: AXPModuleDesignerService,
4127
4551
  useClass: AXCModuleDesignerService,
@@ -4147,14 +4571,17 @@ class AXCMockModule {
4147
4571
  useClass: EntitySearchProvider,
4148
4572
  multi: true,
4149
4573
  },
4574
+ {
4575
+ provide: AXP_DATA_SEEDER_TOKEN,
4576
+ useClass: AXMLogDataSeeder,
4577
+ multi: true,
4578
+ },
4150
4579
  ], imports: [AXPAuthModule.forRoot({
4151
4580
  strategies: [MOCKStrategy],
4152
4581
  }),
4153
4582
  AXCFormTemplateManagementMockModule,
4154
4583
  AXCFOrganizationManagementMockModule,
4155
- AXCConversationMockModule,
4156
- AXCSecurityManagementMockModule,
4157
- AXCCommonMockModule] }); }
4584
+ AXCConversationMockModule] }); }
4158
4585
  }
4159
4586
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImport: i0, type: AXCMockModule, decorators: [{
4160
4587
  type: NgModule,
@@ -4166,8 +4593,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4166
4593
  AXCFormTemplateManagementMockModule,
4167
4594
  AXCFOrganizationManagementMockModule,
4168
4595
  AXCConversationMockModule,
4169
- AXCSecurityManagementMockModule,
4170
- AXCCommonMockModule,
4171
4596
  ],
4172
4597
  exports: [],
4173
4598
  declarations: [],
@@ -4181,6 +4606,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4181
4606
  provide: AXPEntityStorageService,
4182
4607
  useClass: AXPDexieEntityStorageService,
4183
4608
  },
4609
+ {
4610
+ provide: AXMDeviceSessionsService,
4611
+ useClass: AXCDeviceSessionService,
4612
+ },
4184
4613
  {
4185
4614
  provide: AXP_DATA_SEEDER_TOKEN,
4186
4615
  useClass: AXCGlobalVariablesDataSeeder,
@@ -4201,6 +4630,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4201
4630
  useClass: AXCApplicationTemplateDataSeeder,
4202
4631
  multi: true,
4203
4632
  },
4633
+ {
4634
+ provide: AXP_DATA_SEEDER_TOKEN,
4635
+ useClass: AXPIssueTypeDataSeeder,
4636
+ multi: true,
4637
+ },
4204
4638
  {
4205
4639
  provide: AXP_DATA_SEEDER_TOKEN,
4206
4640
  useClass: AXCSchedulerJobDataSeeder,
@@ -4236,6 +4670,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4236
4670
  useClass: AXCDocumentTypeDataSeeder,
4237
4671
  multi: true,
4238
4672
  },
4673
+ {
4674
+ provide: AXP_DATA_SEEDER_TOKEN,
4675
+ useClass: AXPSecurityManagementDeviceSessionDataSeeder,
4676
+ multi: true,
4677
+ },
4678
+ {
4679
+ provide: AXP_DATA_SEEDER_TOKEN,
4680
+ useClass: AXPDashboardDataSeeder,
4681
+ multi: true,
4682
+ },
4239
4683
  {
4240
4684
  provide: AXPModuleDesignerService,
4241
4685
  useClass: AXCModuleDesignerService,
@@ -4261,6 +4705,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.3", ngImpor
4261
4705
  useClass: EntitySearchProvider,
4262
4706
  multi: true,
4263
4707
  },
4708
+ {
4709
+ provide: AXP_DATA_SEEDER_TOKEN,
4710
+ useClass: AXMLogDataSeeder,
4711
+ multi: true,
4712
+ },
4264
4713
  ],
4265
4714
  }]
4266
4715
  }] });