import { member } from "../../entity/member"; import { MemberViewModel } from "../../viewmodel/admin/member.models"; import CommunicationFactory from "./communication"; import MembershipFactory from "./membership"; export default abstract class MemberFactory { /** * @description map record to member * @param {member} record * @returns {MemberViewModel} */ public static mapToSingle(record: member): MemberViewModel { return { id: record?.id, salutation: record?.salutation, firstname: record?.firstname, lastname: record?.lastname, nameaffix: record?.nameaffix, birthdate: record?.birthdate, 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, }; } /** * @description map records to member * @param {Array} records * @returns {Array} */ public static mapToBase(records: Array): Array { return records.map((r) => this.mapToSingle(r)); } }