Skip to content

Instantly share code, notes, and snippets.

@vikrantyadav11
Created May 13, 2023 17:20
Show Gist options
  • Save vikrantyadav11/4e5586af35bd29f1816e8b50e40a44f4 to your computer and use it in GitHub Desktop.
Save vikrantyadav11/4e5586af35bd29f1816e8b50e40a44f4 to your computer and use it in GitHub Desktop.
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.issue.ModifiedValue
import com.atlassian.jira.issue.util.DefaultIssueChangeHolder
import com.atlassian.jira.issue.CustomFieldManager;
import com.atlassian.jira.issue.MutableIssue;
import com.atlassian.jira.issue.index.IssueIndexingService;
def customFieldManager = ComponentAccessor.getCustomFieldManager()
def issue = event.issue
def issueKey = issue.getKey();
final customFieldName = 'Weighted Roadmap Score'
def benefitField = customFieldManager.getCustomFieldObjectByName("Concept Strategy Score")
def strategicField = customFieldManager.getCustomFieldObjectByName("Customer Reach")
def improvementField = customFieldManager.getCustomFieldObjectByName("Impact")
def easeField = customFieldManager.getCustomFieldObjectByName("Competitive Impact")
def leadershipPriority = customFieldManager.getCustomFieldObject(31737)
def parentLinkField = customFieldManager.getCustomFieldObjectByName("Parent Link")
def customField = customFieldManager.getCustomFieldObjects(issue).findByName(customFieldName)
def parentLink = issue.getCustomFieldValue(parentLinkField)
def parentKey = parentLink.key
log.warn parentKey
def leadershipPriorityValue = issue.getCustomFieldValue(leadershipPriority).toString()
log.warn "Leadership Priority : ${leadershipPriorityValue}"
def leadershipScore = 30
////////////////////////////////////////////////////////
//This section will calculate the CODB Score//
////////////////////////////////////////////////////////
//Get Manager
//def customFieldManager = ComponentAccessor.getCustomFieldManager()
//Get Custom Field Value for CODB Value
def CODB = 16334 as long
def CODBWeight = 101
def CODBCustomField = customFieldManager.getCustomFieldObject(CODB)
def CODBValue = issue.getCustomFieldValue(CODBCustomField).toString()
def CODBFactor
def CODBScore
def weightedScore
//logic
log.warn('CODB Value: ' + CODBValue + ' Line 262')
if (CODBValue == 'Yes' && leadershipPriorityValue == 'Yes'){
CODBFactor = 1
CODBScore = (CODBWeight * CODBFactor) + leadershipScore
}
else if (CODBValue == 'Yes') {
CODBFactor = 1
CODBScore = (CODBWeight * CODBFactor)
}else {
CODBFactor = 0
CODBScore = (CODBWeight * CODBFactor)
}
log.warn('CODB Factor: ' + CODBFactor + ' Line 273')
log.warn('CODB Score: ' + CODBScore + ' Line 277')
if(parentKey != null){
def benefitValue = issue.getCustomFieldValue(benefitField).toString().toInteger()
def strategicValue = issue.getCustomFieldValue(strategicField).toString().toInteger()
def improvementValue = issue.getCustomFieldValue(improvementField).toString().toInteger()
def easeValue = issue.getCustomFieldValue(easeField).toString().toInteger()
weightedScore = ((benefitValue*0.3) + (strategicValue*0.2) + (improvementValue*0.1) + (easeValue*0.1))*10
log.warn "weighted Score : ${weightedScore} : ${parentKey} "
if (CODBValue == 'Yes' && leadershipPriorityValue == 'No')
{
customField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(customField), CODBScore as Double), new DefaultIssueChangeHolder())}
else if (CODBValue == 'No' && leadershipPriorityValue == 'Yes')
{
weightedScore = (((benefitValue*0.3) + (strategicValue*0.2) + (improvementValue*0.1) + (easeValue*0.1))*10) + leadershipScore
customField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(customField), weightedScore as Double), new DefaultIssueChangeHolder())
}else if (CODBValue == 'Yes' && leadershipPriorityValue == 'Yes')
{
customField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(customField), CODBScore as Double), new DefaultIssueChangeHolder())
}else
{
customField.updateValue(null, issue, new ModifiedValue(issue.getCustomFieldValue(customField), weightedScore as Double), new DefaultIssueChangeHolder())
}
}
else {
log.warn "Issue is not a child"
}
// Get the issue indexing service
def issueIndexingService = ComponentAccessor.getComponent(IssueIndexingService.class);
// Reindex the issue
issueIndexingService.reIndex(issue);
log.warn("Issue " + issueKey + " has been reindexed");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment