feat: add delete functionality for leases, catch books, and permits; implement newsletter update feature
Some checks failed
Workflow / ʦ TypeScript (push) Failing after 4m52s
Workflow / ⚫️ Test (push) Has been skipped

This commit is contained in:
T. Zehetbauer
2026-04-01 17:53:39 +02:00
parent c6b2824da8
commit 080ec1cb47
22 changed files with 798 additions and 210 deletions

View File

@@ -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 */}