import { getOrderDetail, getSessionUser } from '@/app/actions' import { redirect, notFound } from 'next/navigation' import { Store, User, Users, CheckCircle2, ChevronLeft, MapPin, Sparkles } from 'lucide-react' import Link from 'next/link' import { PublicOrderActions } from './PublicOrderActions' import { SummaryGenerator } from '@/components/SummaryGenerator' import { format } from 'date-fns' import { id as idLocale } from 'date-fns/locale' import { cn } from '@/lib/utils' export const dynamic = 'force-dynamic' export default async function PublicOrderDetailPage({ params }: { params: Promise<{ id: string }> }) { const { id } = await params const session = await getSessionUser() if (!session) { redirect(`/login?callbackUrl=/order/${id}`) } const order = await getOrderDetail(id) if (!order) { notFound() } return (

Detail PO

{/* Hero Card */}
{order.creator.photo ? ( {order.creator.name} ) : ( )}

{order.title}

{order.creator.name} {order.status} {order.allow_custom && ( Custom Item )}

Tanggal PO

{format(new Date(order.date), 'dd MMM yyyy', { locale: idLocale })}

Total Orang

{order.submissions.length} menitip

Menu Tersedia

{order.available_items.length} item

{/* Left 2 Cols: Daftar Penitip & Description */}
{order.description && (

Deskripsi

{order.description}
)}

Daftar Penitip

{order.submissions.length > 0 ? ( order.submissions.map((sub: any) => (
{sub.user.photo ? ( {sub.user.name} ) : (
{sub.user.name.charAt(0).toUpperCase()}
)}

{sub.user.name}

{sub.items.map((item: any) => ( {item.qty}x {item.name} ))}
)) ) : (

Belum ada yang menitip.

Jadilah yang pertama untuk menitip pesanan!

)}
{/* Right 1 Col: Summary Generators */}
) }