/// <summary> /// Generates batch header objects to be used in batch processing of Issues and Worklogs /// </summary> /// <param name="jiraBatchDataHeader">A <see cref="JiraBatchDataHeader" /> object with initial input data</param> /// <returns>A list of <see cref="JiraBatchDataHeader" /> objects with batch data</returns> private static List <JiraBatchDataHeader> GenerateBatchHeaders(JiraBatchDataHeader jiraBatchDataHeader) { var headerList = new List <JiraBatchDataHeader>(); if (jiraBatchDataHeader.TotalItemsCount > 100) { var maxBatches = jiraBatchDataHeader.TotalItemsCount / 100 + (jiraBatchDataHeader.TotalItemsCount % 100 == 0 ? 0 : 1); foreach (var batchNumber in Enumerable.Range(0, maxBatches)) { var startIndex = batchNumber * 100; var endIndex = startIndex + 99 < jiraBatchDataHeader.TotalItemsCount ? startIndex + 99 : jiraBatchDataHeader.TotalItemsCount; headerList.Add( new JiraBatchDataHeader(jiraBatchDataHeader.Query, jiraBatchDataHeader.TotalItemsCount, jiraBatchDataHeader.StartDate, jiraBatchDataHeader.EndDate, startIndex, endIndex, batchNumber)); } } else { headerList.Add(new JiraBatchDataHeader(jiraBatchDataHeader.Query, jiraBatchDataHeader.TotalItemsCount, jiraBatchDataHeader.StartDate, jiraBatchDataHeader.EndDate, 0, 99)); } return(headerList); }
private async Task <JiraBatchDataHeader> GetHeader(string jql) { var firstIssue = await _jira.Issues.GetIssuesFromJqlAsync(jql, 0); var header = new JiraBatchDataHeader(jql, firstIssue.TotalItems); return(header); }
public async Task <IEnumerable <JiraIssue> > GetEpicIssuesBatch(JiraBatchDataHeader jiraBatchDataHeader) { var issuesBatch = await _jira.Issues.GetIssuesFromJqlAsync(jiraBatchDataHeader.Query, 100, jiraBatchDataHeader.BatchStartAtIndex); var processedIssues = new List <JiraIssue>(); foreach (var i in issuesBatch.ToList()) { var ji = i.Convert(); await SetSubTaskEpicLink(ji); processedIssues.Add(ji); } return(processedIssues); }