'use client' import { use, useState, useEffect } from 'react' import { useRouter } from 'next/navigation' import { trpc } from '@/lib/trpc-client' import { getTrpcErrorMessage } from '@/lib/trpc-error' import Link from 'next/link' import { format } from 'date-fns' const TYPEN = [ { value: 'Pruefung', label: 'Prüfung' }, { value: 'Versammlung', label: 'Versammlung' }, { value: 'Kurs', label: 'Kurs' }, { value: 'Event', label: 'Event' }, { value: 'Sonstiges', label: 'Sonstiges' }, ] export default function TerminEditPage({ params }: { params: Promise<{ id: string }> }) { const { id } = use(params) const router = useRouter() const { data: termin, isLoading } = trpc.termine.byId.useQuery({ id }) const updateMutation = trpc.termine.update.useMutation({ onSuccess: () => router.push('/dashboard/termine'), }) const deleteMutation = trpc.termine.delete.useMutation({ onSuccess: () => router.push('/dashboard/termine'), }) const [form, setForm] = useState({ titel: '', datum: '', uhrzeit: '', endeDatum: '', endeUhrzeit: '', ort: '', adresse: '', typ: 'Versammlung', beschreibung: '', maxTeilnehmer: '', }) useEffect(() => { if (termin) { setForm({ titel: termin.titel, datum: format(new Date(termin.datum), 'yyyy-MM-dd'), uhrzeit: termin.uhrzeit ?? '', endeDatum: termin.endeDatum ? format(new Date(termin.endeDatum), 'yyyy-MM-dd') : '', endeUhrzeit: termin.endeUhrzeit ?? '', ort: termin.ort ?? '', adresse: termin.adresse ?? '', typ: termin.typ, beschreibung: termin.beschreibung ?? '', maxTeilnehmer: termin.maxTeilnehmer ? String(termin.maxTeilnehmer) : '', }) } }, [termin]) if (isLoading) return
Wird geladen...
if (!termin) return
Termin nicht gefunden.
const F = (field: string) => (e: React.ChangeEvent) => setForm((prev) => ({ ...prev, [field]: e.target.value })) function handleSubmit(e: React.FormEvent) { e.preventDefault() updateMutation.mutate({ id, data: { titel: form.titel, datum: form.datum, uhrzeit: form.uhrzeit || undefined, endeDatum: form.endeDatum || null, endeUhrzeit: form.endeUhrzeit || null, ort: form.ort || undefined, adresse: form.adresse || undefined, typ: form.typ as never, beschreibung: form.beschreibung || undefined, maxTeilnehmer: form.maxTeilnehmer ? Number(form.maxTeilnehmer) : null, }, }) } const inputClass = 'w-full px-3 py-2 border border-gray-300 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-brand-500' return (
← Zurück

Termin bearbeiten