import { redirect } from "next/navigation";
import { apiFetch, getCurrentUser } from "@/lib/api";
import { getDict } from "@/lib/i18n";
import { UsersAdmin, type AdminUserRow, type AdminRoleRow } from "@/components/UsersAdmin";

export const dynamic = "force-dynamic";

export default async function UsersPage() {
  const t = await getDict();
  const user = await getCurrentUser();
  if (!user) redirect("/login");
  if (!user.permissions.includes("admin.manage_users")) {
    return (
      <div className="rounded-xl border border-slate-200 bg-white p-10 text-center shadow-card">
        <p className="font-bold text-slate-700">{t.account.noUsersPerm}</p>
        <p className="mt-1 text-sm text-slate-400">{t.account.usersPermHint} <code dir="ltr">admin.manage_users</code></p>
      </div>
    );
  }

  const [usersRes, rolesRes] = await Promise.all([
    apiFetch<{ items: AdminUserRow[] }>("/api/admin/users?pageSize=50"),
    apiFetch<{ roles: AdminRoleRow[]; permissions: { code: string }[] }>("/api/admin/roles"),
  ]);

  return (
    <div className="space-y-6">
      <header>
        <h1 className="text-2xl font-extrabold text-slate-900">{t.nav.users}</h1>
        <p className="mt-1 text-sm text-slate-500">
          {t.users.created.replace("تم إنشاء الحساب — ", "") && ""}كل عملية إنشاء وإسناد تُسجَّل في التدقيق مع السبب الموثق.
        </p>
      </header>
      <UsersAdmin
        initialUsers={usersRes.status === 200 ? (usersRes.data?.items ?? []) : []}
        roles={rolesRes.status === 200 ? (rolesRes.data?.roles ?? []) : []}
      />
    </div>
  );
}
