@platform-modules/civil-aviation-authority 2.3.258 → 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", "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.259",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -1,49 +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
- TRIM(COALESCE(creator.employee_name, ''))::TEXT AS created_by,
10
- sr.created_at,
11
- TRIM(COALESCE(dept.department_name, ''))::TEXT AS req_user_department_id,
12
- TRIM(COALESCE(sec.section_name, ''))::TEXT AS req_user_section_id,
13
- TRIM(COALESCE(svc.name, ''))::TEXT AS service_id,
14
- TRIM(COALESCE(subsvc.sub_service_name, ''))::TEXT AS sub_service_id,
15
- sr.status::TEXT AS status,
16
- sr.request_id,
17
- (
18
- COALESCE(sr.request_obj, '{}'::jsonb)
19
- - 'id'
20
- - 'status'
21
- - 'role_id'
22
- - 'user_id'
23
- - 'createdBy'
24
- - 'created_at'
25
- - 'updated_by'
26
- - 'updated_at'
27
- - 'req_user_department_id'
28
- - 'workflow_execution_id'
29
- - 'department_id'
30
- - 'req_user_section_id'
31
- - 'service_type_id'
32
- - 'service_type'
33
- - 'created_by'
34
- - 'service_id'
35
- - 'sub_service_id'
36
- - 'attachments'
37
- ) AS request_fields
38
- FROM sla_requests sr
39
- LEFT JOIN users creator
40
- ON creator.id = sr.created_by AND COALESCE(creator.is_deleted, false) = false
41
- LEFT JOIN departments dept
42
- ON dept.id = sr.req_user_department_id AND COALESCE(dept.is_deleted, false) = false
43
- LEFT JOIN sections sec
44
- ON sec.id = sr.req_user_section_id AND COALESCE(sec.is_deleted, false) = false
45
- LEFT JOIN caa_services svc
46
- ON svc.id = sr.service_id AND COALESCE(svc.is_deleted, false) = false
47
- LEFT JOIN caa_sub_services subsvc
48
- ON subsvc.id = sr.sub_service_id AND COALESCE(subsvc.is_deleted, false) = false
49
- WHERE COALESCE(sr.is_deleted, false) = false;
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;