diff --git a/services/interactions/helpers.js b/services/interactions/helpers.js index 9b53e84..268adac 100644 --- a/services/interactions/helpers.js +++ b/services/interactions/helpers.js @@ -1,9 +1,12 @@ -import { QueryCommand, UpdateCommand } from "@aws-sdk/lib-dynamodb"; +import { + PutCommand, QueryCommand, UpdateCommand +} from "@aws-sdk/lib-dynamodb"; import { QRS_TABLE, CONNECTIONS_TABLE, QUESTS_TABLE, - PROFILES_TABLE + PROFILES_TABLE, + NFC_SCANS_TABLE } from "../../constants/tables"; import db from "../../lib/db"; import handlerHelpers from "../../lib/handlerHelpers"; @@ -34,7 +37,9 @@ export const handleConnection = async (userID, connID, timestamp) => { "eventID;year": CURRENT_EVENT }); - let { data: connProfileData } = await db.getOne(connID, QRS_TABLE, { + let { + data: connProfileData + } = await db.getOne(connID, QRS_TABLE, { "eventID;year": CURRENT_EVENT }); @@ -85,39 +90,46 @@ export const handleConnection = async (userID, connID, timestamp) => { createdAt: timestamp, ...(connData.linkedin ? { - linkedinURL: connData.linkedin - } - : {}), + linkedinURL: connData.linkedin + } + : { + }), ...(connData.fname ? { - fname: connData.fname - } - : {}), + fname: connData.fname + } + : { + }), ...(connData.lname ? { - lname: connData.lname - } - : {}), + lname: connData.lname + } + : { + }), ...(connData.major ? { - major: connData.major - } - : {}), + major: connData.major + } + : { + }), ...(connData.year ? { - year: connData.year - } - : {}), + year: connData.year + } + : { + }), ...(connData.company ? { - company: connData.company - } - : {}), + company: connData.company + } + : { + }), ...(connData.role ? { - title: connData.role - } - : {}) + title: connData.role + } + : { + }) }; const connPut = { @@ -127,62 +139,69 @@ export const handleConnection = async (userID, connID, timestamp) => { createdAt: timestamp, ...(userData.linkedin ? { - linkedinURL: userData.linkedin - } - : {}), + linkedinURL: userData.linkedin + } + : { + }), ...(userData.fname ? { - fname: userData.fname - } - : {}), + fname: userData.fname + } + : { + }), ...(userData.lname ? { - lname: userData.lname - } - : {}), + lname: userData.lname + } + : { + }), ...(userData.major ? { - major: userData.major - } - : {}), + major: userData.major + } + : { + }), ...(userData.year ? { - year: userData.year - } - : {}), + year: userData.year + } + : { + }), ...(userData.company ? { - company: userData.company - } - : {}), + company: userData.company + } + : { + }), ...(userData.role ? { - role: userData.role - } - : {}) + role: userData.role + } + : { + }) }; const promises = []; switch (connData.type) { - case EXEC + EXEC: - promises.push(incrementQuestProgress(profileID, QUEST_CONNECT_EXEC_H)); + case EXEC + EXEC: + promises.push(incrementQuestProgress(profileID, QUEST_CONNECT_EXEC_H)); - case EXEC: - promises.push(incrementQuestProgress(userData.id, QUEST_CONNECT_EXEC_H)); + case EXEC: + promises.push(incrementQuestProgress(userData.id, QUEST_CONNECT_EXEC_H)); // case ATTENDEE: - default: - promises.push( - db.put(connPut, CONNECTIONS_TABLE, true), - db.put(userPut, CONNECTIONS_TABLE, true), - incrementQuestProgress(userData.id, QUEST_CONNECT_ONE), - incrementQuestProgress(userData.id, QUEST_CONNECT_FOUR), - incrementQuestProgress(userData.id, QUEST_CONNECT_TEN_H), - incrementQuestProgress(connData.id, QUEST_CONNECT_ONE), - incrementQuestProgress(connData.id, QUEST_CONNECT_FOUR), - incrementQuestProgress(connData.id, QUEST_CONNECT_TEN_H) - ); - break; + default: + promises.push( + db.put(connPut, CONNECTIONS_TABLE, true), + db.put(userPut, CONNECTIONS_TABLE, true), + incrementQuestProgress(userData.id, QUEST_CONNECT_ONE), + incrementQuestProgress(userData.id, QUEST_CONNECT_FOUR), + incrementQuestProgress(userData.id, QUEST_CONNECT_TEN_H), + incrementQuestProgress(connData.id, QUEST_CONNECT_ONE), + incrementQuestProgress(connData.id, QUEST_CONNECT_FOUR), + incrementQuestProgress(connData.id, QUEST_CONNECT_TEN_H) + ); + break; } try { @@ -231,22 +250,22 @@ const isDuplicateRequest = async (userID, connID) => { export const handleWorkshop = async (profileID, workshopID, timestamp) => { try { switch (workshopID) { - case WORKSHOP_TWO: - await incrementQuestProgress(profileID, QUEST_WORKSHOP); - return handlerHelpers.createResponse(200, { - message: "Completed Workshop Two Challenge" - }); + case WORKSHOP_TWO: + await incrementQuestProgress(profileID, QUEST_WORKSHOP); + return handlerHelpers.createResponse(200, { + message: "Completed Workshop Two Challenge" + }); - case WORKSHOP_TWO_PARTICIPANT: - await incrementQuestProgress(profileID, QUEST_WORKSHOP_TWO_PARTICIPANT); - return handlerHelpers.createResponse(200, { - message: "Braved 1-on-1 onstage interview" - }); + case WORKSHOP_TWO_PARTICIPANT: + await incrementQuestProgress(profileID, QUEST_WORKSHOP_TWO_PARTICIPANT); + return handlerHelpers.createResponse(200, { + message: "Braved 1-on-1 onstage interview" + }); - default: - return handlerHelpers.createResponse(200, { - message: "Unknown workshop" - }); + default: + return handlerHelpers.createResponse(200, { + message: "Unknown workshop" + }); } } catch (error) { console.error(error); @@ -255,6 +274,25 @@ export const handleWorkshop = async (profileID, workshopID, timestamp) => { }; export const handleBooth = async (profileID, boothID, timestamp) => { + let putItem = { + id: profileID, + name: boothID, + createdAt: timestamp + }; + + const params = { + Item: putItem, + TableName: NFC_SCANS_TABLE + (process.env.ENVIRONMENT || "") + }; + + try { + const command = new PutCommand(params); + await docClient.send(command); + } catch (err) { + const errorResponse = this.dynamoErrorResponse(err); + console.error(errorResponse); + } + if (BIGTECH.includes(boothID)) { try { await incrementQuestProgress(profileID, QUEST_BIGTECH); diff --git a/services/interactions/serverless.yml b/services/interactions/serverless.yml index e26c8d3..f2109f4 100644 --- a/services/interactions/serverless.yml +++ b/services/interactions/serverless.yml @@ -32,6 +32,11 @@ provider: Resource: - "arn:aws:dynamodb:us-west-2:432714361962:table/bizConnections${self:provider.environment.ENVIRONMENT}" - "arn:aws:dynamodb:us-west-2:432714361962:table/bizConnections${self:provider.environment.ENVIRONMENT}/index/eventID-year" + - Effect: Allow + Action: + - dynamodb:PutItem + Resource: + - "arn:aws:dynamodb:us-west-2:432714361962:table/biztechNFCScans${self:provider.environment.ENVIRONMENT}" - Effect: Allow Action: - dynamodb:Query