import Head from "next/head"; import prisma from "../../lib/prisma"; import { getSession, useSession } from "next-auth/client"; import Shell from "../../components/Shell"; import { useRouter } from "next/router"; import dayjs from "dayjs"; export default function Bookings({ bookings }) { const [, loading] = useSession(); const router = useRouter(); if (loading) { return

Loading...

; } async function confirmBookingHandler(booking, confirm: boolean) { const res = await fetch("/api/book/confirm", { method: "PATCH", body: JSON.stringify({ id: booking.id, confirmed: confirm }), headers: { "Content-Type": "application/json", }, }); if (res.ok) { await router.replace(router.asPath); } } return (
Bookings | Calendso
{bookings .filter((booking) => !booking.confirmed && !booking.rejected) .concat(bookings.filter((booking) => booking.confirmed || booking.rejected)) .map((booking) => ( ))}
Person Event Date Actions
{!booking.confirmed && !booking.rejected && ( Unconfirmed )}
{booking.attendees[0].name}
{booking.attendees[0].email}
{booking.title}
{booking.title}
You and {booking.attendees[0].name}
{dayjs(booking.startTime).format("D MMMM YYYY")}
{dayjs(booking.startTime).format("HH:mm")} - {dayjs(booking.endTime).format("HH:mm")}
{!booking.confirmed && !booking.rejected && ( <> )} {booking.confirmed && !booking.rejected && ( <> Cancel Reschedule )} {!booking.confirmed && booking.rejected && (
Rejected
)}
); } export async function getServerSideProps(context) { const session = await getSession(context); if (!session) { return { redirect: { permanent: false, destination: "/auth/login" } }; } const user = await prisma.user.findFirst({ where: { email: session.user.email, }, select: { id: true, }, }); const b = await prisma.booking.findMany({ where: { userId: user.id, }, select: { uid: true, title: true, description: true, attendees: true, confirmed: true, rejected: true, id: true, startTime: true, endTime: true, }, orderBy: { startTime: "asc", }, }); const bookings = b.map(booking=>{ return ({...booking, startTime:booking.startTime.toISOString(), endTime:booking.endTime.toISOString(),}) }); return { props: { bookings } }; }