import { NextRequest, NextResponse } from 'next/server'; import { generateTicketPDF } from '../../../emails/utils/generateTicketPDF'; export async function GET(request: NextRequest) { try { const searchParams = request.nextUrl.searchParams; // Extract ticket data from query parameters const ticketData = { userName: searchParams.get('userName') || undefined, eventName: searchParams.get('eventName') || undefined, eventDate: searchParams.get('eventDate') || undefined, eventTime: searchParams.get('eventTime') || undefined, venue: searchParams.get('venue') || undefined, ticketType: searchParams.get('ticketType') || undefined, amount: searchParams.get('amount') || undefined, ticketNumber: searchParams.get('ticketNumber') || undefined, purchaseDate: searchParams.get('purchaseDate') || undefined, orderId: searchParams.get('orderId') || undefined, seatNumber: searchParams.get('seatNumber') || undefined, section: searchParams.get('section') || undefined, }; // Generate PDF const pdfBuffer = await generateTicketPDF(ticketData); // Return PDF as response return new NextResponse(pdfBuffer, { headers: { 'Content-Type': 'application/pdf', 'Content-Disposition': `attachment; filename="ticket-${ticketData.ticketNumber || 'ticket'}.pdf"`, }, }); } catch (error) { console.error('Error generating PDF:', error); return NextResponse.json( { error: 'Failed to generate PDF ticket' }, { status: 500 } ); } } export async function POST(request: NextRequest) { try { const body = await request.json(); // Generate PDF from request body const pdfBuffer = await generateTicketPDF(body); // Return PDF as response return new NextResponse(pdfBuffer, { headers: { 'Content-Type': 'application/pdf', 'Content-Disposition': `attachment; filename="ticket-${body.ticketNumber || 'ticket'}.pdf"`, }, }); } catch (error) { console.error('Error generating PDF:', error); return NextResponse.json( { error: 'Failed to generate PDF ticket' }, { status: 500 } ); } }