init
This commit is contained in:
@@ -0,0 +1,59 @@
|
||||
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 });
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user