From 89a0eb71351d22f2ff1aeb67498ed8608ee08a7e Mon Sep 17 00:00:00 2001 From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com> Date: Sun, 27 Jul 2025 13:45:13 -0700 Subject: [PATCH 1/5] Manuelle reports --- .../admin/report/_components/NewReport.tsx | 111 ++++++++++++++++++ .../(app)/admin/report/_components/form.tsx | 10 +- apps/hub/app/(app)/admin/report/actions.ts | 13 +- apps/hub/app/(app)/admin/report/new/page.tsx | 21 ++++ .../admin/user/[id]/_components/forms.tsx | 14 ++- apps/hub/app/(app)/admin/user/action.ts | 6 + 6 files changed, 163 insertions(+), 12 deletions(-) create mode 100644 apps/hub/app/(app)/admin/report/_components/NewReport.tsx create mode 100644 apps/hub/app/(app)/admin/report/new/page.tsx diff --git a/apps/hub/app/(app)/admin/report/_components/NewReport.tsx b/apps/hub/app/(app)/admin/report/_components/NewReport.tsx new file mode 100644 index 00000000..ae7e94df --- /dev/null +++ b/apps/hub/app/(app)/admin/report/_components/NewReport.tsx @@ -0,0 +1,111 @@ +"use client"; +import { createReport } from "(app)/admin/report/actions"; +import { getUser } from "(app)/admin/user/action"; +import { Prisma } from "@repo/db"; +import { useQuery } from "@tanstack/react-query"; +import { Select } from "_components/ui/Select"; +import { useSession } from "next-auth/react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; +import { useForm } from "react-hook-form"; +import { TriangleAlert } from "lucide-react"; +import toast from "react-hot-toast"; +import { Button } from "@repo/shared-components"; + +export const NewReportForm = ({ + defaultValues, +}: { + defaultValues?: Partial>; +}) => { + const session = useSession(); + const [search, setSearch] = useState(""); + const { data: user } = useQuery({ + queryKey: ["newReport"], + queryFn: async () => + getUser({ + OR: [ + { firstname: { contains: search, mode: "insensitive" } }, + { lastname: { contains: search, mode: "insensitive" } }, + { publicId: { contains: search, mode: "insensitive" } }, + { id: defaultValues?.reportedUserId || "" }, + ], + }), + enabled: search.length > 0, + refetchOnWindowFocus: false, + }); + const router = useRouter(); + const form = useForm({ + defaultValues: { + text: "", + reportedUserRole: "USER", + senderUserId: session.data?.user.id, + ...defaultValues, + }, + }); + + return ( +
{ + console.log("Form submitted with values:", values); + const newReport = await createReport(values); + toast.success("Report erfolgreich erstellt!"); + router.push(`/admin/report/${newReport.id}`); + })} + > +
+
+

+ Neuen Report erstellen +

+ +