Hello,
I am trying to program issue creation according to the input of the user on a date field on an existing issue. The user select either one date, and the issue is created on that that date, or selects a frequency and how many times (daily, weekly, monthly) so that the a new issue is created repeatedly according to that frequency (ex, weekly, 4 times), or select a period, and the issue is created every day of this period. I have selected the following code template but still doesn't work and nothing happens when executed:
import com.atlassian.jira.component.ComponentAccessor
def issueManager = ComponentAccessor.issueManager
def userManager = ComponentAccessor.userManager
def issueFactory = ComponentAccessor.issueFactory
def customFieldManager = ComponentAccessor.customFieldManager
def constantsManager = ComponentAccessor.constantsManager
def currentUser = userManager.getUserByName("admin") // Replace with the appropriate username
def project = issue.getProjectObject()
// Get values from custom fields
def singleDate = customFieldManager.getCustomFieldObjectByName("Single Date").getValue(issue)
def frequency = customFieldManager.getCustomFieldObjectByName("Frequency").getValue(issue)
def numOccurrences = customFieldManager.getCustomFieldObjectByName("Number of Occurrences").getValue(issue)
def startDate = customFieldManager.getCustomFieldObjectByName("Start Date").getValue(issue)
def endDate = customFieldManager.getCustomFieldObjectByName("End Date").getValue(issue)
// Logic to create issues based on the selected options
def dateToCreateIssue = null
if (singleDate) {
dateToCreateIssue = singleDate
} else if (frequency && numOccurrences) {
// Create issues based on frequency and number of occurrences
for (int i = 0; i < numOccurrences; i++) {
if (dateToCreateIssue) {
dateToCreateIssue = incrementDate(dateToCreateIssue, frequency)
} else {
dateToCreateIssue = startDate
}
createNewIssue(project, dateToCreateIssue)
}
} else if (startDate && endDate) {
// Create issues for each day within the date range
dateToCreateIssue = startDate
while (dateToCreateIssue <= endDate) {
createNewIssue(project, dateToCreateIssue)
dateToCreateIssue = incrementDate(dateToCreateIssue, "daily")
}
}
// Function to increment the date based on frequency
Date incrementDate(Date date, String frequency) {
Calendar calendar = Calendar.getInstance()
calendar.setTime(date)
if (frequency == "daily") {
calendar.add(Calendar.DAY_OF_MONTH, 1)
} else if (frequency == "weekly") {
calendar.add(Calendar.WEEK_OF_YEAR, 1)
} else if (frequency == "monthly") {
calendar.add(Calendar.MONTH, 1)
}
return calendar.getTime()
}
// Function to create a new issue
void createNewIssue(project, dateToCreateIssue) {
def newIssue = issueFactory.getIssue()
newIssue.setIssueTypeId("yourIssueType") // Replace with your issue type
newIssue.setProjectObject(project)
newIssue.setSummary("New issue created on ${dateToCreateIssue}")
newIssue.setDescription("Description goes here")
// Set other fields as needed
issueManager.createIssueObject(
currentUser,
newIssue
)
}