diff --git a/pages/api/availability/[user].ts b/pages/api/availability/[user].ts index d3dfd856..38f5fe56 100644 --- a/pages/api/availability/[user].ts +++ b/pages/api/availability/[user].ts @@ -1,6 +1,7 @@ import type { NextApiRequest, NextApiResponse } from 'next'; import prisma from '../../../lib/prisma'; import { getBusyTimes } from '../../../lib/calendarClient'; +import dayjs from "dayjs"; export default async function handler(req: NextApiRequest, res: NextApiResponse) { const { user } = req.query @@ -11,10 +12,17 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) }, select: { credentials: true, - timeZone: true + timeZone: true, + bufferTime: true } }); - const availability = await getBusyTimes(currentUser.credentials, req.query.dateFrom, req.query.dateTo); + let availability = await getBusyTimes(currentUser.credentials, req.query.dateFrom, req.query.dateTo); + + availability = availability.map(a => ({ + start: dayjs(a.start).subtract(currentUser.bufferTime, 'minute').toString(), + end: dayjs(a.end).add(currentUser.bufferTime, 'minute').toString() + })); + res.status(200).json(availability); } diff --git a/pages/api/availability/day.ts b/pages/api/availability/day.ts index b11b0400..31e0894a 100644 --- a/pages/api/availability/day.ts +++ b/pages/api/availability/day.ts @@ -13,6 +13,7 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) if (req.method == "PATCH") { const startMins = req.body.start; const endMins = req.body.end; + const bufferMins = req.body.buffer; const updateDay = await prisma.user.update({ where: { @@ -20,10 +21,11 @@ export default async function handler(req: NextApiRequest, res: NextApiResponse) }, data: { startTime: startMins, - endTime: endMins + endTime: endMins, + bufferTime: bufferMins }, }); res.status(200).json({message: 'Start and end times updated successfully'}); } -} \ No newline at end of file +} diff --git a/pages/availability/index.tsx b/pages/availability/index.tsx index d79b5072..1b7bbc67 100644 --- a/pages/availability/index.tsx +++ b/pages/availability/index.tsx @@ -25,6 +25,8 @@ export default function Availability(props) { const startMinsRef = useRef(); const endHoursRef = useRef(); const endMinsRef = useRef(); + const bufferHoursRef = useRef(); + const bufferMinsRef = useRef(); if (loading) { return

Loading...

; @@ -80,15 +82,18 @@ export default function Availability(props) { const enteredStartMins = parseInt(startMinsRef.current.value); const enteredEndHours = parseInt(endHoursRef.current.value); const enteredEndMins = parseInt(endMinsRef.current.value); + const enteredBufferHours = parseInt(bufferHoursRef.current.value); + const enteredBufferMins = parseInt(bufferMinsRef.current.value); const startMins = enteredStartHours * 60 + enteredStartMins; const endMins = enteredEndHours * 60 + enteredEndMins; + const bufferMins = enteredBufferHours * 60 + enteredBufferMins; // TODO: Add validation const response = await fetch('/api/availability/day', { method: 'PATCH', - body: JSON.stringify({start: startMins, end: endMins}), + body: JSON.stringify({start: startMins, end: endMins, buffer: bufferMins}), headers: { 'Content-Type': 'application/json' } @@ -298,7 +303,7 @@ export default function Availability(props) {

- Set the start and end time of your day. + Set the start and end time of your day and a minimum buffer between your meetings.

@@ -316,7 +321,7 @@ export default function Availability(props) { -
+
@@ -328,6 +333,18 @@ export default function Availability(props) {
+
+ +
+ + +
+ : +
+ + +
+