2025-01-05 14:14:00 +01:00
|
|
|
import { member } from "../../../../entity/club/member/member";
|
2025-01-21 14:49:14 +01:00
|
|
|
import { MemberStatisticsViewModel, MemberViewModel } from "../../../../viewmodel/admin/club/member/member.models";
|
|
|
|
import { memberView } from "../../../../views/memberView";
|
2025-02-15 10:59:54 +01:00
|
|
|
import SalutationFactory from "../../configuration/salutation";
|
2024-09-17 16:44:39 +02:00
|
|
|
import CommunicationFactory from "./communication";
|
2025-02-08 09:00:50 +01:00
|
|
|
import DateMappingHelper from "./dateMappingHelper";
|
2024-09-16 15:55:41 +02:00
|
|
|
import MembershipFactory from "./membership";
|
2024-09-16 12:37:06 +02:00
|
|
|
|
|
|
|
export default abstract class MemberFactory {
|
|
|
|
/**
|
|
|
|
* @description map record to member
|
|
|
|
* @param {member} record
|
|
|
|
* @returns {MemberViewModel}
|
|
|
|
*/
|
|
|
|
public static mapToSingle(record: member): MemberViewModel {
|
|
|
|
return {
|
2024-09-17 16:44:39 +02:00
|
|
|
id: record?.id,
|
2025-01-25 11:58:10 +01:00
|
|
|
salutation: SalutationFactory.mapToSingle(record?.salutation),
|
2024-09-17 16:44:39 +02:00
|
|
|
firstname: record?.firstname,
|
|
|
|
lastname: record?.lastname,
|
|
|
|
nameaffix: record?.nameaffix,
|
|
|
|
birthdate: record?.birthdate,
|
2025-01-02 17:08:53 +01:00
|
|
|
internalId: record.internalId,
|
2024-09-17 16:44:39 +02:00
|
|
|
firstMembershipEntry: record?.firstMembershipEntry
|
|
|
|
? MembershipFactory.mapToSingle(record.firstMembershipEntry)
|
|
|
|
: null,
|
|
|
|
lastMembershipEntry: record?.lastMembershipEntry
|
|
|
|
? MembershipFactory.mapToSingle(record.lastMembershipEntry)
|
|
|
|
: null,
|
|
|
|
sendNewsletter: record?.sendNewsletter ? CommunicationFactory.mapToSingle(record.sendNewsletter, true) : null,
|
|
|
|
preferredCommunication: record?.preferredCommunication
|
|
|
|
? CommunicationFactory.mapToBase(record.preferredCommunication)
|
|
|
|
: null,
|
2024-11-27 10:07:59 +01:00
|
|
|
smsAlarming: record?.smsAlarming ? CommunicationFactory.mapToBase(record.smsAlarming) : null,
|
2024-09-16 12:37:06 +02:00
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @description map records to member
|
|
|
|
* @param {Array<member>} records
|
|
|
|
* @returns {Array<MemberViewModel>}
|
|
|
|
*/
|
|
|
|
public static mapToBase(records: Array<member>): Array<MemberViewModel> {
|
|
|
|
return records.map((r) => this.mapToSingle(r));
|
|
|
|
}
|
2025-01-21 14:49:14 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @description map view record to MemberMembershipStatisticsViewModel
|
|
|
|
* @param {memberView} record
|
|
|
|
* @returns {MemberStatisticsViewModel}
|
|
|
|
*/
|
|
|
|
public static mapToMemberStatistic(record: memberView): MemberStatisticsViewModel {
|
|
|
|
return {
|
|
|
|
id: record.id,
|
2025-02-01 18:09:58 +01:00
|
|
|
internalId: record.internalId,
|
2025-01-21 14:49:14 +01:00
|
|
|
salutation: record.salutation,
|
|
|
|
firstname: record.firstname,
|
|
|
|
lastname: record.lastname,
|
|
|
|
nameaffix: record.nameaffix,
|
|
|
|
birthdate: record.birthdate,
|
|
|
|
todayAge: record.todayAge,
|
|
|
|
ageThisYear: record.ageThisYear,
|
2025-02-08 09:00:50 +01:00
|
|
|
exactAge: DateMappingHelper.mapDate(record.exactAge),
|
2025-01-21 14:49:14 +01:00
|
|
|
};
|
|
|
|
}
|
2024-09-16 12:37:06 +02:00
|
|
|
}
|