Test setup to try zoom meeting creation
This commit is contained in:
parent
3cf7ffd6a7
commit
2ba98c5dac
1 changed files with 31 additions and 4 deletions
|
@ -5,6 +5,7 @@ import createConfirmBookedEmail from "../../../lib/emails/confirm-booked";
|
||||||
import async from 'async';
|
import async from 'async';
|
||||||
import {v5 as uuidv5} from 'uuid';
|
import {v5 as uuidv5} from 'uuid';
|
||||||
import short from 'short-uuid';
|
import short from 'short-uuid';
|
||||||
|
import {createMeeting, VideoMeeting} from "../../../lib/videoClient";
|
||||||
|
|
||||||
const translator = short();
|
const translator = short();
|
||||||
|
|
||||||
|
@ -24,6 +25,10 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Split credentials up into calendar credentials and video credentials
|
||||||
|
const calendarCredentials = currentUser.credentials.filter(cred => cred.type.endsWith('_calendar'));
|
||||||
|
const videoCredentials = currentUser.credentials.filter(cred => cred.type.endsWith('_video'));
|
||||||
|
|
||||||
const rescheduleUid = req.body.rescheduleUid;
|
const rescheduleUid = req.body.rescheduleUid;
|
||||||
|
|
||||||
const evt: CalendarEvent = {
|
const evt: CalendarEvent = {
|
||||||
|
@ -39,6 +44,18 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
//TODO Only create meeting if integration exists.
|
||||||
|
const meeting: VideoMeeting = {
|
||||||
|
attendees: [
|
||||||
|
{email: req.body.email, name: req.body.name, timeZone: req.body.timeZone}
|
||||||
|
],
|
||||||
|
endTime: req.body.end,
|
||||||
|
organizer: {email: currentUser.email, name: currentUser.name, timeZone: currentUser.timeZone},
|
||||||
|
startTime: req.body.start,
|
||||||
|
timezone: currentUser.timeZone,
|
||||||
|
title: req.body.eventName + ' with ' + req.body.name,
|
||||||
|
};
|
||||||
|
|
||||||
const hashUID = translator.fromUUID(uuidv5(JSON.stringify(evt), uuidv5.URL));
|
const hashUID = translator.fromUUID(uuidv5(JSON.stringify(evt), uuidv5.URL));
|
||||||
|
|
||||||
const eventType = await prisma.eventType.findFirst({
|
const eventType = await prisma.eventType.findFirst({
|
||||||
|
@ -51,7 +68,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
let results = undefined;
|
let results = [];
|
||||||
let referencesToCreate = undefined;
|
let referencesToCreate = undefined;
|
||||||
|
|
||||||
if (rescheduleUid) {
|
if (rescheduleUid) {
|
||||||
|
@ -73,11 +90,13 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||||
});
|
});
|
||||||
|
|
||||||
// Use all integrations
|
// Use all integrations
|
||||||
results = await async.mapLimit(currentUser.credentials, 5, async (credential) => {
|
results = await async.mapLimit(calendarCredentials, 5, async (credential) => {
|
||||||
const bookingRefUid = booking.references.filter((ref) => ref.type === credential.type)[0].uid;
|
const bookingRefUid = booking.references.filter((ref) => ref.type === credential.type)[0].uid;
|
||||||
return await updateEvent(credential, bookingRefUid, evt)
|
return await updateEvent(credential, bookingRefUid, evt)
|
||||||
});
|
});
|
||||||
|
|
||||||
|
//TODO: Reschedule with videoCredentials as well
|
||||||
|
|
||||||
// Clone elements
|
// Clone elements
|
||||||
referencesToCreate = [...booking.references];
|
referencesToCreate = [...booking.references];
|
||||||
|
|
||||||
|
@ -105,13 +124,21 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse)
|
||||||
]);
|
]);
|
||||||
} else {
|
} else {
|
||||||
// Schedule event
|
// Schedule event
|
||||||
results = await async.mapLimit(currentUser.credentials, 5, async (credential) => {
|
results.concat(await async.mapLimit(calendarCredentials, 5, async (credential) => {
|
||||||
const response = await createEvent(credential, evt);
|
const response = await createEvent(credential, evt);
|
||||||
return {
|
return {
|
||||||
type: credential.type,
|
type: credential.type,
|
||||||
response
|
response
|
||||||
};
|
};
|
||||||
});
|
}));
|
||||||
|
|
||||||
|
results.concat(await async.mapLimit(videoCredentials, 5, async (credential) => {
|
||||||
|
const response = await createMeeting(credential, meeting);
|
||||||
|
return {
|
||||||
|
type: credential.type,
|
||||||
|
response
|
||||||
|
};
|
||||||
|
}));
|
||||||
|
|
||||||
referencesToCreate = results.map((result => {
|
referencesToCreate = results.map((result => {
|
||||||
return {
|
return {
|
||||||
|
|
Loading…
Reference in a new issue