99 lines
3.1 KiB
TypeScript
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()
|
|
: '',
|
|
};
|
|
}
|
|
}
|