/** * Booking Detail Page * * Display full booking information */ 'use client'; import { useQuery } from '@tanstack/react-query'; import { getBooking } from '@/lib/api'; import Link from 'next/link'; import { useParams } from 'next/navigation'; export default function BookingDetailPage() { const params = useParams(); const bookingId = params.id as string; const { data: booking, isLoading } = useQuery({ queryKey: ['booking', bookingId], queryFn: () => getBooking(bookingId), enabled: !!bookingId, }); const getStatusColor = (status: string) => { const colors: Record = { draft: 'bg-gray-100 text-gray-800', pending: 'bg-yellow-100 text-yellow-800', confirmed: 'bg-green-100 text-green-800', in_transit: 'bg-blue-100 text-blue-800', delivered: 'bg-purple-100 text-purple-800', cancelled: 'bg-red-100 text-red-800', }; return colors[status] || 'bg-gray-100 text-gray-800'; }; const downloadPDF = async () => { try { // TODO: Implement PDF download functionality alert('PDF download functionality is not yet implemented'); console.log('Download PDF for booking:', bookingId); } catch (error) { console.error('Failed to download PDF:', error); } }; if (isLoading) { return (
); } if (!booking) { return (

Booking not found

← Back to bookings
); } return (
{/* Header */}
← Back to bookings

{booking.bookingNumber}

{booking.status}

Created on {new Date(booking.createdAt).toLocaleDateString()}

{/* Main Content */}
{/* Cargo Details */}

Cargo Details

Description
{booking.cargoDescription}
{booking.specialInstructions && (
Special Instructions
{booking.specialInstructions}
)}
{/* Containers */}

Containers ({booking.containers?.length || 0})

{booking.containers?.map((container, index) => (

Type

{container.type}

{container.containerNumber && (

Container Number

{container.containerNumber}

)} {container.sealNumber && (

Seal Number

{container.sealNumber}

)} {container.vgm && (

VGM (kg)

{container.vgm}

)}
))}
{/* Shipper & Consignee */}

Shipper

Name
{booking.shipper.name}
Contact
{booking.shipper.contactName}
Email
{booking.shipper.contactEmail}
Phone
{booking.shipper.contactPhone}

Consignee

Name
{booking.consignee.name}
Contact
{booking.consignee.contactName}
Email
{booking.consignee.contactEmail}
Phone
{booking.consignee.contactPhone}
{/* Sidebar */}
{/* Timeline */}

Timeline

  • Booking Created

    {new Date(booking.createdAt).toLocaleString()}

{/* Quick Info */}

Information

Booking ID
{booking.id}
Last Updated
{new Date(booking.updatedAt).toLocaleString()}
); }