import { notFound, redirect } from "next/navigation"; import { AdminBreadcrumb } from "@/components/admin/admin-breadcrumb"; import { Badge } from "@/components/ui/badge"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { PollForm } from "../poll-form"; import { PollQuestionsManager } from "./poll-questions"; import { PollResultsView } from "./poll-results"; export default async function PollDetailPage({ params, }: { params: Promise<{ locale: string; id: string }>; }) { const { id } = await params; const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.POLLS_EDIT, session.user.rank)) { redirect("/admin/polls"); } const pollId = parseInt(id, 10); if (Number.isNaN(pollId)) notFound(); const poll = await prisma.websitePoll.findUnique({ where: { id: pollId }, include: { questions: { orderBy: { sortOrder: "asc" }, include: { votes: true, }, }, }, }); if (!poll) notFound(); const totalVoters = new Set(poll.questions.flatMap((q) => q.votes.map((v) => v.userId))).size; return (
{poll.description}
}