Last active
January 19, 2023 07:19
-
-
Save ElieMalesys/10739414 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import com.atlassian.jira.ComponentManager | |
import com.atlassian.jira.component.ComponentAccessor | |
import com.atlassian.jira.security.groups.GroupManager | |
import com.atlassian.jira.project.ProjectManager | |
import com.atlassian.crowd.embedded.api.User | |
import com.atlassian.jira.bc.issue.search.SearchService | |
import com.atlassian.jira.jql.builder.JqlQueryBuilder | |
import com.atlassian.jira.issue.CustomFieldManager | |
import com.atlassian.jira.issue.fields.CustomField | |
import com.atlassian.jira.issue.context.IssueContextImpl | |
import com.atlassian.jira.issue.fields.config.FieldConfig | |
import com.atlassian.jira.issue.customfields.manager.OptionsManager | |
import com.atlassian.jira.issue.customfields.option.* | |
import com.atlassian.query.operator.Operator | |
import com.atlassian.query.operand.Operands | |
import com.atlassian.query.order.SortOrder | |
import com.atlassian.jira.web.bean.PagerFilter | |
import com.atlassian.mail.Email | |
import com.atlassian.mail.server.MailServerManager | |
import com.atlassian.mail.server.SMTPMailServer | |
ComponentManager componentManager = ComponentManager.getInstance(); | |
ProjectManager projectManager = componentManager.getProjectManager(); | |
OptionsManager optionsManager = ComponentManager.getComponentInstanceOfType(OptionsManager.class); | |
CustomFieldManager customFieldManager = componentManager.getCustomFieldManager(); | |
GroupManager groupManager = ComponentAccessor.getGroupManager(); | |
SearchService searchService = componentManager.getSearchService(); | |
User currentUser = componentManager.getJiraAuthenticationContext().getLoggedInUser(); | |
MailServerManager mailServerManager = componentManager.getMailServerManager(); | |
SMTPMailServer mailServer = mailServerManager.getDefaultSMTPMailServer(); | |
CustomField kcellCustomField = customFieldManager.getCustomFieldObjectByName("Requesting KCell"); | |
Long kazanSupportId = projectManager.getProjectObjByKey("AWL-KAZAN-SUPPORT").getId(); | |
IssueContextImpl issueContext = new IssueContextImpl(kazanSupportId,null); | |
FieldConfig fieldConfig = kcellCustomField.getRelevantConfig(issueContext); | |
def optionsList = optionsManager.getOptions(fieldConfig).getRootOptions(); | |
String display =''; | |
if (mailServer) { | |
for (option in optionsList){ | |
display += '\n ++++++++++++++++++++ KCell : ' + option.getValue() + ' ++++++++++++++++++++ \n\n'; | |
def queryWithDate = JqlQueryBuilder.newBuilder().where().project(kazanSupportId).and().assigneeIsEmpty().and().resolution("unresolved").and().addCondition("KCell Impacted",Operator.EQUALS,Operands.valueOf(option.getValue())).and().created().ltEq("-2d").buildQuery(); | |
if (searchService.searchCount(currentUser, queryWithDate) == 0){ | |
display += 'QUERY : ' + searchService.getJqlString(queryWithDate) + '\n\n'; | |
display += 'No unassigned issues older than 2 days => skipping...\n' | |
}else{ | |
def query = JqlQueryBuilder.newBuilder().where().project(kazanSupportId).and().assigneeIsEmpty().and().resolution("unresolved").and().addCondition("KCell Impacted",Operator.EQUALS,Operands.valueOf(option.getValue())).endWhere().orderBy().createdDate(SortOrder.ASC).buildQuery(); | |
display += 'QUERY : ' + searchService.getJqlString(query) + '\n\n'; | |
def issuesList = searchService.search(currentUser,query,PagerFilter.getUnlimitedFilter()).getIssues(); | |
String mailTo=''; | |
for (user in groupManager.getUsersInGroup(option.getValue())){ | |
mailTo += ',' + user.getEmailAddress(); | |
} | |
if (mailTo.empty){ | |
display += 'WARNING : No relay for ' + option.getValue() + ' => skipping...\n' | |
}else{ | |
mailTo = mailTo.substring(1); | |
display += 'Sending email to \"' + mailTo + '\" for the following ' + issuesList.size() + ' issue(s) : \n'; | |
String mailBody; | |
if (issuesList.size() == 1){ | |
mailBody=' There is an unassigned issue for your KCell :\n\n'; | |
}else{ | |
mailBody=' There are '+ issuesList.size() +' unassigned issues for your KCell :\n\n'; | |
} | |
for (issue in issuesList){ | |
display += issue.getPriority().getString("name") + '\t Created : ' + issue.getCreated().toString().substring(0, 19) + '\t' + issue.getKey() + ' : ' + issue.getSummary() + '\n'; | |
mailBody += '\t' + issue.getPriority().getString("name") + '\t Created : ' + issue.getCreated().toString().substring(0, 19) + '\thttps://jira.itsm.atosworldline.com/jira/browse/' + issue.getKey() + ' : ' + issue.getSummary() + '\n'; | |
} | |
mailBody += '\n Please, don\'t forget to use \"Starting\" workflow transition when you start working on an issue.\n'; | |
mailBody += ' if nobody in your KCell is able to work on a particular issue, please assign this issue to \"Support Team\".(see https://zen.myatos.net/space/in/AWL_Kazan/post?id=4464939)\n'; | |
mailBody += '\n\nRegards,\nSDCO Development Support team' | |
Email email = new Email(mailTo); | |
email.setSubject('Unassigned issue(s) for ' + option.getValue().substring(11).toUpperCase()); | |
email.setBody(mailBody); | |
mailServer.send(email); | |
} | |
} | |
} | |
} | |
else { | |
display ='No SMTP mail server defined'; | |
} | |
return display; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment