removed event-chronjobs, used Events in hub-app insteand, added admin Btn to set Discord-User and run Event-completed-workflow. Fixed Bug of wrong participants-count in Event-Modal

This commit is contained in:
PxlLoewe
2025-06-05 23:02:34 -07:00
parent 91d811e289
commit 587884dfd9
21 changed files with 341 additions and 232 deletions

View File

@@ -4,6 +4,7 @@ import {
BADGES,
ConnectedAircraft,
ConnectedDispatcher,
DiscordAccount,
PERMISSION,
Report,
Station,
@@ -22,6 +23,7 @@ import {
LockOpen1Icon,
HobbyKnifeIcon,
ExclamationTriangleIcon,
DiscordLogoIcon,
} from "@radix-ui/react-icons";
import { Button } from "../../../../../_components/ui/Button";
import { Select } from "../../../../../_components/ui/Select";
@@ -34,6 +36,7 @@ import Link from "next/link";
import { ColumnDef } from "@tanstack/react-table";
import { Error } from "_components/Error";
import { useSession } from "next-auth/react";
import { setStandardName } from "../../../../../../helper/discord";
interface ProfileFormProps {
user: User;
@@ -362,6 +365,7 @@ export const UserReports = ({ user }: { user: User }) => {
};
interface AdminFormProps {
discordAccount?: DiscordAccount;
user: User;
dispoTime: {
hours: number;
@@ -380,7 +384,13 @@ interface AdminFormProps {
};
}
export const AdminForm = ({ user, dispoTime, pilotTime, reports }: AdminFormProps) => {
export const AdminForm = ({
user,
dispoTime,
pilotTime,
reports,
discordAccount,
}: AdminFormProps) => {
const router = useRouter();
return (
@@ -444,6 +454,27 @@ export const AdminForm = ({ user, dispoTime, pilotTime, reports }: AdminFormProp
<HobbyKnifeIcon /> User Entperren
</Button>
)}
{discordAccount && (
<div className="tooltip flex-1" data-tip={`Name: ${discordAccount.username}`}>
<Button
onClick={async () => {
await setStandardName({
memberId: discordAccount.discordId,
userId: user.id,
});
toast.success("Standard Name wurde gesetzt!", {
style: {
background: "var(--color-base-100)",
color: "var(--color-base-content)",
},
});
}}
className="btn-sm w-full btn-outline btn-info"
>
<DiscordLogoIcon /> Name und Berechtigungen setzen
</Button>
</div>
)}
</div>
</div>
<h2 className="card-title">

View File

@@ -1,15 +1,18 @@
import { PersonIcon } from "@radix-ui/react-icons";
import { prisma, User } from "@repo/db";
import { prisma } from "@repo/db";
import { AdminForm, ConnectionHistory, ProfileForm, UserReports } from "./_components/forms";
import { Error } from "../../../../_components/Error";
export default async function Page({ params }: { params: Promise<{ id: string }> }) {
const { id } = await params;
const user: User | null = await prisma.user.findUnique({
const user = await prisma.user.findUnique({
where: {
id: id,
},
include: {
discordAccounts: true,
},
});
const dispoSessions = await prisma.connectedDispatcher.findMany({
@@ -88,7 +91,6 @@ export default async function Page({ params }: { params: Promise<{ id: string }>
open: totalReportsOpen,
total60Days: totalReports60Days,
};
if (!user) return <Error statusCode={404} title="User not found" />;
return (
<div className="grid grid-cols-6 gap-4">
@@ -102,7 +104,13 @@ export default async function Page({ params }: { params: Promise<{ id: string }>
<ProfileForm user={user} />
</div>
<div className="card bg-base-200 shadow-xl mb-4 col-span-6 xl:col-span-3">
<AdminForm user={user} dispoTime={dispoTime} pilotTime={pilotTime} reports={reports} />
<AdminForm
user={user}
dispoTime={dispoTime}
pilotTime={pilotTime}
reports={reports}
discordAccount={user.discordAccounts[0]}
/>
</div>
<div className="card bg-base-200 shadow-xl mb-4 col-span-6 xl:col-span-6">
<UserReports user={user} />