'use client'; import { useCallback, useState } from 'react'; import { useRouter } from 'next/navigation'; import { Plus } from 'lucide-react'; import { createLocation } from '@kit/course-management/actions/course-actions'; import { Button } from '@kit/ui/button'; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@kit/ui/dialog'; import { Input } from '@kit/ui/input'; import { Label } from '@kit/ui/label'; import { useActionWithToast } from '@kit/ui/use-action-with-toast'; interface CreateLocationDialogProps { accountId: string; } export function CreateLocationDialog({ accountId }: CreateLocationDialogProps) { const router = useRouter(); const [open, setOpen] = useState(false); const [name, setName] = useState(''); const [address, setAddress] = useState(''); const [room, setRoom] = useState(''); const [capacity, setCapacity] = useState(''); const { execute, isPending } = useActionWithToast(createLocation, { successMessage: 'Ort erstellt', errorMessage: 'Fehler beim Erstellen des Ortes', onSuccess: () => { setOpen(false); setName(''); setAddress(''); setRoom(''); setCapacity(''); router.refresh(); }, }); const handleSubmit = useCallback( (e: React.FormEvent) => { e.preventDefault(); if (!name.trim()) return; execute({ accountId, name: name.trim(), address: address.trim() || undefined, room: room.trim() || undefined, capacity: capacity ? Number(capacity) : undefined, }); }, [execute, accountId, name, address, room, capacity], ); return ( }> Neuer Ort
Neuer Ort Einen neuen Kurs- oder Veranstaltungsort hinzufuegen.
setName(e.target.value)} placeholder="z. B. Vereinsheim" required minLength={1} maxLength={128} />
setAddress(e.target.value)} placeholder="Musterstr. 1, 12345 Musterstadt" />
setRoom(e.target.value)} placeholder="z. B. Raum 101" />
setCapacity(e.target.value)} placeholder="z. B. 30" />
); }