Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
import com.atlassian.jira.component.ComponentAccessor;
import com.atlassian.jira.security.groups.GroupManager;
import com.atlassian.jira.issue.IssueInputParameters;
import com.atlassian.jira.bc.issue.IssueService;
import com.atlassian.jira.bc.issue.DefaultIssueService;
import com.atlassian.jira.bc.issue.worklog.WorklogInputParametersImpl.Builder;
import com.atlassian.jira.issue.IssueManager;
import com.atlassian.jira.issue.IssueInputParameters;
import com.atlassian.jira.security.*;
import org.slf4j.*;

Logger log = LoggerFactory.getLogger(com.deniz.jira.worklog.scripting.ScriptingService.class);

def issueManager = ComponentAccessor.getIssueManager();
def issueService = ComponentAccessor.getIssueService();
def authenticationContext = ComponentAccessor.getJiraAuthenticationContext();
def customFieldManager = ComponentAccessor.getCustomFieldManager();
def previousTimeSpent = 0;

if (update) {
  previousTimeSpent = previousWorklog.getTimeSpent();
}

def currentUser = authenticationContext.getLoggedInUser();
def issue=worklog.getIssue();
def epicLinkCf = customFieldManager.getCustomFieldObjectByName("Epic Link");
def epicIssue = issue.getCustomFieldValue(epicLinkCf);

def parentObject=issue.getParentObject();
 if(parentObject){
  def epicIssueOfObject=parentObject.getCustomFieldValue(epicLinkCf);
   if(epicIssueOfObject){
    //In this case,epic has a child issue and child issue has a subtask.Worklog is done for this subtask.
   epicIssue = epicIssueOfObject;
   }
   if(parentObject.issueType.name == 'Epic'){
    //In this case,epic has a subtask.Worklog is done for this subtask.
    epicIssue=parentObject;
   }
 }
 
def issueSpentTime=worklog.getTimeSpent();
def diff = issueSpentTime - previousTimeSpent;

if (epicIssue) {
    log.debug("Subtracting {} seconds from remaining estimate of epic {}", diff, epicIssue.getKey());
    def epicEstimate=epicIssue.getEstimate();
    Long epicEstimateUpdated=epicEstimate-diff;
    if (epicEstimateUpdated < 0) {
      epicEstimateUpdated = 0;
    }
    IssueInputParameters issueInputParameters = issueService.newIssueInputParameters();
    issueInputParameters.setRemainingEstimate((epicEstimateUpdated/60) + "m");
    IssueService.UpdateValidationResult updateValidationResult = issueService.validateUpdate(currentUser, epicIssue.getId(), issueInputParameters);
    if(updateValidationResult.isValid()) {
        issueService.update(currentUser, updateValidationResult);
    } else {
        log.error("!!!Error in Worklog Update Script:{}", getErrorCollection.getErrorCollection())
    }
}

...