@plusscommunities/pluss-maintenance-aws-a 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 +128 -0
- package/createJobType.js +62 -0
- package/db/maintenance/addMaintenanceJob.js +103 -0
- package/db/maintenance/editMaintenanceJob.js +18 -0
- package/db/maintenance/getJobEmail.js +28 -0
- package/deleteJob.js +74 -0
- package/deleteJobType.js +54 -0
- package/editJob.js +83 -0
- package/editJobStatus.js +81 -0
- package/editJobType.js +74 -0
- package/editNote.js +134 -0
- package/feature.config.js +255 -0
- package/getData.js +41 -0
- package/getJob.js +83 -0
- package/getJobType.js +47 -0
- package/getJobTypes.js +70 -0
- package/getJobs.js +63 -0
- package/integration/IntegrationStrategy.js +35 -0
- package/integration/archibus/ArchibusStrategy.js +475 -0
- package/integration/index.js +22 -0
- package/jobChanged.js +72 -0
- package/package-lock.json +7653 -0
- package/package.json +64 -0
- package/requests/assignRequest.js +106 -0
- package/requests/getAssignees.js +40 -0
- package/requests/getRequests.js +100 -0
- package/requests/helper/hasRequestPermission.js +25 -0
- package/requests/helper/isValidAssignee.js +23 -0
- package/scheduleJobImport.js +80 -0
- package/sendJobEmail.js +138 -0
- package/updateData.js +33 -0
- package/values.config.a.js +25 -0
- package/values.config.default.js +25 -0
- package/values.config.js +25 -0
- package/watchJobs.js +177 -0
package/createJob.js
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
const _ = require("lodash");
|
|
2
|
+
const config = require("./config.json");
|
|
3
|
+
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
4
|
+
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
5
|
+
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
6
|
+
const addMaintenanceJob = require("./db/maintenance/addMaintenanceJob");
|
|
7
|
+
const validateSiteAccess = require("@plusscommunities/pluss-core-aws/helper/auth/validateSiteAccess");
|
|
8
|
+
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
9
|
+
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
10
|
+
const getUserPreview = require("@plusscommunities/pluss-core-aws/helper/getUserPreview");
|
|
11
|
+
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
12
|
+
const sendJobEmail = require("./sendJobEmail");
|
|
13
|
+
const logAnalyticsActivity = require("@plusscommunities/pluss-core-aws/db/analytics/logAnalyticsActivity");
|
|
14
|
+
const { values } = require("./values.config");
|
|
15
|
+
|
|
16
|
+
module.exports.createJob = (event, context, callback) => {
|
|
17
|
+
init(config);
|
|
18
|
+
const data = getBody(event);
|
|
19
|
+
|
|
20
|
+
validateSiteAccess(event, data.location)
|
|
21
|
+
.then(async (authorised) => {
|
|
22
|
+
if (!authorised) {
|
|
23
|
+
return callback(
|
|
24
|
+
null,
|
|
25
|
+
generateJsonResponse(403, { fail: true, error: "not authorised" })
|
|
26
|
+
);
|
|
27
|
+
}
|
|
28
|
+
if (
|
|
29
|
+
!data.userID ||
|
|
30
|
+
_.isUndefined(data.userName) ||
|
|
31
|
+
_.isUndefined(data.room) ||
|
|
32
|
+
_.isUndefined(data.description)
|
|
33
|
+
) {
|
|
34
|
+
console.error("insufficient input", data.userID);
|
|
35
|
+
return callback(
|
|
36
|
+
null,
|
|
37
|
+
generateJsonResponse(422, { error: "Insufficient input" })
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
let user = await getUserPreviewFromReq(event);
|
|
41
|
+
if (data.userID !== "undefined" && user.id !== data.userID) {
|
|
42
|
+
const canRequest = await validateMasterAuth(
|
|
43
|
+
event,
|
|
44
|
+
values.permissionMaintenanceTracking,
|
|
45
|
+
data.location
|
|
46
|
+
);
|
|
47
|
+
if (!canRequest) {
|
|
48
|
+
return callback(
|
|
49
|
+
null,
|
|
50
|
+
generateJsonResponse(422, {
|
|
51
|
+
fail: true,
|
|
52
|
+
error: "cannot request on behalf",
|
|
53
|
+
})
|
|
54
|
+
);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
user = await getUserPreview(data.userID);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
addMaintenanceJob(
|
|
61
|
+
user.id,
|
|
62
|
+
user.displayName,
|
|
63
|
+
user,
|
|
64
|
+
data.phone,
|
|
65
|
+
data.room,
|
|
66
|
+
data.title,
|
|
67
|
+
data.description,
|
|
68
|
+
data.type,
|
|
69
|
+
data.isHome,
|
|
70
|
+
data.homeText,
|
|
71
|
+
data.images || data.image,
|
|
72
|
+
data.location,
|
|
73
|
+
data.audience
|
|
74
|
+
).then((id) => {
|
|
75
|
+
sendJobEmail({
|
|
76
|
+
userID: user.id,
|
|
77
|
+
userName: user.displayName,
|
|
78
|
+
phone: data.phone,
|
|
79
|
+
room: data.room,
|
|
80
|
+
title: data.title,
|
|
81
|
+
description: data.description,
|
|
82
|
+
type: data.type,
|
|
83
|
+
isHome: data.isHome,
|
|
84
|
+
homeText: data.homeText,
|
|
85
|
+
image: data.image,
|
|
86
|
+
images: data.images,
|
|
87
|
+
site: data.location,
|
|
88
|
+
audience: data.audience,
|
|
89
|
+
id,
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
publishActivity("AddMaintenanceJob", data.location, id, user, {
|
|
93
|
+
title: data.title,
|
|
94
|
+
description: data.description,
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
logAnalyticsActivity(
|
|
98
|
+
`Request`,
|
|
99
|
+
values.entityKey,
|
|
100
|
+
data.location,
|
|
101
|
+
user,
|
|
102
|
+
id
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
return callback(
|
|
106
|
+
null,
|
|
107
|
+
generateJsonResponse(200, {
|
|
108
|
+
success: true,
|
|
109
|
+
id,
|
|
110
|
+
searchResult: id,
|
|
111
|
+
})
|
|
112
|
+
);
|
|
113
|
+
});
|
|
114
|
+
})
|
|
115
|
+
.catch((error) => {
|
|
116
|
+
console.error(
|
|
117
|
+
"Failed to save maintenance node --> email successful",
|
|
118
|
+
data.userID
|
|
119
|
+
);
|
|
120
|
+
console.log(error);
|
|
121
|
+
return callback(
|
|
122
|
+
null,
|
|
123
|
+
generateJsonResponse(422, {
|
|
124
|
+
error,
|
|
125
|
+
})
|
|
126
|
+
);
|
|
127
|
+
});
|
|
128
|
+
};
|
package/createJobType.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
const config = require("./config.json");
|
|
2
|
+
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
3
|
+
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
4
|
+
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
5
|
+
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
6
|
+
const createGuid = require("@plusscommunities/pluss-core-aws/helper/createGuid");
|
|
7
|
+
const updateRef = require("@plusscommunities/pluss-core-aws/db/common/updateRef");
|
|
8
|
+
const { values } = require("./values.config");
|
|
9
|
+
|
|
10
|
+
module.exports.createJobType = (event, context, callback) => {
|
|
11
|
+
init(config);
|
|
12
|
+
const data = getBody(event);
|
|
13
|
+
|
|
14
|
+
if (!data.site || !data.name || !data.email || !data.description) {
|
|
15
|
+
return callback(
|
|
16
|
+
null,
|
|
17
|
+
generateJsonResponse(422, { error: "No site, type or email attached" })
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
validateMasterAuth(event, values.permissionMaintenanceTypes).then(
|
|
22
|
+
(authorised) => {
|
|
23
|
+
if (!authorised) {
|
|
24
|
+
console.error("Authorization not valid");
|
|
25
|
+
return callback(
|
|
26
|
+
null,
|
|
27
|
+
generateJsonResponse(422, {
|
|
28
|
+
error: { message: "Admin - Create User - not authorized." },
|
|
29
|
+
})
|
|
30
|
+
);
|
|
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
|
+
);
|
|
62
|
+
};
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
const moment = require("moment");
|
|
2
|
+
const _ = require("lodash");
|
|
3
|
+
const uuid = require("uuid");
|
|
4
|
+
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
5
|
+
const updateRef = require("@plusscommunities/pluss-core-aws/db/common/updateRef");
|
|
6
|
+
const { getConfig } = require("@plusscommunities/pluss-core-aws/config");
|
|
7
|
+
const { values } = require("../../values.config");
|
|
8
|
+
|
|
9
|
+
module.exports = async (
|
|
10
|
+
userID,
|
|
11
|
+
userName,
|
|
12
|
+
user,
|
|
13
|
+
phone,
|
|
14
|
+
room,
|
|
15
|
+
title,
|
|
16
|
+
description,
|
|
17
|
+
type,
|
|
18
|
+
isHome,
|
|
19
|
+
homeText,
|
|
20
|
+
images,
|
|
21
|
+
location,
|
|
22
|
+
audience
|
|
23
|
+
) => {
|
|
24
|
+
const requestToSave = {
|
|
25
|
+
userID,
|
|
26
|
+
userName,
|
|
27
|
+
userProfilePic: user ? user.profilePic : null,
|
|
28
|
+
phone,
|
|
29
|
+
room,
|
|
30
|
+
title,
|
|
31
|
+
description,
|
|
32
|
+
type,
|
|
33
|
+
isHome,
|
|
34
|
+
homeText,
|
|
35
|
+
images,
|
|
36
|
+
site: location,
|
|
37
|
+
audience,
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
if (requestToSave.images) {
|
|
41
|
+
const thumbSource = Array.isArray(requestToSave.images)
|
|
42
|
+
? requestToSave.images[0]
|
|
43
|
+
: requestToSave.images;
|
|
44
|
+
if (thumbSource) {
|
|
45
|
+
requestToSave.thumbnail = thumbSource
|
|
46
|
+
.replace("/general1400/", "/general300/")
|
|
47
|
+
.replace("/uploads1400/", "/uploads300/");
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (_.isEmpty(requestToSave.audience)) {
|
|
51
|
+
requestToSave.audience = [];
|
|
52
|
+
}
|
|
53
|
+
requestToSave.status = getConfig().maintenanceInstantComplete
|
|
54
|
+
? "Completed"
|
|
55
|
+
: "Unassigned";
|
|
56
|
+
requestToSave.history = [
|
|
57
|
+
{
|
|
58
|
+
timestamp: moment.utc().valueOf(),
|
|
59
|
+
status: requestToSave.status,
|
|
60
|
+
user,
|
|
61
|
+
},
|
|
62
|
+
];
|
|
63
|
+
|
|
64
|
+
requestToSave.id = uuid.v1();
|
|
65
|
+
requestToSave.createdTime = moment.utc().toISOString();
|
|
66
|
+
requestToSave.createdUnix = moment.utc().valueOf();
|
|
67
|
+
if (!requestToSave.jobId) {
|
|
68
|
+
const jobNoQ = {
|
|
69
|
+
IndexName: "MaintenanceSiteJobNoIndex",
|
|
70
|
+
KeyConditionExpression: "site = :site",
|
|
71
|
+
ExpressionAttributeValues: {
|
|
72
|
+
":site": requestToSave.site,
|
|
73
|
+
},
|
|
74
|
+
Limit: 1,
|
|
75
|
+
ScanIndexForward: false,
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
const queryRes = await indexQuery(values.tableNameMaintenance, jobNoQ);
|
|
79
|
+
|
|
80
|
+
if (!_.isEmpty(queryRes.Items)) {
|
|
81
|
+
requestToSave.jobNo = queryRes.Items[0].jobNo + 1;
|
|
82
|
+
} else {
|
|
83
|
+
const query = {
|
|
84
|
+
IndexName: "MaintenanceSiteJobIdIndex",
|
|
85
|
+
KeyConditionExpression: "site = :site",
|
|
86
|
+
ExpressionAttributeValues: {
|
|
87
|
+
":site": requestToSave.site,
|
|
88
|
+
},
|
|
89
|
+
Limit: 1,
|
|
90
|
+
ScanIndexForward: false,
|
|
91
|
+
};
|
|
92
|
+
const { Items } = await indexQuery(values.tableNameMaintenance, query);
|
|
93
|
+
requestToSave.jobNo =
|
|
94
|
+
!_.isEmpty(Items) && Items[0].jobId
|
|
95
|
+
? Number.parseInt(Items[0].jobId) + 1
|
|
96
|
+
: 0;
|
|
97
|
+
}
|
|
98
|
+
requestToSave.jobId = (requestToSave.jobNo || 0) + "";
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
await updateRef(values.tableNameMaintenance, requestToSave);
|
|
102
|
+
return requestToSave.id;
|
|
103
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const moment = require("moment");
|
|
2
|
+
const editRef = require("@plusscommunities/pluss-core-aws/db/common/editRef");
|
|
3
|
+
const { values } = require("../../values.config");
|
|
4
|
+
|
|
5
|
+
module.exports = (job) => {
|
|
6
|
+
return new Promise((resolve, reject) => {
|
|
7
|
+
job.lastActivity = moment.utc().toISOString();
|
|
8
|
+
job.lastActivityUnix = moment.utc().valueOf();
|
|
9
|
+
|
|
10
|
+
editRef(values.tableNameMaintenance, "id", job.id, job)
|
|
11
|
+
.then((result) => {
|
|
12
|
+
resolve(result);
|
|
13
|
+
})
|
|
14
|
+
.catch((error) => {
|
|
15
|
+
reject(error);
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
2
|
+
const { values } = require("../../values.config");
|
|
3
|
+
|
|
4
|
+
module.exports = (site, typeName) => {
|
|
5
|
+
return new Promise((resolve, reject) => {
|
|
6
|
+
const query = {
|
|
7
|
+
IndexName: "JobTypeSiteIndex",
|
|
8
|
+
KeyConditionExpression: "site = :site and typeName = :typeName",
|
|
9
|
+
ExpressionAttributeValues: {
|
|
10
|
+
":site": site,
|
|
11
|
+
":typeName": typeName,
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
console.log("running jobType email query");
|
|
16
|
+
console.log(query);
|
|
17
|
+
indexQuery(values.tableNameJobTypes, query)
|
|
18
|
+
.then((data) => {
|
|
19
|
+
console.log("successful query");
|
|
20
|
+
resolve(data.Items[0]);
|
|
21
|
+
})
|
|
22
|
+
.catch((error) => {
|
|
23
|
+
console.log("query failed");
|
|
24
|
+
console.log(error);
|
|
25
|
+
reject();
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
};
|
package/deleteJob.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
const config = require("./config.json");
|
|
2
|
+
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
3
|
+
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
4
|
+
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
5
|
+
const deleteRef = require("@plusscommunities/pluss-core-aws/db/common/deleteRef");
|
|
6
|
+
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
7
|
+
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
8
|
+
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
9
|
+
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
10
|
+
const { values } = require("./values.config");
|
|
11
|
+
|
|
12
|
+
module.exports.deleteJob = (event, context, callback) => {
|
|
13
|
+
init(config);
|
|
14
|
+
const data = getBody(event);
|
|
15
|
+
|
|
16
|
+
if (!data.site || !data.id) {
|
|
17
|
+
callback(
|
|
18
|
+
null,
|
|
19
|
+
generateJsonResponse(422, { error: "No site or id attached" })
|
|
20
|
+
);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
validateMasterAuth(event, values.permissionMaintenanceTracking).then(
|
|
25
|
+
(authorised) => {
|
|
26
|
+
if (!authorised) {
|
|
27
|
+
console.error("Authorization not valid");
|
|
28
|
+
callback(
|
|
29
|
+
null,
|
|
30
|
+
generateJsonResponse(403, {
|
|
31
|
+
error: {
|
|
32
|
+
message: "Authorization not valid.",
|
|
33
|
+
},
|
|
34
|
+
})
|
|
35
|
+
);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
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
|
+
);
|
|
63
|
+
});
|
|
64
|
+
callback(null, generateJsonResponse(200, { success: true }));
|
|
65
|
+
return;
|
|
66
|
+
})
|
|
67
|
+
.catch((error) => {
|
|
68
|
+
callback(null, generateJsonResponse(422, { error }));
|
|
69
|
+
return;
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
);
|
|
74
|
+
};
|
package/deleteJobType.js
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
const config = require("./config.json");
|
|
2
|
+
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
3
|
+
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
4
|
+
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
5
|
+
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
6
|
+
const deleteRef = require("@plusscommunities/pluss-core-aws/db/common/deleteRef");
|
|
7
|
+
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
8
|
+
const { values } = require("./values.config");
|
|
9
|
+
|
|
10
|
+
module.exports.deleteJobType = (event, context, callback) => {
|
|
11
|
+
init(config);
|
|
12
|
+
const data = getBody(event);
|
|
13
|
+
|
|
14
|
+
if (!data.site || !data.id) {
|
|
15
|
+
return callback(
|
|
16
|
+
null,
|
|
17
|
+
generateJsonResponse(422, { error: "No site or id attached" })
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
validateMasterAuth(event, values.permissionMaintenanceTypes).then(
|
|
22
|
+
(authorised) => {
|
|
23
|
+
if (!authorised) {
|
|
24
|
+
console.error("Authorization not valid");
|
|
25
|
+
return callback(
|
|
26
|
+
null,
|
|
27
|
+
generateJsonResponse(422, {
|
|
28
|
+
error: { message: "Admin - Create User - not authorized." },
|
|
29
|
+
})
|
|
30
|
+
);
|
|
31
|
+
}
|
|
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
|
+
);
|
|
54
|
+
};
|
package/editJob.js
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
const _ = require("lodash");
|
|
2
|
+
const config = require("./config.json");
|
|
3
|
+
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
4
|
+
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
5
|
+
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
6
|
+
const sendJobEmail = require("./sendJobEmail");
|
|
7
|
+
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
8
|
+
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
9
|
+
const editMaintenanceJob = require("./db/maintenance/editMaintenanceJob");
|
|
10
|
+
const { getConfig } = require("@plusscommunities/pluss-core-aws/config");
|
|
11
|
+
const hasRequestPermission = require("./requests/helper/hasRequestPermission");
|
|
12
|
+
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
13
|
+
const { values } = require("./values.config");
|
|
14
|
+
|
|
15
|
+
module.exports.editJob = (event, context, callback) => {
|
|
16
|
+
init(config);
|
|
17
|
+
const data = getBody(event);
|
|
18
|
+
|
|
19
|
+
if (!data.job) {
|
|
20
|
+
return callback(
|
|
21
|
+
null,
|
|
22
|
+
generateJsonResponse(422, { error: { message: "No data for edit job." } })
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getRef(values.tableNameMaintenance, "id", data.job.id)
|
|
27
|
+
.then((prevData) => {
|
|
28
|
+
hasRequestPermission(event, prevData).then((authorised) => {
|
|
29
|
+
if (!authorised) {
|
|
30
|
+
console.error("Authorization not valid");
|
|
31
|
+
return callback(
|
|
32
|
+
null,
|
|
33
|
+
generateJsonResponse(422, {
|
|
34
|
+
error: { message: "not authorized." },
|
|
35
|
+
})
|
|
36
|
+
);
|
|
37
|
+
}
|
|
38
|
+
getUserPreviewFromReq(event).then((user) => {
|
|
39
|
+
editMaintenanceJob(data.job)
|
|
40
|
+
.then((result) => {
|
|
41
|
+
if (!getConfig().maintenanceInstantComplete) {
|
|
42
|
+
sendJobEmail(data.job, true);
|
|
43
|
+
publishActivity(
|
|
44
|
+
values.activityEditMaintenanceJob,
|
|
45
|
+
data.site,
|
|
46
|
+
data.job.id,
|
|
47
|
+
user,
|
|
48
|
+
{ title: result.title, description: result.description }
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
return callback(
|
|
53
|
+
null,
|
|
54
|
+
generateJsonResponse(200, {
|
|
55
|
+
success: true,
|
|
56
|
+
job: result,
|
|
57
|
+
})
|
|
58
|
+
);
|
|
59
|
+
})
|
|
60
|
+
.catch((error) => {
|
|
61
|
+
console.log(error);
|
|
62
|
+
console.error("Failed to edit maintenance node -->", data.job.id);
|
|
63
|
+
return callback(
|
|
64
|
+
null,
|
|
65
|
+
generateJsonResponse(422, {
|
|
66
|
+
error,
|
|
67
|
+
})
|
|
68
|
+
);
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
})
|
|
73
|
+
.catch((error) => {
|
|
74
|
+
console.log("Fail on edit job authentication");
|
|
75
|
+
console.log(error);
|
|
76
|
+
return callback(
|
|
77
|
+
null,
|
|
78
|
+
generateJsonResponse(422, {
|
|
79
|
+
error,
|
|
80
|
+
})
|
|
81
|
+
);
|
|
82
|
+
});
|
|
83
|
+
};
|
package/editJobStatus.js
ADDED
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const moment = require("moment");
|
|
2
|
+
const _ = require("lodash");
|
|
3
|
+
const config = require("./config.json");
|
|
4
|
+
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
5
|
+
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
6
|
+
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
7
|
+
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
8
|
+
const getUserPreviewFromReq = require("@plusscommunities/pluss-core-aws/helper/getUserPreviewFromReq");
|
|
9
|
+
const publishActivity = require("@plusscommunities/pluss-core-aws/db/activity/publishActivity");
|
|
10
|
+
const publishNotifications = require("@plusscommunities/pluss-core-aws/db/notifications/publishNotifications");
|
|
11
|
+
const editMaintenanceJob = require("./db/maintenance/editMaintenanceJob");
|
|
12
|
+
const logAnalyticsActivity = require("@plusscommunities/pluss-core-aws/db/analytics/logAnalyticsActivity");
|
|
13
|
+
const hasRequestPermission = require("./requests/helper/hasRequestPermission");
|
|
14
|
+
const { values } = require("./values.config");
|
|
15
|
+
|
|
16
|
+
module.exports.editJobStatus = async (event, context, callback) => {
|
|
17
|
+
init(config);
|
|
18
|
+
const data = getBody(event);
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
const job = await getRef(values.tableNameMaintenance, "id", data.id);
|
|
22
|
+
const authorised = await hasRequestPermission(event, job);
|
|
23
|
+
if (!authorised) {
|
|
24
|
+
console.error("Authorization not valid");
|
|
25
|
+
return callback(
|
|
26
|
+
null,
|
|
27
|
+
generateJsonResponse(403, {
|
|
28
|
+
error: {
|
|
29
|
+
message: "Authorization not valid.",
|
|
30
|
+
},
|
|
31
|
+
})
|
|
32
|
+
);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const user = await getUserPreviewFromReq(event);
|
|
36
|
+
|
|
37
|
+
// Update history
|
|
38
|
+
if (!job.history) job.history = [];
|
|
39
|
+
job.history.push({
|
|
40
|
+
timestamp: moment.utc().valueOf(),
|
|
41
|
+
status: data.status,
|
|
42
|
+
user,
|
|
43
|
+
});
|
|
44
|
+
job.status = data.status;
|
|
45
|
+
const result = await editMaintenanceJob(job);
|
|
46
|
+
|
|
47
|
+
// Log activity & notify
|
|
48
|
+
publishActivity(
|
|
49
|
+
values.activityMaintenanceJobStatusChanged,
|
|
50
|
+
result.site,
|
|
51
|
+
result.id,
|
|
52
|
+
user,
|
|
53
|
+
{ title: result.title, status: result.status }
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
if (job.status === "Completed") {
|
|
57
|
+
logAnalyticsActivity(
|
|
58
|
+
`RequestCompleted`,
|
|
59
|
+
values.entityKey,
|
|
60
|
+
result.site,
|
|
61
|
+
user,
|
|
62
|
+
result.id
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (result.userID) {
|
|
67
|
+
publishNotifications(
|
|
68
|
+
[result.userID],
|
|
69
|
+
values.activityMaintenanceJobStatusChanged,
|
|
70
|
+
result.site,
|
|
71
|
+
result.id,
|
|
72
|
+
result,
|
|
73
|
+
true
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
callback(null, generateJsonResponse(200, { success: true, job: result }));
|
|
78
|
+
} catch (error) {
|
|
79
|
+
callback(null, generateJsonResponse(422, { error }));
|
|
80
|
+
}
|
|
81
|
+
};
|