/** تنظیمات ارسال: سقف ارسال رایگان و هزینه/وضعیت هر روش */
import { AdminHeader, Card, SavedNotice } from "@/components/admin/ui";
import { SubmitButton } from "@/components/admin/SubmitButton";
import { db } from "@/lib/db";
import { getShippingSettings } from "@/server/services/settings";
import { saveShippingAction } from "@/server/admin/moderation";
import { requireStaffPage } from "@/server/admin/guard";

export const metadata = { title: "تنظیمات ارسال" };
export const dynamic = "force-dynamic";

export default async function AdminSettings({ searchParams }: { searchParams: Promise<{ saved?: string }> }) {
  await requireStaffPage("/admin/settings", "shipping");
  const [{ freeShippingThreshold }, methods] = await Promise.all([getShippingSettings(), db.shippingMethod.findMany({ orderBy: { sortOrder: "asc" } })]);
  return (
    <>
      <AdminHeader title="تنظیمات ارسال" />
      <SavedNotice show={(await searchParams).saved === "1"} />
      <form action={saveShippingAction} className="max-w-2xl space-y-4">
        <Card title="ارسال رایگان">
          <label className="block">
            <span className="label">سفارش‌های بالای این مبلغ (تومان، پس از تخفیف) ارسال رایگان دارند. برای غیرفعال‌کردن عدد بسیار بزرگ بگذارید.</span>
            <input name="freeShippingThreshold" defaultValue={freeShippingThreshold} inputMode="numeric" className="field h-10 max-w-xs" required />
          </label>
        </Card>
        <Card title="روش‌های ارسال">
          <div className="space-y-4">
            {methods.map((m) => (
              <fieldset key={m.id} className="grid gap-3 rounded-xl border border-line p-3 sm:grid-cols-[1fr_140px_180px_auto] sm:items-end">
                <legend className="px-1 text-sm font-bold">{m.name}</legend>
                <p className="text-xs text-muted sm:pb-3">{m.description}{m.tehranOnly && " (فقط استان تهران)"}</p>
                <label className="block"><span className="label">هزینه (تومان)</span><input name={`price_${m.id}`} defaultValue={m.price} inputMode="numeric" className="field h-10" required /></label>
                <label className="block"><span className="label">زمان تحویل</span><input name={`eta_${m.id}`} defaultValue={m.eta} className="field h-10" required maxLength={60} /></label>
                <label className="flex h-10 items-center gap-2 text-sm"><input type="checkbox" name={`active_${m.id}`} defaultChecked={m.isActive} className="size-4 accent-ink" /> فعال</label>
              </fieldset>
            ))}
          </div>
        </Card>
        <SubmitButton className="btn-primary">ذخیره تنظیمات</SubmitButton>
      </form>
    </>
  );
}
