From 81e1287693da9767fbe5b6b3b1f1dd7f82bab829 Mon Sep 17 00:00:00 2001 From: nicolas Date: Sun, 18 Jul 2021 16:03:59 +0200 Subject: [PATCH] Fixed cancellation --- lib/calendarClient.ts | 24 +++++++++++++++++++++++- lib/events/EventManager.ts | 3 +-- pages/api/cancel.ts | 12 +++++++----- 3 files changed, 31 insertions(+), 8 deletions(-) diff --git a/lib/calendarClient.ts b/lib/calendarClient.ts index 0b3f9102..f9c4dfd5 100644 --- a/lib/calendarClient.ts +++ b/lib/calendarClient.ts @@ -157,7 +157,29 @@ const MicrosoftOffice365Calendar = (credential): CalendarApiAdapter => { optional.location = { displayName: event.location }; } - return toRet; + return { + subject: event.title, + body: { + contentType: "HTML", + content: event.description, + }, + start: { + dateTime: event.startTime, + timeZone: event.organizer.timeZone, + }, + end: { + dateTime: event.endTime, + timeZone: event.organizer.timeZone, + }, + attendees: event.attendees.map((attendee) => ({ + emailAddress: { + address: attendee.email, + name: attendee.name, + }, + type: "required", + })), + ...optional, + }; }; const integrationType = "office365_calendar"; diff --git a/lib/events/EventManager.ts b/lib/events/EventManager.ts index 69e184df..05adebaa 100644 --- a/lib/events/EventManager.ts +++ b/lib/events/EventManager.ts @@ -33,9 +33,8 @@ export default class EventManager { } public async create(event: CalendarEvent): Promise> { - const results: Array = []; // First, create all calendar events. - results.concat(await this.createAllCalendarEvents(event)); + const results: Array = await this.createAllCalendarEvents(event); // If and only if event type is a video meeting, create a video meeting as well. if (EventManager.isIntegration(event.location)) { diff --git a/pages/api/cancel.ts b/pages/api/cancel.ts index e3c96f98..3610f1da 100644 --- a/pages/api/cancel.ts +++ b/pages/api/cancel.ts @@ -29,11 +29,13 @@ export default async function handler(req, res) { }); const apiDeletes = async.mapLimit(bookingToDelete.user.credentials, 5, async (credential) => { - const bookingRefUid = bookingToDelete.references.filter((ref) => ref.type === credential.type)[0].uid; - if (credential.type.endsWith("_calendar")) { - return await deleteEvent(credential, bookingRefUid); - } else if (credential.type.endsWith("_video")) { - return await deleteMeeting(credential, bookingRefUid); + const bookingRefUid = bookingToDelete.references.filter((ref) => ref.type === credential.type)[0]?.uid; + if (bookingRefUid) { + if (credential.type.endsWith("_calendar")) { + return await deleteEvent(credential, bookingRefUid); + } else if (credential.type.endsWith("_video")) { + return await deleteMeeting(credential, bookingRefUid); + } } }); const attendeeDeletes = prisma.attendee.deleteMany({