Files
var-monorepo/apps/hub/app/(app)/_components/Penalty.tsx
PxlLoewe dabcad2525 dev
2025-06-23 19:33:00 -07:00

67 lines
2.0 KiB
TypeScript

import { getPublicUser, prisma } from "@repo/db";
import { TriangleAlert } from "lucide-react";
import { getServerSession } from "next-auth";
import { PenaltyCountdown } from "./PenaltyCountdown";
export const Penalty = async () => {
const session = await getServerSession();
const openPenaltys = await prisma.penalty.findMany({
where: {
userId: session?.user.id,
until: {
gte: new Date(),
},
suspended: false,
type: { in: ["TIME_BAN", "BAN"] },
},
include: {
CreatedUser: true,
},
});
if (!openPenaltys[0]) {
return null;
}
return (
<div className="card bg-error shadow-xl mb-4 col-span-6 xl:col-span-3">
{openPenaltys[0].type === "TIME_BAN" && (
<div className="card-body text-base-300">
<h2 className="card-title text-3xl">
<TriangleAlert />
Aktive Strafe - <PenaltyCountdown until={openPenaltys[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> {openPenaltys[0].reason}
</p>
<p className="text-left">
<span className="font-bold">Admin:</span>{" "}
{getPublicUser(openPenaltys[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>
<p className="text-left font-bold">Grund: {openPenaltys[0].reason}</p>
<p className="text-left">
<span className="font-bold">Admin:</span>{" "}
{getPublicUser(openPenaltys[0].CreatedUser).fullName}
</p>
</div>
)}
</div>
);
};