Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
48 changes: 25 additions & 23 deletions backend/firebase/functions/src/calendly/webhook.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,10 @@ import {
createPurrfectCompany,
createPurrfectPage,
queryPurrfectPageByCalendarId,
patchPurrfectPage,
} from './../utilities/notion';

import { getEvent, listEventInvitees } from './../utilities/calendly';
import { utcOffset } from '../utilities/date';

export const calendarPush = functions.https.onRequest(async (req, res) => {
console.log('Headers', JSON.stringify(req.headers));
Expand Down Expand Up @@ -37,38 +37,40 @@ export const calendarPush = functions.https.onRequest(async (req, res) => {

try {
const calendlyEvent = await getEvent(eventUuid);
console.log('calendlyEvent', JSON.stringify(calendlyEvent));
const calendlyInvitees = await listEventInvitees(eventUuid);
console.log('calendlyInvitees', JSON.stringify(calendlyInvitees));

// Check if calendar event already created.
console.log(
'Searching for Pod with calendarid: ',
webhookPayload.payload.event
JSON.stringify(webhookPayload.payload.event)
);
const purrfectPageRes = await queryPurrfectPageByCalendarId(
webhookPayload.payload.event
);
if (purrfectPageRes?.results.length > 0) {
console.log('Pod found', JSON.stringify(purrfectPageRes));
const purrfectPage = purrfectPageRes?.results?.[0];
console.log(
'Updating pod with time: ',
calendlyEvent.resource.start_time
);
const purrfectPagePatchRes = await patchPurrfectPage({
page_id: purrfectPage.id,
properties: {
'Recording Date': {
date: {
start: calendlyEvent.resource.start_time,
end: null,
time_zone: 'America/New_York',
},
},
},
});
// console.log('Pod found', JSON.stringify(purrfectPageRes));
// const purrfectPage = purrfectPageRes?.results?.[0];
// console.log(
// 'Updating pod with time: ',
// JSON.stringify(calendlyEvent.resource.start_time)
// );
// const purrfectPagePatchRes = await patchPurrfectPage({
// page_id: purrfectPage.id,
// properties: {
// 'Recording Date': {
// date: {
// start: utcOffset(calendlyEvent.resource.start_time),
// end: null,
// time_zone: 'America/New_York',
// },
// },
// },
// });

console.log('Patched', JSON.stringify(purrfectPagePatchRes));
res.status(200).send('updated');
// console.log('Patched', JSON.stringify(purrfectPagePatchRes));
res.status(200).send('duplicate entry');
}

// Check if Notion Company exists, if not create
Expand Down Expand Up @@ -120,7 +122,7 @@ export const calendarPush = functions.https.onRequest(async (req, res) => {
const newPodcast = {
guestIds: [guestId],
companyIds,
recordingDate: new Date(calendlyEvent.resource.start_time),
recordingDate: utcOffset(calendlyEvent.resource.start_time),
calendarid: webhookPayload.payload.event,
};
console.log('Creating Podcast with values: ', JSON.stringify(newPodcast));
Expand Down
2 changes: 1 addition & 1 deletion backend/firebase/functions/src/utilities/calendly.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export const call = async (path: string) => {
throw response.status;
}
const json = await response.json();
console.log('RESPONSE:', json);
console.log('RESPONSE:', JSON.stringify(json));
return json;
};

Expand Down
22 changes: 22 additions & 0 deletions backend/firebase/functions/src/utilities/date.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
export function utcOffset(isoString: string, timeZone = 'America/new_york') {
console.log('conversion:input', isoString);
const isoStringDate = new Date(isoString);
const offset = getOffset(timeZone, isoStringDate);
console.log('conversion:offsethours', offset / 60 / 60 / 1000);
const output = new Date(Date.parse(isoStringDate.toISOString()) + offset)
.toISOString()
.replace('Z', '');
console.log('conversion:output', output);
return output;
}

const getOffset = (timeZone = 'UTC', date = new Date()) => {
const utcDate = new Date(date.toLocaleString('en-US', { timeZone: 'UTC' }));
const tzDate = new Date(date.toLocaleString('en-US', { timeZone }));
return tzDate.getTime() - utcDate.getTime();
};

const calendlyDate = '2022-01-26T14:00:00.000000Z';
console.log('hardcoded:calendlyDate', calendlyDate);
console.log('hardcoded:fromFunc', utcOffset(calendlyDate));
console.log('hardcoded:shouldMatch', '2022-01-26T09:00:00.000');
10 changes: 6 additions & 4 deletions backend/firebase/functions/src/utilities/notion.ts
Original file line number Diff line number Diff line change
Expand Up @@ -74,11 +74,11 @@ export const createPurrfectPage = ({
companyIds,
}: {
calendarid: string;
recordingDate: Date;
recordingDate: string;
guestIds?: string[];
companyIds?: string[];
}) => {
return notionClient.pages.create({
const notionCreatePayload = {
parent: {
database_id: notionPurrfectDatabaseId,
},
Expand All @@ -105,7 +105,7 @@ export const createPurrfectPage = ({
id: 'br,*',
type: 'date',
date: {
start: recordingDate.toISOString(),
start: recordingDate,
end: null,
time_zone: 'America/New_York',
},
Expand Down Expand Up @@ -138,7 +138,9 @@ export const createPurrfectPage = ({
],
},
},
} as any);
} as any;
console.log('notionCreatePayload', JSON.stringify(notionCreatePayload));
return notionClient.pages.create(notionCreatePayload);
};

export const patchPurrfectPage = (pageParams: UpdatePageParameters) => {
Expand Down