示例#1
0
        public async Task Update(IJiraClient client, DateTime startUpdateDate, string projectKey, ICacheUpdateProgress progress = null)
        {
            await EnsureInitialized();

            progress = progress ?? new NullCacheUpdateProgres();

            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            if (string.IsNullOrWhiteSpace(projectKey))
            {
                throw new ArgumentNullException(nameof(projectKey));
            }

            DateTime lastUpdateDate = await GetLastUpdateDateTime(projectKey, startUpdateDate);

            int itemPaging = 0;

            while (true)
            {
                const int queryLimit = 50;

                IJiraIssue[] updatedIssues = await client.GetIssues(projectKey, lastUpdateDate, queryLimit, itemPaging);

                foreach (var issue in updatedIssues)
                {
                    CachedIssue flatIssue = await client.RetrieveDetails(issue);

                    await _repository.AddOrReplaceCachedIssue(flatIssue);

                    progress.UpdatedIssue(flatIssue.Key, flatIssue.Updated.Value);
                }

                itemPaging += queryLimit;

                if (updatedIssues.Length != queryLimit)
                {
                    break;
                }
            }
        }
示例#2
0
        public ActionResult Report()
        {
            var setup = Session["setup"] as ReportSetup;

            if (setup == null)
            {
                return(RedirectToAction("Index"));
            }
            var issues             = _jiraClient.GetIssues(setup.JiraApiUrl, setup.JiraUserName, setup.JiraPassword, setup.Jql);
            var capacity           = ParseCapacitySetup(setup.WeeklyCapacityHoursPerStream);
            var issueFinalStatuses = ParseIssueFinalStatuses(setup.IssueFinalStatuses);
            var reportData         = _reportService.GetReportData(issues, setup.ColumnLabelPrefix, capacity, issueFinalStatuses);
            var model = new ReportModel()
            {
                ReportSetup = setup,
                ReportData  = reportData
            };

            return(View(model));
        }
示例#3
0
 public IEnumerable <Issue> GetIssues(String projectKey)
 {
     return(client.GetIssues(projectKey).Select(Issue.From).ToArray());
 }