import Link from "next/link";
import { notFound } from "next/navigation";
import { ApiError } from "@/lib/api/server";
import { getAdminEvent, getUsers } from "@/lib/api/admin";
import { getEventCategories } from "@/lib/api/events";
import { EventForm } from "@/components/admin/event-form";

export default async function EditAdminEventPage({
  params,
}: {
  params: Promise<{ id: string }>;
}) {
  const { id } = await params;

  const [event, categoriesRes, organizersRes] = await Promise.all([
    getAdminEvent(id)
      .then((res) => res.data)
      .catch((error) => {
        if (error instanceof ApiError && (error.status === 404 || error.status === 403)) {
          notFound();
        }
        throw error;
      }),
    getEventCategories(),
    getUsers({ role: "organizer" }),
  ]);

  return (
    <div className="max-w-xl">
      <Link href={`/admin/events/${id}`} className="text-sm font-medium text-kolabora-primary">
        &larr; Back to Event Detail
      </Link>
      <h2 className="mt-4 text-lg font-semibold">Edit Event</h2>
      <p className="mt-1 text-sm text-kolabora-neutral-dark/70">
        Organizer: {event.organizer?.name ?? "-"} (cannot be changed after the event is created).
      </p>
      <EventForm categories={categoriesRes.data} organizers={organizersRes.data} event={event} />
    </div>
  );
}
