ff-admin-server/src/factory/admin/user.ts

39 lines
1.3 KiB
TypeScript
Raw Normal View History

2024-09-01 14:55:05 +02:00
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<role>} records
* @returns {Array<UserViewModel>}
*/
public static mapToBase(records: Array<user>): Array<UserViewModel> {
return records.map((r) => this.mapToSingle(r));
}
}