Name

global.ScrumAjaxAddSprintTeamMembersProcessor

Description

ScrumAjaxAddSprintTeamMembersProcessor

Script

var ScrumAjaxAddSprintTeamMembersProcessor = Class.create();

ScrumAjaxAddSprintTeamMembersProcessor.prototype = Object.extendsObject(AbstractAjaxProcessor, {
  /**
   * Clones all members in release.default_team as sprint team members.
   * But only if sprint.release_team is not specified.
   */
  addDefaultSprintTeamMembers: function  (record) {
      if (!record.release.isNil()) {
          if (!record.release.default_team.isNil()) {
              if (record.release_team.isNil()) {
                  
                  // Find the release team members that you want to clone as sprint team members
                  var recScrumPPReleaseTeamMember = new GlideRecord ("scrum_pp_release_team_member");
                  recScrumPPReleaseTeamMember.addQuery ("team", record.release.default_team);
                  recScrumPPReleaseTeamMember.query ();
                  
                  // Create the sprint team members based on the release team members
                  var recScrumPPSprintTeamMember = new GlideRecord ("scrum_pp_sprint_team_member");
                  while (recScrumPPReleaseTeamMember.next()) {
                      recScrumPPSprintTeamMember.initialize();
                      recScrumPPSprintTeamMember.sprint = record.sys_id;
                      recScrumPPSprintTeamMember.generated_by = recScrumPPReleaseTeamMember.generated_by;
                      recScrumPPSprintTeamMember.name = recScrumPPReleaseTeamMember.name;
                      recScrumPPSprintTeamMember.scrum_role = recScrumPPReleaseTeamMember.scrum_role;
                      recScrumPPSprintTeamMember.planned_points = recScrumPPReleaseTeamMember.default_sprint_points;
                      recScrumPPSprintTeamMember.insert ();
                  }
                  
                  // Update the release team associated with this sprint
                  record.release_team = record.release.default_team;
                  record.update ();
              }
          }
      }
  },
  
  insertTeamMembers: function  (arrUserSysIds, strSprintSysId) {
      var recScrumSprintTeamMember = new GlideRecord ("scrum_pp_sprint_team_member");
      for (var nSlot = 0; nSlot < arrUserSysIds.length; ++nSlot) {
          recScrumSprintTeamMember.initialize ();
          recScrumSprintTeamMember.name = arrUserSysIds[nSlot];
          recScrumSprintTeamMember.planned_points = 0;
          recScrumSprintTeamMember.sprint = strSprintSysId;
          recScrumSprintTeamMember.generated_by = "System";
          recScrumSprintTeamMember.sys_domain = this.getSprintsDomain(strSprintSysId);
          recScrumSprintTeamMember.insert ();
      }
  },

 getSprintsDomain: function (strSprintSysId) {
    var recSprint = new GlideRecord('rm_sprint');
    recSprint.get(strSprintSysId);
    return recSprint.getValue('sys_domain');
 },
  
  getUserSysIdsFromGroup: function  (strGroupSysId) {
      var arrUserSysIds = [];
      var recSysUserGrMember = new GlideRecord("sys_user_grmember");
      recSysUserGrMember.addQuery("group", strGroupSysId);
      recSysUserGrMember.query();
      while (recSysUserGrMember.next()) {
          arrUserSysIds.push (recSysUserGrMember.user + "");
      }
      return arrUserSysIds;
  },
  
  getUserSysIdsFromTeam: function  (strSprintSysId) {
      var arrUserSysIds = [];
      var recScrumSprintTeamMember = new GlideRecord ("scrum_pp_sprint_team_member");
      recScrumSprintTeamMember.addQuery ("sprint", strSprintSysId);
      recScrumSprintTeamMember.query ();
      while (recScrumSprintTeamMember.next ()) {
          arrUserSysIds.push (recScrumSprintTeamMember.name + "");
      }
      return arrUserSysIds;
  },
  
  createSprintTeamMembers: function () {
      var strSprintSysId = this.getParameter ("sysparm_sys_id");
      var arrGroupSysIds = this.getParameter ("sysparm_groups").split (",");
      var arrUserSysIdsFromTeam = this.getUserSysIdsFromTeam (strSprintSysId);
      
      for (var nSlot = 0; nSlot < arrGroupSysIds.length; ++nSlot) {
          var strGroupSysId = arrGroupSysIds[nSlot];
          var arrUserSysIdsFromGroup = this.getUserSysIdsFromGroup (strGroupSysId);
          var arrUserSysIds = new ArrayUtil().diff (arrUserSysIdsFromGroup, arrUserSysIdsFromTeam);
          this.insertTeamMembers (arrUserSysIds, strSprintSysId);
      }
  },
  
  /**
   * Prevent public access to this script
   */
  isPublic: function() {
  	return false;
  }
});

Sys ID

5ed435e2ef202000a7450fa3f822562d

Offical Documentation

Official Docs: