diff --git a/apps/edr-passenger-web/portal/src/app/booking/confirmation/page.tsx b/apps/edr-passenger-web/portal/src/app/booking/confirmation/page.tsx index 5644c9b56..29af2b29b 100644 --- a/apps/edr-passenger-web/portal/src/app/booking/confirmation/page.tsx +++ b/apps/edr-passenger-web/portal/src/app/booking/confirmation/page.tsx @@ -16,6 +16,8 @@ type BookingWithTicket = { pnr?: string | null; status?: string; totalMinor?: number; + createdAt?: string; + paymentMethod?: string; ticket?: { barcodePayload?: string; qrPayload?: string; @@ -24,7 +26,8 @@ type BookingWithTicket = { export default function ConfirmationPage() { const router = useRouter(); - const { bookingId, pnr, selectedSchedule, passengers, clearBooking } = useBookingStore(); + const { bookingId, pnr, selectedSchedule, outboundSchedule, inboundSchedule, searchCriteria, passengers, clearBooking } = useBookingStore(); + const isRoundTrip = searchCriteria?.tripType === 'ROUND_TRIP'; const [copied, setCopied] = useState(false); const [isGeneratingVoucher, setIsGeneratingVoucher] = useState(false); const confirmAttempted = useRef(false); @@ -193,12 +196,7 @@ export default function ConfirmationPage() {
Scan at gate
Train number
-{selectedSchedule?.trainNumber}
-Route
-{selectedSchedule?.origin} → {selectedSchedule?.destination}
-Class
-{selectedSchedule.selectedSeatClassName.replace(/_/g, ' ')}
+ + {/* Outbound journey (round trip) or single journey */} + {(() => { + const schedule = isRoundTrip ? outboundSchedule : selectedSchedule; + if (!schedule) return null; + return ( +Outbound
+ )} +Train number
+{schedule.trainNumber}
+Route
+{schedule.origin} → {schedule.destination}
+Class
+{schedule.selectedSeatClassName.replace(/_/g, ' ')}
+Departure
++ {schedule.departureTime && format(new Date(schedule.departureTime), 'PPp')} +
+Arrival
++ {schedule.arrivalTime && format(new Date(schedule.arrivalTime), 'PPp')} +
+Duration
+{schedule.duration}
+Departure
-- {selectedSchedule?.departureTime && format(new Date(selectedSchedule.departureTime), 'PPp')} -
Arrival
-- {selectedSchedule?.arrivalTime && format(new Date(selectedSchedule.arrivalTime), 'PPp')} -
-Duration
-{selectedSchedule?.duration}
+ ); + })()} + + {/* Return journey (round trip only) */} + {isRoundTrip && inboundSchedule && ( +Return
+Train number
+{inboundSchedule.trainNumber}
+Route
+{inboundSchedule.origin} → {inboundSchedule.destination}
+Class
+{inboundSchedule.selectedSeatClassName.replace(/_/g, ' ')}
+Departure
++ {inboundSchedule.departureTime && format(new Date(inboundSchedule.departureTime), 'PPp')} +
+Arrival
++ {inboundSchedule.arrivalTime && format(new Date(inboundSchedule.arrivalTime), 'PPp')} +
+Duration
+{inboundSchedule.duration}
+Booking date
++ {format(new Date(_booking?.createdAt || new Date()), 'PPp')} +
+Status
+{_booking?.status || 'CONFIRMED'}
+Passengers
+{passengers.length}
+Total paid
++ ETB {((_booking?.totalMinor || passengers.reduce((s) => s + (selectedSchedule?.baseFareAdult || 0), 0)) / 100).toFixed(2)} +