import Link from "next/link";
import { redirect } from "next/navigation";
import { requireAdmin } from "@/lib/auth";
import { prisma } from "@/lib/db";

export const dynamic = "force-dynamic";

const cards = [
  { href: "/admin/treneri", label: "Treneri", key: "trainers" },
  { href: "/admin/raspored", label: "Raspored", key: "schedule" },
  { href: "/admin/cjenik", label: "Cjenik", key: "pricing" },
  { href: "/admin/stranice", label: "Tekstovi stranica", key: "pages" },
  { href: "/admin/galerija", label: "Galerija", key: "gallery" },
  { href: "/admin/postavke", label: "Postavke / kontakt", key: "settings" },
];

export default async function AdminHome() {
  const email = await requireAdmin();
  if (!email) redirect("/admin/login");

  const [trainers, schedule, pricing, pages, gallery] = await Promise.all([
    prisma.trainer.count(),
    prisma.scheduleEntry.count(),
    prisma.pricingCategory.count(),
    prisma.pageContent.count(),
    prisma.galleryImage.count(),
  ]);

  const counts: Record<string, number> = {
    trainers,
    schedule,
    pricing,
    pages,
    gallery,
    settings: 1,
  };

  return (
    <div className="mx-auto max-w-5xl px-4 py-10">
      <div className="flex flex-wrap items-center justify-between gap-4">
        <div>
          <h1 className="font-display text-4xl">Admin</h1>
          <p className="text-sm text-neutral-400">{email}</p>
        </div>
        <div className="flex gap-3">
          <Link href="/" className="border border-white/20 px-4 py-2 text-sm">
            Javni site
          </Link>
          <form
            action={async () => {
              "use server";
              const { destroySession } = await import("@/lib/auth");
              await destroySession();
              redirect("/admin/login");
            }}
          >
            <button type="submit" className="bg-red-600 px-4 py-2 text-sm font-bold uppercase">
              Odjava
            </button>
          </form>
        </div>
      </div>

      <div className="mt-10 grid gap-4 sm:grid-cols-2 lg:grid-cols-3">
        {cards.map((c) => (
          <Link
            key={c.href}
            href={c.href}
            className="border border-white/10 bg-white/5 p-5 transition hover:border-red-600"
          >
            <p className="font-display text-2xl">{c.label}</p>
            <p className="mt-2 text-sm text-neutral-400">{counts[c.key]} zapisa</p>
          </Link>
        ))}
      </div>
    </div>
  );
}
