import { prisma } from "@/lib/prisma";
import {
  banUserAction,
  toggleUserVerifiedAction,
  updateUserRoleAction,
} from "@/server/actions/admin";

export default async function AdminUsersPage() {
  const [users, blacklist] = await Promise.all([
    prisma.user.findMany({ orderBy: { createdAt: "desc" } }),
    prisma.blacklistEntry.findMany(),
  ]);
  const banned = new Set(blacklist.map((b) => b.email));

  return (
    <div>
      <h1 className="text-2xl font-semibold">Users</h1>
      <p className="mt-1 text-sm text-white/60">{users.length} usuarios</p>
      <div className="mt-4 space-y-2">
        {users.map((u) => (
          <div
            key={u.id}
            className="card flex flex-wrap items-center justify-between gap-3"
          >
            <div>
              <p className="font-medium">
                {u.name} · {u.email}
                {banned.has(u.email) && (
                  <span className="ml-2 text-xs text-red-300">BANNED</span>
                )}
              </p>
              <p className="text-sm text-white/50">
                {u.role} · {u.city || "—"} · verified={String(u.isVerified)} ·
                founder={String(u.isFounder)}
              </p>
            </div>
            <div className="flex flex-wrap gap-2">
              <form action={updateUserRoleAction} className="flex gap-2">
                <input type="hidden" name="id" value={u.id} />
                <select className="input" name="role" defaultValue={u.role}>
                  <option value="client">client</option>
                  <option value="contractor">contractor</option>
                  <option value="admin">admin</option>
                </select>
                <button className="btn-ghost" type="submit">
                  Rol
                </button>
              </form>
              <form action={toggleUserVerifiedAction}>
                <input type="hidden" name="id" value={u.id} />
                <button className="btn-ghost" type="submit">
                  {u.isVerified ? "Quitar verify" : "Verificar"}
                </button>
              </form>
              {u.email !== "admin@serviciospr.com" && !banned.has(u.email) && (
                <form action={banUserAction}>
                  <input type="hidden" name="id" value={u.id} />
                  <button className="btn-ghost text-red-300" type="submit">
                    Ban
                  </button>
                </form>
              )}
            </div>
          </div>
        ))}
      </div>
    </div>
  );
}
