import { getLocale, getTranslations, setRequestLocale } from "next-intl/server";
import { Link } from "@/i18n/navigation";
import { prisma } from "@/lib/prisma";
import { formatMoney, formatNumber } from "@/lib/money";
import { requireAdmin } from "@/lib/session";

export default async function AdminUsersPage({
  params,
}: {
  params: Promise<{ locale: string }>;
}) {
  const { locale } = await params;
  setRequestLocale(locale);
  await requireAdmin();
  const t = await getTranslations();
  const loc = await getLocale();
  const users = await prisma.user.findMany({
    orderBy: { createdAt: "desc" },
    include: { _count: { select: { links: true, files: true } } },
  });
  return (
    <div className="space-y-4">
      <h1 className="page-title">{t("admin.users")}</h1>
      <div className="card overflow-x-auto">
        <table className="w-full min-w-[700px] text-sm">
          <thead className="text-muted">
            <tr>
              <th className="p-3 text-start">{t("auth.email")}</th>
              <th className="p-3 text-start">{t("admin.role")}</th>
              <th className="p-3 text-start">{t("dashboard.balance")}</th>
              <th className="p-3 text-start">{t("nav.links")}</th>
              <th className="p-3 text-start">{t("nav.files")}</th>
              <th className="p-3 text-start">{t("nav.chat")}</th>
            </tr>
          </thead>
          <tbody>
            {users.map((user) => (
              <tr key={user.id} className="border-t border-line">
                <td className="p-3">{user.email}</td>
                <td className="p-3">{user.role}</td>
                <td className="p-3">{formatMoney(user.balanceMicro, loc)}</td>
                <td className="p-3">{formatNumber(user._count.links, loc)}</td>
                <td className="p-3">{formatNumber(user._count.files, loc)}</td>
                <td className="p-3">
                  {user.role === "ADMIN" ? (
                    "—"
                  ) : (
                    <Link href={`/admin/chat/${user.id}`} className="text-brand">
                      {t("nav.chat")}
                    </Link>
                  )}
                </td>
              </tr>
            ))}
          </tbody>
        </table>
      </div>
      <Link href="/admin" className="text-brand">
        {t("common.back")}
      </Link>
    </div>
  );
}
