@plusscommunities/pluss-maintenance-aws 2.1.44 → 2.1.46

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 (45) hide show
  1. package/createJob.js +201 -114
  2. package/createJobType.js +49 -49
  3. package/db/maintenance/addMaintenanceJob.js +100 -90
  4. package/db/maintenance/editMaintenanceJob.js +22 -12
  5. package/db/maintenance/getJobEmail.js +22 -22
  6. package/deleteJob.js +58 -58
  7. package/deleteJobType.js +40 -40
  8. package/editJob.js +126 -65
  9. package/editJobStatus.js +57 -57
  10. package/editJobType.js +61 -61
  11. package/editNote.js +117 -117
  12. package/feature.config.js +279 -262
  13. package/getData.js +48 -41
  14. package/getJob.js +4 -4
  15. package/getJobType.js +35 -35
  16. package/getJobTypes.js +66 -66
  17. package/getJobs.js +48 -48
  18. package/integration/IntegrationStrategy.js +52 -52
  19. package/integration/archibus/ArchibusStrategy.js +42 -28
  20. package/integration/index.js +19 -19
  21. package/jobChanged.js +88 -89
  22. package/jobTypesChanged.js +52 -39
  23. package/package.json +3 -3
  24. package/requests/assignRequest.js +81 -81
  25. package/requests/getAssignees.js +27 -27
  26. package/requests/getExternalSync.js +100 -100
  27. package/requests/getPropertyRequests.js +89 -0
  28. package/requests/getRequest.js +77 -77
  29. package/requests/getRequests.js +210 -144
  30. package/requests/helper/hasRequestPermission.js +12 -12
  31. package/requests/helper/isValidAssignee.js +10 -10
  32. package/requests/retrySync.js +90 -90
  33. package/requests/setExternalJobId.js +113 -113
  34. package/requests/updatePriority.js +33 -33
  35. package/scheduleJobImport.js +63 -63
  36. package/sendJobEmail.js +105 -104
  37. package/updateData.js +34 -34
  38. package/values.config.a.js +26 -25
  39. package/values.config.default.js +30 -28
  40. package/values.config.enquiry.js +222 -221
  41. package/values.config.feedback.js +194 -193
  42. package/values.config.food.js +29 -28
  43. package/values.config.forms.js +29 -28
  44. package/values.config.js +30 -28
  45. package/watchJobs.js +154 -154
package/feature.config.js CHANGED
@@ -1,272 +1,289 @@
1
1
  const { values } = require("./values.config");
2
2
 
3
3
  exports.permissions = [
4
- values.permissionMaintenanceTracking,
5
- values.permissionMaintenanceAssignment,
6
- values.permissionMaintenanceTypes,
4
+ values.permissionMaintenanceTracking,
5
+ values.permissionMaintenanceAssignment,
6
+ values.permissionMaintenanceTypes,
7
7
  ];
8
8
 
9
9
  exports.entity = {
10
- key: values.entityKey,
11
- permission: values.permissionMaintenanceTracking,
12
- table: values.tableNameMaintenance,
13
- id: "id",
14
- webPath: values.routeEntityPath,
15
- appPath: values.screenMaintenanceDetail,
10
+ key: values.entityKey,
11
+ permission: values.permissionMaintenanceTracking,
12
+ table: values.tableNameMaintenance,
13
+ id: "id",
14
+ webPath: values.routeEntityPath,
15
+ appPath: values.screenMaintenanceDetail,
16
16
  };
17
17
 
18
18
  exports.serverless = {
19
- name: values.serviceKey,
20
- useVpc: true, // Enable VPC routing for static outbound IP (requires vpcConfig in config/index.js)
21
- apis: [
22
- {
23
- name: "getJobType",
24
- file: "getJobType",
25
- function: "getJobType",
26
- memorySize: 256,
27
- timeout: 30,
28
- path: "getjobtype",
29
- method: "post",
30
- },
31
- {
32
- name: "getJobTypes",
33
- file: "getJobTypes",
34
- function: "getJobTypes",
35
- memorySize: 256,
36
- timeout: 30,
37
- path: "getjobtypes",
38
- method: "post",
39
- },
40
- {
41
- name: "createJobType",
42
- file: "createJobType",
43
- function: "createJobType",
44
- memorySize: 256,
45
- timeout: 30,
46
- path: "createJobType",
47
- method: "post",
48
- },
49
- {
50
- name: "editJobType",
51
- file: "editJobType",
52
- function: "editJobType",
53
- memorySize: 256,
54
- timeout: 30,
55
- path: "editJobType",
56
- method: "post",
57
- },
58
- {
59
- name: "deleteJobType",
60
- file: "deleteJobType",
61
- function: "deleteJobType",
62
- memorySize: 256,
63
- timeout: 30,
64
- path: "deleteJobType",
65
- method: "post",
66
- },
67
- {
68
- name: "getJob",
69
- file: "getJob",
70
- function: "getJob",
71
- memorySize: 256,
72
- timeout: 30,
73
- path: "getJob",
74
- method: "post",
75
- },
76
- {
77
- name: "getJobs",
78
- file: "getJobs",
79
- function: "getJobs",
80
- memorySize: 256,
81
- timeout: 30,
82
- path: "getJobs",
83
- method: "post",
84
- },
85
- {
86
- name: "createJob",
87
- file: "createJob",
88
- function: "createJob",
89
- memorySize: 256,
90
- timeout: 30,
91
- path: "sendMaintenance",
92
- method: "post",
93
- },
94
- {
95
- name: "editJob",
96
- file: "editJob",
97
- function: "editJob",
98
- memorySize: 256,
99
- timeout: 30,
100
- path: "editJob",
101
- method: "post",
102
- },
103
- {
104
- name: "deleteJob",
105
- file: "deleteJob",
106
- function: "deleteJob",
107
- memorySize: 256,
108
- timeout: 30,
109
- path: "requests/remove",
110
- method: "post",
111
- },
112
- {
113
- name: "editJobStatus",
114
- file: "editJobStatus",
115
- function: "editJobStatus",
116
- memorySize: 256,
117
- timeout: 30,
118
- path: "editJobStatus",
119
- method: "post",
120
- },
121
- {
122
- name: "editNote",
123
- file: "editNote",
124
- function: "editNote",
125
- memorySize: 256,
126
- timeout: 30,
127
- path: "requests/note",
128
- method: "post",
129
- },
130
- {
131
- name: "getData",
132
- file: "getData",
133
- function: "getData",
134
- memorySize: 256,
135
- timeout: 30,
136
- path: "get/{action}",
137
- method: "get",
138
- },
139
- {
140
- name: "updateData",
141
- file: "updateData",
142
- function: "updateData",
143
- memorySize: 256,
144
- timeout: 30,
145
- path: "update/{action}",
146
- method: "post",
147
- },
148
- ],
149
- triggers: [
150
- {
151
- name: "jobChanged",
152
- file: "jobChanged",
153
- function: "jobChanged",
154
- memorySize: 2048,
155
- timeout: 300,
156
- table: values.tableKeyMaintenance,
157
- },
158
- {
159
- name: "jobTypesChanged",
160
- file: "jobTypesChanged",
161
- function: "jobTypesChanged",
162
- memorySize: 512,
163
- timeout: 60,
164
- table: values.tableKeyJobTypes,
165
- },
166
- ],
167
- schedules: [
168
- {
169
- name: "watchJobs",
170
- file: "watchJobs",
171
- function: "watchJobs",
172
- memorySize: "2048",
173
- timeout: "300",
174
- rate: "1/5 * * * ? *",
175
- },
176
- {
177
- name: "scheduleJobImport",
178
- file: "scheduleJobImport",
179
- function: "scheduleJobImport",
180
- memorySize: "2048",
181
- timeout: "300",
182
- rate: "2/3 * * * ? *",
183
- },
184
- ],
185
- tables: [
186
- {
187
- key: values.tableKeyJobTypes,
188
- name: values.tableNameJobTypes,
189
- attributes: [
190
- { name: "id", type: "S" },
191
- { name: "site", type: "S" },
192
- { name: "typeName", type: "S" },
193
- ],
194
- id: "id",
195
- indexes: [
196
- {
197
- name: "JobTypeSiteIndex",
198
- keys: [
199
- { name: "site", type: "HASH" },
200
- { name: "typeName", type: "RANGE" },
201
- ],
202
- },
203
- ],
204
- },
205
- {
206
- key: values.tableKeyMaintenance,
207
- name: values.tableNameMaintenance,
208
- attributes: [
209
- { name: "id", type: "S" },
210
- { name: "site", type: "S" },
211
- { name: "jobId", type: "S" },
212
- { name: "jobNo", type: "N" },
213
- { name: "userID", type: "S" },
214
- { name: "AssigneeId", type: "S" },
215
- ],
216
- id: "id",
217
- indexes: [
218
- {
219
- name: "MaintenanceSiteIndex",
220
- keys: [{ name: "site", type: "HASH" }],
221
- },
222
- {
223
- name: "MaintenanceSiteJobIdIndex",
224
- keys: [
225
- { name: "site", type: "HASH" },
226
- { name: "jobId", type: "RANGE" },
227
- ],
228
- },
229
- {
230
- name: "MaintenanceSiteJobNoIndex",
231
- keys: [
232
- { name: "site", type: "HASH" },
233
- { name: "jobNo", type: "RANGE" },
234
- ],
235
- },
236
- {
237
- name: "MaintenanceSiteUserIdIndex",
238
- keys: [
239
- { name: "site", type: "HASH" },
240
- { name: "userID", type: "RANGE" },
241
- ],
242
- },
243
- {
244
- name: "MaintenanceSiteAssigneeIndex",
245
- keys: [
246
- { name: "site", type: "HASH" },
247
- { name: "AssigneeId", type: "RANGE" },
248
- ],
249
- },
250
- ],
251
- },
252
- {
253
- key: values.tableKeySupportTickets,
254
- name: values.tableNameSupportTickets,
255
- attributes: [
256
- { name: "Id", type: "S" },
257
- { name: "Site", type: "S" },
258
- { name: "Status", type: "S" },
259
- ],
260
- id: "Id",
261
- indexes: [
262
- {
263
- name: "TicketsSiteStatusIndex",
264
- keys: [
265
- { name: "Site", type: "HASH" },
266
- { name: "Status", type: "RANGE" },
267
- ],
268
- },
269
- ],
270
- },
271
- ],
19
+ name: values.serviceKey,
20
+ useVpc: true, // Enable VPC routing for static outbound IP (requires vpcConfig in config/index.js)
21
+ usePostgres: true, // Wires the Aurora app secret for property resolution (requires useVpc)
22
+ apis: [
23
+ {
24
+ name: "getJobType",
25
+ file: "getJobType",
26
+ function: "getJobType",
27
+ memorySize: 256,
28
+ timeout: 30,
29
+ path: "getjobtype",
30
+ method: "post",
31
+ },
32
+ {
33
+ name: "getJobTypes",
34
+ file: "getJobTypes",
35
+ function: "getJobTypes",
36
+ memorySize: 256,
37
+ timeout: 30,
38
+ path: "getjobtypes",
39
+ method: "post",
40
+ },
41
+ {
42
+ name: "createJobType",
43
+ file: "createJobType",
44
+ function: "createJobType",
45
+ memorySize: 256,
46
+ timeout: 30,
47
+ path: "createJobType",
48
+ method: "post",
49
+ },
50
+ {
51
+ name: "editJobType",
52
+ file: "editJobType",
53
+ function: "editJobType",
54
+ memorySize: 256,
55
+ timeout: 30,
56
+ path: "editJobType",
57
+ method: "post",
58
+ },
59
+ {
60
+ name: "deleteJobType",
61
+ file: "deleteJobType",
62
+ function: "deleteJobType",
63
+ memorySize: 256,
64
+ timeout: 30,
65
+ path: "deleteJobType",
66
+ method: "post",
67
+ },
68
+ {
69
+ name: "getJob",
70
+ file: "getJob",
71
+ function: "getJob",
72
+ memorySize: 256,
73
+ timeout: 30,
74
+ path: "getJob",
75
+ method: "post",
76
+ },
77
+ {
78
+ name: "getJobs",
79
+ file: "getJobs",
80
+ function: "getJobs",
81
+ memorySize: 256,
82
+ timeout: 30,
83
+ path: "getJobs",
84
+ method: "post",
85
+ },
86
+ {
87
+ name: "createJob",
88
+ file: "createJob",
89
+ function: "createJob",
90
+ memorySize: 256,
91
+ timeout: 30,
92
+ path: "sendMaintenance",
93
+ method: "post",
94
+ },
95
+ {
96
+ name: "editJob",
97
+ file: "editJob",
98
+ function: "editJob",
99
+ memorySize: 256,
100
+ timeout: 30,
101
+ path: "editJob",
102
+ method: "post",
103
+ },
104
+ {
105
+ name: "deleteJob",
106
+ file: "deleteJob",
107
+ function: "deleteJob",
108
+ memorySize: 256,
109
+ timeout: 30,
110
+ path: "requests/remove",
111
+ method: "post",
112
+ },
113
+ {
114
+ name: "editJobStatus",
115
+ file: "editJobStatus",
116
+ function: "editJobStatus",
117
+ memorySize: 256,
118
+ timeout: 30,
119
+ path: "editJobStatus",
120
+ method: "post",
121
+ },
122
+ {
123
+ name: "editNote",
124
+ file: "editNote",
125
+ function: "editNote",
126
+ memorySize: 256,
127
+ timeout: 30,
128
+ path: "requests/note",
129
+ method: "post",
130
+ },
131
+ {
132
+ name: "getData",
133
+ file: "getData",
134
+ function: "getData",
135
+ memorySize: 256,
136
+ timeout: 30,
137
+ path: "get/{action}",
138
+ method: "get",
139
+ },
140
+ {
141
+ name: "updateData",
142
+ file: "updateData",
143
+ function: "updateData",
144
+ memorySize: 256,
145
+ timeout: 30,
146
+ path: "update/{action}",
147
+ method: "post",
148
+ },
149
+ ],
150
+ triggers: [
151
+ {
152
+ name: "jobChanged",
153
+ file: "jobChanged",
154
+ function: "jobChanged",
155
+ memorySize: 2048,
156
+ timeout: 300,
157
+ table: values.tableKeyMaintenance,
158
+ },
159
+ {
160
+ name: "jobTypesChanged",
161
+ file: "jobTypesChanged",
162
+ function: "jobTypesChanged",
163
+ memorySize: 512,
164
+ timeout: 60,
165
+ table: values.tableKeyJobTypes,
166
+ },
167
+ ],
168
+ schedules: [
169
+ {
170
+ name: "watchJobs",
171
+ file: "watchJobs",
172
+ function: "watchJobs",
173
+ memorySize: "2048",
174
+ timeout: "300",
175
+ rate: "1/5 * * * ? *",
176
+ },
177
+ {
178
+ name: "scheduleJobImport",
179
+ file: "scheduleJobImport",
180
+ function: "scheduleJobImport",
181
+ memorySize: "2048",
182
+ timeout: "300",
183
+ rate: "2/3 * * * ? *",
184
+ },
185
+ ],
186
+ tables: [
187
+ {
188
+ key: values.tableKeyJobTypes,
189
+ name: values.tableNameJobTypes,
190
+ attributes: [
191
+ { name: "id", type: "S" },
192
+ { name: "site", type: "S" },
193
+ { name: "typeName", type: "S" },
194
+ ],
195
+ id: "id",
196
+ indexes: [
197
+ {
198
+ name: "JobTypeSiteIndex",
199
+ keys: [
200
+ { name: "site", type: "HASH" },
201
+ { name: "typeName", type: "RANGE" },
202
+ ],
203
+ },
204
+ ],
205
+ },
206
+ {
207
+ key: values.tableKeyMaintenance,
208
+ name: values.tableNameMaintenance,
209
+ attributes: [
210
+ { name: "id", type: "S" },
211
+ { name: "site", type: "S" },
212
+ { name: "jobId", type: "S" },
213
+ { name: "jobNo", type: "N" },
214
+ { name: "userID", type: "S" },
215
+ { name: "AssigneeId", type: "S" },
216
+ { name: "status", type: "S" },
217
+ // Set only on property-linked requests (sparse index key).
218
+ { name: "propertyId", type: "S" },
219
+ ],
220
+ id: "id",
221
+ indexes: [
222
+ {
223
+ name: "MaintenanceSiteIndex",
224
+ keys: [{ name: "site", type: "HASH" }],
225
+ },
226
+ // Declared to match the table deployed from newer published releases —
227
+ // omitting them would make CloudFormation delete live indexes.
228
+ {
229
+ name: "MaintenanceSiteAssigneeIndex",
230
+ keys: [
231
+ { name: "site", type: "HASH" },
232
+ { name: "AssigneeId", type: "RANGE" },
233
+ ],
234
+ },
235
+ {
236
+ name: "MaintenanceSiteStatusIndex",
237
+ keys: [
238
+ { name: "site", type: "HASH" },
239
+ { name: "status", type: "RANGE" },
240
+ ],
241
+ },
242
+ {
243
+ name: "MaintenanceSiteJobIdIndex",
244
+ keys: [
245
+ { name: "site", type: "HASH" },
246
+ { name: "jobId", type: "RANGE" },
247
+ ],
248
+ },
249
+ {
250
+ name: "MaintenanceSiteJobNoIndex",
251
+ keys: [
252
+ { name: "site", type: "HASH" },
253
+ { name: "jobNo", type: "RANGE" },
254
+ ],
255
+ },
256
+ {
257
+ name: "MaintenanceSiteUserIdIndex",
258
+ keys: [
259
+ { name: "site", type: "HASH" },
260
+ { name: "userID", type: "RANGE" },
261
+ ],
262
+ },
263
+ {
264
+ name: "MaintenancePropertyIdIndex",
265
+ keys: [{ name: "propertyId", type: "HASH" }],
266
+ },
267
+ ],
268
+ },
269
+ {
270
+ key: values.tableKeySupportTickets,
271
+ name: values.tableNameSupportTickets,
272
+ attributes: [
273
+ { name: "Id", type: "S" },
274
+ { name: "Site", type: "S" },
275
+ { name: "Status", type: "S" },
276
+ ],
277
+ id: "Id",
278
+ indexes: [
279
+ {
280
+ name: "TicketsSiteStatusIndex",
281
+ keys: [
282
+ { name: "Site", type: "HASH" },
283
+ { name: "Status", type: "RANGE" },
284
+ ],
285
+ },
286
+ ],
287
+ },
288
+ ],
272
289
  };
package/getData.js CHANGED
@@ -5,52 +5,59 @@ const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/ge
5
5
  const getAssignees = require("./requests/getAssignees");
6
6
  const getRequests = require("./requests/getRequests");
7
7
  const getRequest = require("./requests/getRequest");
8
+ const getPropertyRequests = require("./requests/getPropertyRequests");
8
9
  const getExternalSync = require("./requests/getExternalSync");
9
10
 
10
11
  module.exports.getData = async (event, context, callback) => {
11
- init(config);
12
- const action = event.pathParameters.action;
13
- const logId = log(action, "Input", event.queryStringParameters);
12
+ init(config);
13
+ const action = event.pathParameters.action;
14
+ const logId = log(action, "Input", event.queryStringParameters);
14
15
 
15
- let response;
16
+ let response;
16
17
 
17
- try {
18
- switch (action) {
19
- case "requests":
20
- response = await getRequests(event);
21
- if (response.status === 200) {
22
- log(action, "ResponseLength", response.data.Items.length, logId);
23
- }
24
- break;
18
+ try {
19
+ switch (action) {
20
+ case "requests":
21
+ response = await getRequests(event);
22
+ if (response.status === 200) {
23
+ log(action, "ResponseLength", response.data.Items.length, logId);
24
+ }
25
+ break;
25
26
 
26
- case "request":
27
- response = await getRequest(event);
28
- if (response.status === 200) {
29
- log(action, "ResponseLength", response.data, logId);
30
- }
31
- break;
32
- case "assignees":
33
- response = await getAssignees(event);
34
- if (response.status === 200) {
35
- log(action, "ResponseLength", response.data.Users.length, logId);
36
- }
37
- break;
38
- case "externalsync":
39
- response = await getExternalSync(event);
40
- if (response.status === 200) {
41
- log(action, "ExternalSystem", response.data.externalSystem, logId);
42
- }
43
- break;
44
- default:
45
- break;
46
- }
47
- } catch (err) {
48
- log(action, "InternalError", err.toString(), logId);
49
- if (!response) {
50
- response = { status: 500, data: { error: "Internal Error" } };
51
- }
52
- }
53
- log(action, "ResponseStatus", response.status, logId);
27
+ case "request":
28
+ response = await getRequest(event);
29
+ if (response.status === 200) {
30
+ log(action, "ResponseLength", response.data, logId);
31
+ }
32
+ break;
33
+ case "propertyrequests":
34
+ response = await getPropertyRequests(event);
35
+ if (response.status === 200) {
36
+ log(action, "ResponseLength", response.data.requests.length, logId);
37
+ }
38
+ break;
39
+ case "assignees":
40
+ response = await getAssignees(event);
41
+ if (response.status === 200) {
42
+ log(action, "ResponseLength", response.data.Users.length, logId);
43
+ }
44
+ break;
45
+ case "externalsync":
46
+ response = await getExternalSync(event);
47
+ if (response.status === 200) {
48
+ log(action, "ExternalSystem", response.data.externalSystem, logId);
49
+ }
50
+ break;
51
+ default:
52
+ break;
53
+ }
54
+ } catch (err) {
55
+ log(action, "InternalError", err.toString(), logId);
56
+ if (!response) {
57
+ response = { status: 500, data: { error: "Internal Error" } };
58
+ }
59
+ }
60
+ log(action, "ResponseStatus", response.status, logId);
54
61
 
55
- return callback(null, generateJsonResponse(response.status, response.data));
62
+ return callback(null, generateJsonResponse(response.status, response.data));
56
63
  };