src/helpers/user/Role.js
import { deprecate } from 'core-decorators'; // eslint-disable-line
import RoleModel from '../../models/user/Role';
// import UserService from '../../services/UserService';
// import Profile from './Profile';
// import User from './User';
// import Session from './Session';
import Helper from '../Helper';
import { aggregate } from '../../utilities/ClassUtility';
import RoleService from '../../services/RoleService';
/**
* Helper class representing a user role.
*
* @extends {RoleModel}
* @extends {Helper}
*/
class Role extends aggregate(RoleModel, Helper) {
/** @type {String} - The type */
static get type() {
return 'user_roles';
}
/**
* Gets the invitable user roles of the user role.
* @return {Promise<Role>} - Returns a promise via ajax call.
*
* @example
* import { Role, roleService } from 'clinical6';
*
* const role = new Role({...});
*
* // Grab the invitable roles
* role.getInvitableRoles();
*/
getInvitableRoles() {
return (new RoleService()).getInvitableRoles(this);
}
/**
* Gets the role permissions.
* @return {Promise<Permission>} - Returns a promise via ajax call.
*
* @example
* import { Role, roleService } from 'clinical6';
*
* const role = new Role({...});
*
* // Grab the role permissions
* role.getPermissions();
*/
getPermissions() {
return (new RoleService()).getPermissions(this);
}
/**
* Saves a role (insert if id doesn't exist, update if it does)
* @return {Promise<Role>} - Returns a promise via ajax call.
*
* @example
* import { Role, roleService } from 'clinical6';
*
* // Inserts new role (no existing id)
* const role = new Role({
* "type": "user_roles",
* "attributes": {
* "permanent_link": "dummy_3669",
* "name": "et"
* }
* });
* role.save();
*
* // Updates existing role(has existing id)
* roleService.get().then(roles => roles[0].save());
*/
save() {
return ((this.id) ? (new RoleService()).update(this) : (new RoleService()).insert(this));
}
}
export default Role;