@platform-modules/civil-aviation-authority 2.3.310 → 2.3.312

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.
Files changed (79) hide show
  1. package/dist/data-source.js +2 -0
  2. package/dist/i18n/workflow-chat-i18n.json +8 -0
  3. package/dist/i18n/workflow-chat-message.builder.d.ts +1 -1
  4. package/dist/i18n/workflow-chat-message.builder.js +21 -3
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.js +1 -0
  7. package/dist/models/ChatbotQnsAnsMappingModel.d.ts +8 -0
  8. package/dist/models/ChatbotQnsAnsMappingModel.js +40 -0
  9. package/dist/models/DocumentMetadataModel.d.ts +45 -0
  10. package/dist/models/DocumentMetadataModel.js +171 -0
  11. package/dist/models/DocumentationDepartmentsModel.d.ts +13 -0
  12. package/dist/models/DocumentationDepartmentsModel.js +53 -0
  13. package/dist/models/FolderModel.d.ts +16 -0
  14. package/dist/models/FolderModel.js +85 -0
  15. package/dist/models/ImportExportMaterialModels.d.ts +92 -0
  16. package/dist/models/ImportExportMaterialModels.js +307 -0
  17. package/dist/models/PermissionModel.d.ts +18 -0
  18. package/dist/models/PermissionModel.js +68 -0
  19. package/dist/models/SecurityAccessApprovalModel.d.ts +23 -0
  20. package/dist/models/SecurityAccessApprovalModel.js +82 -0
  21. package/dist/models/SecurityAccessAttachmentModel.d.ts +12 -0
  22. package/dist/models/SecurityAccessAttachmentModel.js +56 -0
  23. package/dist/models/SecurityAccessChatModel.d.ts +12 -0
  24. package/dist/models/SecurityAccessChatModel.js +56 -0
  25. package/dist/models/SecurityAccessRequestModel.d.ts +25 -0
  26. package/dist/models/SecurityAccessRequestModel.js +80 -0
  27. package/dist/models/SecurityAccessWorkflowModel.d.ts +24 -0
  28. package/dist/models/SecurityAccessWorkflowModel.js +84 -0
  29. package/dist/models/ServiceExtensionAfterAge60Models.d.ts +93 -0
  30. package/dist/models/ServiceExtensionAfterAge60Models.js +312 -0
  31. package/dist/models/SlaApprovalsViewModel.js +54 -47
  32. package/dist/models/SlaMyRequestsViewModel.d.ts +3 -0
  33. package/dist/models/SlaMyRequestsViewModel.js +22 -2
  34. package/dist/models/UUIDBaseModel.d.ts +14 -0
  35. package/dist/models/UUIDBaseModel.js +66 -0
  36. package/dist/models/WorkingHoursExtensionModels.d.ts +88 -0
  37. package/dist/models/WorkingHoursExtensionModels.js +295 -0
  38. package/package.json +1 -1
  39. package/scripts/sync-sla-reports-sql.js +92 -92
  40. package/sql/README.md +21 -21
  41. package/sql/create_chatbot_qns_ans_mapping.sql +25 -0
  42. package/sql/sla_reports_admin_procedures.sql +323 -304
  43. package/sql/sla_reports_approvals_workbook.sql +430 -383
  44. package/sql/sla_reports_procedures.sql +886 -886
  45. package/sql/user_role_department_section_validation.sql +214 -0
  46. package/sql/vw_sla_approvals.sql +115 -108
  47. package/sql/vw_sla_my_requests.sql +58 -53
  48. package/src/data-source.ts +2 -0
  49. package/src/i18n/workflow-chat-i18n.json +8 -0
  50. package/src/i18n/workflow-chat-message.builder.ts +27 -3
  51. package/src/index.ts +1 -0
  52. package/src/models/AccessCardRequestModel.ts +135 -135
  53. package/src/models/AirportEntryPermitModel.ts +276 -276
  54. package/src/models/AnnualTrainingPlanRequestModel.ts +153 -153
  55. package/src/models/ChatbotQnsAnsMappingModel.ts +21 -0
  56. package/src/models/DocumentDriveModel.ts +28 -28
  57. package/src/models/DocumentFolderModel.ts +45 -45
  58. package/src/models/HotelApprovalModel.ts +83 -83
  59. package/src/models/HousingContractCancelApprovalModel.ts +64 -64
  60. package/src/models/HousingContractRenewalApprovalModel.ts +64 -64
  61. package/src/models/ITRequestAttachmentModel.ts +73 -73
  62. package/src/models/ItApprovalsModel.ts +84 -84
  63. package/src/models/LegalConsultationApprovalModel.ts +65 -65
  64. package/src/models/MissionTravelPassportExpiryNotificationConfigModel.ts +36 -36
  65. package/src/models/NotificationModel.ts +89 -89
  66. package/src/models/ResidentialUnitRentalApprovalModel.ts +143 -143
  67. package/src/models/ServiceExtensionAfter60ApprovalModel.ts +87 -87
  68. package/src/models/ServiceSlaApprovalModel.ts +64 -64
  69. package/src/models/ServicesNotificationConfigModel.ts +55 -55
  70. package/src/models/SlaApprovalsViewModel.ts +142 -135
  71. package/src/models/SlaMyRequestsViewModel.ts +21 -1
  72. package/src/models/StudyLeaveRequestModel.ts +144 -144
  73. package/src/models/TrainingRequestModel.ts +164 -164
  74. package/src/models/TrainingRoomBookingRequestModel.ts +142 -142
  75. package/src/models/TrainingRoomNotificationConfigModel.ts +30 -30
  76. package/src/models/role.ts +34 -34
  77. package/src/sla/sla-table-sync.service.ts +90 -90
  78. package/dist/helpers/cancellation-bilingual-persist.helper.d.ts +0 -37
  79. package/dist/helpers/cancellation-bilingual-persist.helper.js +0 -77
@@ -1,65 +1,65 @@
1
- import { Column, Entity } from 'typeorm';
2
- import { BaseModel } from './BaseModel';
3
-
4
- export enum LegalConsultationApprovalStatus {
5
- PENDING = 'Pending',
6
- IN_PROGRESS = 'In Progress',
7
- APPROVED = 'Approved',
8
- REJECTED = 'Rejected',
9
- /** Current step completed by assigning the next approver (user/dept/section/role). */
10
- REASSIGNED = 'Reassigned',
11
- }
12
-
13
- @Entity({ name: 'legal_consultation_approvals' })
14
- export class LegalConsultationApproval extends BaseModel {
15
- @Column({ type: 'int', nullable: false })
16
- request_id: number;
17
-
18
- @Column({ type: 'int', nullable: false })
19
- service_id: number;
20
-
21
- @Column({ type: 'int', nullable: false })
22
- sub_service_id: number;
23
-
24
- @Column({ type: 'int', nullable: true })
25
- approver_role_id: number;
26
-
27
- @Column({ type: 'int', nullable: true })
28
- approver_user_id: number;
29
-
30
- @Column({ type: 'int', nullable: true })
31
- delegate_user_id: number;
32
-
33
- @Column({ type: 'int', nullable: true })
34
- approved_by: number;
35
-
36
- @Column({ type: 'int', nullable: true })
37
- department_id: number;
38
-
39
- @Column({ type: 'int', nullable: true })
40
- section_id: number;
41
-
42
- @Column({ type: 'int', nullable: false })
43
- level: number;
44
-
45
- @Column({
46
- type: 'enum',
47
- enum: LegalConsultationApprovalStatus,
48
- default: LegalConsultationApprovalStatus.PENDING,
49
- nullable: false,
50
- })
51
- approval_status: LegalConsultationApprovalStatus;
52
-
53
- @Column({ type: 'text', nullable: true })
54
- comment: string;
55
-
56
- @Column({ type: 'boolean', default: true, nullable: false })
57
- is_allowed: boolean;
58
-
59
- @Column({ type: 'int', nullable: false })
60
- created_by: number;
61
-
62
- constructor() {
63
- super();
64
- }
65
- }
1
+ import { Column, Entity } from 'typeorm';
2
+ import { BaseModel } from './BaseModel';
3
+
4
+ export enum LegalConsultationApprovalStatus {
5
+ PENDING = 'Pending',
6
+ IN_PROGRESS = 'In Progress',
7
+ APPROVED = 'Approved',
8
+ REJECTED = 'Rejected',
9
+ /** Current step completed by assigning the next approver (user/dept/section/role). */
10
+ REASSIGNED = 'Reassigned',
11
+ }
12
+
13
+ @Entity({ name: 'legal_consultation_approvals' })
14
+ export class LegalConsultationApproval extends BaseModel {
15
+ @Column({ type: 'int', nullable: false })
16
+ request_id: number;
17
+
18
+ @Column({ type: 'int', nullable: false })
19
+ service_id: number;
20
+
21
+ @Column({ type: 'int', nullable: false })
22
+ sub_service_id: number;
23
+
24
+ @Column({ type: 'int', nullable: true })
25
+ approver_role_id: number;
26
+
27
+ @Column({ type: 'int', nullable: true })
28
+ approver_user_id: number;
29
+
30
+ @Column({ type: 'int', nullable: true })
31
+ delegate_user_id: number;
32
+
33
+ @Column({ type: 'int', nullable: true })
34
+ approved_by: number;
35
+
36
+ @Column({ type: 'int', nullable: true })
37
+ department_id: number;
38
+
39
+ @Column({ type: 'int', nullable: true })
40
+ section_id: number;
41
+
42
+ @Column({ type: 'int', nullable: false })
43
+ level: number;
44
+
45
+ @Column({
46
+ type: 'enum',
47
+ enum: LegalConsultationApprovalStatus,
48
+ default: LegalConsultationApprovalStatus.PENDING,
49
+ nullable: false,
50
+ })
51
+ approval_status: LegalConsultationApprovalStatus;
52
+
53
+ @Column({ type: 'text', nullable: true })
54
+ comment: string;
55
+
56
+ @Column({ type: 'boolean', default: true, nullable: false })
57
+ is_allowed: boolean;
58
+
59
+ @Column({ type: 'int', nullable: false })
60
+ created_by: number;
61
+
62
+ constructor() {
63
+ super();
64
+ }
65
+ }
@@ -1,36 +1,36 @@
1
- import { Column, Entity } from "typeorm";
2
- import { BaseModel } from "./BaseModel";
3
-
4
-
5
- @Entity({ name: "mission_travel_passport_expiry_notification_configs" })
6
- export class MissionTravelPassportExpiryNotificationConfig extends BaseModel {
7
- @Column({ type: "integer", nullable: false })
8
- department_id: number;
9
-
10
- @Column({ type: "integer", nullable: true })
11
- section_id: number | null;
12
-
13
- @Column({ type: "varchar", length: 255, nullable: true })
14
- frequency: string | null;
15
-
16
- @Column({ type: "integer", nullable: true })
17
- repeat_interval_days: number | null; // Repeating after every N days (default 10)
18
-
19
- @Column({ type: "boolean", nullable: false, default: true })
20
- is_active: boolean;
21
-
22
- constructor(
23
- department_id: number,
24
- section_id: number | null = null,
25
- frequency: string | null = null,
26
- repeat_interval_days: number = 10,
27
- is_active: boolean = true
28
- ) {
29
- super();
30
- this.department_id = department_id;
31
- this.section_id = section_id;
32
- this.frequency = frequency;
33
- this.repeat_interval_days = repeat_interval_days;
34
- this.is_active = is_active;
35
- }
36
- }
1
+ import { Column, Entity } from "typeorm";
2
+ import { BaseModel } from "./BaseModel";
3
+
4
+
5
+ @Entity({ name: "mission_travel_passport_expiry_notification_configs" })
6
+ export class MissionTravelPassportExpiryNotificationConfig extends BaseModel {
7
+ @Column({ type: "integer", nullable: false })
8
+ department_id: number;
9
+
10
+ @Column({ type: "integer", nullable: true })
11
+ section_id: number | null;
12
+
13
+ @Column({ type: "varchar", length: 255, nullable: true })
14
+ frequency: string | null;
15
+
16
+ @Column({ type: "integer", nullable: true })
17
+ repeat_interval_days: number | null; // Repeating after every N days (default 10)
18
+
19
+ @Column({ type: "boolean", nullable: false, default: true })
20
+ is_active: boolean;
21
+
22
+ constructor(
23
+ department_id: number,
24
+ section_id: number | null = null,
25
+ frequency: string | null = null,
26
+ repeat_interval_days: number = 10,
27
+ is_active: boolean = true
28
+ ) {
29
+ super();
30
+ this.department_id = department_id;
31
+ this.section_id = section_id;
32
+ this.frequency = frequency;
33
+ this.repeat_interval_days = repeat_interval_days;
34
+ this.is_active = is_active;
35
+ }
36
+ }
@@ -1,89 +1,89 @@
1
-
2
- import { Column, Entity } from "typeorm";
3
- import { BaseModel } from './BaseModel';
4
-
5
- export enum NotificationType {
6
- REQUEST_RAISED = 'request raised',
7
- REQUEST_APPROVE = 'request approve',
8
- REQUEST_REJECT = 'request reject',
9
- REQUEST_WITHDRAW = 'request withdraw',
10
- REMINDER = 'reminder',
11
- IMPORT = 'import',
12
- }
13
-
14
- @Entity({ name: 'notification' })
15
- export class Notification extends BaseModel {
16
-
17
- @Column({
18
- type: "enum",
19
- enum: NotificationType,
20
- nullable: false,
21
- })
22
- type: NotificationType;
23
-
24
- @Column({ type: 'bigint', nullable: false })
25
- user_id: number;
26
-
27
- @Column({ type: 'bigint', nullable: true })
28
- role_id: number;
29
-
30
- @Column({ type: 'bigint', nullable: true })
31
- department_id: number;
32
-
33
- @Column({ type: 'bigint', nullable: true })
34
- section_id: number;
35
-
36
- @Column({ type: 'jsonb', nullable: true })
37
- content: any;
38
-
39
- @Column({ type: 'boolean', default: false })
40
- is_read: boolean;
41
-
42
- @Column({ type: 'bigint', nullable: true })
43
- request_id: number;
44
-
45
- @Column({ type: 'bigint', nullable: true })
46
- service_id: number;
47
-
48
- @Column({ type: 'bigint', nullable: true })
49
- sub_service_id: number;
50
-
51
- @Column({ type: 'varchar', length: 500, nullable: true })
52
- route_path: string;
53
-
54
- /** Mirrors SLA reminder metadata also stored in `content` for cron-created rows (optional DB migration). */
55
- @Column({ type: 'boolean', default: false })
56
- is_sla: boolean;
57
-
58
- /** Remaining SLA reminder taps allowed (starts at 3 for SLA cron notifications). Optional column — see `content.sla_count`. */
59
- @Column({ type: 'integer', nullable: true })
60
- sla_count: number | null;
61
-
62
- constructor(
63
- type: NotificationType,
64
- user_id: number,
65
- role_id: number,
66
- department_id: number,
67
- section_id: number,
68
- content: any,
69
- is_read: boolean,
70
- request_id: number,
71
- service_id: number,
72
- sub_service_id: number,
73
- route_path: string
74
- ) {
75
- super();
76
- this.type = type;
77
- this.user_id = user_id;
78
- this.role_id = role_id;
79
- this.department_id = department_id;
80
- this.section_id = section_id;
81
- this.content = content;
82
- this.is_read = is_read;
83
- this.request_id = request_id;
84
- this.service_id = service_id;
85
- this.sub_service_id = sub_service_id;
86
- this.route_path = route_path;
87
- }
88
- }
89
-
1
+
2
+ import { Column, Entity } from "typeorm";
3
+ import { BaseModel } from './BaseModel';
4
+
5
+ export enum NotificationType {
6
+ REQUEST_RAISED = 'request raised',
7
+ REQUEST_APPROVE = 'request approve',
8
+ REQUEST_REJECT = 'request reject',
9
+ REQUEST_WITHDRAW = 'request withdraw',
10
+ REMINDER = 'reminder',
11
+ IMPORT = 'import',
12
+ }
13
+
14
+ @Entity({ name: 'notification' })
15
+ export class Notification extends BaseModel {
16
+
17
+ @Column({
18
+ type: "enum",
19
+ enum: NotificationType,
20
+ nullable: false,
21
+ })
22
+ type: NotificationType;
23
+
24
+ @Column({ type: 'bigint', nullable: false })
25
+ user_id: number;
26
+
27
+ @Column({ type: 'bigint', nullable: true })
28
+ role_id: number;
29
+
30
+ @Column({ type: 'bigint', nullable: true })
31
+ department_id: number;
32
+
33
+ @Column({ type: 'bigint', nullable: true })
34
+ section_id: number;
35
+
36
+ @Column({ type: 'jsonb', nullable: true })
37
+ content: any;
38
+
39
+ @Column({ type: 'boolean', default: false })
40
+ is_read: boolean;
41
+
42
+ @Column({ type: 'bigint', nullable: true })
43
+ request_id: number;
44
+
45
+ @Column({ type: 'bigint', nullable: true })
46
+ service_id: number;
47
+
48
+ @Column({ type: 'bigint', nullable: true })
49
+ sub_service_id: number;
50
+
51
+ @Column({ type: 'varchar', length: 500, nullable: true })
52
+ route_path: string;
53
+
54
+ /** Mirrors SLA reminder metadata also stored in `content` for cron-created rows (optional DB migration). */
55
+ @Column({ type: 'boolean', default: false })
56
+ is_sla: boolean;
57
+
58
+ /** Remaining SLA reminder taps allowed (starts at 3 for SLA cron notifications). Optional column — see `content.sla_count`. */
59
+ @Column({ type: 'integer', nullable: true })
60
+ sla_count: number | null;
61
+
62
+ constructor(
63
+ type: NotificationType,
64
+ user_id: number,
65
+ role_id: number,
66
+ department_id: number,
67
+ section_id: number,
68
+ content: any,
69
+ is_read: boolean,
70
+ request_id: number,
71
+ service_id: number,
72
+ sub_service_id: number,
73
+ route_path: string
74
+ ) {
75
+ super();
76
+ this.type = type;
77
+ this.user_id = user_id;
78
+ this.role_id = role_id;
79
+ this.department_id = department_id;
80
+ this.section_id = section_id;
81
+ this.content = content;
82
+ this.is_read = is_read;
83
+ this.request_id = request_id;
84
+ this.service_id = service_id;
85
+ this.sub_service_id = sub_service_id;
86
+ this.route_path = route_path;
87
+ }
88
+ }
89
+
@@ -1,144 +1,144 @@
1
- import { Column, Entity } from "typeorm";
2
-
3
- import { BaseModel } from "./BaseModel";
4
-
5
-
6
-
7
-
8
- export enum ResidentialUnitRentalApprovalStatus {
9
-
10
- PENDING = "Pending",
11
-
12
- IN_PROGRESS = "In Progress",
13
-
14
- APPROVED = "Approved",
15
-
16
- REJECTED = "Rejected"
17
-
18
-
19
-
20
- }
21
-
22
-
23
-
24
-
25
- @Entity({ name: 'residential_unit_rental_approvals' })
26
-
27
- export class ResidentialUnitRentalApproval extends BaseModel {
28
-
29
-
30
-
31
-
32
- @Column({ type: 'int', nullable: false })
33
-
34
- request_id: number;
35
-
36
-
37
-
38
-
39
- @Column({ type: 'int', nullable: false })
40
-
41
- service_id: number;
42
-
43
-
44
-
45
-
46
- @Column({ type: 'int', nullable: false })
47
-
48
- sub_service_id: number;
49
-
50
-
51
-
52
-
53
- @Column({ type: 'int', nullable: true })
54
-
55
- approver_role_id: number;
56
-
57
-
58
-
59
-
60
- @Column({ type: 'int', nullable: true })
61
-
62
- approver_user_id: number;
63
-
64
-
65
-
66
-
67
- @Column({ type: 'int', nullable: true })
68
-
69
- delegate_user_id: number;
70
-
71
-
72
-
73
-
74
- @Column({ type: 'int', nullable: true })
75
-
76
- approved_by: number;
77
-
78
-
79
-
80
-
81
- @Column({ type: 'int', nullable: true })
82
-
83
- department_id: number;
84
-
85
-
86
-
87
-
88
- @Column({ type: 'int', nullable: true })
89
-
90
- section_id: number;
91
-
92
-
93
-
94
-
95
- @Column({ type: 'int', nullable: false })
96
-
97
- level: number;
98
-
99
-
100
-
101
-
102
- @Column({
103
-
104
- type: 'enum',
105
-
106
- enum: ResidentialUnitRentalApprovalStatus,
107
-
108
- default: ResidentialUnitRentalApprovalStatus.PENDING,
109
-
110
- nullable: false
111
-
112
- })
113
-
114
- approval_status: ResidentialUnitRentalApprovalStatus; // Pending, In Progress, YES, ND, RFC
115
-
116
-
117
-
118
-
119
- @Column({ type: 'text', nullable: true })
120
-
121
- comment: string;
122
-
123
-
124
-
125
-
126
- @Column({ type: 'boolean', default: true, nullable: false })
127
- is_allowed: boolean;
128
-
129
- @Column({ type: 'int', nullable: false })
130
-
131
- created_by: number;
132
-
133
-
134
-
135
-
136
- constructor() {
137
-
138
- super();
139
-
140
- }
141
-
142
- }
143
-
1
+ import { Column, Entity } from "typeorm";
2
+
3
+ import { BaseModel } from "./BaseModel";
4
+
5
+
6
+
7
+
8
+ export enum ResidentialUnitRentalApprovalStatus {
9
+
10
+ PENDING = "Pending",
11
+
12
+ IN_PROGRESS = "In Progress",
13
+
14
+ APPROVED = "Approved",
15
+
16
+ REJECTED = "Rejected"
17
+
18
+
19
+
20
+ }
21
+
22
+
23
+
24
+
25
+ @Entity({ name: 'residential_unit_rental_approvals' })
26
+
27
+ export class ResidentialUnitRentalApproval extends BaseModel {
28
+
29
+
30
+
31
+
32
+ @Column({ type: 'int', nullable: false })
33
+
34
+ request_id: number;
35
+
36
+
37
+
38
+
39
+ @Column({ type: 'int', nullable: false })
40
+
41
+ service_id: number;
42
+
43
+
44
+
45
+
46
+ @Column({ type: 'int', nullable: false })
47
+
48
+ sub_service_id: number;
49
+
50
+
51
+
52
+
53
+ @Column({ type: 'int', nullable: true })
54
+
55
+ approver_role_id: number;
56
+
57
+
58
+
59
+
60
+ @Column({ type: 'int', nullable: true })
61
+
62
+ approver_user_id: number;
63
+
64
+
65
+
66
+
67
+ @Column({ type: 'int', nullable: true })
68
+
69
+ delegate_user_id: number;
70
+
71
+
72
+
73
+
74
+ @Column({ type: 'int', nullable: true })
75
+
76
+ approved_by: number;
77
+
78
+
79
+
80
+
81
+ @Column({ type: 'int', nullable: true })
82
+
83
+ department_id: number;
84
+
85
+
86
+
87
+
88
+ @Column({ type: 'int', nullable: true })
89
+
90
+ section_id: number;
91
+
92
+
93
+
94
+
95
+ @Column({ type: 'int', nullable: false })
96
+
97
+ level: number;
98
+
99
+
100
+
101
+
102
+ @Column({
103
+
104
+ type: 'enum',
105
+
106
+ enum: ResidentialUnitRentalApprovalStatus,
107
+
108
+ default: ResidentialUnitRentalApprovalStatus.PENDING,
109
+
110
+ nullable: false
111
+
112
+ })
113
+
114
+ approval_status: ResidentialUnitRentalApprovalStatus; // Pending, In Progress, YES, ND, RFC
115
+
116
+
117
+
118
+
119
+ @Column({ type: 'text', nullable: true })
120
+
121
+ comment: string;
122
+
123
+
124
+
125
+
126
+ @Column({ type: 'boolean', default: true, nullable: false })
127
+ is_allowed: boolean;
128
+
129
+ @Column({ type: 'int', nullable: false })
130
+
131
+ created_by: number;
132
+
133
+
134
+
135
+
136
+ constructor() {
137
+
138
+ super();
139
+
140
+ }
141
+
142
+ }
143
+
144
144