js/round-robin/set-assignee.js (34 lines of code) (raw):
var entities = require('@jetbrains/youtrack-scripting-api/entities');
var search = require('@jetbrains/youtrack-scripting-api/search');
exports.rule = entities.Issue.onChange({
title: 'Set Assignee automatically via Round Robin scheme',
guard: function(ctx) {
var issue = ctx.issue;
return issue.becomesReported && !issue.fields.Assignee;
},
action: function(ctx) {
var assignees = ctx.Assignee.values;
var numbers = {};
assignees.forEach(function(assignee) {
numbers[assignee.login] = 0;
});
var issues = search.search(ctx.issue.project, '#unresolved has: Assignee');
issues.forEach(function(issue) {
numbers[issue.fields.Assignee.login] += 1;
});
var min = Number.MAX_VALUE;
var user = null;
assignees.forEach(function(assignee) {
if (numbers[assignee.login] < min) {
min = numbers[assignee.login];
user = assignee;
}
});
ctx.issue.fields.Assignee = user;
},
requirements: {
Assignee: {
type: entities.User.fieldType
}
}
});