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 +

+ +