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

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

export default async function AdminToursPage() {
  const [categories, countries, cities, packages, slides, bookings] = await Promise.all([
    db.tourCategory.findMany({ orderBy: { name: "asc" } }),
    db.tourCountry.findMany({ orderBy: { name: "asc" } }),
    db.tourCity.findMany({ include: { country: true }, orderBy: [{ country: { name: "asc" } }, { name: "asc" }] }),
    db.tourPackage.findMany({
      include: {
        category: true,
        country: true,
        city: true,
        images: { orderBy: { sortOrder: "asc" } },
        _count: { select: { bookings: true } },
      },
      orderBy: [{ isFeatured: "desc" }, { createdAt: "desc" }],
    }),
    db.tourSlide.findMany({ orderBy: [{ sortOrder: "asc" }, { createdAt: "desc" }] }),
    db.tourBooking.findMany({
      include: { package: true, user: { select: { id: true, name: true, email: true } } },
      orderBy: { createdAt: "desc" },
      take: 500,
    }),
  ]);

  return (
    <AdminToursClient
      categories={categories}
      countries={countries}
      cities={cities}
      packages={packages.map((p) => ({ ...p, pricePerPax: p.pricePerPax.toString() }))}
      slides={slides}
      bookings={bookings.map((b) => ({ ...b, date: b.date ? b.date.toISOString() : null, createdAt: b.createdAt.toISOString() }))}
    />
  );
}
