From 00efe207b24da394daae3bd830bea312eb46e623 Mon Sep 17 00:00:00 2001
From: PxlLoewe <72106766+PxlLoewe@users.noreply.github.com>
Date: Sat, 22 Feb 2025 17:39:22 +0100
Subject: [PATCH] Added appointment table
---
apps/hub/app/(app)/admin/event/[id]/page.tsx | 8 +-
.../(app)/admin/event/_components/Form.tsx | 104 +++++++++++++++---
apps/hub/app/(app)/admin/event/action.ts | 22 +++-
apps/hub/app/_components/PaginatedTable.tsx | 54 ++++++---
.../app/_components/pagiantedTableActions.ts | 2 +-
.../migrations/20250222153846_/migration.sql | 38 +++++++
packages/database/prisma/schema/event.prisma | 2 +-
7 files changed, 192 insertions(+), 38 deletions(-)
create mode 100644 packages/database/prisma/migrations/20250222153846_/migration.sql
diff --git a/apps/hub/app/(app)/admin/event/[id]/page.tsx b/apps/hub/app/(app)/admin/event/[id]/page.tsx
index 32984ffe..8583a4d5 100644
--- a/apps/hub/app/(app)/admin/event/[id]/page.tsx
+++ b/apps/hub/app/(app)/admin/event/[id]/page.tsx
@@ -16,7 +16,11 @@ export default async ({ params }: { params: Promise<{ id: string }> }) => {
publicId: true,
},
});
- console.log(users);
+ const appointments = await prisma.eventAppointment.findMany({
+ where: {
+ eventId: parseInt(id),
+ },
+ });
if (!event) return
Event not found
;
- return ;
+ return ;
};
diff --git a/apps/hub/app/(app)/admin/event/_components/Form.tsx b/apps/hub/app/(app)/admin/event/_components/Form.tsx
index b8a9cf1f..57375138 100644
--- a/apps/hub/app/(app)/admin/event/_components/Form.tsx
+++ b/apps/hub/app/(app)/admin/event/_components/Form.tsx
@@ -1,26 +1,32 @@
'use client';
import { zodResolver } from '@hookform/resolvers/zod';
import {
+ EventAppointmentOptionalDefaults,
EventAppointmentOptionalDefaultsSchema,
EventOptionalDefaults,
EventOptionalDefaultsSchema,
ParticipantOptionalDefaultsSchema,
} from '@repo/db/zod';
import { set, useForm } from 'react-hook-form';
-import { BADGES, Event, User } from '@repo/db';
+import { BADGES, Event, EventAppointment, User } from '@repo/db';
import { Bot, Calendar, FileText, UserIcon } from 'lucide-react';
import { Input } from '../../../../_components/ui/Input';
import { useRef, useState } from 'react';
-import { deleteEvent, upsertEvent } from '../action';
+import { deleteEvent, upsertAppointment, upsertEvent } from '../action';
import { Button } from '../../../../_components/ui/Button';
-import { redirect } from 'next/navigation';
+import { redirect, useRouter } from 'next/navigation';
import { Switch } from '../../../../_components/ui/Switch';
-import { PaginatedTable } from '../../../../_components/PaginatedTable';
+import {
+ PaginatedTable,
+ PaginatedTableRef,
+} from '../../../../_components/PaginatedTable';
import { Select } from '../../../../_components/ui/Select';
+import { useSession } from 'next-auth/react';
export const Form = ({
event,
users,
+ appointments = [],
}: {
event?: Event;
users: {
@@ -29,15 +35,21 @@ export const Form = ({
lastname: string;
publicId: string;
}[];
+ appointments?: EventAppointment[];
}) => {
+ const { data: session } = useSession();
const form = useForm({
resolver: zodResolver(EventOptionalDefaultsSchema),
defaultValues: event,
});
- const appointmentForm = useForm({
+ const appointmentForm = useForm({
resolver: zodResolver(EventAppointmentOptionalDefaultsSchema),
+ defaultValues: {
+ eventId: event?.id,
+ presenterId: session?.user?.id,
+ },
});
- console.log(appointmentForm.formState.errors);
+ const appointmentsTableRef = useRef(null);
const [loading, setLoading] = useState(false);
const [deleteLoading, setDeleteLoading] = useState(false);
const addParticipantModal = useRef(null);
@@ -51,20 +63,26 @@ export const Form = ({
✕
- Teilnehmer hinzufügen
+ Termin hinzufügen