import type { Metadata } from "next";
import { notFound } from "next/navigation";
import Navbar from "@/components/Navbar";
import Footer from "@/components/Footer";
import CollectionStory from "@/components/CollectionStory";
import JsonLdScript from "@/components/JsonLdScript";
import { getCollectionLocale } from "@/lib/collections";
import { getPublishedCollections } from "@/lib/admin-content";
import { prisma } from "@/lib/db";
import { getTranslations } from "next-intl/server";
import { localizeProductName } from "@/lib/product-i18n";
import { buildLocalizedPageMetadata } from "@/lib/seo";
import { buildCatalogCollectionStructuredData } from "@/lib/catalog-seo";

export async function generateStaticParams() {
  const collections = await getPublishedCollections();
  return collections.map((collection) => ({ seriesSlug: collection.slug }));
}

export async function generateMetadata({ params }: { params: Promise<{ locale: string; seriesSlug: string }> }): Promise<Metadata> {
  const { locale, seriesSlug } = await params;
  const collections = await getPublishedCollections();
  const collection = collections.find((item) => item.slug === seriesSlug);
  if (!collection) return {};
  const activeLocale = getCollectionLocale(locale);
  const t = await getTranslations({ locale: activeLocale });
  return buildLocalizedPageMetadata({
    locale: activeLocale,
    pathname: `/collections/${collection.slug}`,
    title: `${collection.name} — ${t("nav.series")}`,
    description: collection.story[activeLocale],
    image: collection.image,
    imageAlt: `${collection.name} — ${collection.tagline[activeLocale]}`,
  });
}

export default async function CollectionSeriesPage({ params }: { params: Promise<{ locale: string; seriesSlug: string }> }) {
  const { locale, seriesSlug } = await params;
  const collections = await getPublishedCollections();
  const collection = collections.find((item) => item.slug === seriesSlug);
  if (!collection) notFound();
  const activeLocale = getCollectionLocale(locale);
  const t = await getTranslations({ locale: activeLocale });
  const products = await prisma.product.findMany({
    where: { status: "published", series: { slug: collection.slug } },
    include: { images: { orderBy: { order: "asc" }, take: 1 } },
    orderBy: [{ widthCm: "asc" }, { order: "asc" }],
  });
  const structuredData = buildCatalogCollectionStructuredData({
    locale: activeLocale,
    pathname: `/collections/${collection.slug}`,
    name: `${collection.name} — ${collection.tagline[activeLocale]}`,
    description: collection.story[activeLocale],
    breadcrumbs: [
      { name: t("catalog.home"), pathname: "" },
      { name: t("nav.series"), pathname: "/collections" },
      { name: collection.name, pathname: `/collections/${collection.slug}` },
    ],
    items: products.map((product) => ({
      type: "Product",
      name: localizeProductName(product, activeLocale),
      pathname: `/products/${product.slug}`,
      image: product.images[0]?.url,
    })),
  });

  return <div className="min-h-screen font-sans" style={{ background: "var(--surface-0)", color: "var(--fg-primary)" }}><JsonLdScript data={structuredData} /><Navbar logoUrl="/brand/norden.png" locale={activeLocale} /><CollectionStory collection={collection} locale={activeLocale} products={products.map((product) => ({ id: product.id, slug: product.slug, name: product.name, nameTr: product.nameTr, nameEn: product.nameEn, nameRu: product.nameRu, widthCm: product.widthCm, surface: product.surface, image: product.images[0]?.url || collection.image }))} /><Footer /></div>;
}
