import Link from "next/link"; import { notFound } from "next/navigation"; import { getTranslations } from "next-intl/server"; import { ContentCard } from "@/components/public/ui"; import { prisma } from "@/lib/prisma"; export const revalidate = 300; function formatDate(d: Date | null | undefined): string { return d ? d.toISOString().slice(0, 19).replace("T", " ") : ""; } export default async function RadioContestDetailPage({ params, }: { params: Promise<{ id: string }>; }) { const { id } = await params; const t = await getTranslations("pages.radioContests"); let contestId: bigint; try { contestId = BigInt(id); } catch { notFound(); } const contest = await prisma.radioContests .findUnique({ where: { id: contestId! } }) .catch(() => null); if (!contest) notFound(); const active = contest.isActive ? "Active" : "Ended"; return (

← Back to contests

{contest.description ? ( ) : null} {contest.prize ? ( ) : null}
Description {contest.description}
Prize {contest.prize}
Period {contest.startDate ? formatDate(contest.startDate) : "—"} {" — "} {contest.endDate ? formatDate(contest.endDate) : "ongoing"}
Created {formatDate(contest.createdAt) || —}
Updated {formatDate(contest.updatedAt) || —}
); }