use signal forms

This commit is contained in:
toni
2026-01-03 01:17:40 +01:00
parent 00235a769a
commit 5a19b3a7a6
12 changed files with 298 additions and 296 deletions
+63 -71
View File
@@ -1,7 +1,7 @@
import { Inject, Injectable } from '@angular/core';
import { FormControl, FormGroup } from '@angular/forms';
import { FormControl } from '@angular/forms';
import { MAT_DATE_LOCALE } from '@angular/material/core';
import { Locale, parse } from 'date-fns';
import { Locale } from 'date-fns';
import { MemberCreateArgs, MemberDto } from '../generated-api/api';
import { dateToLocal, dateToUTC } from '../pipes/date-pipe.pipe';
@@ -21,86 +21,78 @@ interface MemberForm {
marker: FormControl<boolean | null | undefined>;
}
export interface MemberCreateForm extends Omit<
MemberCreateArgs,
'geburtsdatum'
> {
geburtsdatum: Date | null;
}
export interface MemberEditForm extends Omit<
MemberDto,
'geburtsdatum' | 'kuendigungzum' | 'letztePruefung'
> {
geburtsdatum: Date | null;
kuendigungzum: Date | null;
letztePruefung: Date | null;
}
@Injectable({
providedIn: 'root',
})
export class MemberDtoHelper {
constructor(@Inject(MAT_DATE_LOCALE) private locale: Locale) {}
public newMemberForm(member?: MemberDto): FormGroup<MemberForm> {
const geburtsdatum = member?.geburtsdatum;
let enDate: Date | null = null;
if (geburtsdatum) {
enDate = parse(geburtsdatum, 'dd.MM.yyyy', new Date(), {
//TODO get dd.MM.yyyy from MAT_DATE_LOCALE or LOCALE_ID
locale: this.locale,
});
}
return new FormGroup<MemberForm>({
id: new FormControl(member?.id),
vorname: new FormControl(member?.vorname),
nachname: new FormControl(member?.nachname),
geschlecht: new FormControl(member?.geschlecht),
geburtsdatum: new FormControl(
member?.geburtsdatum ? dateToUTC(member?.geburtsdatum) : null,
),
geburtsort: new FormControl(member?.geburtsort),
passnummer: new FormControl(member?.passnummer),
verein: new FormControl(member?.verein),
kontakt: new FormControl(member?.kontakt),
graduierung: new FormControl(member?.graduierung),
kuendigungzum: new FormControl(
member?.kuendigungzum ? dateToUTC(member?.kuendigungzum) : null,
),
letztePruefung: new FormControl(
member?.letztePruefung
? dateToUTC(member?.letztePruefung)
: null,
),
marker: new FormControl(false),
});
}
memberFromForm(form: FormGroup<MemberForm>): MemberDto {
public newMemberForm(): MemberCreateForm {
return {
id: form.controls.id.value ?? null,
vorname: form.controls.vorname.value ?? null,
nachname: form.controls.nachname.value ?? null,
geschlecht: form.controls.geschlecht.value ?? null,
geburtsdatum: form.controls.geburtsdatum.value
? dateToLocal(form.controls.geburtsdatum.value).toISOString()
: null,
geburtsort: form.controls.geburtsort.value ?? null,
passnummer: form.controls.passnummer.value ?? null,
verein: form.controls.verein.value ?? null,
kontakt: form.controls.kontakt.value ?? null,
graduierung: form.controls.graduierung?.value ?? null,
kuendigungzum: form.controls.kuendigungzum.value
? dateToLocal(form.controls.kuendigungzum.value).toISOString()
: null,
letztePruefung: form.controls.letztePruefung.value
? dateToLocal(form.controls.letztePruefung.value).toISOString()
: null,
marker: form.controls.marker.value ?? false,
vorname: '',
nachname: '',
geschlecht: '',
geburtsdatum: null,
geburtsort: '',
passnummer: '',
verein: false,
kontakt: '',
graduierung: '',
marker: false,
};
}
newMemberFromForm(form: FormGroup<MemberForm>): MemberCreateArgs {
public newMemberFromSignal(sig: MemberCreateForm): MemberCreateArgs {
return {
vorname: form.controls.vorname.value ?? null,
nachname: form.controls.nachname.value ?? null,
geschlecht: form.controls.geschlecht.value ?? null,
geburtsdatum: form.controls.geburtsdatum.value
? dateToLocal(form.controls.geburtsdatum.value).toISOString()
...sig,
geburtsdatum: sig.geburtsdatum
? dateToLocal(sig.geburtsdatum).toISOString()
: '',
};
}
public editMemberForm(member: MemberDto): MemberEditForm {
return {
...member,
geburtsdatum: member.geburtsdatum
? dateToUTC(member.geburtsdatum)
: null,
geburtsort: form.controls.geburtsort.value ?? null,
passnummer: form.controls.passnummer.value ?? null,
verein: form.controls.verein.value ?? null,
kontakt: form.controls.kontakt.value ?? null,
graduierung: form.controls.graduierung?.value ?? null,
kuendigungzum: null, //TODO not for new member
letztePruefung: null, //TODO not for new member
marker: form.controls.marker.value ?? false,
kuendigungzum: member.kuendigungzum
? dateToUTC(member.kuendigungzum)
: null,
letztePruefung: member.letztePruefung
? dateToUTC(member.letztePruefung)
: null,
};
}
public memberFromSignal(sig: MemberEditForm): MemberDto {
return {
...sig,
geburtsdatum: sig.geburtsdatum
? dateToLocal(sig.geburtsdatum).toISOString()
: '',
kuendigungzum: sig.kuendigungzum
? dateToLocal(sig.kuendigungzum).toISOString()
: '',
letztePruefung: sig.letztePruefung
? dateToLocal(sig.letztePruefung).toISOString()
: '',
};
}
}