import { NextResponse } from 'next/server'; import { prisma } from '@/lib/db'; import { getSessionUser } from '@/lib/auth'; export const revalidate = 0; export async function GET() { try { const user = await getSessionUser(); if (!user) { return NextResponse.json({ error: 'Unauthorized' }, { status: 401 }); } const bookings = await prisma.booking.findMany({ where: { userId: user.userId, }, include: { seats: true, schedule: { include: { route: true, }, }, }, orderBy: { createdAt: 'desc', }, }); const serializedBookings = bookings.map((booking) => ({ id: booking.id, bookingCode: booking.bookingCode, passengerName: booking.passengerName, passengerEmail: booking.passengerEmail, passengerPhone: booking.passengerPhone, totalPrice: Number(booking.totalPrice), status: booking.status, paymentMethod: booking.paymentMethod, paymentTime: booking.paymentTime ? booking.paymentTime.toISOString() : null, createdAt: booking.createdAt.toISOString(), seats: booking.seats.map((s) => s.seatNumber), schedule: { departureTime: booking.schedule.departureTime.toISOString(), arrivalTime: booking.schedule.arrivalTime.toISOString(), vehicleType: booking.schedule.vehicleType, departureCity: booking.schedule.route.departureCity, arrivalCity: booking.schedule.route.arrivalCity, durationMinutes: booking.schedule.route.durationMinutes, price: Number(booking.schedule.price), }, })); return NextResponse.json({ bookings: serializedBookings }); } catch (error) { console.error('Fetch user bookings error:', error); return NextResponse.json({ error: 'Gagal mengambil data pemesanan.' }, { status: 500 }); } }