/** فهرست مقاله‌های مجله */
import Link from "next/link";
import { AdminHeader, Card, Empty, Pill, Table } from "@/components/admin/ui";
import { SubmitButton } from "@/components/admin/SubmitButton";
import { Icon } from "@/components/ui/Icon";
import { db } from "@/lib/db";
import { faNumber, formatJalaliShort } from "@/lib/format";
import { checkArticle } from "@/lib/seo-check";
import { deleteArticleAction } from "@/server/admin/magazine";
import { requireStaffPage } from "@/server/admin/guard";
import { asFaq } from "@/server/services/magazine";

export const metadata = { title: "مجله" };
export const dynamic = "force-dynamic";

export default async function AdminMagazine() {
  await requireStaffPage("/admin/magazine", "magazine");
  const articles = await db.article.findMany({ orderBy: { updatedAt: "desc" } });
  return (
    <>
      <AdminHeader
        title="مجله"
        description={`${faNumber(articles.length)} مقاله · مقاله‌های منتشرشده در /mag نمایش داده می‌شوند`}
        actions={<Link href="/admin/magazine/new" className="btn-primary h-10 px-4"><Icon name="plus" size={16} /> مقاله جدید</Link>}
      />
      <Card>
        {articles.length ? (
          <Table head={["عنوان", "وضعیت", "امتیاز سئو", "به‌روزرسانی", ""]}>
            {articles.map((a) => {
              const { score } = checkArticle({ ...a, faq: asFaq(a.faq) });
              return (
                <tr key={a.id}>
                  <td>
                    <Link href={`/admin/magazine/${a.id}`} className="font-medium hover:underline">{a.title}</Link>
                    <bdi className="block text-[11px] text-muted" dir="ltr">/mag/{a.slug}</bdi>
                  </td>
                  <td><Pill tone={a.status === "PUBLISHED" ? "ink" : "line"}>{a.status === "PUBLISHED" ? "منتشرشده" : "پیش‌نویس"}</Pill></td>
                  <td className="text-xs">{faNumber(score)} از ۱۰۰</td>
                  <td className="text-xs whitespace-nowrap">{formatJalaliShort(a.updatedAt)}</td>
                  <td>
                    <form action={deleteArticleAction}>
                      <input type="hidden" name="id" value={a.id} />
                      <SubmitButton className="text-xs text-muted underline" pendingText="…" confirm="این مقاله حذف شود؟">حذف</SubmitButton>
                    </form>
                  </td>
                </tr>
              );
            })}
          </Table>
        ) : (
          <Empty>هنوز مقاله‌ای نوشته نشده است.</Empty>
        )}
      </Card>
    </>
  );
}
