51 lines
1.6 KiB
JavaScript
51 lines
1.6 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.RoleData = void 0;
|
|
class RoleData {
|
|
id;
|
|
code;
|
|
name;
|
|
description;
|
|
permissions;
|
|
isDefault;
|
|
createdAt;
|
|
updatedAt;
|
|
constructor(id, code, name, description, permissions, isDefault, createdAt, updatedAt) {
|
|
this.id = id;
|
|
this.code = code;
|
|
this.name = name;
|
|
this.description = description;
|
|
this.permissions = permissions;
|
|
this.isDefault = isDefault;
|
|
this.createdAt = createdAt;
|
|
this.updatedAt = updatedAt;
|
|
}
|
|
hasPermissions(permissionId) {
|
|
return this.permissions.some(x => x.id.toLowerCase() === permissionId.toLowerCase());
|
|
}
|
|
assignPermission(permissionData) {
|
|
if (this.hasPermissions(permissionData.id))
|
|
throw new Error("Permission sudah dimiliki.");
|
|
this.permissions.push(permissionData);
|
|
}
|
|
removePermission(permissionId) {
|
|
const idx = this.permissions.findIndex(p => p.id.toLowerCase() === permissionId.toLowerCase());
|
|
if (idx === -1)
|
|
throw new Error('Permission tidak ditemukan pada role.');
|
|
this.permissions.splice(idx, 1);
|
|
}
|
|
changeName(name) {
|
|
this.name = name;
|
|
}
|
|
changeDescription(description) {
|
|
this.description = description;
|
|
}
|
|
setDefault(isDefault) {
|
|
this.isDefault = isDefault;
|
|
}
|
|
static restore(props) {
|
|
return new RoleData(props.id, props.code, props.name, props.description, props.permissions || [], props.isDefault ?? false, props.createdAt, props.updatedAt);
|
|
}
|
|
}
|
|
exports.RoleData = RoleData;
|
|
//# sourceMappingURL=role.entity.js.map
|