39 lines
1.3 KiB
TypeScript
39 lines
1.3 KiB
TypeScript
|
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));
|
||
|
}
|
||
|
}
|