js/newsletters/send-emails-to-recipients.js (36 lines of code) (raw):
var entities = require('@jetbrains/youtrack-scripting-api/entities');
var notifications = require('@jetbrains/youtrack-scripting-api/notifications');
var workflow = require('@jetbrains/youtrack-scripting-api/workflow');
var composer = require('./composer');
var filter = require('./filter');
exports.rule = entities.Issue.onChange({
title: 'Send email to recipients',
guard: function(ctx) {
var issue = ctx.issue;
return issue.isReported && issue.fields.becomes(ctx.State, ctx.State.Sent);
},
action: function(ctx) {
var issue = ctx.issue;
workflow.check(issue.reporter.login === ctx.currentUser.login,
'Only ' + issue.reporter.fullName + ' can send this newsletter!');
var emails = filter.getUniqueEmails(issue.fields.Recipients, issue.reporter.email);
var message = composer.composeMessage(issue, emails);
notifications.sendEmail(message, issue);
issue.fields.Recipients.forEach(function(group) {
issue.permittedGroups.add(group);
});
var newComment = issue.addComment('Newsletter was sent to ' +
emails.length + ' recipient(s).');
newComment.permittedUsers.add(issue.reporter);
},
requirements: {
State: {
type: entities.State.fieldType,
Sent: {}
},
Recipients: {
type: entities.UserGroup.fieldType,
multi: true
}
}
});