'use client'; import { useRouter } from 'next/navigation'; import { zodResolver } from '@hookform/resolvers/zod'; import { useAction } from 'next-safe-action/hooks'; import { useForm } from 'react-hook-form'; import { Button } from '@kit/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@kit/ui/card'; import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@kit/ui/form'; import { Input } from '@kit/ui/input'; import { toast } from '@kit/ui/sonner'; import { CreateBookingSchema } from '../schema/booking.schema'; import { createBooking } from '../server/actions/booking-actions'; interface Props { accountId: string; account: string; rooms: Array<{ id: string; roomNumber: string; name?: string; pricePerNight: number; }>; } export function CreateBookingForm({ accountId, account, rooms }: Props) { const router = useRouter(); const form = useForm({ resolver: zodResolver(CreateBookingSchema), defaultValues: { accountId, roomId: '', checkIn: '', checkOut: '', adults: 1, children: 0, status: 'confirmed' as const, totalPrice: 0, notes: '', }, }); const { execute, isPending } = useAction(createBooking, { onSuccess: ({ data }) => { if (data?.success) { toast.success('Buchung erfolgreich erstellt'); router.push(`/home/${account}/bookings-cms`); } }, onError: ({ error }) => { toast.error(error.serverError ?? 'Fehler beim Erstellen der Buchung'); }, }); return (
execute(data))} className="space-y-6" > Zimmer & Zeitraum ( Zimmer * )} /> ( Check-in * )} /> ( Check-out * )} /> Gäste ( Erwachsene * field.onChange(Number(e.target.value))} /> )} /> ( Kinder field.onChange(Number(e.target.value))} /> )} /> Preis & Notizen ( Gesamtpreis (€) field.onChange(Number(e.target.value))} /> )} /> ( Status )} />
( Notizen