import { getTranslations, setRequestLocale } from "next-intl/server";
import { Link } from "@/i18n/navigation";
import { listAllDeals, type EscrowStatus } from "@/lib/escrow";
import { requireAdmin } from "@/lib/session";

function statusKey(status: EscrowStatus) {
  return `status_${status}` as const;
}

export default async function AdminEscrowPage({
  params,
}: {
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  setRequestLocale(locale);
  await requireAdmin();
  const t = await getTranslations("escrow");
  const deals = await listAllDeals();
  return (
    <div className="space-y-4">
      <h1 className="page-title">{t("adminTitle")}</h1>
      <div className="card overflow-x-auto">
        <table className="w-full min-w-[720px] text-sm">
          <thead className="text-muted">
            <tr>
              <th className="p-3 text-start">{t("code")}</th>
              <th className="p-3 text-start">{t("buyer")}</th>
              <th className="p-3 text-start">{t("seller")}</th>
              <th className="p-3 text-start">{t("amount")}</th>
              <th className="p-3 text-start">{t("status")}</th>
              <th className="p-3 text-start" />
            </tr>
          </thead>
          <tbody>
            {deals.map((deal) => (
              <tr key={deal.id} className="border-t border-line">
                <td className="p-3" dir="ltr">
                  {deal.code}
                </td>
                <td className="p-3">{deal.buyerEmail}</td>
                <td className="p-3">{deal.sellerEmail}</td>
                <td className="p-3" dir="ltr">
                  {deal.amountUsdt} USDT
                </td>
                <td className="p-3">{t(statusKey(deal.status))}</td>
                <td className="p-3">
                  <Link href={`/admin/escrow/${deal.id}`} className="text-brand">
                    {t("open")}
                  </Link>
                </td>
              </tr>
            ))}
          </tbody>
        </table>
        {deals.length === 0 ? <p className="p-4 text-sm text-muted">{t("empty")}</p> : null}
      </div>
      <Link href="/admin" className="text-brand">
        {t("back")}
      </Link>
    </div>
  );
}
