import { getServerSession } from "../../api/auth/[...nextauth]/auth";
import { PrismaClient } from "@repo/db";
import { KursItem } from "./_components/item";
import { RocketIcon } from "@radix-ui/react-icons";

export default async () => {
	const prisma = new PrismaClient();
	const session = await getServerSession();
	if (!session) return null;
	const user = await prisma.user.findUnique({
		where: {
			id: session.user.id,
		},
	});
	if (!user) return null;

	const events = await prisma.event.findMany({
		include: {
			appointments: {
				where: {
					appointmentDate: {
						gte: new Date(),
					},
				},
			},
			participants: {
				where: {
					userId: user.id,
				},
			},
		},
	});
	const appointments = await prisma.eventAppointment.findMany({
		where: {
			appointmentDate: {
				gte: new Date(),
			},
		},
		include: {
			Participants: {
				where: {
					userId: user.id,
				},
			},
			_count: {
				select: {
					Participants: true,
				},
			},
		},
	});
	const userAppointments = await prisma.eventAppointment.findMany({
		where: {
			Participants: {
				some: {
					userId: user.id,
				},
			},
		},
	});

	return (
		<div className="grid grid-cols-6 gap-4">
			<div className="col-span-full">
				<p className="text-2xl font-semibold text-left flex items-center gap-2">
					<RocketIcon className="w-5 h-5" /> Events & Kurse
				</p>
			</div>

			{events.map((event) => {
				return (
					<KursItem
						appointments={appointments}
						selectedAppointments={userAppointments}
						user={user}
						event={event}
						key={event.id}
					/>
				);
			})}
		</div>
	);
};
