Initial commit: FL-Akademie LMS mit Docker, Admin, Portal und Dokumentation.
Made-with: Cursor
This commit is contained in:
46
app/zertifikat/[code]/page.tsx
Normal file
46
app/zertifikat/[code]/page.tsx
Normal file
@@ -0,0 +1,46 @@
|
||||
import { notFound } from "next/navigation";
|
||||
import { prisma } from "@/lib/prisma";
|
||||
import { PrintButton } from "@/components/print-button";
|
||||
|
||||
type Props = { params: Promise<{ code: string }> };
|
||||
|
||||
export default async function CertificatePublicPage({ params }: Props) {
|
||||
const { code } = await params;
|
||||
const cert = await prisma.certificate.findUnique({
|
||||
where: { code },
|
||||
include: {
|
||||
course: { select: { title: true } },
|
||||
user: { select: { name: true } },
|
||||
},
|
||||
});
|
||||
if (!cert) notFound();
|
||||
|
||||
return (
|
||||
<section className="section">
|
||||
<div className="container">
|
||||
<div className="cert-print">
|
||||
<p className="muted" style={{ margin: 0 }}>
|
||||
Fahrlässig Motorrad Akademie
|
||||
</p>
|
||||
<h1>Teilnahmebestätigung</h1>
|
||||
<p className="muted" style={{ marginTop: "0.75rem" }}>
|
||||
Hiermit bestätigen wir, dass
|
||||
</p>
|
||||
<div className="name">{cert.user.name}</div>
|
||||
<p style={{ margin: "0.75rem 0 0", fontSize: "1.1rem" }}>
|
||||
den Online-Kurs <strong>{cert.course.title}</strong> vollständig absolviert hat.
|
||||
</p>
|
||||
<p className="muted" style={{ marginTop: "1.25rem" }}>
|
||||
Ausstellungsdatum: {cert.issuedAt.toLocaleDateString("de-DE")}
|
||||
</p>
|
||||
<p className="muted" style={{ marginTop: "0.5rem", fontSize: "0.9rem" }}>
|
||||
Verifikationscode: <span style={{ fontFamily: "ui-monospace, monospace" }}>{cert.code}</span>
|
||||
</p>
|
||||
<div style={{ marginTop: "1.5rem" }}>
|
||||
<PrintButton />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user