Versions Compared

Key

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

Description

Returns the latest due date of all issues in the project.

Configuration

1. Create a Projectrak Script field called "Latest issue due date"

2. Insert the following Groovy script and modify accordingly to your instance:

Groovy Script

...

...

latest_issue_due_date.groovy
linenumbers
Code Block
languagetruegroovy
package deiser.profields.scripts

import com.atlassian.jira.bc.issue.search.SearchService
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.config.properties.APKeys
import com.atlassian.jira.issue.CustomFieldManager
import com.atlassian.jira.issue.fields.CustomField
import com.atlassian.jira.jql.builder.JqlQueryBuilder
import com.atlassian.jira.project.Project
import com.atlassian.jira.web.bean.PagerFilter
import com.deiser.jira.profields.util.ProfieldsDateUtils

import java.time.Instant

//Get the context values
def PROJECT_ID = project.id

//Get services and manager from Jira
def searchService = ComponentAccessor.getOSGiComponentInstanceOfType(SearchService)
def jiraAuthenticationContext = ComponentAccessor.jiraAuthenticationContext

//Get loggedInUser
def loggedInUser = jiraAuthenticationContext.getLoggedInUser()

//Create the query with its conditions
def query = JqlQueryBuilder.newBuilder().where()
        .project(PROJECT_ID)
        .and()
        .unresolved()
        .buildQuery()

//Get max Date
def maxDueDate = Instant.MIN
searchService.search(loggedInUser, query, PagerFilter.unlimitedFilter).results
        .each { issue ->
            def dueDateIssue = issue.getDueDate()
            if(dueDateIssue == null) return

            if(dueDateIssue.toInstant().isAfter(maxDueDate)){
                maxDueDate = dueDateIssue.toInstant()
            }
        }

if(maxDueDate == Instant.MIN) return "No issues with due date"

//Format Date
return ProfieldsDateUtils.formatDate(Date.from(maxDueDate as Instant), APKeys.JIRA_DATE_PICKER_JAVA_FORMAT, loggedInUser)

3. Configure the project's layout including "Latest issue due date" 

4. Associate the layout to the project you need this information to be applied to. 

...