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; vorname: FormControl; nachname: FormControl; geschlecht: FormControl; geburtsdatum: FormControl; geburtsort: FormControl; passnummer: FormControl; verein: FormControl; kontakt: FormControl; graduierung: FormControl; kuendigungzum: FormControl; letztePruefung: FormControl; marker: FormControl; } 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() : '', }; } }