import { notFound } from "next/navigation";
import Link from "next/link";
import { prisma } from "@/lib/prisma";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { SitePageForm } from "../site-page-form";
import { FaqEditor } from "../faq-editor";

const ALLOWED_KEYS = ["about", "faq"];

function parseFaqItems(content: string | null): { question: string; answer: string }[] {
  if (!content?.trim()) return [];
  try {
    const parsed = JSON.parse(content) as unknown;
    if (Array.isArray(parsed)) {
      return parsed.filter(
        (x): x is { question: string; answer: string } =>
          x && typeof x === "object" && "question" in x && "answer" in x
      );
    }
  } catch {
    // ignore
  }
  return [];
}

export default async function AdminPageEditPage({
  params,
}: {
  params: Promise<{ key: string }>;
}) {
  const { key } = await params;
  if (!ALLOWED_KEYS.includes(key)) notFound();
  const page = await prisma.sitePage.findUnique({ where: { key } });
  const label = key === "about" ? "درباره ما" : "سوالات متداول";

  if (key === "faq") {
    const initialItems = parseFaqItems(page?.content ?? null);
    return (
      <div>
        <h1 className="text-2xl font-bold mb-6">{label}</h1>
        <Card>
          <CardHeader>
            <CardTitle className="text-base">سوال و پاسخ‌ها (نمایش به صورت آکاردئون در صفحهٔ سوالات متداول)</CardTitle>
          </CardHeader>
          <CardContent>
            <FaqEditor
              initialTitle={page?.titleFa ?? "سوالات متداول"}
              initialItems={initialItems}
            />
          </CardContent>
        </Card>
        <Link href="/admin/pages" className="inline-block mt-6 text-sm underline">
          بازگشت
        </Link>
      </div>
    );
  }

  return (
    <div>
      <h1 className="text-2xl font-bold mb-6">{label}</h1>
      <Card>
        <CardHeader>
          <CardTitle className="text-base">محتوا</CardTitle>
        </CardHeader>
        <CardContent>
          <SitePageForm
            keyName={key}
            initial={page ? { titleFa: page.titleFa, content: page.content } : undefined}
          />
        </CardContent>
      </Card>
      <Link href="/admin/pages" className="inline-block mt-6 text-sm underline">
        بازگشت
      </Link>
    </div>
  );
}
