@plusscommunities/pluss-maintenance-aws 2.1.1 → 2.2.1-beta.0
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.
- package/createJob.js +3 -2
- package/createJobType.js +37 -34
- package/db/maintenance/addMaintenanceJob.js +4 -3
- package/db/maintenance/editMaintenanceJob.js +2 -1
- package/db/maintenance/getJobEmail.js +2 -1
- package/deleteJob.js +43 -34
- package/deleteJobType.js +28 -25
- package/editJob.js +3 -2
- package/editJobStatus.js +5 -4
- package/editJobType.js +43 -40
- package/editNote.js +6 -5
- package/feature.config.js +18 -16
- package/getJob.js +8 -3
- package/getJobType.js +2 -1
- package/getJobTypes.js +3 -2
- package/getJobs.js +6 -2
- package/integration/archibus/ArchibusStrategy.js +18 -8
- package/package-lock.json +7 -7
- package/package.json +7 -1
- package/requests/assignRequest.js +11 -5
- package/requests/getAssignees.js +5 -4
- package/requests/getRequests.js +4 -3
- package/requests/helper/hasRequestPermission.js +2 -1
- package/requests/helper/isValidAssignee.js +6 -1
- package/sendJobEmail.js +12 -9
- package/values.config.default.js +25 -0
- package/values.config.js +25 -0
- package/values.config.maintenancea.js +25 -0
- package/watchJobs.js +6 -9
package/createJob.js
CHANGED
|
@@ -11,6 +11,7 @@ const getUserPreview = require("@plusscommunities/pluss-core-aws/helper/getUserP
|
|
|
11
11
|
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
12
12
|
const sendJobEmail = require("./sendJobEmail");
|
|
13
13
|
const logAnalyticsActivity = require("@plusscommunities/pluss-core-aws/db/analytics/logAnalyticsActivity");
|
|
14
|
+
const { values } = require("./values.config");
|
|
14
15
|
|
|
15
16
|
module.exports.createJob = (event, context, callback) => {
|
|
16
17
|
init(config);
|
|
@@ -40,7 +41,7 @@ module.exports.createJob = (event, context, callback) => {
|
|
|
40
41
|
if (data.userID !== "undefined" && user.id !== data.userID) {
|
|
41
42
|
const canRequest = await validateMasterAuth(
|
|
42
43
|
event,
|
|
43
|
-
|
|
44
|
+
values.permissionMaintenanceTracking,
|
|
44
45
|
data.location
|
|
45
46
|
);
|
|
46
47
|
if (!canRequest) {
|
|
@@ -95,7 +96,7 @@ module.exports.createJob = (event, context, callback) => {
|
|
|
95
96
|
|
|
96
97
|
logAnalyticsActivity(
|
|
97
98
|
`Request`,
|
|
98
|
-
|
|
99
|
+
values.entityKey,
|
|
99
100
|
data.location,
|
|
100
101
|
user,
|
|
101
102
|
id
|
package/createJobType.js
CHANGED
|
@@ -5,6 +5,7 @@ const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth
|
|
|
5
5
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
6
6
|
const createGuid = require("@plusscommunities/pluss-core-aws/helper/createGuid");
|
|
7
7
|
const updateRef = require("@plusscommunities/pluss-core-aws/db/common/updateRef");
|
|
8
|
+
const { values } = require("./values.config");
|
|
8
9
|
|
|
9
10
|
module.exports.createJobType = (event, context, callback) => {
|
|
10
11
|
init(config);
|
|
@@ -17,43 +18,45 @@ module.exports.createJobType = (event, context, callback) => {
|
|
|
17
18
|
);
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
validateMasterAuth(event,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
null,
|
|
25
|
-
generateJsonResponse(422, {
|
|
26
|
-
error: { message: "Admin - Create User - not authorized." },
|
|
27
|
-
})
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const jobType = {
|
|
32
|
-
id: createGuid().substring(0, 8),
|
|
33
|
-
email: data.email,
|
|
34
|
-
typeName: data.name,
|
|
35
|
-
description: data.description,
|
|
36
|
-
level: data.level,
|
|
37
|
-
site: data.site,
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
updateRef("jobTypes", jobType)
|
|
41
|
-
.then((result) => {
|
|
42
|
-
return callback(
|
|
43
|
-
null,
|
|
44
|
-
generateJsonResponse(200, {
|
|
45
|
-
success: true,
|
|
46
|
-
jobType: result,
|
|
47
|
-
})
|
|
48
|
-
);
|
|
49
|
-
})
|
|
50
|
-
.catch((error) => {
|
|
21
|
+
validateMasterAuth(event, values.permissionMaintenanceTypes).then(
|
|
22
|
+
(authorised) => {
|
|
23
|
+
if (!authorised) {
|
|
24
|
+
console.error("Authorization not valid");
|
|
51
25
|
return callback(
|
|
52
26
|
null,
|
|
53
27
|
generateJsonResponse(422, {
|
|
54
|
-
error,
|
|
28
|
+
error: { message: "Admin - Create User - not authorized." },
|
|
55
29
|
})
|
|
56
30
|
);
|
|
57
|
-
}
|
|
58
|
-
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
const jobType = {
|
|
34
|
+
id: createGuid().substring(0, 8),
|
|
35
|
+
email: data.email,
|
|
36
|
+
typeName: data.name,
|
|
37
|
+
description: data.description,
|
|
38
|
+
level: data.level,
|
|
39
|
+
site: data.site,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
updateRef(values.tableNameJobTypes, jobType)
|
|
43
|
+
.then((result) => {
|
|
44
|
+
return callback(
|
|
45
|
+
null,
|
|
46
|
+
generateJsonResponse(200, {
|
|
47
|
+
success: true,
|
|
48
|
+
jobType: result,
|
|
49
|
+
})
|
|
50
|
+
);
|
|
51
|
+
})
|
|
52
|
+
.catch((error) => {
|
|
53
|
+
return callback(
|
|
54
|
+
null,
|
|
55
|
+
generateJsonResponse(422, {
|
|
56
|
+
error,
|
|
57
|
+
})
|
|
58
|
+
);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
);
|
|
59
62
|
};
|
|
@@ -4,6 +4,7 @@ const uuid = require("uuid");
|
|
|
4
4
|
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
5
5
|
const updateRef = require("@plusscommunities/pluss-core-aws/db/common/updateRef");
|
|
6
6
|
const { getConfig } = require("@plusscommunities/pluss-core-aws/config");
|
|
7
|
+
const { values } = require("../../values.config");
|
|
7
8
|
|
|
8
9
|
module.exports = async (
|
|
9
10
|
userID,
|
|
@@ -74,7 +75,7 @@ module.exports = async (
|
|
|
74
75
|
ScanIndexForward: false,
|
|
75
76
|
};
|
|
76
77
|
|
|
77
|
-
const queryRes = await indexQuery(
|
|
78
|
+
const queryRes = await indexQuery(values.tableNameMaintenance, jobNoQ);
|
|
78
79
|
|
|
79
80
|
if (!_.isEmpty(queryRes.Items)) {
|
|
80
81
|
requestToSave.jobNo = queryRes.Items[0].jobNo + 1;
|
|
@@ -88,7 +89,7 @@ module.exports = async (
|
|
|
88
89
|
Limit: 1,
|
|
89
90
|
ScanIndexForward: false,
|
|
90
91
|
};
|
|
91
|
-
const { Items } = await indexQuery(
|
|
92
|
+
const { Items } = await indexQuery(values.tableNameMaintenance, query);
|
|
92
93
|
requestToSave.jobNo =
|
|
93
94
|
!_.isEmpty(Items) && Items[0].jobId
|
|
94
95
|
? Number.parseInt(Items[0].jobId) + 1
|
|
@@ -97,6 +98,6 @@ module.exports = async (
|
|
|
97
98
|
requestToSave.jobId = (requestToSave.jobNo || 0) + "";
|
|
98
99
|
}
|
|
99
100
|
|
|
100
|
-
await updateRef(
|
|
101
|
+
await updateRef(values.tableNameMaintenance, requestToSave);
|
|
101
102
|
return requestToSave.id;
|
|
102
103
|
};
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
const moment = require("moment");
|
|
2
2
|
const editRef = require("@plusscommunities/pluss-core-aws/db/common/editRef");
|
|
3
|
+
const { values } = require("../../values.config");
|
|
3
4
|
|
|
4
5
|
module.exports = (job) => {
|
|
5
6
|
return new Promise((resolve, reject) => {
|
|
6
7
|
job.lastActivity = moment.utc().toISOString();
|
|
7
8
|
job.lastActivityUnix = moment.utc().valueOf();
|
|
8
9
|
|
|
9
|
-
editRef(
|
|
10
|
+
editRef(values.tableNameMaintenance, "id", job.id, job)
|
|
10
11
|
.then((result) => {
|
|
11
12
|
resolve(result);
|
|
12
13
|
})
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
2
|
+
const { values } = require("../../values.config");
|
|
2
3
|
|
|
3
4
|
module.exports = (site, typeName) => {
|
|
4
5
|
return new Promise((resolve, reject) => {
|
|
@@ -13,7 +14,7 @@ module.exports = (site, typeName) => {
|
|
|
13
14
|
|
|
14
15
|
console.log("running jobType email query");
|
|
15
16
|
console.log(query);
|
|
16
|
-
indexQuery(
|
|
17
|
+
indexQuery(values.tableNameJobTypes, query)
|
|
17
18
|
.then((data) => {
|
|
18
19
|
console.log("successful query");
|
|
19
20
|
resolve(data.Items[0]);
|
package/deleteJob.js
CHANGED
|
@@ -7,6 +7,7 @@ const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
|
7
7
|
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
8
8
|
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
9
9
|
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
10
|
+
const { values } = require("./values.config");
|
|
10
11
|
|
|
11
12
|
module.exports.deleteJob = (event, context, callback) => {
|
|
12
13
|
init(config);
|
|
@@ -20,46 +21,54 @@ module.exports.deleteJob = (event, context, callback) => {
|
|
|
20
21
|
return;
|
|
21
22
|
}
|
|
22
23
|
|
|
23
|
-
validateMasterAuth(event,
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
generateJsonResponse(403, {
|
|
29
|
-
error: {
|
|
30
|
-
message: "Authorization not valid.",
|
|
31
|
-
},
|
|
32
|
-
})
|
|
33
|
-
);
|
|
34
|
-
return;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
getRef("maintenance", "id", data.id).then((result) => {
|
|
38
|
-
if (result.site !== data.site) {
|
|
39
|
-
return callback(
|
|
24
|
+
validateMasterAuth(event, values.permissionMaintenanceTracking).then(
|
|
25
|
+
(authorised) => {
|
|
26
|
+
if (!authorised) {
|
|
27
|
+
console.error("Authorization not valid");
|
|
28
|
+
callback(
|
|
40
29
|
null,
|
|
41
|
-
generateJsonResponse(
|
|
30
|
+
generateJsonResponse(403, {
|
|
42
31
|
error: {
|
|
43
|
-
message: "
|
|
32
|
+
message: "Authorization not valid.",
|
|
44
33
|
},
|
|
45
34
|
})
|
|
46
35
|
);
|
|
36
|
+
return;
|
|
47
37
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
38
|
+
|
|
39
|
+
getRef(values.tableNameMaintenance, "id", data.id).then((result) => {
|
|
40
|
+
if (result.site !== data.site) {
|
|
41
|
+
return callback(
|
|
42
|
+
null,
|
|
43
|
+
generateJsonResponse(422, {
|
|
44
|
+
error: {
|
|
45
|
+
message: "Incorrect site.",
|
|
46
|
+
},
|
|
47
|
+
})
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
deleteRef(values.tableNameMaintenance, "id", data.id)
|
|
51
|
+
.then(() => {
|
|
52
|
+
getUserPreviewFromReq(event).then((user) => {
|
|
53
|
+
publishActivity(
|
|
54
|
+
values.activityDeleteMaintenanceJob,
|
|
55
|
+
data.site,
|
|
56
|
+
data.id,
|
|
57
|
+
user,
|
|
58
|
+
{
|
|
59
|
+
title: result.title,
|
|
60
|
+
description: result.description,
|
|
61
|
+
}
|
|
62
|
+
);
|
|
54
63
|
});
|
|
64
|
+
callback(null, generateJsonResponse(200, { success: true }));
|
|
65
|
+
return;
|
|
66
|
+
})
|
|
67
|
+
.catch((error) => {
|
|
68
|
+
callback(null, generateJsonResponse(422, { error }));
|
|
69
|
+
return;
|
|
55
70
|
});
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
.catch((error) => {
|
|
60
|
-
callback(null, generateJsonResponse(422, { error }));
|
|
61
|
-
return;
|
|
62
|
-
});
|
|
63
|
-
});
|
|
64
|
-
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
);
|
|
65
74
|
};
|
package/deleteJobType.js
CHANGED
|
@@ -5,6 +5,7 @@ const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth
|
|
|
5
5
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
6
6
|
const deleteRef = require("@plusscommunities/pluss-core-aws/db/common/deleteRef");
|
|
7
7
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
8
|
+
const { values } = require("./values.config");
|
|
8
9
|
|
|
9
10
|
module.exports.deleteJobType = (event, context, callback) => {
|
|
10
11
|
init(config);
|
|
@@ -17,35 +18,37 @@ module.exports.deleteJobType = (event, context, callback) => {
|
|
|
17
18
|
);
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
validateMasterAuth(event,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
null,
|
|
25
|
-
generateJsonResponse(422, {
|
|
26
|
-
error: { message: "Admin - Create User - not authorized." },
|
|
27
|
-
})
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
getRef("jobTypes", "id", data.id).then((result) => {
|
|
32
|
-
if (result.site !== data.site) {
|
|
21
|
+
validateMasterAuth(event, values.permissionMaintenanceTypes).then(
|
|
22
|
+
(authorised) => {
|
|
23
|
+
if (!authorised) {
|
|
24
|
+
console.error("Authorization not valid");
|
|
33
25
|
return callback(
|
|
34
26
|
null,
|
|
35
27
|
generateJsonResponse(422, {
|
|
36
|
-
error: {
|
|
37
|
-
message: "Incorrect site.",
|
|
38
|
-
},
|
|
28
|
+
error: { message: "Admin - Create User - not authorized." },
|
|
39
29
|
})
|
|
40
30
|
);
|
|
41
31
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
32
|
+
|
|
33
|
+
getRef(values.tableNameJobTypes, "id", data.id).then((result) => {
|
|
34
|
+
if (result.site !== data.site) {
|
|
35
|
+
return callback(
|
|
36
|
+
null,
|
|
37
|
+
generateJsonResponse(422, {
|
|
38
|
+
error: {
|
|
39
|
+
message: "Incorrect site.",
|
|
40
|
+
},
|
|
41
|
+
})
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
deleteRef(values.tableNameJobTypes, "id", data.id)
|
|
45
|
+
.then(() => {
|
|
46
|
+
return callback(null, generateJsonResponse(200, { success: true }));
|
|
47
|
+
})
|
|
48
|
+
.catch((error) => {
|
|
49
|
+
return callback(null, generateJsonResponse(422, { error }));
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
);
|
|
51
54
|
};
|
package/editJob.js
CHANGED
|
@@ -10,6 +10,7 @@ const editMaintenanceJob = require("./db/maintenance/editMaintenanceJob");
|
|
|
10
10
|
const { getConfig } = require("@plusscommunities/pluss-core-aws/config");
|
|
11
11
|
const hasRequestPermission = require("./requests/helper/hasRequestPermission");
|
|
12
12
|
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
13
|
+
const { values } = require("./values.config");
|
|
13
14
|
|
|
14
15
|
module.exports.editJob = (event, context, callback) => {
|
|
15
16
|
init(config);
|
|
@@ -22,7 +23,7 @@ module.exports.editJob = (event, context, callback) => {
|
|
|
22
23
|
);
|
|
23
24
|
}
|
|
24
25
|
|
|
25
|
-
getRef(
|
|
26
|
+
getRef(values.tableNameMaintenance, "id", data.job.id)
|
|
26
27
|
.then((prevData) => {
|
|
27
28
|
hasRequestPermission(event, prevData).then((authorised) => {
|
|
28
29
|
if (!authorised) {
|
|
@@ -40,7 +41,7 @@ module.exports.editJob = (event, context, callback) => {
|
|
|
40
41
|
if (!getConfig().maintenanceInstantComplete) {
|
|
41
42
|
sendJobEmail(data.job, true);
|
|
42
43
|
publishActivity(
|
|
43
|
-
|
|
44
|
+
values.activityEditMaintenanceJob,
|
|
44
45
|
data.site,
|
|
45
46
|
data.job.id,
|
|
46
47
|
user,
|
package/editJobStatus.js
CHANGED
|
@@ -11,13 +11,14 @@ const publishNotifications = require("@plusscommunities/pluss-core-aws/db/notifi
|
|
|
11
11
|
const editMaintenanceJob = require("./db/maintenance/editMaintenanceJob");
|
|
12
12
|
const logAnalyticsActivity = require("@plusscommunities/pluss-core-aws/db/analytics/logAnalyticsActivity");
|
|
13
13
|
const hasRequestPermission = require("./requests/helper/hasRequestPermission");
|
|
14
|
+
const { values } = require("./values.config");
|
|
14
15
|
|
|
15
16
|
module.exports.editJobStatus = async (event, context, callback) => {
|
|
16
17
|
init(config);
|
|
17
18
|
const data = getBody(event);
|
|
18
19
|
|
|
19
20
|
try {
|
|
20
|
-
const job = await getRef(
|
|
21
|
+
const job = await getRef(values.tableNameMaintenance, "id", data.id);
|
|
21
22
|
const authorised = await hasRequestPermission(event, job);
|
|
22
23
|
if (!authorised) {
|
|
23
24
|
console.error("Authorization not valid");
|
|
@@ -45,7 +46,7 @@ module.exports.editJobStatus = async (event, context, callback) => {
|
|
|
45
46
|
|
|
46
47
|
// Log activity & notify
|
|
47
48
|
publishActivity(
|
|
48
|
-
|
|
49
|
+
values.activityMaintenanceJobStatusChanged,
|
|
49
50
|
result.site,
|
|
50
51
|
result.id,
|
|
51
52
|
user,
|
|
@@ -55,7 +56,7 @@ module.exports.editJobStatus = async (event, context, callback) => {
|
|
|
55
56
|
if (job.status === "Completed") {
|
|
56
57
|
logAnalyticsActivity(
|
|
57
58
|
`RequestCompleted`,
|
|
58
|
-
|
|
59
|
+
values.entityKey,
|
|
59
60
|
result.site,
|
|
60
61
|
user,
|
|
61
62
|
result.id
|
|
@@ -65,7 +66,7 @@ module.exports.editJobStatus = async (event, context, callback) => {
|
|
|
65
66
|
if (result.userID) {
|
|
66
67
|
publishNotifications(
|
|
67
68
|
[result.userID],
|
|
68
|
-
|
|
69
|
+
values.activityMaintenanceJobStatusChanged,
|
|
69
70
|
result.site,
|
|
70
71
|
result.id,
|
|
71
72
|
result,
|
package/editJobType.js
CHANGED
|
@@ -5,6 +5,7 @@ const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth
|
|
|
5
5
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
6
6
|
const editRef = require("@plusscommunities/pluss-core-aws/db/common/editRef");
|
|
7
7
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
8
|
+
const { values } = require("./values.config");
|
|
8
9
|
|
|
9
10
|
module.exports.editJobType = (event, context, callback) => {
|
|
10
11
|
init(config);
|
|
@@ -17,55 +18,57 @@ module.exports.editJobType = (event, context, callback) => {
|
|
|
17
18
|
);
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
validateMasterAuth(event,
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
null,
|
|
25
|
-
generateJsonResponse(422, {
|
|
26
|
-
error: { message: "Admin - Create User - not authorized." },
|
|
27
|
-
})
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
const jobType = {
|
|
32
|
-
id: data.id,
|
|
33
|
-
email: data.email,
|
|
34
|
-
typeName: data.name,
|
|
35
|
-
description: data.description,
|
|
36
|
-
level: data.level,
|
|
37
|
-
site: data.site,
|
|
38
|
-
};
|
|
39
|
-
|
|
40
|
-
getRef("jobTypes", "id", data.id).then((result) => {
|
|
41
|
-
if (result.site !== data.site) {
|
|
21
|
+
validateMasterAuth(event, values.permissionMaintenanceTypes).then(
|
|
22
|
+
(authorised) => {
|
|
23
|
+
if (!authorised) {
|
|
24
|
+
console.error("Authorization not valid");
|
|
42
25
|
return callback(
|
|
43
26
|
null,
|
|
44
27
|
generateJsonResponse(422, {
|
|
45
|
-
error: {
|
|
46
|
-
message: "Incorrect site.",
|
|
47
|
-
},
|
|
28
|
+
error: { message: "Admin - Create User - not authorized." },
|
|
48
29
|
})
|
|
49
30
|
);
|
|
50
31
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
32
|
+
|
|
33
|
+
const jobType = {
|
|
34
|
+
id: data.id,
|
|
35
|
+
email: data.email,
|
|
36
|
+
typeName: data.name,
|
|
37
|
+
description: data.description,
|
|
38
|
+
level: data.level,
|
|
39
|
+
site: data.site,
|
|
40
|
+
};
|
|
41
|
+
|
|
42
|
+
getRef(values.tableNameJobTypes, "id", data.id).then((result) => {
|
|
43
|
+
if (result.site !== data.site) {
|
|
62
44
|
return callback(
|
|
63
45
|
null,
|
|
64
46
|
generateJsonResponse(422, {
|
|
65
|
-
error
|
|
47
|
+
error: {
|
|
48
|
+
message: "Incorrect site.",
|
|
49
|
+
},
|
|
66
50
|
})
|
|
67
51
|
);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
|
|
52
|
+
}
|
|
53
|
+
editRef(values.tableNameJobTypes, "id", data.id, jobType)
|
|
54
|
+
.then((result) => {
|
|
55
|
+
return callback(
|
|
56
|
+
null,
|
|
57
|
+
generateJsonResponse(200, {
|
|
58
|
+
success: true,
|
|
59
|
+
jobType: result,
|
|
60
|
+
})
|
|
61
|
+
);
|
|
62
|
+
})
|
|
63
|
+
.catch((error) => {
|
|
64
|
+
return callback(
|
|
65
|
+
null,
|
|
66
|
+
generateJsonResponse(422, {
|
|
67
|
+
error,
|
|
68
|
+
})
|
|
69
|
+
);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
);
|
|
71
74
|
};
|
package/editNote.js
CHANGED
|
@@ -10,6 +10,7 @@ const updateRef = require("@plusscommunities/pluss-core-aws/db/common/updateRef"
|
|
|
10
10
|
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
11
11
|
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
12
12
|
const hasRequestPermission = require("./requests/helper/hasRequestPermission");
|
|
13
|
+
const { values } = require("./values.config");
|
|
13
14
|
|
|
14
15
|
module.exports.editNote = (event, context, callback) => {
|
|
15
16
|
init(config);
|
|
@@ -50,7 +51,7 @@ module.exports.editNote = (event, context, callback) => {
|
|
|
50
51
|
break;
|
|
51
52
|
}
|
|
52
53
|
|
|
53
|
-
getRef(
|
|
54
|
+
getRef(values.tableNameMaintenance, "id", data.id).then((job) => {
|
|
54
55
|
hasRequestPermission(event, job)
|
|
55
56
|
.then((authorised) => {
|
|
56
57
|
if (!authorised) {
|
|
@@ -76,13 +77,13 @@ module.exports.editNote = (event, context, callback) => {
|
|
|
76
77
|
Note: data.note,
|
|
77
78
|
Attachments: data.attachments,
|
|
78
79
|
});
|
|
79
|
-
activityAction =
|
|
80
|
+
activityAction = values.activityAddMaintenanceNote;
|
|
80
81
|
break;
|
|
81
82
|
case "DeleteNote":
|
|
82
83
|
job.Notes = _.filter(job.Notes, (n) => {
|
|
83
84
|
return n.Id !== data.noteId;
|
|
84
85
|
});
|
|
85
|
-
activityAction =
|
|
86
|
+
activityAction = values.activityDeleteMaintenanceNote;
|
|
86
87
|
break;
|
|
87
88
|
case "EditNote":
|
|
88
89
|
const note = _.find(job.Notes, (n) => {
|
|
@@ -98,12 +99,12 @@ module.exports.editNote = (event, context, callback) => {
|
|
|
98
99
|
}
|
|
99
100
|
note.Note = data.note;
|
|
100
101
|
note.Attachments = data.attachments;
|
|
101
|
-
activityAction =
|
|
102
|
+
activityAction = values.activityEditMaintenanceNote;
|
|
102
103
|
break;
|
|
103
104
|
default:
|
|
104
105
|
break;
|
|
105
106
|
}
|
|
106
|
-
updateRef(
|
|
107
|
+
updateRef(values.tableNameMaintenance, job).then((result) => {
|
|
107
108
|
publishActivity(activityAction, result.site, result.id, user, {
|
|
108
109
|
title: result.title,
|
|
109
110
|
description: result.description,
|
package/feature.config.js
CHANGED
|
@@ -1,20 +1,22 @@
|
|
|
1
|
+
const { values } = require("./values.config");
|
|
2
|
+
|
|
1
3
|
exports.permissions = [
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
values.permissionMaintenanceTracking,
|
|
5
|
+
values.permissionMaintenanceAssignment,
|
|
6
|
+
values.permissionMaintenanceTypes,
|
|
5
7
|
];
|
|
6
8
|
|
|
7
9
|
exports.entity = {
|
|
8
|
-
key:
|
|
9
|
-
permission:
|
|
10
|
-
table:
|
|
10
|
+
key: values.entityKey,
|
|
11
|
+
permission: values.permissionMaintenanceTracking,
|
|
12
|
+
table: values.tableNameMaintenance,
|
|
11
13
|
id: "id",
|
|
12
|
-
webPath:
|
|
13
|
-
appPath:
|
|
14
|
+
webPath: values.routeEntityPath,
|
|
15
|
+
appPath: values.screenMaintenanceDetail,
|
|
14
16
|
};
|
|
15
17
|
|
|
16
18
|
exports.serverless = {
|
|
17
|
-
name:
|
|
19
|
+
name: values.serviceKey,
|
|
18
20
|
apis: [
|
|
19
21
|
{
|
|
20
22
|
name: "getJobType",
|
|
@@ -150,7 +152,7 @@ exports.serverless = {
|
|
|
150
152
|
function: "jobChanged",
|
|
151
153
|
memorySize: 2048,
|
|
152
154
|
timeout: 300,
|
|
153
|
-
table:
|
|
155
|
+
table: values.tableKeyMaintenance,
|
|
154
156
|
},
|
|
155
157
|
],
|
|
156
158
|
schedules: [
|
|
@@ -173,8 +175,8 @@ exports.serverless = {
|
|
|
173
175
|
],
|
|
174
176
|
tables: [
|
|
175
177
|
{
|
|
176
|
-
key:
|
|
177
|
-
name:
|
|
178
|
+
key: values.tableKeyJobTypes,
|
|
179
|
+
name: values.tableNameJobTypes,
|
|
178
180
|
attributes: [
|
|
179
181
|
{ name: "id", type: "S" },
|
|
180
182
|
{ name: "site", type: "S" },
|
|
@@ -192,8 +194,8 @@ exports.serverless = {
|
|
|
192
194
|
],
|
|
193
195
|
},
|
|
194
196
|
{
|
|
195
|
-
key:
|
|
196
|
-
name:
|
|
197
|
+
key: values.tableKeyMaintenance,
|
|
198
|
+
name: values.tableNameMaintenance,
|
|
197
199
|
attributes: [
|
|
198
200
|
{ name: "id", type: "S" },
|
|
199
201
|
{ name: "site", type: "S" },
|
|
@@ -231,8 +233,8 @@ exports.serverless = {
|
|
|
231
233
|
],
|
|
232
234
|
},
|
|
233
235
|
{
|
|
234
|
-
key:
|
|
235
|
-
name:
|
|
236
|
+
key: values.tableKeySupportTickets,
|
|
237
|
+
name: values.tableNameSupportTickets,
|
|
236
238
|
attributes: [
|
|
237
239
|
{ name: "Id", type: "S" },
|
|
238
240
|
{ name: "Site", type: "S" },
|
package/getJob.js
CHANGED
|
@@ -7,6 +7,7 @@ const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuer
|
|
|
7
7
|
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
8
8
|
const getSessionUser = require("@plusscommunities/pluss-core-aws/helper/auth/getSessionUser");
|
|
9
9
|
const isValidAssignee = require("./requests/helper/isValidAssignee");
|
|
10
|
+
const { values } = require("./values.config");
|
|
10
11
|
|
|
11
12
|
module.exports.getJob = async (event, context, callback) => {
|
|
12
13
|
init(config);
|
|
@@ -32,16 +33,20 @@ module.exports.getJob = async (event, context, callback) => {
|
|
|
32
33
|
":jobId": data.jobId,
|
|
33
34
|
},
|
|
34
35
|
};
|
|
35
|
-
const { Items } = await indexQuery(
|
|
36
|
+
const { Items } = await indexQuery(values.tableNameMaintenance, query);
|
|
36
37
|
result = Items[0];
|
|
37
38
|
}
|
|
38
39
|
if (!result)
|
|
39
|
-
result = await getRef(
|
|
40
|
+
result = await getRef(
|
|
41
|
+
values.tableNameMaintenance,
|
|
42
|
+
"id",
|
|
43
|
+
data.id || data.jobId
|
|
44
|
+
);
|
|
40
45
|
|
|
41
46
|
try {
|
|
42
47
|
const authorised = await validateMasterAuth(
|
|
43
48
|
event,
|
|
44
|
-
|
|
49
|
+
values.permissionMaintenanceTracking,
|
|
45
50
|
result.site
|
|
46
51
|
);
|
|
47
52
|
const assignAuthorised = await isValidAssignee(
|
package/getJobType.js
CHANGED
|
@@ -4,6 +4,7 @@ const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
|
4
4
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
5
5
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
6
6
|
const validateSiteAccess = require("@plusscommunities/pluss-core-aws/helper/auth/validateSiteAccess");
|
|
7
|
+
const { values } = require("./values.config");
|
|
7
8
|
|
|
8
9
|
module.exports.getJobType = (event, context, callback) => {
|
|
9
10
|
init(config);
|
|
@@ -26,7 +27,7 @@ module.exports.getJobType = (event, context, callback) => {
|
|
|
26
27
|
generateJsonResponse(422, { fail: true, error: "not authorised" })
|
|
27
28
|
);
|
|
28
29
|
}
|
|
29
|
-
getRef(
|
|
30
|
+
getRef(values.tableNameJobTypes, "id", data.typeId)
|
|
30
31
|
.then((gweg) => {
|
|
31
32
|
return callback(null, generateJsonResponse(200, gweg));
|
|
32
33
|
})
|
package/getJobTypes.js
CHANGED
|
@@ -7,6 +7,7 @@ const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuer
|
|
|
7
7
|
const updateRef = require("@plusscommunities/pluss-core-aws/db/common/updateRef");
|
|
8
8
|
const validateSiteAccess = require("@plusscommunities/pluss-core-aws/helper/auth/validateSiteAccess");
|
|
9
9
|
const createGuid = require("@plusscommunities/pluss-core-aws/helper/createGuid");
|
|
10
|
+
const { values } = require("./values.config");
|
|
10
11
|
|
|
11
12
|
module.exports.getJobTypes = (event, context, callback) => {
|
|
12
13
|
init(config);
|
|
@@ -37,7 +38,7 @@ module.exports.getJobTypes = (event, context, callback) => {
|
|
|
37
38
|
},
|
|
38
39
|
};
|
|
39
40
|
|
|
40
|
-
indexQuery(
|
|
41
|
+
indexQuery(values.tableNameJobTypes, query)
|
|
41
42
|
.then((typeRes) => {
|
|
42
43
|
if (!_.isEmpty(typeRes.Items)) {
|
|
43
44
|
return callback(null, generateJsonResponse(200, typeRes.Items));
|
|
@@ -49,7 +50,7 @@ module.exports.getJobTypes = (event, context, callback) => {
|
|
|
49
50
|
site: data.site,
|
|
50
51
|
};
|
|
51
52
|
|
|
52
|
-
updateRef(
|
|
53
|
+
updateRef(values.tableNameJobTypes, jobType).then(() => {
|
|
53
54
|
return callback(null, generateJsonResponse(200, [jobType]));
|
|
54
55
|
});
|
|
55
56
|
})
|
package/getJobs.js
CHANGED
|
@@ -5,6 +5,7 @@ const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/ge
|
|
|
5
5
|
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
6
6
|
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
7
7
|
const getSessionUser = require("@plusscommunities/pluss-core-aws/helper/auth/getSessionUser");
|
|
8
|
+
const { values } = require("./values.config");
|
|
8
9
|
|
|
9
10
|
module.exports.getJobs = async (event, context, callback) => {
|
|
10
11
|
init(config);
|
|
@@ -20,7 +21,10 @@ module.exports.getJobs = async (event, context, callback) => {
|
|
|
20
21
|
}
|
|
21
22
|
|
|
22
23
|
try {
|
|
23
|
-
const authorised = await validateMasterAuth(
|
|
24
|
+
const authorised = await validateMasterAuth(
|
|
25
|
+
event,
|
|
26
|
+
values.permissionMaintenanceTracking
|
|
27
|
+
);
|
|
24
28
|
const userId = authorised
|
|
25
29
|
? null
|
|
26
30
|
: await getSessionUser(event.headers.authkey);
|
|
@@ -35,7 +39,7 @@ module.exports.getJobs = async (event, context, callback) => {
|
|
|
35
39
|
};
|
|
36
40
|
|
|
37
41
|
try {
|
|
38
|
-
const res = await indexQuery(
|
|
42
|
+
const res = await indexQuery(values.tableNameMaintenance, query);
|
|
39
43
|
let jobs = userId
|
|
40
44
|
? res.Items.filter((job) => job.userID === userId)
|
|
41
45
|
: res.Items;
|
|
@@ -9,6 +9,7 @@ const updateRef = require("@plusscommunities/pluss-core-aws/db/common/updateRef"
|
|
|
9
9
|
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
10
10
|
const publishNotifications = require("@plusscommunities/pluss-core-aws/db/notifications/publishNotifications");
|
|
11
11
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
12
|
+
const { values } = require("../../values.config");
|
|
12
13
|
|
|
13
14
|
class ArchibusStrategy extends IntegrationStrategy {
|
|
14
15
|
constructor(config) {
|
|
@@ -69,7 +70,7 @@ class ArchibusStrategy extends IntegrationStrategy {
|
|
|
69
70
|
Host: this.host,
|
|
70
71
|
},
|
|
71
72
|
data: {
|
|
72
|
-
prob_type: "1.ON-SITE
|
|
73
|
+
prob_type: "1.ON-SITE",
|
|
73
74
|
requestor: "PLUSSDEV",
|
|
74
75
|
description: `${request.title}${
|
|
75
76
|
_.isEmpty(request.description) ? "" : `\n\n${request.description}`
|
|
@@ -98,7 +99,7 @@ class ArchibusStrategy extends IntegrationStrategy {
|
|
|
98
99
|
});
|
|
99
100
|
|
|
100
101
|
// Save the Archibus ID as the job number
|
|
101
|
-
await editRef(
|
|
102
|
+
await editRef(values.tableNameMaintenance, "id", request.id, {
|
|
102
103
|
jobNo: response.data.wrId,
|
|
103
104
|
jobId: response.data.wrId + "",
|
|
104
105
|
});
|
|
@@ -124,7 +125,7 @@ class ArchibusStrategy extends IntegrationStrategy {
|
|
|
124
125
|
log("Archibus:CreateRequest", "Error", e, logId);
|
|
125
126
|
|
|
126
127
|
// trigger another attempt
|
|
127
|
-
// editRef(
|
|
128
|
+
// editRef(values.tableNameMaintenance, "id", request.id, {
|
|
128
129
|
// ExtCreateRetry: moment().valueOf(),
|
|
129
130
|
// });
|
|
130
131
|
}
|
|
@@ -189,15 +190,24 @@ class ArchibusStrategy extends IntegrationStrategy {
|
|
|
189
190
|
log("Archibus:RefreshFromSource", "UpdatedStatus", statusToUse, logId);
|
|
190
191
|
|
|
191
192
|
if (statusToUse) {
|
|
192
|
-
let plussRequest = await getRef(
|
|
193
|
+
let plussRequest = await getRef(
|
|
194
|
+
values.tableNameMaintenance,
|
|
195
|
+
"id",
|
|
196
|
+
requestId
|
|
197
|
+
);
|
|
193
198
|
// check how the new status map to what is saved in Pluss
|
|
194
199
|
|
|
195
200
|
if (statusToUse.Status !== plussRequest.status) {
|
|
196
201
|
// save updated status
|
|
197
202
|
|
|
198
|
-
plussRequest = await editRef(
|
|
199
|
-
|
|
200
|
-
|
|
203
|
+
plussRequest = await editRef(
|
|
204
|
+
values.tableNameMaintenance,
|
|
205
|
+
"id",
|
|
206
|
+
requestId,
|
|
207
|
+
{
|
|
208
|
+
status: statusToUse.Status,
|
|
209
|
+
}
|
|
210
|
+
);
|
|
201
211
|
log(
|
|
202
212
|
"Archibus:RefreshFromSource",
|
|
203
213
|
"SavedStatus",
|
|
@@ -390,7 +400,7 @@ class ArchibusStrategy extends IntegrationStrategy {
|
|
|
390
400
|
IndexName: "CommentsEntityIdIndex",
|
|
391
401
|
KeyConditionExpression: "EntityId = :groupId",
|
|
392
402
|
ExpressionAttributeValues: {
|
|
393
|
-
":groupId": getRowId(request.id,
|
|
403
|
+
":groupId": getRowId(request.id, values.serviceKey),
|
|
394
404
|
},
|
|
395
405
|
};
|
|
396
406
|
|
package/package-lock.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-maintenance-aws",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.2.1-beta.0",
|
|
4
4
|
"lockfileVersion": 1,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"dependencies": {
|
|
@@ -1743,7 +1743,7 @@
|
|
|
1743
1743
|
"asynckit": {
|
|
1744
1744
|
"version": "0.4.0",
|
|
1745
1745
|
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
|
1746
|
-
"integrity": "
|
|
1746
|
+
"integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
|
|
1747
1747
|
},
|
|
1748
1748
|
"available-typed-arrays": {
|
|
1749
1749
|
"version": "1.0.7",
|
|
@@ -2578,7 +2578,7 @@
|
|
|
2578
2578
|
"delayed-stream": {
|
|
2579
2579
|
"version": "1.0.0",
|
|
2580
2580
|
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
|
2581
|
-
"integrity": "
|
|
2581
|
+
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
|
|
2582
2582
|
},
|
|
2583
2583
|
"detect-newline": {
|
|
2584
2584
|
"version": "3.1.0",
|
|
@@ -3076,7 +3076,7 @@
|
|
|
3076
3076
|
"events": {
|
|
3077
3077
|
"version": "1.1.1",
|
|
3078
3078
|
"resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz",
|
|
3079
|
-
"integrity": "
|
|
3079
|
+
"integrity": "sha1-nr23Y1rQmccNzEwqH1AEKI6L2SQ="
|
|
3080
3080
|
},
|
|
3081
3081
|
"execa": {
|
|
3082
3082
|
"version": "5.1.1",
|
|
@@ -6648,7 +6648,7 @@
|
|
|
6648
6648
|
"querystring": {
|
|
6649
6649
|
"version": "0.2.0",
|
|
6650
6650
|
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
|
|
6651
|
-
"integrity": "
|
|
6651
|
+
"integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA="
|
|
6652
6652
|
},
|
|
6653
6653
|
"querystringify": {
|
|
6654
6654
|
"version": "2.2.0",
|
|
@@ -6799,7 +6799,7 @@
|
|
|
6799
6799
|
"sax": {
|
|
6800
6800
|
"version": "1.2.1",
|
|
6801
6801
|
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz",
|
|
6802
|
-
"integrity": "
|
|
6802
|
+
"integrity": "sha1-e45lYZCyKOgaZq6nSEgNgozS03o="
|
|
6803
6803
|
},
|
|
6804
6804
|
"scmp": {
|
|
6805
6805
|
"version": "2.1.0",
|
|
@@ -7299,7 +7299,7 @@
|
|
|
7299
7299
|
"url": {
|
|
7300
7300
|
"version": "0.10.3",
|
|
7301
7301
|
"resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz",
|
|
7302
|
-
"integrity": "
|
|
7302
|
+
"integrity": "sha1-Ah5NnHcF8hu/N9A861h2dAJ3TGQ=",
|
|
7303
7303
|
"requires": {
|
|
7304
7304
|
"punycode": "1.3.2",
|
|
7305
7305
|
"querystring": "0.2.0"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plusscommunities/pluss-maintenance-aws",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.2.1-beta.0",
|
|
4
4
|
"description": "Extension package to enable maintenance on Pluss Communities Platform",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"gc": "node ../../tools/gc ./",
|
|
@@ -12,6 +12,12 @@
|
|
|
12
12
|
"betaupload:p": "npm run betapatch && npm run betaupload",
|
|
13
13
|
"upload": "rm -rf .serverless && npm i && npm publish --access public",
|
|
14
14
|
"upload:p": "npm run patch && npm run upload",
|
|
15
|
+
"copy:add": "run(){ ext=${1:-default}; test -f values.config.$ext.js || cp values.config.default.js values.config.$ext.js; }; run",
|
|
16
|
+
"copy:get": "echo $npm_package_name",
|
|
17
|
+
"copy:set": "run(){ target='\\@plusscommunities\\/pluss-maintenance-aws'; ext=${1:-default}; [ $ext == 'default' ] && replace=$target || replace=$target'-'$ext; echo 'Setting target to '$replace; test -f values.config.$ext.js && cp -f values.config.$ext.js values.config.js; sed -i '' -e 's/'$target'.*\"/'$replace'\"/g' package.json; }; run",
|
|
18
|
+
"copy:deploy": "for file in `ls ./values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run deploy; done; npm run copy:set; npm run gs;",
|
|
19
|
+
"copy:betaupload": "npm run betapatch; for file in `ls ./values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run betaupload; done; npm run copy:set;",
|
|
20
|
+
"copy:upload": "npm run patch; for file in `ls ./values.config.*.js`; do dup=`echo $file | sed 's/.*values\\.config\\.\\(.*\\)\\.js/\\1/'`; npm run copy:set $dup; npm run upload; done; npm run copy:set;",
|
|
15
21
|
"test": "jest tests -i"
|
|
16
22
|
},
|
|
17
23
|
"author": "Thorbjorn Kappel Davis",
|
|
@@ -7,6 +7,7 @@ const isValidAssignee = require("./helper/isValidAssignee");
|
|
|
7
7
|
const getUserPreview = require("@plusscommunities/pluss-core-aws/helper/getUserPreview");
|
|
8
8
|
const { log } = require("@plusscommunities/pluss-core-aws/helper");
|
|
9
9
|
const publishNotifications = require("@plusscommunities/pluss-core-aws/db/notifications/publishNotifications");
|
|
10
|
+
const { values } = require("../values.config");
|
|
10
11
|
|
|
11
12
|
module.exports = async (event, data) => {
|
|
12
13
|
const logId = log("assignRequest", "data", data);
|
|
@@ -17,14 +18,14 @@ module.exports = async (event, data) => {
|
|
|
17
18
|
return { status: 422, data: { error: "Insufficient input" } };
|
|
18
19
|
}
|
|
19
20
|
|
|
20
|
-
const request = await getRef(
|
|
21
|
+
const request = await getRef(values.tableNameMaintenance, "id", data.id);
|
|
21
22
|
log("assignRequest", "request", request, logId);
|
|
22
23
|
log("assignRequest", "site", request.site, logId);
|
|
23
24
|
|
|
24
25
|
// validate authorisation
|
|
25
26
|
const valid = await validateMasterAuth(
|
|
26
27
|
event,
|
|
27
|
-
|
|
28
|
+
values.permissionMaintenanceTracking,
|
|
28
29
|
request.site
|
|
29
30
|
);
|
|
30
31
|
log("assignRequest", "valid", valid, logId);
|
|
@@ -63,7 +64,12 @@ module.exports = async (event, data) => {
|
|
|
63
64
|
|
|
64
65
|
log("assignRequest", "changes", changes, logId);
|
|
65
66
|
|
|
66
|
-
const result = await editRef(
|
|
67
|
+
const result = await editRef(
|
|
68
|
+
values.tableNameMaintenance,
|
|
69
|
+
"id",
|
|
70
|
+
data.id,
|
|
71
|
+
changes
|
|
72
|
+
);
|
|
67
73
|
|
|
68
74
|
log("assignRequest", "result", result, logId);
|
|
69
75
|
|
|
@@ -71,7 +77,7 @@ module.exports = async (event, data) => {
|
|
|
71
77
|
if (user.id !== assignedUser.id) {
|
|
72
78
|
await publishNotifications(
|
|
73
79
|
[assignedUser.id],
|
|
74
|
-
|
|
80
|
+
values.notificationMaintenanceJobAssigned,
|
|
75
81
|
result.site,
|
|
76
82
|
result.id,
|
|
77
83
|
result,
|
|
@@ -83,7 +89,7 @@ module.exports = async (event, data) => {
|
|
|
83
89
|
if (request.AssigneeId && result.AssigneeId !== request.AssigneeId) {
|
|
84
90
|
await publishNotifications(
|
|
85
91
|
[request.AssigneeId],
|
|
86
|
-
|
|
92
|
+
values.notificationMaintenanceJobUnassigned,
|
|
87
93
|
result.site,
|
|
88
94
|
result.id,
|
|
89
95
|
result,
|
package/requests/getAssignees.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const { log } = require("@plusscommunities/pluss-core-aws/helper");
|
|
2
2
|
const getUsersByPermission = require("@plusscommunities/pluss-core-aws/helper/users/getUsersByPermission");
|
|
3
3
|
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
4
|
+
const { values } = require("../values.config");
|
|
4
5
|
|
|
5
6
|
// Define the new function to get assignees
|
|
6
7
|
module.exports = async (event) => {
|
|
@@ -9,12 +10,12 @@ module.exports = async (event) => {
|
|
|
9
10
|
|
|
10
11
|
const isAdmin = await validateMasterAuth(
|
|
11
12
|
event,
|
|
12
|
-
|
|
13
|
+
values.permissionMaintenanceTracking,
|
|
13
14
|
qParams.site
|
|
14
15
|
);
|
|
15
16
|
const isAssignee = await validateMasterAuth(
|
|
16
17
|
event,
|
|
17
|
-
|
|
18
|
+
values.permissionMaintenanceAssignment,
|
|
18
19
|
qParams.site
|
|
19
20
|
);
|
|
20
21
|
|
|
@@ -26,8 +27,8 @@ module.exports = async (event) => {
|
|
|
26
27
|
|
|
27
28
|
// get assignees
|
|
28
29
|
const assignees = await getUsersByPermission(qParams.site, [
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
values.permissionMaintenanceTracking,
|
|
31
|
+
values.permissionMaintenanceAssignment,
|
|
31
32
|
]);
|
|
32
33
|
|
|
33
34
|
log("getAssignees", "AssigneesLength", assignees.length, logId);
|
package/requests/getRequests.js
CHANGED
|
@@ -3,6 +3,7 @@ const getSessionUserFromReqAuthKey = require("@plusscommunities/pluss-core-aws/h
|
|
|
3
3
|
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
4
4
|
const validateSiteAccess = require("@plusscommunities/pluss-core-aws/helper/auth/validateSiteAccess");
|
|
5
5
|
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
6
|
+
const { values } = require("../values.config");
|
|
6
7
|
|
|
7
8
|
module.exports = async (event) => {
|
|
8
9
|
const qParams = event.queryStringParameters;
|
|
@@ -24,14 +25,14 @@ module.exports = async (event) => {
|
|
|
24
25
|
// check auth level to determine whether to fetch all requests or only matching requests
|
|
25
26
|
const authorised = await validateMasterAuth(
|
|
26
27
|
event,
|
|
27
|
-
|
|
28
|
+
values.permissionMaintenanceTracking,
|
|
28
29
|
qParams.site
|
|
29
30
|
);
|
|
30
31
|
let assigneeTracking = false;
|
|
31
32
|
if (!authorised) {
|
|
32
33
|
assigneeTracking = await validateMasterAuth(
|
|
33
34
|
event,
|
|
34
|
-
|
|
35
|
+
values.permissionMaintenanceAssignment,
|
|
35
36
|
qParams.site
|
|
36
37
|
);
|
|
37
38
|
}
|
|
@@ -68,7 +69,7 @@ module.exports = async (event) => {
|
|
|
68
69
|
}
|
|
69
70
|
|
|
70
71
|
// get jobs
|
|
71
|
-
const result = await indexQuery(
|
|
72
|
+
const result = await indexQuery(values.tableNameMaintenance, query);
|
|
72
73
|
let jobs = result.Items;
|
|
73
74
|
|
|
74
75
|
log("getRequests", "LastEvaluatedKey", result.LastEvaluatedKey, logId);
|
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
*/
|
|
8
8
|
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
9
9
|
const isValidAssignee = require("./isValidAssignee");
|
|
10
|
+
const { values } = require("../../values.config");
|
|
10
11
|
|
|
11
12
|
module.exports = async (event, job) => {
|
|
12
13
|
const valid = await validateMasterAuth(
|
|
13
14
|
event,
|
|
14
|
-
|
|
15
|
+
values.permissionMaintenanceTracking,
|
|
15
16
|
job.site
|
|
16
17
|
);
|
|
17
18
|
if (valid) {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
const getSessionUserFromReqAuthKey = require("@plusscommunities/pluss-core-aws/helper/auth/getSessionUserFromReqAuthKey");
|
|
2
2
|
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
3
|
+
const { values } = require("../../values.config");
|
|
3
4
|
|
|
4
5
|
/**
|
|
5
6
|
* Checks whether the logged in user is the assignee as has the assignment permission for that site
|
|
@@ -9,7 +10,11 @@ const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth
|
|
|
9
10
|
* @returns {Boolean} true if valid
|
|
10
11
|
*/
|
|
11
12
|
module.exports = async (event, site, userId) => {
|
|
12
|
-
const valid = await validateMasterAuth(
|
|
13
|
+
const valid = await validateMasterAuth(
|
|
14
|
+
event,
|
|
15
|
+
values.permissionMaintenanceAssignment,
|
|
16
|
+
site
|
|
17
|
+
);
|
|
13
18
|
if (!valid) {
|
|
14
19
|
return false;
|
|
15
20
|
}
|
package/sendJobEmail.js
CHANGED
|
@@ -2,6 +2,7 @@ const _ = require("lodash");
|
|
|
2
2
|
const getJobEmail = require("./db/maintenance/getJobEmail");
|
|
3
3
|
const sendEmail = require("@plusscommunities/pluss-core-aws/helper/sendEmail");
|
|
4
4
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
5
|
+
const { values } = require("./values.config");
|
|
5
6
|
|
|
6
7
|
module.exports = function (job, updated) {
|
|
7
8
|
const whenEvs = job.isHome
|
|
@@ -14,9 +15,9 @@ module.exports = function (job, updated) {
|
|
|
14
15
|
|
|
15
16
|
let htmlString = `
|
|
16
17
|
<div>
|
|
17
|
-
<p><b
|
|
18
|
-
|
|
19
|
-
}(${job.type}):</b> ${job.room}</p>
|
|
18
|
+
<p><b>${values.textJobEmailTitle} ${
|
|
19
|
+
job.id != null ? `#${job.id}` : ""
|
|
20
|
+
}${updated ? "-DETAILS EDITED- " : " "}(${job.type}):</b> ${job.room}</p>
|
|
20
21
|
<div>
|
|
21
22
|
<b>Title: </b>${job.title}
|
|
22
23
|
</div>
|
|
@@ -51,9 +52,11 @@ module.exports = function (job, updated) {
|
|
|
51
52
|
if (!_.isNil(job.images) || !_.isNil(job.image)) {
|
|
52
53
|
htmlString = `
|
|
53
54
|
<div>
|
|
54
|
-
<p><b
|
|
55
|
-
|
|
56
|
-
}(${job.type}):</b> ${
|
|
55
|
+
<p><b>${values.textJobEmailTitle} ${
|
|
56
|
+
job.id != null ? `#${job.id}` : ""
|
|
57
|
+
}${updated ? "-DETAILS EDITED- " : " "}(${job.type}):</b> ${
|
|
58
|
+
job.room
|
|
59
|
+
}</p>
|
|
57
60
|
<div>
|
|
58
61
|
<b>Title: </b>${job.title}
|
|
59
62
|
</div>
|
|
@@ -105,9 +108,9 @@ module.exports = function (job, updated) {
|
|
|
105
108
|
|
|
106
109
|
sendEmail(
|
|
107
110
|
email,
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}) - ${job.room}`,
|
|
111
|
+
`${values.textJobEmailTitle} #${job.id}${
|
|
112
|
+
updated ? " -DETAILS EDITED" : ""
|
|
113
|
+
}- (${job.type}) - ${job.room}`,
|
|
111
114
|
htmlString
|
|
112
115
|
)
|
|
113
116
|
.then((result) => {
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const values = {
|
|
2
|
+
entityKey: "maintenancerequest",
|
|
3
|
+
serviceKey: "maintenance",
|
|
4
|
+
tableKeyJobTypes: "jobtypes",
|
|
5
|
+
tableKeyMaintenance: "maintenance",
|
|
6
|
+
tableKeySupportTickets: "supporttickets",
|
|
7
|
+
tableNameJobTypes: "jobTypes",
|
|
8
|
+
tableNameMaintenance: "maintenance",
|
|
9
|
+
tableNameSupportTickets: "supporttickets",
|
|
10
|
+
permissionMaintenanceTracking: "maintenanceTracking",
|
|
11
|
+
permissionMaintenanceAssignment: "maintenanceAssignment",
|
|
12
|
+
permissionMaintenanceTypes: "maintenanceTypes",
|
|
13
|
+
routeEntityPath: "/requestsHub/jobDetails/:id",
|
|
14
|
+
screenMaintenanceDetail: "requestDetail",
|
|
15
|
+
notificationMaintenanceJobAssigned: "MaintenanceJobAssigned",
|
|
16
|
+
notificationMaintenanceJobUnassigned: "MaintenanceJobUnassigned",
|
|
17
|
+
activityDeleteMaintenanceJob: "DeleteMaintenanceJob",
|
|
18
|
+
activityEditMaintenanceJob: "EditMaintenanceJob",
|
|
19
|
+
activityMaintenanceJobStatusChanged: "MaintenanceJobStatusChanged",
|
|
20
|
+
activityAddMaintenanceNote: "AddMaintenanceNote",
|
|
21
|
+
activityDeleteMaintenanceNote: "DeleteMaintenanceNote",
|
|
22
|
+
activityEditMaintenanceNote: "EditMaintenanceNote",
|
|
23
|
+
textJobEmailTitle: "Service Request",
|
|
24
|
+
};
|
|
25
|
+
exports.values = values;
|
package/values.config.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const values = {
|
|
2
|
+
entityKey: "maintenancerequest",
|
|
3
|
+
serviceKey: "maintenance",
|
|
4
|
+
tableKeyJobTypes: "jobtypes",
|
|
5
|
+
tableKeyMaintenance: "maintenance",
|
|
6
|
+
tableKeySupportTickets: "supporttickets",
|
|
7
|
+
tableNameJobTypes: "jobTypes",
|
|
8
|
+
tableNameMaintenance: "maintenance",
|
|
9
|
+
tableNameSupportTickets: "supporttickets",
|
|
10
|
+
permissionMaintenanceTracking: "maintenanceTracking",
|
|
11
|
+
permissionMaintenanceAssignment: "maintenanceAssignment",
|
|
12
|
+
permissionMaintenanceTypes: "maintenanceTypes",
|
|
13
|
+
routeEntityPath: "/requestsHub/jobDetails/:id",
|
|
14
|
+
screenMaintenanceDetail: "requestDetail",
|
|
15
|
+
notificationMaintenanceJobAssigned: "MaintenanceJobAssigned",
|
|
16
|
+
notificationMaintenanceJobUnassigned: "MaintenanceJobUnassigned",
|
|
17
|
+
activityDeleteMaintenanceJob: "DeleteMaintenanceJob",
|
|
18
|
+
activityEditMaintenanceJob: "EditMaintenanceJob",
|
|
19
|
+
activityMaintenanceJobStatusChanged: "MaintenanceJobStatusChanged",
|
|
20
|
+
activityAddMaintenanceNote: "AddMaintenanceNote",
|
|
21
|
+
activityDeleteMaintenanceNote: "DeleteMaintenanceNote",
|
|
22
|
+
activityEditMaintenanceNote: "EditMaintenanceNote",
|
|
23
|
+
textJobEmailTitle: "Service Request",
|
|
24
|
+
};
|
|
25
|
+
exports.values = values;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
const values = {
|
|
2
|
+
entityKey: "maintenancerequestA",
|
|
3
|
+
serviceKey: "maintenanceA",
|
|
4
|
+
tableKeyJobTypes: "jobtypesA",
|
|
5
|
+
tableKeyMaintenance: "maintenanceA",
|
|
6
|
+
tableKeySupportTickets: "supportticketsA",
|
|
7
|
+
tableNameJobTypes: "jobTypesA",
|
|
8
|
+
tableNameMaintenance: "maintenanceA",
|
|
9
|
+
tableNameSupportTickets: "supportticketsA",
|
|
10
|
+
permissionMaintenanceTracking: "maintenanceTrackingA",
|
|
11
|
+
permissionMaintenanceAssignment: "maintenanceAssignmentA",
|
|
12
|
+
permissionMaintenanceTypes: "maintenanceTypesA",
|
|
13
|
+
routeEntityPath: "/requestsHubA/jobDetails/:id",
|
|
14
|
+
screenMaintenanceDetail: "requestDetailA",
|
|
15
|
+
notificationMaintenanceJobAssigned: "MaintenanceJobAssignedA",
|
|
16
|
+
notificationMaintenanceJobUnassigned: "MaintenanceJobUnassignedA",
|
|
17
|
+
activityDeleteMaintenanceJob: "DeleteMaintenanceJobA",
|
|
18
|
+
activityEditMaintenanceJob: "EditMaintenanceJobA",
|
|
19
|
+
activityMaintenanceJobStatusChanged: "MaintenanceJobStatusChangedA",
|
|
20
|
+
activityAddMaintenanceNote: "AddMaintenanceNoteA",
|
|
21
|
+
activityDeleteMaintenanceNote: "DeleteMaintenanceNoteA",
|
|
22
|
+
activityEditMaintenanceNote: "EditMaintenanceNoteA",
|
|
23
|
+
textJobEmailTitle: "Service Request",
|
|
24
|
+
};
|
|
25
|
+
exports.values = values;
|
package/watchJobs.js
CHANGED
|
@@ -8,6 +8,7 @@ const editRef = require("@plusscommunities/pluss-core-aws/db/common/editRef");
|
|
|
8
8
|
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
9
9
|
const { getRowId, log } = require("@plusscommunities/pluss-core-aws/helper");
|
|
10
10
|
const getUserPreview = require("@plusscommunities/pluss-core-aws/helper/getUserPreview");
|
|
11
|
+
const { values } = require("./values.config");
|
|
11
12
|
|
|
12
13
|
const checkFixCompleted = async (job) => {
|
|
13
14
|
const logId = log("checkFixCompleted", "Input", job.id);
|
|
@@ -35,7 +36,7 @@ const checkFixCompleted = async (job) => {
|
|
|
35
36
|
// add old log
|
|
36
37
|
await logAnalyticsActivity(
|
|
37
38
|
"RequestCompleted",
|
|
38
|
-
|
|
39
|
+
values.entityKey,
|
|
39
40
|
job.site,
|
|
40
41
|
user,
|
|
41
42
|
job.id,
|
|
@@ -61,11 +62,7 @@ const fixActivityLog = async (job, startTime) => {
|
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
// check whether it's already been logged
|
|
64
|
-
const exists = await checkActivityExists(
|
|
65
|
-
job.id,
|
|
66
|
-
"maintenancerequest",
|
|
67
|
-
"Request"
|
|
68
|
-
);
|
|
65
|
+
const exists = await checkActivityExists(job.id, values.entityKey, "Request");
|
|
69
66
|
const logId = log("fixActivityLog", "exists", exists);
|
|
70
67
|
|
|
71
68
|
if (!exists) {
|
|
@@ -74,7 +71,7 @@ const fixActivityLog = async (job, startTime) => {
|
|
|
74
71
|
// add old log
|
|
75
72
|
await logAnalyticsActivity(
|
|
76
73
|
"Request",
|
|
77
|
-
|
|
74
|
+
values.entityKey,
|
|
78
75
|
job.site,
|
|
79
76
|
user,
|
|
80
77
|
job.id,
|
|
@@ -97,7 +94,7 @@ const fixActivityLog = async (job, startTime) => {
|
|
|
97
94
|
}
|
|
98
95
|
|
|
99
96
|
// update entry to show it's been logged
|
|
100
|
-
await editRef(
|
|
97
|
+
await editRef(values.tableNameMaintenance, "id", job.id, {
|
|
101
98
|
ActivityLogged: true,
|
|
102
99
|
});
|
|
103
100
|
|
|
@@ -121,7 +118,7 @@ const checkFixLog = async (startTime) => {
|
|
|
121
118
|
}
|
|
122
119
|
|
|
123
120
|
// Scans the DynamoDB table and fetch all items. The parameters describe which attributes to get.
|
|
124
|
-
const items = await scanRefRecursive(
|
|
121
|
+
const items = await scanRefRecursive(values.tableNameMaintenance, {
|
|
125
122
|
ProjectionExpression:
|
|
126
123
|
"#id, site, createdTime, #status, lastActivity, history, ActivityLogged",
|
|
127
124
|
ExpressionAttributeNames: {
|