diff --git a/apps/hub/app/(app)/admin/user/[id]/_components/forms.tsx b/apps/hub/app/(app)/admin/user/[id]/_components/forms.tsx index a9ebef59..8772a1a4 100644 --- a/apps/hub/app/(app)/admin/user/[id]/_components/forms.tsx +++ b/apps/hub/app/(app)/admin/user/[id]/_components/forms.tsx @@ -6,6 +6,7 @@ import { ConnectedAircraft, ConnectedDispatcher, DiscordAccount, + Penalty, PERMISSION, Station, User, @@ -46,6 +47,7 @@ import { ShieldUser, Timer, Trash2, + TriangleAlert, Users, } from "lucide-react"; import Link from "next/link"; @@ -255,6 +257,7 @@ export const ProfileForm: React.FC = ({ user }: ProfileFormPro export const ConnectionHistory: React.FC<{ user: User }> = ({ user }: { user: User }) => { const dispoTableRef = useRef(null); + const pilotTableRef = useRef(null); return (
@@ -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}