diff --git a/app/api/admin/events/route.ts b/app/api/admin/events/route.ts index cab1a90..d75ae4d 100644 --- a/app/api/admin/events/route.ts +++ b/app/api/admin/events/route.ts @@ -13,11 +13,39 @@ export async function GET() { const events = await prisma.event.findMany({ orderBy: { - date: "asc", + date: "desc", + }, + select: { + id: true, + date: true, + name: true, + description: true, + type: true, + status: true, + createdAt: true, + updatedAt: true, + _count: { + select: { + registrations: true, + }, + }, }, }); - return NextResponse.json(events); + // Transformer les données pour inclure le nombre d'inscriptions + const eventsWithCount = events.map((event) => ({ + id: event.id, + date: event.date, + name: event.name, + description: event.description, + type: event.type, + status: event.status, + createdAt: event.createdAt.toISOString(), + updatedAt: event.updatedAt.toISOString(), + registrationsCount: event._count.registrations, + })); + + return NextResponse.json(eventsWithCount); } catch (error) { console.error("Error fetching events:", error); return NextResponse.json( diff --git a/app/events/page.tsx b/app/events/page.tsx index 8960bdd..8fd0d85 100644 --- a/app/events/page.tsx +++ b/app/events/page.tsx @@ -6,7 +6,7 @@ import { getBackgroundImage } from "@/lib/preferences"; export default async function EventsPage() { const events = await prisma.event.findMany({ orderBy: { - date: "asc", + date: "desc", }, }); diff --git a/components/EventManagement.tsx b/components/EventManagement.tsx index 80265a7..8e34b3d 100644 --- a/components/EventManagement.tsx +++ b/components/EventManagement.tsx @@ -11,6 +11,7 @@ interface Event { status: "UPCOMING" | "LIVE" | "PAST"; createdAt: string; updatedAt: string; + registrationsCount?: number; } interface EventFormData { @@ -351,9 +352,15 @@ export default function EventManagement() {

{event.description}

-

- Date: {new Date(event.date).toLocaleDateString("fr-FR")} -

+
+

+ Date: {new Date(event.date).toLocaleDateString("fr-FR")} +

+ + {event.registrationsCount || 0} inscrit + {event.registrationsCount !== 1 ? "s" : ""} + +
{!isCreating && !editingEvent && (
diff --git a/components/EventsPageSection.tsx b/components/EventsPageSection.tsx index 19f4c38..fd110e0 100644 --- a/components/EventsPageSection.tsx +++ b/components/EventsPageSection.tsx @@ -84,11 +84,19 @@ export default function EventsPageSection({ const [error, setError] = useState(""); const [currentMonth, setCurrentMonth] = useState(new Date()); - // Séparer les événements - const upcomingEvents = events.filter( - (e) => e.status === "UPCOMING" || e.status === "LIVE" - ); - const pastEvents = events.filter((e) => e.status === "PAST"); + // Séparer et trier les événements (du plus récent au plus ancien) + const upcomingEvents = events + .filter((e) => e.status === "UPCOMING" || e.status === "LIVE") + .sort((a, b) => { + // Trier par date décroissante (du plus récent au plus ancien) + return b.date.localeCompare(a.date); + }); + const pastEvents = events + .filter((e) => e.status === "PAST") + .sort((a, b) => { + // Trier par date décroissante (du plus récent au plus ancien) + return b.date.localeCompare(a.date); + }); // Créer un map des événements par date pour le calendrier const eventsByDate: Record = {};