Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

With out user names is possible to Approve CAB

Venkatesh Bhureddy September 15, 2022

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.user.ApplicationUser
import com.atlassian.sal.api.ApplicationProperties
import com.atlassian.sal.api.UrlMode
import com.onresolve.scriptrunner.runner.ScriptRunnerImpl
import com.onresolve.scriptrunner.runner.rest.common.CustomEndpointDelegate
import com.onresolve.scriptrunner.runner.util.UserMessageUtil
import groovy.transform.BaseScript
import com.atlassian.jira.issue.Issue
import com.atlassian.jira.issue.link.IssueLink
import com.atlassian.jira.issue.link.IssueLinkManager
import com.atlassian.jira.event.type.EventDispatchOption

import javax.ws.rs.core.MultivaluedMap
import javax.ws.rs.core.Response

@BaseScript CustomEndpointDelegate delegate

cabMemberApprove(httpMethod: "GET") { MultivaluedMap queryParams ->

def response = ""
synchronized(this){
Long issueId = queryParams.getFirst("issueId") as Long
def customFieldManager = ComponentAccessor.customFieldManager

StringBuilder bodyB = new StringBuilder()

ApplicationUser user = ComponentAccessor.getJiraAuthenticationContext().getLoggedInUser() as ApplicationUser
def issueManager = ComponentAccessor.getIssueManager()
Issue issue = issueManager.getIssueObject(issueId)

CustomField pendingWithCf = customFieldManager.getCustomFieldObjectsByName("Change Pending With")[0]
Collection<ApplicationUser> pendingWith = issue.getCustomFieldValue(pendingWithCf) as Collection<ApplicationUser>
if(!pendingWith) {
pendingWith = new ArrayList<ApplicationUser>()
}

CustomField changeApprovedByCF = customFieldManager.getCustomFieldObjectsByName("Change Approved By")[0]
Collection<ApplicationUser> changeApprovedBy = issue.getCustomFieldValue(changeApprovedByCF) as Collection<ApplicationUser>
if(!changeApprovedBy) {
changeApprovedBy = new ArrayList<ApplicationUser>()
}

if(pendingWith.contains(user) && !changeApprovedBy.contains(user)) {
changeApprovedBy.add(user)
pendingWith.remove(user)
issue.setCustomFieldValue(pendingWithCf, pendingWith)
issue.setCustomFieldValue(changeApprovedByCF, changeApprovedBy)
bodyB.append("${issue.key} : Approved")
issueManager.updateIssue(user, issue, EventDispatchOption.DO_NOT_DISPATCH, false)
} else {
bodyB.append("${issue.key} : Already Approved")
}

def flag = [
type : 'info',
title: 'CAB',
close: 'auto',
body : bodyB.toString()
]

UserMessageUtil.flag(flag)

def applicationProperties = ScriptRunnerImpl.getOsgiService(ApplicationProperties)
def baseUrl = applicationProperties.getBaseUrl(UrlMode.ABSOLUTE)
response = Response.temporaryRedirect(URI.create("${baseUrl}/browse/${issue.key}")).build()
}
return response
}

 

 

//////////////////////////////////////////////////////

import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.security.groups.GroupManager
import com.atlassian.crowd.embedded.api.Group

GroupManager grpManager = ComponentAccessor.groupManager
def users = grpManager.getUsersInGroup("CAB")

def customFieldManager = ComponentAccessor.getCustomFieldManager()
def usersCf = customFieldManager.getCustomFieldObjectsByName("CAB")[0]
issue.setCustomFieldValue(usersCf, users)

//def pendingWithCf = customFieldManager.getCustomFieldObjectsByName("Change Pending With")[0]
//issue.setCustomFieldValue(pendingWithCf, users)

0 answers

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events