@platform-modules/civil-aviation-authority 2.3.256 → 2.3.259

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.
@@ -0,0 +1,26 @@
1
+ export declare class SlaApprovalsView {
2
+ sla_approval_id: number;
3
+ source_approval_id: number;
4
+ request_id: number;
5
+ service_id: number | null;
6
+ sub_service_id: number | null;
7
+ service_name: string;
8
+ sub_service_name: string;
9
+ approval_status: string;
10
+ request_status: string;
11
+ level: number;
12
+ approver_user_id: number | null;
13
+ approver_user_name: string;
14
+ delegate_user_id: number | null;
15
+ delegate_user_name: string;
16
+ approved_by: number | null;
17
+ approved_by_name: string;
18
+ comment: string | null;
19
+ requester_user_id: number;
20
+ requester_name: string;
21
+ department_name: string;
22
+ section_name: string;
23
+ request_fields: Record<string, unknown>;
24
+ created_at: Date;
25
+ updated_at: Date;
26
+ }
@@ -0,0 +1,170 @@
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 = void 0;
13
+ const typeorm_1 = require("typeorm");
14
+ const VW_SLA_APPROVALS_SQL = `
15
+ SELECT
16
+ sa.id AS sla_approval_id,
17
+ sa.source_approval_id,
18
+ sa.request_id,
19
+ sa.service_id,
20
+ sa.sub_service_id,
21
+ TRIM(COALESCE(svc.name, ''))::TEXT AS service_name,
22
+ TRIM(COALESCE(subsvc.sub_service_name, ''))::TEXT AS sub_service_name,
23
+ sa.approval_status,
24
+ sr.status::TEXT AS request_status,
25
+ sa.level,
26
+ sa.approver_user_id,
27
+ TRIM(COALESCE(au.employee_name, ''))::TEXT AS approver_user_name,
28
+ sa.delegate_user_id,
29
+ TRIM(COALESCE(du.employee_name, ''))::TEXT AS delegate_user_name,
30
+ sa.approved_by,
31
+ TRIM(COALESCE(ab.employee_name, ''))::TEXT AS approved_by_name,
32
+ sa.comment,
33
+ sr.user_id AS requester_user_id,
34
+ TRIM(COALESCE(ru.employee_name, ''))::TEXT AS requester_name,
35
+ TRIM(COALESCE(dept.department_name, ''))::TEXT AS department_name,
36
+ TRIM(COALESCE(sec.section_name, ''))::TEXT AS section_name,
37
+ (
38
+ COALESCE(sr.request_obj, '{}'::jsonb)
39
+ - 'id' - 'status' - 'role_id' - 'user_id' - 'createdBy' - 'created_at'
40
+ - 'updated_by' - 'updated_at' - 'req_user_department_id' - 'workflow_execution_id'
41
+ - 'department_id' - 'req_user_section_id' - 'service_type_id' - 'service_type'
42
+ - 'created_by' - 'service_id' - 'sub_service_id' - 'attachments'
43
+ ) AS request_fields,
44
+ sa.created_at,
45
+ sa.updated_at
46
+ FROM sla_approval sa
47
+ INNER JOIN sla_requests sr
48
+ ON sr.request_id = sa.request_id AND COALESCE(sr.is_deleted, false) = false
49
+ LEFT JOIN caa_services svc
50
+ ON svc.id = sa.service_id AND COALESCE(svc.is_deleted, false) = false
51
+ LEFT JOIN caa_sub_services subsvc
52
+ ON subsvc.id = sa.sub_service_id AND COALESCE(subsvc.is_deleted, false) = false
53
+ LEFT JOIN users au ON au.id = sa.approver_user_id
54
+ LEFT JOIN users du ON du.id = sa.delegate_user_id
55
+ LEFT JOIN users ab ON ab.id = sa.approved_by
56
+ LEFT JOIN users ru
57
+ ON ru.id = sr.user_id AND COALESCE(ru.is_deleted, false) = false
58
+ LEFT JOIN departments dept
59
+ ON dept.id = sr.req_user_department_id AND COALESCE(dept.is_deleted, false) = false
60
+ LEFT JOIN sections sec
61
+ ON sec.id = sr.req_user_section_id AND COALESCE(sec.is_deleted, false) = false
62
+ WHERE COALESCE(sa.is_deleted, false) = false
63
+ AND (sa.service_id = sr.service_id OR sa.service_id IS NULL)
64
+ AND (sa.sub_service_id = sr.sub_service_id OR sa.sub_service_id IS NULL)
65
+ `;
66
+ let SlaApprovalsView = class SlaApprovalsView {
67
+ };
68
+ exports.SlaApprovalsView = SlaApprovalsView;
69
+ __decorate([
70
+ (0, typeorm_1.ViewColumn)(),
71
+ __metadata("design:type", Number)
72
+ ], SlaApprovalsView.prototype, "sla_approval_id", void 0);
73
+ __decorate([
74
+ (0, typeorm_1.ViewColumn)(),
75
+ __metadata("design:type", Number)
76
+ ], SlaApprovalsView.prototype, "source_approval_id", void 0);
77
+ __decorate([
78
+ (0, typeorm_1.ViewColumn)(),
79
+ __metadata("design:type", Number)
80
+ ], SlaApprovalsView.prototype, "request_id", void 0);
81
+ __decorate([
82
+ (0, typeorm_1.ViewColumn)(),
83
+ __metadata("design:type", Object)
84
+ ], SlaApprovalsView.prototype, "service_id", void 0);
85
+ __decorate([
86
+ (0, typeorm_1.ViewColumn)(),
87
+ __metadata("design:type", Object)
88
+ ], SlaApprovalsView.prototype, "sub_service_id", void 0);
89
+ __decorate([
90
+ (0, typeorm_1.ViewColumn)(),
91
+ __metadata("design:type", String)
92
+ ], SlaApprovalsView.prototype, "service_name", void 0);
93
+ __decorate([
94
+ (0, typeorm_1.ViewColumn)(),
95
+ __metadata("design:type", String)
96
+ ], SlaApprovalsView.prototype, "sub_service_name", void 0);
97
+ __decorate([
98
+ (0, typeorm_1.ViewColumn)(),
99
+ __metadata("design:type", String)
100
+ ], SlaApprovalsView.prototype, "approval_status", void 0);
101
+ __decorate([
102
+ (0, typeorm_1.ViewColumn)(),
103
+ __metadata("design:type", String)
104
+ ], SlaApprovalsView.prototype, "request_status", void 0);
105
+ __decorate([
106
+ (0, typeorm_1.ViewColumn)(),
107
+ __metadata("design:type", Number)
108
+ ], SlaApprovalsView.prototype, "level", void 0);
109
+ __decorate([
110
+ (0, typeorm_1.ViewColumn)(),
111
+ __metadata("design:type", Object)
112
+ ], SlaApprovalsView.prototype, "approver_user_id", void 0);
113
+ __decorate([
114
+ (0, typeorm_1.ViewColumn)(),
115
+ __metadata("design:type", String)
116
+ ], SlaApprovalsView.prototype, "approver_user_name", void 0);
117
+ __decorate([
118
+ (0, typeorm_1.ViewColumn)(),
119
+ __metadata("design:type", Object)
120
+ ], SlaApprovalsView.prototype, "delegate_user_id", void 0);
121
+ __decorate([
122
+ (0, typeorm_1.ViewColumn)(),
123
+ __metadata("design:type", String)
124
+ ], SlaApprovalsView.prototype, "delegate_user_name", void 0);
125
+ __decorate([
126
+ (0, typeorm_1.ViewColumn)(),
127
+ __metadata("design:type", Object)
128
+ ], SlaApprovalsView.prototype, "approved_by", void 0);
129
+ __decorate([
130
+ (0, typeorm_1.ViewColumn)(),
131
+ __metadata("design:type", String)
132
+ ], SlaApprovalsView.prototype, "approved_by_name", void 0);
133
+ __decorate([
134
+ (0, typeorm_1.ViewColumn)(),
135
+ __metadata("design:type", Object)
136
+ ], SlaApprovalsView.prototype, "comment", void 0);
137
+ __decorate([
138
+ (0, typeorm_1.ViewColumn)(),
139
+ __metadata("design:type", Number)
140
+ ], SlaApprovalsView.prototype, "requester_user_id", void 0);
141
+ __decorate([
142
+ (0, typeorm_1.ViewColumn)(),
143
+ __metadata("design:type", String)
144
+ ], SlaApprovalsView.prototype, "requester_name", void 0);
145
+ __decorate([
146
+ (0, typeorm_1.ViewColumn)(),
147
+ __metadata("design:type", String)
148
+ ], SlaApprovalsView.prototype, "department_name", void 0);
149
+ __decorate([
150
+ (0, typeorm_1.ViewColumn)(),
151
+ __metadata("design:type", String)
152
+ ], SlaApprovalsView.prototype, "section_name", void 0);
153
+ __decorate([
154
+ (0, typeorm_1.ViewColumn)(),
155
+ __metadata("design:type", Object)
156
+ ], SlaApprovalsView.prototype, "request_fields", void 0);
157
+ __decorate([
158
+ (0, typeorm_1.ViewColumn)(),
159
+ __metadata("design:type", Date)
160
+ ], SlaApprovalsView.prototype, "created_at", void 0);
161
+ __decorate([
162
+ (0, typeorm_1.ViewColumn)(),
163
+ __metadata("design:type", Date)
164
+ ], SlaApprovalsView.prototype, "updated_at", void 0);
165
+ exports.SlaApprovalsView = SlaApprovalsView = __decorate([
166
+ (0, typeorm_1.ViewEntity)({
167
+ name: "vw_sla_approvals",
168
+ expression: VW_SLA_APPROVALS_SQL,
169
+ })
170
+ ], 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"];
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. */
@@ -28,48 +28,64 @@ exports.SLA_MY_REQUESTS_REQUEST_OBJ_EXCLUDED_KEYS = [
28
28
  "req_user_section_id",
29
29
  "service_type_id",
30
30
  "service_type",
31
+ "created_by",
32
+ "service_id",
33
+ "sub_service_id",
34
+ "attachments",
35
+ "is_deleted",
36
+ "sla_request",
37
+ "sla_request_id",
31
38
  ];
32
- const VW_SLA_MY_REQUESTS_SQL = `
33
- SELECT
34
- sr.id AS sla_request_id,
35
- sr.user_id,
36
- TRIM(COALESCE(creator.employee_name, ''))::TEXT AS created_by,
37
- sr.created_at,
38
- TRIM(COALESCE(dept.department_name, ''))::TEXT AS req_user_department_id,
39
- TRIM(COALESCE(sec.section_name, ''))::TEXT AS req_user_section_id,
40
- TRIM(COALESCE(svc.name, ''))::TEXT AS service_id,
41
- TRIM(COALESCE(subsvc.sub_service_name, ''))::TEXT AS sub_service_id,
42
- sr.status::TEXT AS status,
43
- sr.request_id,
44
- (
45
- COALESCE(sr.request_obj, '{}'::jsonb)
46
- - 'id'
47
- - 'status'
48
- - 'role_id'
49
- - 'user_id'
50
- - 'createdBy'
51
- - 'created_at'
52
- - 'updated_by'
53
- - 'updated_at'
54
- - 'req_user_department_id'
55
- - 'workflow_execution_id'
56
- - 'department_id'
57
- - 'req_user_section_id'
58
- - 'service_type_id'
59
- - 'service_type'
60
- ) AS request_fields
61
- FROM sla_requests sr
62
- LEFT JOIN users creator
63
- ON creator.id = sr.created_by AND COALESCE(creator.is_deleted, false) = false
64
- LEFT JOIN departments dept
65
- ON dept.id = sr.req_user_department_id AND COALESCE(dept.is_deleted, false) = false
66
- LEFT JOIN sections sec
67
- ON sec.id = sr.req_user_section_id AND COALESCE(sec.is_deleted, false) = false
68
- LEFT JOIN caa_services svc
69
- ON svc.id = sr.service_id AND COALESCE(svc.is_deleted, false) = false
70
- LEFT JOIN caa_sub_services subsvc
71
- ON subsvc.id = sr.sub_service_id AND COALESCE(subsvc.is_deleted, false) = false
72
- 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
73
89
  `;
74
90
  /**
75
91
  * Read-only view for SLA "my requests" listings.
@@ -87,6 +103,14 @@ __decorate([
87
103
  (0, typeorm_1.ViewColumn)(),
88
104
  __metadata("design:type", Number)
89
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);
90
114
  __decorate([
91
115
  (0, typeorm_1.ViewColumn)(),
92
116
  __metadata("design:type", String)
@@ -106,11 +130,11 @@ __decorate([
106
130
  __decorate([
107
131
  (0, typeorm_1.ViewColumn)(),
108
132
  __metadata("design:type", String)
109
- ], SlaMyRequestsView.prototype, "service_id", void 0);
133
+ ], SlaMyRequestsView.prototype, "service_name", void 0);
110
134
  __decorate([
111
135
  (0, typeorm_1.ViewColumn)(),
112
136
  __metadata("design:type", String)
113
- ], SlaMyRequestsView.prototype, "sub_service_id", void 0);
137
+ ], SlaMyRequestsView.prototype, "sub_service_name", void 0);
114
138
  __decorate([
115
139
  (0, typeorm_1.ViewColumn)(),
116
140
  __metadata("design:type", String)
@@ -131,16 +155,18 @@ exports.SlaMyRequestsView = SlaMyRequestsView = __decorate([
131
155
  ], SlaMyRequestsView);
132
156
  /** Flatten view row: fixed columns plus each entry in `request_fields`. */
133
157
  function flattenSlaMyRequestsViewRow(row) {
134
- 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;
135
159
  return {
136
160
  sla_request_id,
137
161
  user_id,
162
+ service_id,
163
+ sub_service_id,
138
164
  created_by,
139
165
  created_at,
140
166
  req_user_department_id,
141
167
  req_user_section_id,
142
- service_id,
143
- sub_service_id,
168
+ service_name,
169
+ sub_service_name,
144
170
  status,
145
171
  request_id,
146
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.256",
3
+ "version": "2.3.259",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -0,0 +1,54 @@
1
+ -- SLA "my requests" read model: joined display names + filtered request_obj payload.
2
+ -- Run once against the EmpPortal PostgreSQL database:
3
+ -- psql -U <user> -d <database> -f sql/vw_sla_my_requests.sql
4
+
5
+ CREATE OR REPLACE VIEW vw_sla_my_requests AS
6
+ SELECT
7
+ sr.id AS sla_request_id,
8
+ sr.user_id,
9
+ sr.service_id AS service_id,
10
+ sr.sub_service_id AS sub_service_id,
11
+ TRIM(COALESCE(creator.employee_name, ''))::TEXT AS created_by,
12
+ sr.created_at,
13
+ TRIM(COALESCE(dept.department_name, ''))::TEXT AS req_user_department_id,
14
+ TRIM(COALESCE(sec.section_name, ''))::TEXT AS req_user_section_id,
15
+ TRIM(COALESCE(svc.name, ''))::TEXT AS service_name,
16
+ TRIM(COALESCE(subsvc.sub_service_name, ''))::TEXT AS sub_service_name,
17
+ sr.status::TEXT AS status,
18
+ sr.request_id,
19
+ (
20
+ COALESCE(sr.request_obj, '{}'::jsonb)
21
+ - 'id'
22
+ - 'status'
23
+ - 'role_id'
24
+ - 'user_id'
25
+ - 'createdBy'
26
+ - 'created_at'
27
+ - 'updated_by'
28
+ - 'updated_at'
29
+ - 'req_user_department_id'
30
+ - 'workflow_execution_id'
31
+ - 'department_id'
32
+ - 'req_user_section_id'
33
+ - 'service_type_id'
34
+ - 'service_type'
35
+ - 'created_by'
36
+ - 'service_id'
37
+ - 'sub_service_id'
38
+ - 'attachments'
39
+ - 'is_deleted'
40
+ - 'sla_request'
41
+ - 'sla_request_id'
42
+ ) AS request_fields
43
+ FROM sla_requests sr
44
+ LEFT JOIN users creator
45
+ ON creator.id = sr.created_by AND COALESCE(creator.is_deleted, false) = false
46
+ LEFT JOIN departments dept
47
+ ON dept.id = sr.req_user_department_id AND COALESCE(dept.is_deleted, false) = false
48
+ LEFT JOIN sections sec
49
+ ON sec.id = sr.req_user_section_id AND COALESCE(sec.is_deleted, false) = false
50
+ LEFT JOIN caa_services svc
51
+ ON svc.id = sr.service_id AND COALESCE(svc.is_deleted, false) = false
52
+ LEFT JOIN caa_sub_services subsvc
53
+ ON subsvc.id = sr.sub_service_id AND COALESCE(subsvc.is_deleted, false) = false
54
+ WHERE COALESCE(sr.is_deleted, false) = false;