ff-admin-server/src/factory/admin/club/member/membership.ts

62 lines
2 KiB
TypeScript

import { membership } from "../../../../entity/club/member/membership";
import {
MembershipStatisticsViewModel,
MembershipViewModel,
} from "../../../../viewmodel/admin/club/member/membership.models";
import { membershipView } from "../../../../views/membershipsView";
export default abstract class MembershipFactory {
/**
* @description map record to membership
* @param {membership} record
* @returns {MembershipViewModel}
*/
public static mapToSingle(record: membership): MembershipViewModel {
return {
id: record.id,
start: record.start,
end: record.end,
terminationReason: record.terminationReason,
status: record.status.status,
statusId: record.status.id,
};
}
/**
* @description map records to membership
* @param {Array<membership>} records
* @returns {Array<MembershipViewModel>}
*/
public static mapToBase(records: Array<membership>): Array<MembershipViewModel> {
return records.map((r) => this.mapToSingle(r));
}
/**
* @description map view record to MembershipStatisticsViewModel
* @param {membershipView} record
* @returns {MembershipStatisticsViewModel}
*/
public static mapToSingleStatistic(record: membershipView): MembershipStatisticsViewModel {
return {
durationInDays: record.durationInDays,
durationInYears: record.durationInYears,
status: record.status,
statusId: record.statusId,
memberId: record.memberId,
memberSalutation: record.memberSalutation,
memberFirstname: record.memberFirstname,
memberLastname: record.memberLastname,
memberNameaffix: record.memberNameaffix,
memberBirthdate: record.memberBirthdate,
};
}
/**
* @description map records to MembershipStatisticsViewModel
* @param {Array<membershipView>} records
* @returns {Array<MembershipStatisticsViewModel>}
*/
public static mapToBaseStatistics(records: Array<membershipView>): Array<MembershipStatisticsViewModel> {
return records.map((r) => this.mapToSingleStatistic(r));
}
}