Manual Reference Source Test

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;