Sidehistorik
...
Tip |
---|
Thanks to Adaptavist for the Script Notice the LimitedPagedRequestImpl(0, 100, 500) lines, if the numbers are to small, nothing will be returned |
Kodeblok |
---|
import com.atlassian.fugue.Option import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.issue.ModifiedValue import com.atlassian.jira.issue.MutableIssue import com.atlassian.jira.issue.util.DefaultIssueChangeHolder import com.atlassian.servicedesk.api.ServiceDeskManager import com.atlassian.servicedesk.api.organization.CustomerOrganization import com.atlassian.servicedesk.api.organization.OrganizationService import com.atlassian.servicedesk.api.organization.OrganizationsQuery import com.atlassian.servicedesk.api.organization.UsersInOrganizationQuery import com.atlassian.servicedesk.api.util.paging.LimitedPagedRequest import com.atlassian.servicedesk.api.util.paging.LimitedPagedRequestImpl import com.onresolve.scriptrunner.runner.customisers.PluginModule import com.onresolve.scriptrunner.runner.customisers.WithPlugin @Grab(group = 'com.atlassian.servicedesk', module = 'jira-servicedesk-api', version = '3.3.0-REL-0012') @WithPlugin("com.atlassian.servicedesk") @PluginModule ServiceDeskManager serviceDeskManager @PluginModule OrganizationService organizationService MutableIssue issue = issue def currentUser = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() def serviceDeskProject = serviceDeskManager.getServiceDeskForProject(issue.projectObject) def serviceDeskId = serviceDeskProject.right()?.get()?.serviceDeskId as Integer if (!serviceDeskId) { log.debug "Could not find service desk id ${serviceDeskId}, maybe the project ${issue.projectObject.key} is not a service desk one." return } def organizationsToSet = [] // get the available organizations for that project def organizationsQuery = new OrganizationsQuery() { @Override Option<Integer> serviceDeskId() { return new Option.Some<Integer>(serviceDeskId) } @Override LimitedPagedRequest pagedRequest() { return new LimitedPagedRequestImpl(0, 10100, 500) } } // iterate over the organizations and if the reporter is part of any keep this organization in a collection organizationService.getOrganizations(currentUser, organizationsQuery).right().get().results.each { organization -> def usersInOrganizationQuery = new UsersInOrganizationQuery() { @Override CustomerOrganization organization() { return organization } @Override LimitedPagedRequest pagedRequest() { return new LimitedPagedRequestImpl(0, 10100, 500) } } if (issue.reporter in organizationService.getUsersInOrganization(currentUser, usersInOrganizationQuery).right().get().results) { organizationsToSet.add(organization) } } def cf = ComponentAccessor.getCustomFieldManager().getCustomFieldObjectByName("Organizations") cf.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(cf), organizationsToSet), new DefaultIssueChangeHolder()) |