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"; import { Fragment } from "react"; import { Menu, Transition } from "@headlessui/react"; import { DotsHorizontalIcon } from "@heroicons/react/solid"; import classNames from "@lib/classNames"; import { ClockIcon, XIcon } from "@heroicons/react/outline"; export default function Bookings({ bookings }) { const [session, loading] = useSession(); console.log(session) 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) => ( ))}
Event Date Actions
{!booking.confirmed && !booking.rejected && ( Unconfirmed )}
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dol
{dayjs(booking.startTime).format("D MMMM YYYY")}:{" "} {dayjs(booking.startTime).format("HH:mm")} -{" "} {dayjs(booking.endTime).format("HH:mm")}
{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 && ( <> {({ open }) => ( <>
Open options
{({ active }) => ( )} {({ active }) => ( )}
)}
)} {!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.reverse().map((booking) => { return { ...booking, startTime: booking.startTime.toISOString(), endTime: booking.endTime.toISOString() }; }); return { props: { bookings } }; }