import { type NextRequest, NextResponse } from "next/server"
import { createAdminClient } from "@/lib/supabase/admin"

export async function GET(request: NextRequest) {
  try {
    const { searchParams } = new URL(request.url)
    const orderId = searchParams.get("orderId")
    const eventId = searchParams.get("eventId")

    if (!orderId || !eventId) {
      return NextResponse.json({ error: "Missing orderId or eventId" }, { status: 400 })
    }

    const supabase = createAdminClient()

    // Fetch order details
    const { data: order, error: orderError } = await supabase
      .from("orders")
      .select("*")
      .eq("id", orderId)
      .eq("event_id", eventId)
      .single()

    if (orderError || !order) {
      return NextResponse.json({ error: "Order not found" }, { status: 404 })
    }

    const { data: event } = await supabase
      .from("events")
      .select("name, event_date, end_date, location, currency, banner_image_url")
      .eq("id", eventId)
      .single()

    const { data: orderTickets } = await supabase
      .from("order_tickets")
      .select("*, event_tickets(description)")
      .eq("order_id", orderId)

    const { data: chits } = await supabase.from("chits").select("*, menu_items(description)").eq("order_id", orderId)

    // Return JSON data for client-side PDF generation
    return NextResponse.json({
      order: {
        id: order.id,
        customerName: order.customer_name,
        customerEmail: order.customer_email,
        totalAmount: order.total_amount,
        createdAt: order.created_at,
      },
      event: {
        name: event?.name || "Event",
        date: event?.event_date,
        location: event?.location,
        currency: event?.currency || "USD",
        imageUrl: event?.banner_image_url,
      },
      tickets: (orderTickets || []).map((t: any) => ({
        ...t,
        description: t.event_tickets?.description || null,
      })),
      chits: (chits || []).map((c: any) => ({
        ...c,
        description: c.menu_items?.description || null,
      })),
    })
  } catch (error: any) {
    console.error("[v0] Download tickets error:", error)
    return NextResponse.json({ error: error.message || "Failed to get ticket data" }, { status: 500 })
  }
}
