Files
var-monorepo/apps/hub/app/(app)/_components/FeaturedEvents.tsx
2026-01-18 01:09:39 +01:00

55 lines
1.3 KiB
TypeScript

import { getServerSession } from "../../api/auth/[...nextauth]/auth";
import { prisma } from "@repo/db";
import { EventCard } from "../events/_components/EventCard";
import { RocketIcon } from "lucide-react";
import { eventCompleted } from "@repo/shared-components";
const page = async () => {
const session = await getServerSession();
if (!session) return null;
const user = session.user;
if (!user) return null;
const events = await prisma.event.findMany({
where: {
type: "EVENT",
},
include: {
Participants: {
where: {
userId: user.id,
},
},
},
});
const filteredEvents = events.filter((event) => {
const userParticipant = event.Participants.find(
(participant) => participant.userId === user.id,
);
if (eventCompleted(event, userParticipant)) return false;
return false;
});
if (!filteredEvents.length) return null;
return (
<div>
<div className="col-span-full">
<p className="mb-2 mt-5 flex items-center gap-2 text-left text-xl font-semibold">
<RocketIcon className="h-4 w-4" /> Laufende Events & Kurse
</p>
</div>
<div className="grid grid-cols-6 gap-4">
{filteredEvents.map((event) => {
return <EventCard user={user} event={event} key={event.id} />;
})}
</div>
</div>
);
};
export default page;