diff --git a/src/components/AtendedEventList.tsx b/src/components/AtendedEventList.tsx
index 96018c8..a422e73 100644
--- a/src/components/AtendedEventList.tsx
+++ b/src/components/AtendedEventList.tsx
@@ -1,9 +1,15 @@
"use server";
import Event from "@/lib/event";
+import { auth } from "@/lib/auth";
import { EventList } from "./EventList";
+import { headers } from "next/headers";
export default async function AttendedEventList() {
- const events = await Event.findAll();
+ const session = await auth.api.getSession({
+ headers: await headers(),
+ });
+ const userId = session?.user?.id;
+ const events = userId ? await Event.findByAtendeeUserId(userId) : [];
return ;
}
diff --git a/src/lib/event.ts b/src/lib/event.ts
index daa7884..11527c4 100644
--- a/src/lib/event.ts
+++ b/src/lib/event.ts
@@ -210,6 +210,44 @@ export default class Event {
);
}
+ static async findByAtendeeUserId(
+ userId: string,
+ {
+ status,
+ atendeeStatuses = [AtendeeStatus.Attend, AtendeeStatus.Maybe],
+ }: { status?: EventStatus[]; atendeeStatuses?: AtendeeStatus[] } = {},
+ ): Promise {
+ const events = await prisma.event.findMany({
+ where: {
+ ...(status ? { status: { in: status } } : {}),
+ participants: {
+ some: {
+ userId,
+ status: { in: atendeeStatuses },
+ },
+ },
+ },
+ });
+
+ return events.map(
+ (event) =>
+ new Event({
+ id: event.id,
+ title: event.title,
+ description: event.description || undefined,
+ date: event.date,
+ startAt: event.startTime || undefined,
+ endAt: event.endTime || undefined,
+ registrationDeadline: event.registrationDeadline || undefined,
+ capacity: event.capacity || undefined,
+ location: event.location || undefined,
+ status: event.status as EventStatus,
+ createdAt: event.createdAt || undefined,
+ updatedAt: event.updatedAt || undefined,
+ }),
+ );
+ }
+
async addAtendee(
userId: string,
status: AtendeeStatus = AtendeeStatus.Attend,