53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
import { getServerSession } from 'next-auth';
|
|
import { authOptions } from '@/lib/auth';
|
|
import { prisma } from '@/lib/prisma';
|
|
import { redirect } from 'next/navigation';
|
|
import BookingDetail from '@/components/BookingDetail';
|
|
import DashboardSidebar from '@/components/DashboardSidebar';
|
|
|
|
export default async function BookingDetailPage({ params }: { params: { id: string } }) {
|
|
const session = await getServerSession(authOptions);
|
|
|
|
if (!session) {
|
|
redirect('/login');
|
|
}
|
|
|
|
const booking = await prisma.booking.findUnique({
|
|
where: { id: params.id },
|
|
include: {
|
|
location: true,
|
|
photobox: true,
|
|
tour: {
|
|
include: {
|
|
driver: true,
|
|
},
|
|
},
|
|
bookingEquipment: {
|
|
include: {
|
|
equipment: true,
|
|
},
|
|
},
|
|
},
|
|
});
|
|
|
|
if (!booking) {
|
|
redirect('/dashboard/bookings');
|
|
}
|
|
|
|
const emails = await prisma.email.findMany({
|
|
where: { bookingId: booking.id },
|
|
orderBy: { receivedAt: 'desc' },
|
|
});
|
|
|
|
return (
|
|
<div className="min-h-screen bg-gradient-to-br from-gray-900 via-gray-800 to-gray-900">
|
|
<div className="flex">
|
|
<DashboardSidebar user={session?.user} />
|
|
<main className="flex-1 p-8">
|
|
<BookingDetail booking={booking} emails={emails} user={session?.user} />
|
|
</main>
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|