@@ -302,7 +305,7 @@ export const ConnectionHistory: React.FC<{ user: User }> = ({ user }: { user: Us
cell: ({ row }) => {
return (
-
+
);
},
@@ -324,7 +327,7 @@ export const ConnectionHistory: React.FC<{ user: User }> = ({ user }: { user: Us
Pilot-Verbindungs Historie
= ({ user }: { user: Us
cell: ({ row }) => {
return (
-
+
);
},
@@ -408,6 +411,7 @@ export const UserPenalties = ({ user }: { user: User }) => {
}
onClick={async ({ reason, until }) => {
@@ -437,6 +441,7 @@ export const UserPenalties = ({ user }: { user: User }) => {
/>
{session.data?.user.permissions.includes("ADMIN_USER_ADVANCED") && (
}
onClick={async ({ reason }) => {
@@ -528,6 +533,12 @@ interface AdminFormProps {
open: number;
total60Days: number;
};
+ openBans: (Penalty & {
+ CreatedUser: User | null;
+ })[];
+ openTimebans: (Penalty & {
+ CreatedUser: User | null;
+ })[];
}
export const AdminForm = ({
@@ -536,6 +547,8 @@ export const AdminForm = ({
pilotTime,
reports,
discordAccount,
+ openBans,
+ openTimebans,
}: AdminFormProps) => {
const router = useRouter();
const { data: session } = useSession();
@@ -627,6 +640,33 @@ export const AdminForm = ({
)}
+ {(!!openBans.length || !!openTimebans.length) && (
+
+
+
+ {openBans.map((ban) => (
+
+
Permanent ausgeschlossen
+ {ban.reason} (von {ban.CreatedUser?.firstname} {ban.CreatedUser?.lastname} -{" "}
+ {ban.CreatedUser?.publicId})
+
+ ))}
+ {openTimebans.map((timeban) => (
+
+
+ Zeitstrafe bis{" "}
+ {timeban.until ? new Date(timeban.until).toLocaleString("de-DE") : "unbekannt"}
+
+ {timeban.reason} ({timeban.CreatedUser?.firstname} {timeban.CreatedUser?.lastname} -{" "}
+ {timeban.CreatedUser?.publicId})
+
+ ))}
+
+
+ Achtung! Die Strafe(n) sind aktiv, die Rechte des Nutzers müssen nicht angepasst werden!
+
+
+ )}
Aktivität
diff --git a/packages/shared-components/components/PenaltyDropdown.tsx b/packages/shared-components/components/PenaltyDropdown.tsx
index 0b415867..53f9353a 100644
--- a/packages/shared-components/components/PenaltyDropdown.tsx
+++ b/packages/shared-components/components/PenaltyDropdown.tsx
@@ -9,12 +9,14 @@ export const PenaltyDropdown = ({
btnTip,
btnName,
Icon,
+ showBtnName = false,
}: {
onClick: (data: { reason: string; until: Date | null }) => void;
showDatePicker?: boolean;
btnClassName?: string;
btnName: string;
btnTip?: string;
+ showBtnName?: boolean;
Icon: ReactNode;
}) => {
const [open, setOpen] = useState(false);
@@ -25,25 +27,29 @@ export const PenaltyDropdown = ({
{open && (
-
{btnName}
+
{btnName}
);
}
@@ -78,14 +83,14 @@ export const penaltyColumns: ColumnDef
{report && (
diff --git a/apps/hub/app/(app)/admin/penalty/page.tsx b/apps/hub/app/(app)/admin/penalty/page.tsx
index 95d678a4..5b9b6e3b 100644
--- a/apps/hub/app/(app)/admin/penalty/page.tsx
+++ b/apps/hub/app/(app)/admin/penalty/page.tsx
@@ -10,6 +10,12 @@ export default function ReportPage() {
CreatedUser: true,
Report: true,
}}
+ initialOrderBy={[
+ {
+ id: "timestamp",
+ desc: true,
+ },
+ ]}
columns={penaltyColumns}
/>
);
diff --git a/apps/hub/app/(app)/admin/user/[id]/page.tsx b/apps/hub/app/(app)/admin/user/[id]/page.tsx
index f1d3f022..1c74253d 100644
--- a/apps/hub/app/(app)/admin/user/[id]/page.tsx
+++ b/apps/hub/app/(app)/admin/user/[id]/page.tsx
@@ -8,10 +8,10 @@ import {
UserReports,
} from "./_components/forms";
import { Error } from "../../../../_components/Error";
+import { getUserPenaltys } from "@repo/shared-components";
export default async function Page({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params;
-
const user = await prisma.user.findUnique({
where: {
id: id,
@@ -20,6 +20,7 @@ export default async function Page({ params }: { params: Promise<{ id: string }>
discordAccounts: true,
},
});
+ if (!user) return ;
const dispoSessions = await prisma.connectedDispatcher.findMany({
where: {
@@ -97,41 +98,43 @@ export default async function Page({ params }: { params: Promise<{ id: string }>
open: totalReportsOpen,
total60Days: totalReports60Days,
};
- if (!user) return ;
+ const { openBans, openTimeban } = await getUserPenaltys(user?.id);
return (
-
-
-
+
+
+
{user?.firstname} {user?.lastname} #{user?.publicId}
{new Date(user.createdAt).toLocaleString("de-DE")}
-
+
-
+
-
+
-
+
-
diff --git a/packages/shared-components/helper/index.ts b/packages/shared-components/helper/index.ts
index 072e7e0b..459d1021 100644
--- a/packages/shared-components/helper/index.ts
+++ b/packages/shared-components/helper/index.ts
@@ -4,3 +4,4 @@ export * from "./dates";
export * from "./simulatorConnected";
export * from "./useDebounce";
export * from "./useTimeout";
+export * from "./penaltys";
diff --git a/apps/dispatch-server/helper.ts b/packages/shared-components/helper/penaltys.ts
similarity index 100%
rename from apps/dispatch-server/helper.ts
rename to packages/shared-components/helper/penaltys.ts