import { notFound } from "next/navigation";
import { getServerSession } from "next-auth";
import { UserForm } from "@/components/admin/user/UserForm";
import { prisma } from "@/lib/prisma";
import { authOptions } from "@/lib/auth";
import { updateUser } from "../../actions";

export default async function EditUserPage({
  params,
}: {
  params: Promise<{ id: string }>;
}) {
  const { id } = await params;
  const userId = Number(id);

  if (Number.isNaN(userId)) {
    notFound();
  }

  const [user, session] = await Promise.all([
    prisma.user.findUnique({ where: { id: userId } }),
    getServerSession(authOptions),
  ]);

  if (!user) {
    notFound();
  }

  const isSelf = session?.user?.id === String(userId);

  return (
    <div>
      <h1 className="text-2xl font-semibold text-heading">Edit Pengguna</h1>
      <p className="mt-1 text-sm text-body">{user.name}</p>

      <div className="mt-6 rounded-2xl bg-white p-8 shadow-sm">
        <UserForm
          action={updateUser.bind(null, userId)}
          user={user}
          submitLabel="Simpan Perubahan"
          isSelf={isSelf}
        />
      </div>
    </div>
  );
}
