import { calcPrice } from "@/app/(ui)/rubgram/api"; import Image from "@/components/image"; import { DiscordMentionable } from "@/components/mentionable"; import { Card, CardAction, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card"; import { Empty, EmptyHeader, EmptyMedia, EmptyTitle, } from "@/components/ui/empty"; import { db } from "@/lib/db"; import { endgameArchive, endgameDiscord, endgameSlips } from "@/lib/db/schema"; import { parseSearchNumber } from "@/lib/utils"; import { YAML } from "bun"; import { and, eq, getTableColumns } from "drizzle-orm"; import { ReceiptText } from "lucide-react"; import { DataViewer } from "./client"; export default async function ({ params, }: PageProps<"/rubgram/admin/slip/[round]/[queue]">) { const { round: r, queue: q } = await params; const round = parseSearchNumber(r) || 1; const queue = parseSearchNumber(q) || 1; const { slip: _, ...slipColumns } = getTableColumns(endgameSlips); const [entry] = await db .select({ ...getTableColumns(endgameArchive), user: getTableColumns(endgameDiscord), slip: slipColumns, }) .from(endgameArchive) .where( and(eq(endgameArchive.round, round), eq(endgameArchive.queue, queue)), ) .innerJoin(endgameDiscord, eq(endgameDiscord.uid, endgameArchive.user)) .leftJoin(endgameSlips, eq(endgameSlips.id, endgameArchive.slip)) .limit(1); const entryYaml = YAML.stringify( { ...entry, slip: { ...entry.slip, data: undefined } }, null, 2, ); const slipYaml = YAML.stringify(entry.slip, null, 2); if (!entry) return ( ยังไม่มีสลิป ); return (
Slip
จ่าย {entry.price} บาท {entry.service.join(", ")} (รวม {calcPrice(entry.service)} บาท)
); }