import { notFound } from "next/navigation";
import type { Metadata } from "next";
import SearchPage from "@/components/search/SearchPage";
import { categories, getCategoryBySlug } from "@/data/categories";
import { cities, getCityBySlug } from "@/data/cities";

interface PageProps {
  params: Promise<{ city: string; slug: string }>;
}

export async function generateStaticParams() {
  return cities.flatMap((city) =>
    categories.map((category) => ({
      city: city.slug,
      slug: category.slug,
    }))
  );
}

export async function generateMetadata({ params }: PageProps): Promise<Metadata> {
  const { city: citySlug, slug } = await params;
  const category = getCategoryBySlug(slug);
  const city = getCityBySlug(citySlug);
  if (!category || !city) return { title: "Bulunamadı" };

  const title = `${city.name} ${category.searchTitle} — En Yakın Sonuçlar`;
  const description = `${city.name} ve çevresinde ${category.title.toLowerCase()} arayanlar için en yakın sonuçlar. ${category.seoDescription}`;

  return {
    title: `${title} | yakınımda.tr`,
    description,
    keywords: [...category.keywords, `${city.name} ${category.title.toLowerCase()}`],
    openGraph: {
      title,
      description,
      url: `https://yakinimda.tr/sehir/${city.slug}/${category.slug}`,
    },
  };
}

export default async function CityCategoryPage({ params }: PageProps) {
  const { city: citySlug, slug } = await params;
  const category = getCategoryBySlug(slug);
  const city = getCityBySlug(citySlug);
  if (!category || !city) notFound();

  return <SearchPage category={category} city={city} />;
}
