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