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} /> ) }