/** مدیریت موجودی: ویرایش سریع موجودی هر تنوع */
import Link from "next/link";
import { AdminHeader, Card, Empty, Table } from "@/components/admin/ui";
import { SubmitButton } from "@/components/admin/SubmitButton";
import { db } from "@/lib/db";
import { faNumber, formatToman } from "@/lib/format";
import { updateStockAction } from "@/server/admin/products";
import { requireStaffPage } from "@/server/admin/guard";

export const metadata = { title: "موجودی" };
export const dynamic = "force-dynamic";

export default async function InventoryPage({ searchParams }: { searchParams: Promise<{ low?: string }> }) {
  await requireStaffPage("/admin/inventory", "inventory");
  const low = (await searchParams).low === "1";
  const variants = await db.productVariant.findMany({
    where: { isActive: true, ...(low && { stock: { lte: 3 } }) },
    orderBy: [{ stock: "asc" }, { sku: "asc" }],
    include: { product: { select: { id: true, name: true, brand: { select: { name: true } } } } },
    take: 300,
  });
  return (
    <>
      <AdminHeader title="موجودی" description="موجودی هر تنوع را مستقیم ویرایش کنید" />
      <div className="mb-4 flex gap-2">
        <Link href="/admin/inventory" className={`chip ${!low ? "chip-active" : "bg-paper"}`}>همه</Link>
        <Link href="/admin/inventory?low=1" className={`chip ${low ? "chip-active" : "bg-paper"}`}>رو به اتمام (۳ و کمتر)</Link>
      </div>
      <Card>
        {variants.length ? (
          <Table head={["SKU", "محصول", "تنوع", "قیمت", "موجودی"]}>
            {variants.map((v) => (
              <tr key={v.id}>
                <td><bdi className="text-xs">{v.sku}</bdi></td>
                <td><Link href={`/admin/products/${v.product.id}`} className="hover:underline"><span className="text-xs font-bold">{v.product.brand.name}</span> {v.product.name}</Link></td>
                <td className="text-xs text-muted">{[v.colorName, v.size].filter(Boolean).join(" · ")}</td>
                <td className="whitespace-nowrap text-xs">{formatToman(v.price)}</td>
                <td>
                  <form action={updateStockAction} className="flex items-center gap-2">
                    <input type="hidden" name="id" value={v.id} />
                    <input name="stock" defaultValue={v.stock} inputMode="numeric" className={`field h-9 w-20 px-3 ${v.stock === 0 ? "border-ink" : ""}`} aria-label={`موجودی ${v.sku}`} />
                    <SubmitButton className="chip h-9" pendingText="…">ذخیره</SubmitButton>
                  </form>
                </td>
              </tr>
            ))}
          </Table>
        ) : <Empty>{low ? "کالای رو به اتمامی وجود ندارد" : "تنوعی ثبت نشده"}</Empty>}
        <p className="mt-3 text-xs text-muted">{faNumber(variants.length)} ردیف</p>
      </Card>
    </>
  );
}
