@plusscommunities/pluss-maintenance-aws 2.1.2 → 2.1.3
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/getData.js +8 -0
- package/getJob.js +3 -67
- package/package-lock.json +1 -1
- package/package.json +1 -1
- package/requests/getRequest.js +84 -0
- package/scheduleJobImport.js +2 -2
package/getData.js
CHANGED
|
@@ -4,6 +4,7 @@ const { log } = require("@plusscommunities/pluss-core-aws/helper");
|
|
|
4
4
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
5
5
|
const getAssignees = require("./requests/getAssignees");
|
|
6
6
|
const getRequests = require("./requests/getRequests");
|
|
7
|
+
const getRequest = require("./requests/getRequest");
|
|
7
8
|
|
|
8
9
|
module.exports.getData = async (event, context, callback) => {
|
|
9
10
|
init(config);
|
|
@@ -20,6 +21,13 @@ module.exports.getData = async (event, context, callback) => {
|
|
|
20
21
|
log(action, "ResponseLength", response.data.Items.length, logId);
|
|
21
22
|
}
|
|
22
23
|
break;
|
|
24
|
+
|
|
25
|
+
case "request":
|
|
26
|
+
response = await getRequest(event);
|
|
27
|
+
if (response.status === 200) {
|
|
28
|
+
log(action, "ResponseLength", response.data, logId);
|
|
29
|
+
}
|
|
30
|
+
break;
|
|
23
31
|
case "assignees":
|
|
24
32
|
response = await getAssignees(event);
|
|
25
33
|
if (response.status === 200) {
|
package/getJob.js
CHANGED
|
@@ -2,77 +2,13 @@ const config = require("./config.json");
|
|
|
2
2
|
const { init } = require("@plusscommunities/pluss-core-aws/config");
|
|
3
3
|
const { getBody } = require("@plusscommunities/pluss-core-aws/helper");
|
|
4
4
|
const generateJsonResponse = require("@plusscommunities/pluss-core-aws/helper/generateJsonResponse");
|
|
5
|
-
const
|
|
6
|
-
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
7
|
-
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
8
|
-
const getSessionUser = require("@plusscommunities/pluss-core-aws/helper/auth/getSessionUser");
|
|
9
|
-
const isValidAssignee = require("./requests/helper/isValidAssignee");
|
|
5
|
+
const getRequest = require("./requests/getRequest");
|
|
10
6
|
|
|
11
7
|
module.exports.getJob = async (event, context, callback) => {
|
|
12
8
|
init(config);
|
|
13
9
|
const data = getBody(event);
|
|
14
10
|
|
|
15
|
-
|
|
16
|
-
return callback(
|
|
17
|
-
null,
|
|
18
|
-
generateJsonResponse(422, {
|
|
19
|
-
error: { message: "User Types fetch -- no site or type id detected." },
|
|
20
|
-
})
|
|
21
|
-
);
|
|
22
|
-
}
|
|
11
|
+
const result = await getRequest(event, data);
|
|
23
12
|
|
|
24
|
-
|
|
25
|
-
let result = null;
|
|
26
|
-
if (data.jobId) {
|
|
27
|
-
const query = {
|
|
28
|
-
IndexName: "MaintenanceSiteJobIdIndex",
|
|
29
|
-
KeyConditionExpression: "site = :site and jobId = :jobId",
|
|
30
|
-
ExpressionAttributeValues: {
|
|
31
|
-
":site": data.site,
|
|
32
|
-
":jobId": data.jobId,
|
|
33
|
-
},
|
|
34
|
-
};
|
|
35
|
-
const { Items } = await indexQuery("maintenance", query);
|
|
36
|
-
result = Items[0];
|
|
37
|
-
}
|
|
38
|
-
if (!result)
|
|
39
|
-
result = await getRef("maintenance", "id", data.id || data.jobId);
|
|
40
|
-
|
|
41
|
-
try {
|
|
42
|
-
const authorised = await validateMasterAuth(
|
|
43
|
-
event,
|
|
44
|
-
"maintenanceTracking",
|
|
45
|
-
result.site
|
|
46
|
-
);
|
|
47
|
-
const assignAuthorised = await isValidAssignee(
|
|
48
|
-
event,
|
|
49
|
-
result.site,
|
|
50
|
-
result.AssigneeId
|
|
51
|
-
);
|
|
52
|
-
if (!authorised && !assignAuthorised) {
|
|
53
|
-
// Check if the job belongs to the user
|
|
54
|
-
const userId = await getSessionUser(event.headers.authkey);
|
|
55
|
-
if (userId !== result.userID) {
|
|
56
|
-
console.error("Authorization not valid");
|
|
57
|
-
return callback(
|
|
58
|
-
null,
|
|
59
|
-
generateJsonResponse(403, {
|
|
60
|
-
error: { message: "not authorised." },
|
|
61
|
-
})
|
|
62
|
-
);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
return callback(null, generateJsonResponse(200, result));
|
|
66
|
-
} catch (error) {
|
|
67
|
-
callback(null, generateJsonResponse(422, { fail: true }));
|
|
68
|
-
}
|
|
69
|
-
} catch (error1) {
|
|
70
|
-
return callback(
|
|
71
|
-
null,
|
|
72
|
-
generateJsonResponse(200, {
|
|
73
|
-
userFetchFail: true,
|
|
74
|
-
message: "Fail on user query. Please try again.",
|
|
75
|
-
})
|
|
76
|
-
);
|
|
77
|
-
}
|
|
13
|
+
return callback(null, generateJsonResponse(result.status, result.data));
|
|
78
14
|
};
|
package/package-lock.json
CHANGED
package/package.json
CHANGED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
const { log, getRowId } = require("@plusscommunities/pluss-core-aws/helper");
|
|
2
|
+
const getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
|
|
3
|
+
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
4
|
+
const validateMasterAuth = require("@plusscommunities/pluss-core-aws/helper/auth/validateMasterAuth");
|
|
5
|
+
const isValidAssignee = require("./helper/isValidAssignee");
|
|
6
|
+
const getSessionUserFromReqAuthKey = require("@plusscommunities/pluss-core-aws/helper/auth/getSessionUserFromReqAuthKey");
|
|
7
|
+
|
|
8
|
+
module.exports = async (event, params) => {
|
|
9
|
+
const data = params || event.queryStringParameters;
|
|
10
|
+
const logId = log("getRequest", "Params", data);
|
|
11
|
+
if (!data.id && (!data.site || !data.jobId)) {
|
|
12
|
+
return {
|
|
13
|
+
status: 422,
|
|
14
|
+
data: {
|
|
15
|
+
error: "Insufficient input",
|
|
16
|
+
},
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
try {
|
|
21
|
+
let result = null;
|
|
22
|
+
if (data.jobId) {
|
|
23
|
+
const query = {
|
|
24
|
+
IndexName: "MaintenanceSiteJobIdIndex",
|
|
25
|
+
KeyConditionExpression: "site = :site and jobId = :jobId",
|
|
26
|
+
ExpressionAttributeValues: {
|
|
27
|
+
":site": data.site,
|
|
28
|
+
":jobId": data.jobId,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const { Items } = await indexQuery("maintenance", query);
|
|
32
|
+
result = Items[0];
|
|
33
|
+
}
|
|
34
|
+
if (!result) {
|
|
35
|
+
result = await getRef("maintenance", "id", data.id || data.jobId);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const authorised = await validateMasterAuth(
|
|
39
|
+
event,
|
|
40
|
+
"maintenanceTracking",
|
|
41
|
+
result.site
|
|
42
|
+
);
|
|
43
|
+
const assignAuthorised = await isValidAssignee(
|
|
44
|
+
event,
|
|
45
|
+
result.site,
|
|
46
|
+
result.AssigneeId
|
|
47
|
+
);
|
|
48
|
+
if (!authorised && !assignAuthorised) {
|
|
49
|
+
// Check if the job belongs to the user
|
|
50
|
+
const userId = await getSessionUserFromReqAuthKey(event);
|
|
51
|
+
if (userId !== result.userID) {
|
|
52
|
+
return {
|
|
53
|
+
status: 403,
|
|
54
|
+
data: {
|
|
55
|
+
error: "Not authorised",
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
if (data.includeComments) {
|
|
61
|
+
const commentsQuery = {
|
|
62
|
+
IndexName: "CommentsEntityIdIndex",
|
|
63
|
+
KeyConditionExpression: "EntityId = :groupId",
|
|
64
|
+
ExpressionAttributeValues: {
|
|
65
|
+
":groupId": getRowId(result.id, "maintenancerequest"),
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
const commentsData = await indexQuery("comments", commentsQuery);
|
|
69
|
+
result.Comments = commentsData.Items;
|
|
70
|
+
}
|
|
71
|
+
return {
|
|
72
|
+
status: 200,
|
|
73
|
+
data: result,
|
|
74
|
+
};
|
|
75
|
+
} catch (error) {
|
|
76
|
+
log("getRequest", "Error", error.toString(), logId);
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
status: 500,
|
|
80
|
+
data: {
|
|
81
|
+
error: "Internal error",
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
};
|
package/scheduleJobImport.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
const indexQuery = require("@plusscommunities/pluss-core-aws/db/common/indexQuery");
|
|
2
2
|
const editRef = require("@plusscommunities/pluss-core-aws/db/common/editRef");
|
|
3
3
|
const moment = require("moment");
|
|
4
|
-
const { DynamoDB } = require("aws-sdk");
|
|
5
4
|
const { getStrategy } = require("./integration");
|
|
6
5
|
const { log } = require("@plusscommunities/pluss-core-aws/helper");
|
|
7
6
|
|
|
@@ -45,7 +44,8 @@ const processBatch = async (strategy, startTime) => {
|
|
|
45
44
|
const promises = [];
|
|
46
45
|
|
|
47
46
|
Items.forEach((item) => {
|
|
48
|
-
|
|
47
|
+
log("processBatch", "ProcessSingle", JSON.stringify(item), logId);
|
|
48
|
+
promises.push(processSingle(strategy, JSON.parse(JSON.stringify(item))));
|
|
49
49
|
});
|
|
50
50
|
|
|
51
51
|
await Promise.all(promises);
|