import Link from "next/link"; import { notFound, redirect } from "next/navigation"; import { getServerSession } from "next-auth"; import { ArrowLeft, CalendarDays, CircleAlert, MapPin } from "lucide-react"; import { authOptions } from "@/lib/auth"; import { isAdminEmail } from "@/lib/admin"; import { bookingRepo } from "@/server/repositories/booking.repo"; import { formatRupiah } from "@/lib/utils"; import { formatTripCalendarDateRangeLong } from "@/lib/trip-dates"; import { AdminReconcileButton } from "@/features/booking/components/admin-reconcile-button"; import { RawCallbackViewer } from "@/features/booking/components/raw-callback-viewer"; interface PageProps { params: Promise<{ id: string }>; } export default async function AdminBookingDetailPage({ params }: PageProps) { const session = await getServerSession(authOptions); if (!session?.user) { redirect("/login?callbackUrl=/admin/bookings"); } if (!isAdminEmail(session.user.email)) { return (
Halaman ini hanya untuk admin SeTrip.
Booking
Booking ID:{" "}
{booking.id}
Belum ada event payment / refund / payout untuk booking ini.
) : ({label}
{badge ? ( {value} ) : ({value}
)} {sub && ({sub}
)}{title}
{at.toLocaleString("id-ID", { day: "2-digit", month: "short", year: "numeric", hour: "2-digit", minute: "2-digit", })}
Order ID:{" "}
{payment.externalOrderId}
Transaction ID:{" "}
{payment.externalTxId}
Nominal:{" "} {formatRupiah(payment.amount)}
Status:{" "}
Expires:{" "} {payment.expiresAt.toLocaleString("id-ID", { day: "2-digit", month: "short", year: "numeric", hour: "2-digit", minute: "2-digit", })}
)} {payment.paidAt && (Paid at:{" "} {payment.paidAt.toLocaleString("id-ID", { day: "2-digit", month: "short", year: "numeric", hour: "2-digit", minute: "2-digit", })}
)} {payment.rejectionReason && (
Nominal:{" "} {formatRupiah(refund.amount)}
Status:{" "}
Report: {refund.reportNote}
)} {refund.adminNote && (Admin note:{" "} {refund.adminNote}
)} {refund.reviewedBy && (Reviewed by {refund.reviewedBy.email} {refund.reviewedAt && ( <> {" "} ·{" "} {refund.reviewedAt.toLocaleString("id-ID", { day: "2-digit", month: "short", year: "numeric", hour: "2-digit", minute: "2-digit", })} > )}
)}Nominal:{" "} {formatRupiah(payout.amount)}
Status:{" "}
Held until:{" "} {payout.heldUntil.toLocaleDateString("id-ID", { day: "2-digit", month: "short", year: "numeric", })}
{payout.paidAt && (Paid at:{" "} {payout.paidAt.toLocaleString("id-ID", { day: "2-digit", month: "short", year: "numeric", hour: "2-digit", minute: "2-digit", })}
)} {payout.adminNote && (Admin note:{" "} {payout.adminNote}
)} {payout.processedBy && (Processed by {payout.processedBy.email}
)}