import { notFound, redirect } from "next/navigation"; import { canAccess, getAdminContext, PERMS } from "@/lib/permissions"; import { prisma } from "@/lib/prisma"; import { AdminTicketDetail } from "./admin-ticket-detail"; export default async function AdminTicketDetailPage({ params }: { params: Promise<{ id: string }> }) { const { session, permissions } = await getAdminContext(); if (!canAccess(permissions, PERMS.TICKETS_VIEW, session.user.rank)) { redirect("/admin"); } const { id } = await params; const ticketId = Number(id); if (Number.isNaN(ticketId)) notFound(); const ticket = await prisma.websiteTicket.findUnique({ where: { id: ticketId }, include: { creator: { select: { id: true, username: true, look: true, rank: true, ipRegister: true, mail: true, accountCreated: true, }, }, assignee: { select: { id: true, username: true } }, messages: { orderBy: { createdAt: "asc" }, include: { user: { select: { id: true, username: true, look: true, rank: true } }, }, }, }, }); if (!ticket) notFound(); // Get staff members for assignment const staffMembers = await prisma.user.findMany({ where: { rank: { gte: 4 } }, select: { id: true, username: true }, orderBy: { username: "asc" }, }); const canEdit = canAccess(permissions, PERMS.TICKETS_EDIT, session.user.rank); return ( ({ id: m.id, message: m.message, isStaff: m.isStaff === 1, createdAt: m.createdAt.toISOString(), user: { id: m.user.id, username: m.user.username, look: m.user.look, rank: m.user.rank, }, }))} staffMembers={staffMembers} currentUserId={session.user.id} canEdit={canEdit} /> ); }