@platform-modules/civil-aviation-authority 2.3.258 → 2.3.260

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.
@@ -252,6 +252,7 @@ const MediaPublicationsChatModel_1 = require("./models/MediaPublicationsChatMode
252
252
  const MediaPublicationsWorkflowModel_1 = require("./models/MediaPublicationsWorkflowModel");
253
253
  const SlaRequestModel_1 = require("./models/SlaRequestModel");
254
254
  const SlaMyRequestsViewModel_1 = require("./models/SlaMyRequestsViewModel");
255
+ const SlaApprovalsViewModel_1 = require("./models/SlaApprovalsViewModel");
255
256
  const ServiceSlaApprovalModel_1 = require("./models/ServiceSlaApprovalModel");
256
257
  const SlaConfigModel_1 = require("./models/SlaConfigModel");
257
258
  exports.AppDataSource = new typeorm_1.DataSource({
@@ -510,6 +511,7 @@ exports.AppDataSource = new typeorm_1.DataSource({
510
511
  MediaPublicationsWorkflowModel_1.MediaPublicationsWorkFlow,
511
512
  SlaRequestModel_1.SlaRequest,
512
513
  SlaMyRequestsViewModel_1.SlaMyRequestsView,
514
+ SlaApprovalsViewModel_1.SlaApprovalsView,
513
515
  ServiceSlaApprovalModel_1.ServiceSlaApproval,
514
516
  SlaConfigModel_1.SlaConfig,
515
517
  ],
package/dist/index.d.ts CHANGED
@@ -402,6 +402,7 @@ export * from './models/ContractServiceRequestModel';
402
402
  export * from './models/SlaConfigModel';
403
403
  export * from './models/SlaRequestModel';
404
404
  export * from './models/SlaMyRequestsViewModel';
405
+ export * from './models/SlaApprovalsViewModel';
405
406
  export * from './models/ServiceSlaApprovalModel';
406
407
  export * from './sla/sla-table-sync.service';
407
408
  export * from './sla/sla-approval-mirror';
package/dist/index.js CHANGED
@@ -591,6 +591,7 @@ __exportStar(require("./models/ContractServiceRequestModel"), exports);
591
591
  __exportStar(require("./models/SlaConfigModel"), exports);
592
592
  __exportStar(require("./models/SlaRequestModel"), exports);
593
593
  __exportStar(require("./models/SlaMyRequestsViewModel"), exports);
594
+ __exportStar(require("./models/SlaApprovalsViewModel"), exports);
594
595
  __exportStar(require("./models/ServiceSlaApprovalModel"), exports);
595
596
  __exportStar(require("./sla/sla-table-sync.service"), exports);
596
597
  __exportStar(require("./sla/sla-approval-mirror"), exports);
@@ -0,0 +1,38 @@
1
+ /** Reuse the same `request_obj` key exclusions as my-requests. */
2
+ export declare const SLA_APPROVALS_REQUEST_OBJ_EXCLUDED_KEYS: readonly ["id", "status", "role_id", "user_id", "createdBy", "created_at", "updated_by", "updated_at", "req_user_department_id", "workflow_execution_id", "department_id", "req_user_section_id", "service_type_id", "service_type", "created_by", "service_id", "sub_service_id", "attachments", "is_deleted", "sla_request", "sla_request_id"];
3
+ /**
4
+ * Read-only view for SLA approvals listings (TypeORM).
5
+ * Approver matching (`sla_approval_matches_user` semantics) is applied in Reports_Service queries.
6
+ */
7
+ export declare class SlaApprovalsView {
8
+ sla_approval_id: number;
9
+ source_approval_id: number;
10
+ request_id: number;
11
+ service_id: number;
12
+ sub_service_id: number;
13
+ service_name: string;
14
+ sub_service_name: string;
15
+ department_id: number;
16
+ department_name: string;
17
+ section_id: number;
18
+ section_name: string;
19
+ role_id: number;
20
+ role_name: string;
21
+ approval_status: string;
22
+ request_status: string;
23
+ level: number;
24
+ approver_user_id: number;
25
+ approver_user_name: string;
26
+ delegate_user_id: number;
27
+ delegate_user_name: string;
28
+ approved_by: number;
29
+ approved_by_name: string;
30
+ comment: string;
31
+ created_at: Date;
32
+ updated_at: Date;
33
+ requester_user_id: number;
34
+ requester_name: string;
35
+ req_user_department_name: string;
36
+ req_user_section_name: string;
37
+ request_fields: Record<string, unknown>;
38
+ }
@@ -0,0 +1,233 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.SlaApprovalsView = exports.SLA_APPROVALS_REQUEST_OBJ_EXCLUDED_KEYS = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const SlaMyRequestsViewModel_1 = require("./SlaMyRequestsViewModel");
15
+ /** Reuse the same `request_obj` key exclusions as my-requests. */
16
+ exports.SLA_APPROVALS_REQUEST_OBJ_EXCLUDED_KEYS = SlaMyRequestsViewModel_1.SLA_MY_REQUESTS_REQUEST_OBJ_EXCLUDED_KEYS;
17
+ const REQUEST_FIELDS_SQL = `
18
+ (
19
+ COALESCE(sr.request_obj, '{}'::jsonb)
20
+ - 'id'
21
+ - 'status'
22
+ - 'role_id'
23
+ - 'user_id'
24
+ - 'createdBy'
25
+ - 'created_at'
26
+ - 'updated_by'
27
+ - 'updated_at'
28
+ - 'req_user_department_id'
29
+ - 'workflow_execution_id'
30
+ - 'department_id'
31
+ - 'req_user_section_id'
32
+ - 'service_type_id'
33
+ - 'service_type'
34
+ - 'created_by'
35
+ - 'service_id'
36
+ - 'sub_service_id'
37
+ - 'attachments'
38
+ - 'is_deleted'
39
+ - 'sla_request'
40
+ - 'sla_request_id'
41
+ ) AS request_fields`;
42
+ const VW_SLA_APPROVALS_SQL = `
43
+ SELECT
44
+ sa.id AS sla_approval_id,
45
+ sa.source_approval_id,
46
+ sa.request_id,
47
+ sa.service_id AS service_id,
48
+ sa.sub_service_id AS sub_service_id,
49
+ TRIM(COALESCE(svc.name, ''))::TEXT AS service_name,
50
+ TRIM(COALESCE(subsvc.sub_service_name, ''))::TEXT AS sub_service_name,
51
+ sa.department_id AS department_id,
52
+ TRIM(COALESCE(adpt.department_name, ''))::TEXT AS department_name,
53
+ sa.section_id AS section_id,
54
+ TRIM(COALESCE(asec.section_name, ''))::TEXT AS section_name,
55
+ sa.approver_role_id AS role_id,
56
+ TRIM(COALESCE(ar.name, ''))::TEXT AS role_name,
57
+ sa.approval_status::TEXT AS approval_status,
58
+ sr.status::TEXT AS request_status,
59
+ sa.level AS level,
60
+ sa.approver_user_id AS approver_user_id,
61
+ TRIM(COALESCE(au.employee_name, ''))::TEXT AS approver_user_name,
62
+ sa.delegate_user_id AS delegate_user_id,
63
+ TRIM(COALESCE(du.employee_name, ''))::TEXT AS delegate_user_name,
64
+ sa.approved_by AS approved_by,
65
+ TRIM(COALESCE(ab.employee_name, ''))::TEXT AS approved_by_name,
66
+ sa.comment::TEXT AS comment,
67
+ sa.created_at AS created_at,
68
+ sa.updated_at AS updated_at,
69
+ sr.user_id AS requester_user_id,
70
+ TRIM(COALESCE(ru.employee_name, ''))::TEXT AS requester_name,
71
+ TRIM(COALESCE(rdept.department_name, ''))::TEXT AS req_user_department_name,
72
+ TRIM(COALESCE(rsec.section_name, ''))::TEXT AS req_user_section_name,
73
+ ${REQUEST_FIELDS_SQL}
74
+ FROM sla_approval sa
75
+ INNER JOIN sla_requests sr
76
+ ON sr.request_id = sa.request_id AND COALESCE(sr.is_deleted, false) = false
77
+ LEFT JOIN caa_services svc
78
+ ON svc.id = sa.service_id AND COALESCE(svc.is_deleted, false) = false
79
+ LEFT JOIN caa_sub_services subsvc
80
+ ON subsvc.id = sa.sub_service_id AND COALESCE(subsvc.is_deleted, false) = false
81
+ LEFT JOIN departments adpt
82
+ ON adpt.id = sa.department_id AND COALESCE(adpt.is_deleted, false) = false
83
+ LEFT JOIN sections asec
84
+ ON asec.id = sa.section_id AND COALESCE(asec.is_deleted, false) = false
85
+ LEFT JOIN role ar
86
+ ON ar.id = sa.approver_role_id AND COALESCE(ar.is_deleted, false) = false
87
+ LEFT JOIN users au
88
+ ON au.id = sa.approver_user_id AND COALESCE(au.is_deleted, false) = false
89
+ LEFT JOIN users du
90
+ ON du.id = sa.delegate_user_id AND COALESCE(du.is_deleted, false) = false
91
+ LEFT JOIN users ab
92
+ ON ab.id = sa.approved_by AND COALESCE(ab.is_deleted, false) = false
93
+ LEFT JOIN users ru
94
+ ON ru.id = sr.user_id AND COALESCE(ru.is_deleted, false) = false
95
+ LEFT JOIN departments rdept
96
+ ON rdept.id = sr.req_user_department_id AND COALESCE(rdept.is_deleted, false) = false
97
+ LEFT JOIN sections rsec
98
+ ON rsec.id = sr.req_user_section_id AND COALESCE(rsec.is_deleted, false) = false
99
+ WHERE COALESCE(sa.is_deleted, false) = false
100
+ `;
101
+ /**
102
+ * Read-only view for SLA approvals listings (TypeORM).
103
+ * Approver matching (`sla_approval_matches_user` semantics) is applied in Reports_Service queries.
104
+ */
105
+ let SlaApprovalsView = class SlaApprovalsView {
106
+ };
107
+ exports.SlaApprovalsView = SlaApprovalsView;
108
+ __decorate([
109
+ (0, typeorm_1.ViewColumn)(),
110
+ __metadata("design:type", Number)
111
+ ], SlaApprovalsView.prototype, "sla_approval_id", void 0);
112
+ __decorate([
113
+ (0, typeorm_1.ViewColumn)(),
114
+ __metadata("design:type", Number)
115
+ ], SlaApprovalsView.prototype, "source_approval_id", void 0);
116
+ __decorate([
117
+ (0, typeorm_1.ViewColumn)(),
118
+ __metadata("design:type", Number)
119
+ ], SlaApprovalsView.prototype, "request_id", void 0);
120
+ __decorate([
121
+ (0, typeorm_1.ViewColumn)(),
122
+ __metadata("design:type", Number)
123
+ ], SlaApprovalsView.prototype, "service_id", void 0);
124
+ __decorate([
125
+ (0, typeorm_1.ViewColumn)(),
126
+ __metadata("design:type", Number)
127
+ ], SlaApprovalsView.prototype, "sub_service_id", void 0);
128
+ __decorate([
129
+ (0, typeorm_1.ViewColumn)(),
130
+ __metadata("design:type", String)
131
+ ], SlaApprovalsView.prototype, "service_name", void 0);
132
+ __decorate([
133
+ (0, typeorm_1.ViewColumn)(),
134
+ __metadata("design:type", String)
135
+ ], SlaApprovalsView.prototype, "sub_service_name", void 0);
136
+ __decorate([
137
+ (0, typeorm_1.ViewColumn)(),
138
+ __metadata("design:type", Number)
139
+ ], SlaApprovalsView.prototype, "department_id", void 0);
140
+ __decorate([
141
+ (0, typeorm_1.ViewColumn)(),
142
+ __metadata("design:type", String)
143
+ ], SlaApprovalsView.prototype, "department_name", void 0);
144
+ __decorate([
145
+ (0, typeorm_1.ViewColumn)(),
146
+ __metadata("design:type", Number)
147
+ ], SlaApprovalsView.prototype, "section_id", void 0);
148
+ __decorate([
149
+ (0, typeorm_1.ViewColumn)(),
150
+ __metadata("design:type", String)
151
+ ], SlaApprovalsView.prototype, "section_name", void 0);
152
+ __decorate([
153
+ (0, typeorm_1.ViewColumn)(),
154
+ __metadata("design:type", Number)
155
+ ], SlaApprovalsView.prototype, "role_id", void 0);
156
+ __decorate([
157
+ (0, typeorm_1.ViewColumn)(),
158
+ __metadata("design:type", String)
159
+ ], SlaApprovalsView.prototype, "role_name", void 0);
160
+ __decorate([
161
+ (0, typeorm_1.ViewColumn)(),
162
+ __metadata("design:type", String)
163
+ ], SlaApprovalsView.prototype, "approval_status", void 0);
164
+ __decorate([
165
+ (0, typeorm_1.ViewColumn)(),
166
+ __metadata("design:type", String)
167
+ ], SlaApprovalsView.prototype, "request_status", void 0);
168
+ __decorate([
169
+ (0, typeorm_1.ViewColumn)(),
170
+ __metadata("design:type", Number)
171
+ ], SlaApprovalsView.prototype, "level", void 0);
172
+ __decorate([
173
+ (0, typeorm_1.ViewColumn)(),
174
+ __metadata("design:type", Number)
175
+ ], SlaApprovalsView.prototype, "approver_user_id", void 0);
176
+ __decorate([
177
+ (0, typeorm_1.ViewColumn)(),
178
+ __metadata("design:type", String)
179
+ ], SlaApprovalsView.prototype, "approver_user_name", void 0);
180
+ __decorate([
181
+ (0, typeorm_1.ViewColumn)(),
182
+ __metadata("design:type", Number)
183
+ ], SlaApprovalsView.prototype, "delegate_user_id", void 0);
184
+ __decorate([
185
+ (0, typeorm_1.ViewColumn)(),
186
+ __metadata("design:type", String)
187
+ ], SlaApprovalsView.prototype, "delegate_user_name", void 0);
188
+ __decorate([
189
+ (0, typeorm_1.ViewColumn)(),
190
+ __metadata("design:type", Number)
191
+ ], SlaApprovalsView.prototype, "approved_by", void 0);
192
+ __decorate([
193
+ (0, typeorm_1.ViewColumn)(),
194
+ __metadata("design:type", String)
195
+ ], SlaApprovalsView.prototype, "approved_by_name", void 0);
196
+ __decorate([
197
+ (0, typeorm_1.ViewColumn)(),
198
+ __metadata("design:type", String)
199
+ ], SlaApprovalsView.prototype, "comment", void 0);
200
+ __decorate([
201
+ (0, typeorm_1.ViewColumn)(),
202
+ __metadata("design:type", Date)
203
+ ], SlaApprovalsView.prototype, "created_at", void 0);
204
+ __decorate([
205
+ (0, typeorm_1.ViewColumn)(),
206
+ __metadata("design:type", Date)
207
+ ], SlaApprovalsView.prototype, "updated_at", void 0);
208
+ __decorate([
209
+ (0, typeorm_1.ViewColumn)(),
210
+ __metadata("design:type", Number)
211
+ ], SlaApprovalsView.prototype, "requester_user_id", void 0);
212
+ __decorate([
213
+ (0, typeorm_1.ViewColumn)(),
214
+ __metadata("design:type", String)
215
+ ], SlaApprovalsView.prototype, "requester_name", void 0);
216
+ __decorate([
217
+ (0, typeorm_1.ViewColumn)(),
218
+ __metadata("design:type", String)
219
+ ], SlaApprovalsView.prototype, "req_user_department_name", void 0);
220
+ __decorate([
221
+ (0, typeorm_1.ViewColumn)(),
222
+ __metadata("design:type", String)
223
+ ], SlaApprovalsView.prototype, "req_user_section_name", void 0);
224
+ __decorate([
225
+ (0, typeorm_1.ViewColumn)(),
226
+ __metadata("design:type", Object)
227
+ ], SlaApprovalsView.prototype, "request_fields", void 0);
228
+ exports.SlaApprovalsView = SlaApprovalsView = __decorate([
229
+ (0, typeorm_1.ViewEntity)({
230
+ name: "vw_sla_approvals",
231
+ expression: VW_SLA_APPROVALS_SQL,
232
+ })
233
+ ], SlaApprovalsView);
@@ -1,6 +1,6 @@
1
1
  import { SlaRequestStatus } from "./SlaRequestModel";
2
2
  /** Top-level `request_obj` keys omitted from `request_fields` (see sql/vw_sla_my_requests.sql). */
3
- export declare const SLA_MY_REQUESTS_REQUEST_OBJ_EXCLUDED_KEYS: readonly ["id", "status", "role_id", "user_id", "createdBy", "created_at", "updated_by", "updated_at", "req_user_department_id", "workflow_execution_id", "department_id", "req_user_section_id", "service_type_id", "service_type", "created_by", "service_id", "sub_service_id", "attachments"];
3
+ export declare const SLA_MY_REQUESTS_REQUEST_OBJ_EXCLUDED_KEYS: readonly ["id", "status", "role_id", "user_id", "createdBy", "created_at", "updated_by", "updated_at", "req_user_department_id", "workflow_execution_id", "department_id", "req_user_section_id", "service_type_id", "service_type", "created_by", "service_id", "sub_service_id", "attachments", "is_deleted", "sla_request", "sla_request_id"];
4
4
  /**
5
5
  * Read-only view for SLA "my requests" listings.
6
6
  * Display-name columns reuse sla_requests field names; values come from joined lookup tables.
@@ -10,12 +10,16 @@ export declare class SlaMyRequestsView {
10
10
  sla_request_id: number;
11
11
  /** Request owner (`sla_requests.user_id`) — filter with WHERE user_id = :userId for "my requests". */
12
12
  user_id: number;
13
+ /** Numeric caa_services.id used for filtering. */
14
+ service_id: number;
15
+ /** Numeric caa_sub_services.id used for filtering. */
16
+ sub_service_id: number;
13
17
  created_by: string;
14
18
  created_at: Date;
15
19
  req_user_department_id: string;
16
20
  req_user_section_id: string;
17
- service_id: string;
18
- sub_service_id: string;
21
+ service_name: string;
22
+ sub_service_name: string;
19
23
  status: SlaRequestStatus | string;
20
24
  request_id: number;
21
25
  /** Remaining `request_obj` keys after excluding workflow/common duplicates. */
@@ -32,52 +32,60 @@ exports.SLA_MY_REQUESTS_REQUEST_OBJ_EXCLUDED_KEYS = [
32
32
  "service_id",
33
33
  "sub_service_id",
34
34
  "attachments",
35
+ "is_deleted",
36
+ "sla_request",
37
+ "sla_request_id",
35
38
  ];
36
- const VW_SLA_MY_REQUESTS_SQL = `
37
- SELECT
38
- sr.id AS sla_request_id,
39
- sr.user_id,
40
- TRIM(COALESCE(creator.employee_name, ''))::TEXT AS created_by,
41
- sr.created_at,
42
- TRIM(COALESCE(dept.department_name, ''))::TEXT AS req_user_department_id,
43
- TRIM(COALESCE(sec.section_name, ''))::TEXT AS req_user_section_id,
44
- TRIM(COALESCE(svc.name, ''))::TEXT AS service_id,
45
- TRIM(COALESCE(subsvc.sub_service_name, ''))::TEXT AS sub_service_id,
46
- sr.status::TEXT AS status,
47
- sr.request_id,
48
- (
49
- COALESCE(sr.request_obj, '{}'::jsonb)
50
- - 'id'
51
- - 'status'
52
- - 'role_id'
53
- - 'user_id'
54
- - 'createdBy'
55
- - 'created_at'
56
- - 'updated_by'
57
- - 'updated_at'
58
- - 'req_user_department_id'
59
- - 'workflow_execution_id'
60
- - 'department_id'
61
- - 'req_user_section_id'
62
- - 'service_type_id'
63
- - 'service_type'
64
- - 'created_by'
65
- - 'service_id'
66
- - 'sub_service_id'
67
- - 'attachments'
68
- ) AS request_fields
69
- FROM sla_requests sr
70
- LEFT JOIN users creator
71
- ON creator.id = sr.created_by AND COALESCE(creator.is_deleted, false) = false
72
- LEFT JOIN departments dept
73
- ON dept.id = sr.req_user_department_id AND COALESCE(dept.is_deleted, false) = false
74
- LEFT JOIN sections sec
75
- ON sec.id = sr.req_user_section_id AND COALESCE(sec.is_deleted, false) = false
76
- LEFT JOIN caa_services svc
77
- ON svc.id = sr.service_id AND COALESCE(svc.is_deleted, false) = false
78
- LEFT JOIN caa_sub_services subsvc
79
- ON subsvc.id = sr.sub_service_id AND COALESCE(subsvc.is_deleted, false) = false
80
- WHERE COALESCE(sr.is_deleted, false) = false
39
+ const VW_SLA_MY_REQUESTS_SQL = `
40
+ SELECT
41
+ sr.id AS sla_request_id,
42
+ sr.user_id,
43
+ sr.service_id AS service_id,
44
+ sr.sub_service_id AS sub_service_id,
45
+ TRIM(COALESCE(creator.employee_name, ''))::TEXT AS created_by,
46
+ sr.created_at,
47
+ TRIM(COALESCE(dept.department_name, ''))::TEXT AS req_user_department_id,
48
+ TRIM(COALESCE(sec.section_name, ''))::TEXT AS req_user_section_id,
49
+ TRIM(COALESCE(svc.name, ''))::TEXT AS service_name,
50
+ TRIM(COALESCE(subsvc.sub_service_name, ''))::TEXT AS sub_service_name,
51
+ sr.status::TEXT AS status,
52
+ sr.request_id,
53
+ (
54
+ COALESCE(sr.request_obj, '{}'::jsonb)
55
+ - 'id'
56
+ - 'status'
57
+ - 'role_id'
58
+ - 'user_id'
59
+ - 'createdBy'
60
+ - 'created_at'
61
+ - 'updated_by'
62
+ - 'updated_at'
63
+ - 'req_user_department_id'
64
+ - 'workflow_execution_id'
65
+ - 'department_id'
66
+ - 'req_user_section_id'
67
+ - 'service_type_id'
68
+ - 'service_type'
69
+ - 'created_by'
70
+ - 'service_id'
71
+ - 'sub_service_id'
72
+ - 'attachments'
73
+ - 'is_deleted'
74
+ - 'sla_request'
75
+ - 'sla_request_id'
76
+ ) AS request_fields
77
+ FROM sla_requests sr
78
+ LEFT JOIN users creator
79
+ ON creator.id = sr.created_by AND COALESCE(creator.is_deleted, false) = false
80
+ LEFT JOIN departments dept
81
+ ON dept.id = sr.req_user_department_id AND COALESCE(dept.is_deleted, false) = false
82
+ LEFT JOIN sections sec
83
+ ON sec.id = sr.req_user_section_id AND COALESCE(sec.is_deleted, false) = false
84
+ LEFT JOIN caa_services svc
85
+ ON svc.id = sr.service_id AND COALESCE(svc.is_deleted, false) = false
86
+ LEFT JOIN caa_sub_services subsvc
87
+ ON subsvc.id = sr.sub_service_id AND COALESCE(subsvc.is_deleted, false) = false
88
+ WHERE COALESCE(sr.is_deleted, false) = false
81
89
  `;
82
90
  /**
83
91
  * Read-only view for SLA "my requests" listings.
@@ -95,6 +103,14 @@ __decorate([
95
103
  (0, typeorm_1.ViewColumn)(),
96
104
  __metadata("design:type", Number)
97
105
  ], SlaMyRequestsView.prototype, "user_id", void 0);
106
+ __decorate([
107
+ (0, typeorm_1.ViewColumn)(),
108
+ __metadata("design:type", Number)
109
+ ], SlaMyRequestsView.prototype, "service_id", void 0);
110
+ __decorate([
111
+ (0, typeorm_1.ViewColumn)(),
112
+ __metadata("design:type", Number)
113
+ ], SlaMyRequestsView.prototype, "sub_service_id", void 0);
98
114
  __decorate([
99
115
  (0, typeorm_1.ViewColumn)(),
100
116
  __metadata("design:type", String)
@@ -114,11 +130,11 @@ __decorate([
114
130
  __decorate([
115
131
  (0, typeorm_1.ViewColumn)(),
116
132
  __metadata("design:type", String)
117
- ], SlaMyRequestsView.prototype, "service_id", void 0);
133
+ ], SlaMyRequestsView.prototype, "service_name", void 0);
118
134
  __decorate([
119
135
  (0, typeorm_1.ViewColumn)(),
120
136
  __metadata("design:type", String)
121
- ], SlaMyRequestsView.prototype, "sub_service_id", void 0);
137
+ ], SlaMyRequestsView.prototype, "sub_service_name", void 0);
122
138
  __decorate([
123
139
  (0, typeorm_1.ViewColumn)(),
124
140
  __metadata("design:type", String)
@@ -139,16 +155,18 @@ exports.SlaMyRequestsView = SlaMyRequestsView = __decorate([
139
155
  ], SlaMyRequestsView);
140
156
  /** Flatten view row: fixed columns plus each entry in `request_fields`. */
141
157
  function flattenSlaMyRequestsViewRow(row) {
142
- const { sla_request_id, user_id, created_by, created_at, req_user_department_id, req_user_section_id, service_id, sub_service_id, status, request_id, request_fields, } = row;
158
+ const { sla_request_id, user_id, service_id, sub_service_id, created_by, created_at, req_user_department_id, req_user_section_id, service_name, sub_service_name, status, request_id, request_fields, } = row;
143
159
  return {
144
160
  sla_request_id,
145
161
  user_id,
162
+ service_id,
163
+ sub_service_id,
146
164
  created_by,
147
165
  created_at,
148
166
  req_user_department_id,
149
167
  req_user_section_id,
150
- service_id,
151
- sub_service_id,
168
+ service_name,
169
+ sub_service_name,
152
170
  status,
153
171
  request_id,
154
172
  ...(request_fields ?? {}),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@platform-modules/civil-aviation-authority",
3
- "version": "2.3.258",
3
+ "version": "2.3.260",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -0,0 +1,88 @@
1
+ -- SLA approvals read model: joined display names + filtered request_obj payload.
2
+ -- Approver-scope filtering is applied in Reports_Service (TypeORM), not in this view.
3
+ -- Run once against the EmpPortal PostgreSQL database:
4
+ -- psql -U <user> -d <database> -f sql/vw_sla_approvals.sql
5
+
6
+ DROP VIEW IF EXISTS vw_sla_approvals CASCADE;
7
+
8
+ CREATE VIEW vw_sla_approvals AS
9
+ SELECT
10
+ sa.id AS sla_approval_id,
11
+ sa.source_approval_id,
12
+ sa.request_id,
13
+ sa.service_id AS service_id,
14
+ sa.sub_service_id AS sub_service_id,
15
+ TRIM(COALESCE(svc.name, ''))::TEXT AS service_name,
16
+ TRIM(COALESCE(subsvc.sub_service_name, ''))::TEXT AS sub_service_name,
17
+ sa.department_id AS department_id,
18
+ TRIM(COALESCE(adpt.department_name, ''))::TEXT AS department_name,
19
+ sa.section_id AS section_id,
20
+ TRIM(COALESCE(asec.section_name, ''))::TEXT AS section_name,
21
+ sa.approver_role_id AS role_id,
22
+ TRIM(COALESCE(ar.name, ''))::TEXT AS role_name,
23
+ sa.approval_status::TEXT AS approval_status,
24
+ sr.status::TEXT AS request_status,
25
+ sa.level AS level,
26
+ sa.approver_user_id AS approver_user_id,
27
+ TRIM(COALESCE(au.employee_name, ''))::TEXT AS approver_user_name,
28
+ sa.delegate_user_id AS delegate_user_id,
29
+ TRIM(COALESCE(du.employee_name, ''))::TEXT AS delegate_user_name,
30
+ sa.approved_by AS approved_by,
31
+ TRIM(COALESCE(ab.employee_name, ''))::TEXT AS approved_by_name,
32
+ sa.comment::TEXT AS comment,
33
+ sa.created_at AS created_at,
34
+ sa.updated_at AS updated_at,
35
+ sr.user_id AS requester_user_id,
36
+ TRIM(COALESCE(ru.employee_name, ''))::TEXT AS requester_name,
37
+ TRIM(COALESCE(rdept.department_name, ''))::TEXT AS req_user_department_name,
38
+ TRIM(COALESCE(rsec.section_name, ''))::TEXT AS req_user_section_name,
39
+ (
40
+ COALESCE(sr.request_obj, '{}'::jsonb)
41
+ - 'id'
42
+ - 'status'
43
+ - 'role_id'
44
+ - 'user_id'
45
+ - 'createdBy'
46
+ - 'created_at'
47
+ - 'updated_by'
48
+ - 'updated_at'
49
+ - 'req_user_department_id'
50
+ - 'workflow_execution_id'
51
+ - 'department_id'
52
+ - 'req_user_section_id'
53
+ - 'service_type_id'
54
+ - 'service_type'
55
+ - 'created_by'
56
+ - 'service_id'
57
+ - 'sub_service_id'
58
+ - 'attachments'
59
+ - 'is_deleted'
60
+ - 'sla_request'
61
+ - 'sla_request_id'
62
+ ) AS request_fields
63
+ FROM sla_approval sa
64
+ INNER JOIN sla_requests sr
65
+ ON sr.request_id = sa.request_id AND COALESCE(sr.is_deleted, false) = false
66
+ LEFT JOIN caa_services svc
67
+ ON svc.id = sa.service_id AND COALESCE(svc.is_deleted, false) = false
68
+ LEFT JOIN caa_sub_services subsvc
69
+ ON subsvc.id = sa.sub_service_id AND COALESCE(subsvc.is_deleted, false) = false
70
+ LEFT JOIN departments adpt
71
+ ON adpt.id = sa.department_id AND COALESCE(adpt.is_deleted, false) = false
72
+ LEFT JOIN sections asec
73
+ ON asec.id = sa.section_id AND COALESCE(asec.is_deleted, false) = false
74
+ LEFT JOIN role ar
75
+ ON ar.id = sa.approver_role_id AND COALESCE(ar.is_deleted, false) = false
76
+ LEFT JOIN users au
77
+ ON au.id = sa.approver_user_id AND COALESCE(au.is_deleted, false) = false
78
+ LEFT JOIN users du
79
+ ON du.id = sa.delegate_user_id AND COALESCE(du.is_deleted, false) = false
80
+ LEFT JOIN users ab
81
+ ON ab.id = sa.approved_by AND COALESCE(ab.is_deleted, false) = false
82
+ LEFT JOIN users ru
83
+ ON ru.id = sr.user_id AND COALESCE(ru.is_deleted, false) = false
84
+ LEFT JOIN departments rdept
85
+ ON rdept.id = sr.req_user_department_id AND COALESCE(rdept.is_deleted, false) = false
86
+ LEFT JOIN sections rsec
87
+ ON rsec.id = sr.req_user_section_id AND COALESCE(rsec.is_deleted, false) = false
88
+ WHERE COALESCE(sa.is_deleted, false) = false;