import { user } from "../../entity/user"; import PermissionHelper from "../../helpers/permissionHelper"; import { UserViewModel } from "../../viewmodel/admin/user.models"; import RoleFactory from "./role"; export default abstract class UserFactory { /** * @description map record to user * @param {user} record * @returns {UserViewModel} */ public static mapToSingle(record: user): UserViewModel { let userPermissionStrings = record.permissions.map((e) => e.permission); let rolePermissions = record.roles.map((e) => e.permissions).flat(); let rolePermissionStrings = rolePermissions.map((p) => p.permission); let totalPermissions = PermissionHelper.convertToObject([...userPermissionStrings, ...rolePermissionStrings]); return { id: record.id, username: record.username, firstname: record.firstname, lastname: record.lastname, mail: record.mail, permissions: PermissionHelper.convertToObject(userPermissionStrings), roles: RoleFactory.mapToBase(record.roles), permissions_total: totalPermissions, }; } /** * @description map records to user * @param {Array} records * @returns {Array} */ public static mapToBase(records: Array): Array { return records.map((r) => this.mapToSingle(r)); } }