import { prisma } from "@/lib/prisma";
import { requireAgency } from "@/lib/auth";
import { getBaseUrl } from "@/lib/base-url";
import BraceletsManager from "./BraceletsManager";

export default async function BraceletsPage() {
  const { agency } = await requireAgency();
  const baseUrl = await getBaseUrl();

  const [bracelets, travelers] = await Promise.all([
    prisma.bracelet.findMany({
      where: { agencyId: agency.id },
      orderBy: { createdAt: "desc" },
      include: { traveler: true },
    }),
    prisma.traveler.findMany({
      where: { agencyId: agency.id },
      orderBy: { firstName: "asc" },
    }),
  ]);

  return (
    <div className="space-y-6">
      <div>
        <h1 className="text-2xl font-bold">Pulseras NFC</h1>
        <p className="text-slate-500">
          Asigna un número de pulsera a un viajero y graba el enlace de su panel
          público con NFC.
        </p>
      </div>

      <BraceletsManager
        baseUrl={baseUrl}
        bracelets={bracelets.map((b) => ({
          id: b.id,
          number: b.number,
          nfcWritten: b.nfcWritten,
          traveler: b.traveler
            ? { id: b.traveler.id, name: `${b.traveler.firstName} ${b.traveler.lastName}`, token: b.traveler.publicToken }
            : null,
        }))}
        travelers={travelers.map((t) => ({
          id: t.id,
          name: `${t.firstName} ${t.lastName}`,
          token: t.publicToken,
        }))}
      />
    </div>
  );
}
