import type { Metadata } from "next";
import { db } from "@/lib/db";
import AdminTicketsClient from "./AdminTicketsClient";

export const metadata: Metadata = { title: "Admin: Tickets" };

export default async function AdminTicketsPage() {
  const [countries, cities, slides, requests] = await Promise.all([
    db.ticketCountry.findMany({ orderBy: { name: "asc" } }),
    db.ticketCity.findMany({ include: { country: true }, orderBy: [{ country: { name: "asc" } }, { name: "asc" }] }),
    db.ticketSlide.findMany({ orderBy: [{ sortOrder: "asc" }, { createdAt: "desc" }] }),
    db.ticketRequest.findMany({
      include: {
        user: { select: { id: true, name: true, email: true } },
        fromCountry: { select: { id: true, name: true } },
        fromCity: { select: { id: true, name: true } },
        toCountry: { select: { id: true, name: true } },
        toCity: { select: { id: true, name: true } },
      },
      orderBy: { createdAt: "desc" },
      take: 500,
    }),
  ]);

  return (
    <AdminTicketsClient
      countries={countries}
      cities={cities}
      slides={slides}
      requests={requests.map((r) => ({
        ...r,
        departureDate: r.departureDate.toISOString(),
        returnDate: r.returnDate ? r.returnDate.toISOString() : null,
        createdAt: r.createdAt.toISOString(),
      }))}
    />
  );
}
