import { PersonIcon } from "@radix-ui/react-icons"; import { prisma } from "@repo/db"; import { AdminForm, ConnectionHistory, ProfileForm, UserPenalties, UserReports, } from "./_components/forms"; import { Error } from "../../../../_components/Error"; export default async function Page({ params }: { params: Promise<{ id: string }> }) { const { id } = await params; const user = await prisma.user.findUnique({ where: { id: id, }, include: { discordAccounts: true, }, }); const dispoSessions = await prisma.connectedDispatcher.findMany({ where: { userId: user?.id, logoutTime: { not: null, }, }, select: { loginTime: true, logoutTime: true, }, }); const totalDispoTime = dispoSessions.reduce((acc, session) => { const logoffTime = new Date(session.logoutTime!).getTime(); const logonTime = new Date(session.loginTime).getTime(); return acc + (logoffTime - logonTime); }, 0); const dispoTime = { hours: Math.floor(totalDispoTime / (1000 * 60 * 60)), minutes: Math.floor((totalDispoTime % (1000 * 60 * 60)) / (1000 * 60)), lastLogin: dispoSessions[dispoSessions.length - 1]?.loginTime, }; const pilotSessions = await prisma.connectedAircraft.findMany({ where: { userId: user?.id, logoutTime: { not: null, }, }, select: { loginTime: true, logoutTime: true, Station: true, }, }); const totalPilotTime = pilotSessions.reduce((acc, session) => { const logoffTime = new Date(session.logoutTime!).getTime(); const logonTime = new Date(session.loginTime).getTime(); return acc + (logoffTime - logonTime); }, 0); const pilotTime = { hours: Math.floor(totalPilotTime / (1000 * 60 * 60)), minutes: Math.floor((totalPilotTime % (1000 * 60 * 60)) / (1000 * 60)), lastLogin: pilotSessions[pilotSessions.length - 1]?.loginTime, }; const totalReportsReports = await prisma.report.count({ where: { reportedUserId: user?.id, }, }); const totalReports60Days = await prisma.report.count({ where: { reportedUserId: user?.id, timestamp: { gte: new Date(Date.now() - 60 * 24 * 60 * 60 * 1000), }, }, }); const totalReportsOpen = await prisma.report.count({ where: { reportedUserId: user?.id, reviewed: false, }, }); const reports = { total: totalReportsReports, open: totalReportsOpen, total60Days: totalReports60Days, }; if (!user) return ; return (

{user?.firstname} {user?.lastname} #{user?.publicId}

); }