import { db } from "@/db"; import Link from "next/link"; import { Card, CardHeader, CardTitle, } from "@/components/ui/card"; import { HtmlDisplay } from "@/components/html-display"; import { getServerSession } from "next-auth"; import { authOptions } from "@/lib/auth/auth-options"; import { canAccessForm, getSessionDiscordId } from "@/lib/auth/auth"; import { RealtimeRefresh } from "@/components/realtime-refresh"; import { Badge } from "@/components/ui/badge"; import { getFormSubmissionStats } from "@/lib/form/form-submission-stats"; export const dynamic = "force-dynamic"; export default async function FormsListingPage() { const formsList = await db.query.forms.findMany({ where: (f, { and, eq, gt, isNull, or }) => and( eq(f.isOpen, true), or(isNull(f.closesAt), gt(f.closesAt, new Date())) ), orderBy: (f, { desc }) => [desc(f.createdAt)], }); const session = await getServerSession(authOptions); const discordId = getSessionDiscordId(session); const visibleForms = []; for (const form of formsList) { if (await canAccessForm(form, discordId)) { visibleForms.push(form); } } const submissionStats = await getFormSubmissionStats( visibleForms.map((form) => form.id), discordId ); return ( <>

Form ทั้งหมด

{visibleForms.length === 0 ? (

ตอนนี้ยังไม่เปิดรับสัก Form

) : (
{visibleForms.map((form) => (
{form.title}
{submissionStats.get(form.id)?.totalAnswers ?? 0} คำตอบ {submissionStats.get(form.id)?.queueNumber != null && ( ลำดับของคุณ #{submissionStats.get(form.id)?.queueNumber} )}
{form.description && (
)}
))}
)}
); }