import Link from "next/link"; import { prisma } from "@/lib/prisma"; import { requireSession } from "@/lib/session-helpers"; import { firstLessonPath } from "@/lib/course-queries"; import { getUserCourseProgress } from "@/lib/course-progress"; import { RestartCourseButton } from "@/components/restart-course-button"; export default async function PortalHomePage() { const session = await requireSession(); const enrollments = await prisma.enrollment.findMany({ where: { userId: session.user.id }, include: { course: { include: { modules: { orderBy: { sortOrder: "asc" }, include: { lessons: { where: { published: true }, orderBy: { sortOrder: "asc" }, select: { slug: true }, }, }, }, }, }, }, orderBy: { createdAt: "desc" }, }); const certs = await prisma.certificate.findMany({ where: { userId: session.user.id }, select: { courseId: true, code: true }, }); const certByCourse = new Map(certs.map((c) => [c.courseId, c.code])); return (

Hallo{session.user.name ? `, ${session.user.name}` : ""}!

Deine Kurse, Fortschritt und nächste Schritte.

{enrollments.length === 0 ? (

Du bist noch in keinem Kurs eingeschrieben.

Kurse entdecken
) : (
{await Promise.all( enrollments.map(async (e) => { const p = await getUserCourseProgress(session.user.id, e.course.id); const start = firstLessonPath(e.course); const cert = certByCourse.get(e.course.id); return (

{e.course.title}

Fortschritt: {p.completed}/{p.total} Lektionen ({p.percent}%)

{start ? ( {p.percent >= 100 ? "Kurs wiederholen" : "Weiterlernen"} ) : ( Keine Lektionen )} Kurrikulum {cert ? ( Zertifikat ) : null}
); }), )}
)}
); }