feat: add delete functionality for leases, catch books, and permits; implement newsletter update feature
This commit is contained in:
@@ -18,8 +18,11 @@ import {
|
||||
import { Input } from '@kit/ui/input';
|
||||
import { useActionWithToast } from '@kit/ui/use-action-with-toast';
|
||||
|
||||
import { CreateMemberClubSchema } from '../schema/verband.schema';
|
||||
import { createClub } from '../server/actions/verband-actions';
|
||||
import {
|
||||
CreateMemberClubSchema,
|
||||
UpdateMemberClubSchema,
|
||||
} from '../schema/verband.schema';
|
||||
import { createClub, updateClub } from '../server/actions/verband-actions';
|
||||
|
||||
interface CreateClubFormProps {
|
||||
accountId: string;
|
||||
@@ -38,7 +41,9 @@ export function CreateClubForm({
|
||||
const isEdit = !!club;
|
||||
|
||||
const form = useForm({
|
||||
resolver: zodResolver(CreateMemberClubSchema),
|
||||
resolver: zodResolver(
|
||||
isEdit ? UpdateMemberClubSchema : CreateMemberClubSchema,
|
||||
),
|
||||
defaultValues: {
|
||||
accountId,
|
||||
name: (club?.name as string) ?? '',
|
||||
@@ -61,18 +66,37 @@ export function CreateClubForm({
|
||||
},
|
||||
});
|
||||
|
||||
const { execute, isPending } = useActionWithToast(createClub, {
|
||||
successMessage: isEdit ? 'Verein aktualisiert' : 'Verein erstellt',
|
||||
errorMessage: 'Fehler beim Speichern',
|
||||
onSuccess: () => {
|
||||
router.push(`/home/${account}/verband/clubs`);
|
||||
const { execute: execCreate, isPending: isCreating } = useActionWithToast(
|
||||
createClub,
|
||||
{
|
||||
successMessage: 'Verein erstellt',
|
||||
errorMessage: 'Fehler beim Erstellen',
|
||||
onSuccess: () => router.push(`/home/${account}/verband/clubs`),
|
||||
},
|
||||
});
|
||||
);
|
||||
|
||||
const { execute: execUpdate, isPending: isUpdating } = useActionWithToast(
|
||||
updateClub,
|
||||
{
|
||||
successMessage: 'Verein aktualisiert',
|
||||
errorMessage: 'Fehler beim Aktualisieren',
|
||||
onSuccess: () =>
|
||||
router.push(`/home/${account}/verband/clubs/${String(club?.id)}`),
|
||||
},
|
||||
);
|
||||
|
||||
const isPending = isCreating || isUpdating;
|
||||
|
||||
return (
|
||||
<Form {...form}>
|
||||
<form
|
||||
onSubmit={form.handleSubmit((data) => execute(data))}
|
||||
onSubmit={form.handleSubmit((data) => {
|
||||
if (isEdit && club?.id) {
|
||||
execUpdate({ ...data, clubId: String(club.id) } as any);
|
||||
} else {
|
||||
execCreate(data);
|
||||
}
|
||||
})}
|
||||
className="space-y-6"
|
||||
>
|
||||
{/* Card 1: Grunddaten */}
|
||||
|
||||
Reference in New Issue
Block a user