@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 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 getRef = require("@plusscommunities/pluss-core-aws/db/common/getRef");
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
- if (!data.site || (!data.id && !data.jobId)) {
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
- try {
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-maintenance-aws",
3
- "version": "2.1.2",
3
+ "version": "2.1.3",
4
4
  "lockfileVersion": 1,
5
5
  "requires": true,
6
6
  "dependencies": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plusscommunities/pluss-maintenance-aws",
3
- "version": "2.1.2",
3
+ "version": "2.1.3",
4
4
  "description": "Extension package to enable maintenance on Pluss Communities Platform",
5
5
  "scripts": {
6
6
  "gc": "node ../../tools/gc ./",
@@ -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
+ };
@@ -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
- promises.push(processSingle(strategy, DynamoDB.Converter.unmarshall(item)));
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);