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

/**
 * Generate Apple Wallet pass URL for order tickets
 * Returns a URL that can be used to download the .pkpass file
 */
export async function POST(request: NextRequest) {
  try {
    const { orderId, eventId } = await request.json()

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

    const supabase = createAdminClient()

    // Fetch order with tickets
    const { data: order, error: orderError } = await supabase
      .from("orders")
      .select("*, order_tickets(*), events(name, location, event_date, end_date, end_time, currency)")
      .eq("id", orderId)
      .eq("event_id", eventId)
      .single()

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

    // Filter only pending tickets (not checked in)
    const availableTickets = order.order_tickets?.filter(
      (ticket: any) => ticket.fulfillment_status === "pending"
    ) || []

    if (availableTickets.length === 0) {
      return NextResponse.json({ error: "No available tickets found" }, { status: 404 })
    }

    // Generate pass URL - for now, return a URL that will serve the pass
    // In production, this would generate the actual .pkpass file
    const passUrl = `${process.env.NEXT_PUBLIC_APP_URL || "http://localhost:3000"}api/wallet/apple/serve?orderId=${orderId}&eventId=${eventId}`

    return NextResponse.json({
      url: passUrl,
      orderId: order.id,
      ticketCount: availableTickets.length,
      tickets: availableTickets.map((ticket: any) => ({
        id: ticket.id,
        ticket_name: ticket.ticket_name,
        qr_code: ticket.qr_code_data,
      })),
    })
  } catch (error: any) {
    console.error("[WALLET] Apple Wallet generation error:", error)
    return NextResponse.json({ error: error.message || "Failed to generate Apple Wallet pass" }, { status: 500 })
  }
}
