Name

global.ScrumUserGroupsAjax

Description

Returns groups name and sysids for scrum users.

Script

var ScrumUserGroupsAjax = Class.create();

ScrumUserGroupsAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {


  _getRoleIds: function() {
      var arrRoleNames = ["scrum_user", "scrum_admin", "scrum_release_planner", "scrum_sprint_planner", "scrum_story_creator"];
      var arrRoleIds = [];
      var record = new GlideRecord("sys_user_role");
      record.addQuery("name", "IN", arrRoleNames.join(","));
      record.query();
      while (record.next())
          arrRoleIds.push(record.sys_id + "");
      return arrRoleIds;
  },

  _hasScrumRole: function(roleSysId, arrScrumRoleSysIds) {
      // Case1: the passed in role is scrum role
      for (var index = 0; index < arrScrumRoleSysIds.length; ++index)
          if (arrScrumRoleSysIds[index] == "" + roleSysId)
              return true;
      return false;
  },

  _getAllroleIds: function(arrScrumRoleIds) {
      var record = new GlideRecord("sys_user_role_contains");
      record.addQuery("contains", "IN", arrScrumRoleIds.join(","));
      record.query();
      while (record.next())
          arrScrumRoleIds.push(record.role + "");
      return arrScrumRoleIds;
  },

  _getGroupIds: function() {
      var arrScrumRoleIds = this._getRoleIds();
      arrScrumRoleIds = this._getAllroleIds(arrScrumRoleIds);
      var arrGroupIds = [];
      var record = new GlideRecord("sys_group_has_role");
      record.addQuery("role", "IN", arrScrumRoleIds.join(","));
      record.query();
      while (record.next()) {
          arrGroupIds.push(record.group + "");
      }
      return arrGroupIds;
  },

  getGroupInfo: function() {
      var arrGroupIds = this._getGroupIds();
      var record = new GlideRecord("sys_user_group");
      record.addQuery("sys_id", "IN", arrGroupIds.join(","));
      record.query();
      while (record.next()) {
          this._addGroup(record.name, record.sys_id);
      }
  },

  _addGroup: function(name, sysid) {
      this._addCustomItem('group', name, sysid);
  },

  _addCustomItem: function(itemName, name, sysid) {
      var item = this.newItem(itemName);
      item.setAttribute("name", name);
      item.setAttribute("sysid", sysid);
  },

  _addTeam: function(name, sysid) {
      this._addCustomItem('team', name, sysid);
  },

  getTeamInfo: function () {
      var scrumReleaseTeamSysId = this.getParameter('sysparm_scrum_team_sysid');
      var recTeam = new GlideRecord ("scrum_pp_team");
      recTeam.addQuery("sys_id", "!=", scrumReleaseTeamSysId);
      recTeam.query ();
      while (recTeam.next ()) {
          this._addTeamInfo(recTeam);
      }
  },

  _addTeamInfo: function(teamRecord) {
      var recTeamName = new GlideRecord ("scrum_pp_team_name");
      if (recTeamName.get(teamRecord.getValue('team_name'))) {
          if( recTeamName.getValue('name') ) {
              this._addTeam(recTeamName.getValue('name'), teamRecord.getValue('sys_id'));
          }
      }
  },

  type: 'ScrumUserGroupsAjax'

});

Sys ID

8a1a8d33c302210028d7d56bc3d3ae20

Offical Documentation

Official Docs: