Files
var-monorepo/apps/hub/app/(app)/_components/Penalty.tsx
PxlLoewe 8968bff1c5 debug
2025-06-26 01:46:44 -07:00

84 lines
2.4 KiB
TypeScript

import { getPublicUser, prisma } from "@repo/db";
import { TriangleAlert } from "lucide-react";
import { PenaltyCountdown } from "./PenaltyCountdown";
import { getServerSession } from "api/auth/[...nextauth]/auth";
export const Penalty = async () => {
const session = await getServerSession();
const openTimeban = await prisma.penalty.findMany({
where: {
userId: session?.user.id,
until: {
gte: new Date(),
},
suspended: false,
type: { in: ["TIME_BAN"] },
},
include: {
CreatedUser: true,
},
});
const openBans = await prisma.penalty.findMany({
where: {
userId: session?.user.id,
suspended: false,
type: { in: ["BAN"] },
},
include: {
CreatedUser: true,
},
});
return (
<div className="card bg-error shadow-xl mb-4 col-span-6 xl:col-span-3">
{openTimeban[0] && openTimeban[0].type === "TIME_BAN" && (
<div className="card-body text-base-300">
<h2 className="card-title text-3xl">
<TriangleAlert />
Aktive Strafe - <PenaltyCountdown until={openTimeban[0].until ?? new Date()} />{" "}
verbleibend
</h2>
<p className="text-left font-bold">
Du hast eine aktive Strafe und kannst dich deshalb nicht mit dem Netzwerk verbinden.
</p>
<p className="text-left">
<span className="font-bold">Grund:</span> {openTimeban[0].reason}
</p>
{openTimeban[0].CreatedUser && (
<p className="text-left">
<span className="font-bold">Admin:</span>{" "}
{getPublicUser(openTimeban[0].CreatedUser).fullName}
</p>
)}
</div>
)}
{session?.user.isBanned && (
<div className="card-body text-base-300">
<h2 className="card-title text-3xl">
<TriangleAlert />
Du wurdest permanent von VirtualAirRescue ausgeschlossen.
</h2>
<p className="text-left font-bold">
Dein Fehlverhalten war so schwerwiegend, dass du dauerhaft von VirtualAirRescue
ausgeschlossen wurdest. Du kannst dich nicht mehr mit dem Netzwerk verbinden.
</p>
{openBans[0] && (
<>
<p className="text-left font-bold">
Grund: {openBans[0].reason || "Keine Begründung gefunden"}
</p>
{openBans[0].CreatedUser && (
<p className="text-left">
<span className="font-bold">Admin:</span>{" "}
{getPublicUser(openBans[0].CreatedUser).fullName}
</p>
)}
</>
)}
</div>
)}
</div>
);
};