import NavigationWrapper from "@/components/navigation/NavigationWrapper";
import EventsPageSection from "@/components/events/EventsPageSection";
import { eventService } from "@/services/events/event.service";
import { eventRegistrationService } from "@/services/events/event-registration.service";
import { getBackgroundImage } from "@/lib/preferences";
import { auth } from "@/lib/auth";

export const dynamic = "force-dynamic";

export default async function EventsPage() {
  const events = await eventService.getAllEvents({
    orderBy: { date: "desc" },
  });

  // Sérialiser les dates pour le client
  const serializedEvents = events.map((event) => ({
    ...event,
    date: event.date.toISOString(),
    createdAt: event.createdAt.toISOString(),
    updatedAt: event.updatedAt.toISOString(),
  }));

  const backgroundImage = await getBackgroundImage("events", "/got-2.jpg");

  // Récupérer les inscriptions côté serveur pour éviter le clignotement
  const session = await auth();
  const initialRegistrations: Record<string, boolean> = {};

  if (session?.user?.id) {
    // Récupérer toutes les inscriptions (passées et à venir) pour permettre le feedback
    const allRegistrations =
      await eventRegistrationService.getUserRegistrations(session.user.id);

    allRegistrations.forEach((reg) => {
      initialRegistrations[reg.eventId] = true;
    });
  }

  return (
    <main className="min-h-screen bg-black relative">
      <NavigationWrapper />
      <EventsPageSection
        events={serializedEvents}
        backgroundImage={backgroundImage}
        initialRegistrations={initialRegistrations}
      />
    </main>
  );
}
