Files
Taekwondo-Admin/packages/frontend/src/app/util/member.ts
T
2026-03-08 11:09:52 +01:00

99 lines
3.1 KiB
TypeScript

import { Inject, Injectable } from '@angular/core';
import { FormControl } from '@angular/forms';
import { MAT_DATE_LOCALE } from '@angular/material/core';
import { Locale } from 'date-fns';
import { MemberCreateArgs, MemberDto } from '../generated-api/api';
import { dateToLocal, dateToUTC } from '../pipes/date-pipe.pipe';
interface MemberForm {
id: FormControl<string | null | undefined>;
vorname: FormControl<string | null | undefined>;
nachname: FormControl<string | null | undefined>;
geschlecht: FormControl<string | null | undefined>;
geburtsdatum: FormControl<Date | null>;
geburtsort: FormControl<string | null | undefined>;
passnummer: FormControl<string | null | undefined>;
verein: FormControl<boolean | null | undefined>;
kontakt: FormControl<string | null | undefined>;
graduierung: FormControl<string | null | undefined>;
kuendigungzum: FormControl<Date | null | undefined>;
letztePruefung: FormControl<Date | null | undefined>;
marker: FormControl<boolean | null | undefined>;
}
export interface MemberCreateForm extends Omit<
MemberCreateArgs,
'geburtsdatum' | 'creationDate'
> {
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(): MemberCreateForm {
return {
vorname: '',
nachname: '',
geschlecht: '',
geburtsdatum: null,
geburtsort: '',
passnummer: '',
verein: false,
kontakt: '',
graduierung: '',
marker: false,
};
}
public newMemberFromSignal(sig: MemberCreateForm): MemberCreateArgs {
return {
...sig,
geburtsdatum: sig.geburtsdatum
? dateToLocal(sig.geburtsdatum).toISOString()
: '',
};
}
public editMemberForm(member: MemberDto): MemberEditForm {
return {
...member,
geburtsdatum: member.geburtsdatum
? dateToUTC(member.geburtsdatum)
: null,
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()
: '',
};
}
}