diff --git a/media_commons_booking_app/src/policy.ts b/media_commons_booking_app/src/policy.ts index 6bb3af11..73cb41a2 100644 --- a/media_commons_booking_app/src/policy.ts +++ b/media_commons_booking_app/src/policy.ts @@ -58,7 +58,11 @@ export const OLD_SAFETY_TRAINING_SHEET_NAME = 'Sheet1'; /********** CONTACTS ************/ -export const SECOND_APPROVER_EMAIL = 'ss12430@nyu.edu'; +// TODO configure this via admin UI +export const getSecondApproverEmail = (branchName: string) => + branchName === 'development' + ? 'media-commons-devs@itp.nyu.edu' + : 'jg5626@nyu.edu'; // Jhanele /********** ROOMS ************/ diff --git a/media_commons_booking_app/src/server/admin.ts b/media_commons_booking_app/src/server/admin.ts index 23e8dad5..058ed663 100644 --- a/media_commons_booking_app/src/server/admin.ts +++ b/media_commons_booking_app/src/server/admin.ts @@ -1,7 +1,7 @@ import { ActiveSheetBookingStatusColumns, - SECOND_APPROVER_EMAIL, TableNames, + getSecondApproverEmail, } from '../policy'; import { approvalUrl, rejectUrl } from './ui'; import { @@ -22,58 +22,55 @@ export const bookingContents = (id: string) => { return bookingObj; }; -export const approveInstantBooking = (id: string) => { +const firstApprove = (id: string) => updateActiveSheetValueById( TableNames.BOOKING_STATUS, id, ActiveSheetBookingStatusColumns.FIRST_APPROVED_DATE, new Date() ); + +const secondApprove = (id: string) => + updateActiveSheetValueById( + TableNames.BOOKING_STATUS, + id, + ActiveSheetBookingStatusColumns.SECOND_APPROVED_DATE, + new Date() + ); + +export const approveInstantBooking = (id: string) => { + firstApprove(id); approveEvent(id); }; +// both first approve and second approve flows hit here export const approveBooking = (id: string) => { - const firstApproveDateRange = updateActiveSheetValueById( + const firstApproveDateRange = getActiveSheetValueById( TableNames.BOOKING_STATUS, id, - ActiveSheetBookingStatusColumns.FIRST_APPROVED_DATE, - new Date() + ActiveSheetBookingStatusColumns.FIRST_APPROVED_DATE ); - console.log('first approve date', firstApproveDateRange.getValue()); - //COMPLETE ALL APPROVAL - if (firstApproveDateRange.getValue() !== '') { - // second approve + console.log('first approve date', firstApproveDateRange); + + // if already first approved, then this is a second approve + if (firstApproveDateRange !== '') { + secondApprove(id); approveEvent(id); } else { - // TODO fix logic here? why are we trying to do this twice? - // first approve - updateActiveSheetValueById( - TableNames.BOOKING_STATUS, - id, - ActiveSheetBookingStatusColumns.FIRST_APPROVED_DATE, - new Date() - ); + firstApprove(id); //TODO: send email to user updateEventPrefix(id, 'PRE-APPROVED'); const subject = 'Second Approval Request'; const contents = bookingContents(id); - const recipient = SECOND_APPROVER_EMAIL; + const recipient = getSecondApproverEmail(process.env.BRANCH_NAME); sendHTMLEmail('approval_email', contents, recipient, subject, ''); } }; export const approveEvent = (id: string) => { - // add 2nd approval timestamp - updateActiveSheetValueById( - TableNames.BOOKING_STATUS, - id, - ActiveSheetBookingStatusColumns.SECOND_APPROVED_DATE, - new Date() - ); - const guestEmail = getActiveSheetValueById( TableNames.BOOKING_STATUS, id, diff --git a/media_commons_booking_app/webpack.config.js b/media_commons_booking_app/webpack.config.js index 7426f06d..37a7587d 100755 --- a/media_commons_booking_app/webpack.config.js +++ b/media_commons_booking_app/webpack.config.js @@ -431,6 +431,9 @@ const serverConfig = { // removes need for assigning public server functions to "global" autoGlobalExportsFiles: [serverEntry], }), + new webpack.DefinePlugin({ + 'process.env': JSON.stringify(envVars), + }), ], };