"use client"; import { User2 } from "lucide-react"; import { PaginatedTable } from "../../../_components/PaginatedTable"; import Link from "next/link"; import { ColumnDef } from "@tanstack/react-table"; import { DiscordAccount, Penalty, Prisma, User } from "@repo/db"; import { useSession } from "next-auth/react"; const AdminUserPage = () => { const { data: session } = useSession(); return ( <> { return { OR: [ { firstname: { contains: searchTerm, mode: "insensitive" } }, { lastname: { contains: searchTerm, mode: "insensitive" } }, { email: { contains: searchTerm, mode: "insensitive" } }, { publicId: { contains: searchTerm, mode: "insensitive" } }, { DiscordAccount: { username: { contains: searchTerm, mode: "insensitive" } } }, ], } as Prisma.UserWhereInput; }} include={{ DiscordAccount: true, ReceivedReports: true, Penaltys: true, }} initialOrderBy={[ { id: "publicId", desc: false, }, ]} columns={ [ { header: "ID", accessorKey: "publicId", }, { header: "Vorname", accessorKey: "firstname", }, { header: "Nachname", accessorKey: "lastname", }, { header: "Berechtigungen", cell(props) { const activePenaltys = props.row.original.Penaltys.filter( (penalty) => !penalty.suspended && (penalty.type === "BAN" || (penalty.type === "TIME_BAN" && penalty!.until! > new Date())), ); if (activePenaltys.length > 0) { return AKTIVE STRAFE; } if (props.row.original.isDeleted) { return GELĂ–SCHT; } if (props.row.original.permissions.length === 0) { return Keine; } else if (props.row.original.permissions.includes("ADMIN_USER_ADVANCED")) { return Admin; } return ( {props.row.original.permissions .filter((p) => p === "PILOT" || p === "DISPO") .join(", ")} ); }, }, { header: "Strafen / Reports", cell(props) { const penaltyCount = props.row.original.Penaltys.length; const reportCount = props.row.original.ReceivedReports.length; return ( {penaltyCount} / {reportCount} ); }, }, { header: "Discord", cell(props) { const discord = props.row.original.DiscordAccount; if (!discord) { return Nicht verbunden; } return {discord.username}; }, }, ...(session?.user.permissions.includes("ADMIN_USER_ADVANCED") ? [ { header: "Email", accessorKey: "email", }, ] : []), { header: "Aktionen", cell: ({ row }) => (
), }, ] as ColumnDef< User & { DiscordAccount: DiscordAccount; ReceivedReports: Report[]; Penaltys: Penalty[]; } >[] } // Define the columns for the user table leftOfSearch={

Benutzer

} /> ); }; AdminUserPage.displayName = "AdminUserPage"; export default AdminUserPage;