import { notFound } from 'next/navigation'; import { prisma } from '@/lib/prisma'; import AdminNav from '@/components/AdminNav'; import { archiveOrder, unarchiveOrder } from '../actions'; function formatPrice(cents: number) { return `£${(cents / 100).toFixed(2)}`; } export default async function OrderDetailPage({ params }: { params: { id: string } }) { const order = await prisma.order.findUnique({ where: { id: params.id }, include: { items: true }, }); if (!order) notFound(); const shipping = order.shippingAddress ? JSON.parse(order.shippingAddress) : null; return (
Customer
{order.email ?? 'Not yet available'}
Placed
{new Date(order.createdAt).toLocaleString(undefined, { dateStyle: 'medium', timeStyle: 'short' })}
Shipping address
{shipping.name}
{[shipping.address?.line1, shipping.address?.line2].filter(Boolean).join(', ')}
{[shipping.address?.city, shipping.address?.postal_code].filter(Boolean).join(', ')}
{shipping.address?.country}
{item.productName}
{item.color} {item.size ? `, ${item.size}` : ''} · qty {item.quantity} ·{' '} {formatPrice(item.unitPrice * item.quantity)}
{item.placementPreviewUrl ? 'On product — front' : 'Front'}
{hasFrontDesign && ( Download print file )}On product — back
{hasBackDesign && item.designPreviewUrlBack && ( Download print file )}