public async Task <IActionResult> GetBurndownDataAsync([FromQuery(Name = QueryStringParameters.TeamName)] string teamName, [FromQuery(Name = QueryStringParameters.Milestone)] string milestone, [FromQuery(Name = QueryStringParameters.Label)] string label, [FromQuery] bool includeInvestigations, CancellationToken cancellationToken) { if (!ModelState.IsValid) { throw new InvalidOperationException(ModelState.Values.First().Errors.First().ErrorMessage); } IWorkEstimator workEstimator = await GetWorkEstimatorAsync(teamName, cancellationToken); TeamInfo team = await this.GetCurrentTeamAsync(teamName, cancellationToken); IEnumerable <string> labels = null; if (label != null) { labels = label.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries).Select(item => item.Trim()).ToArray(); } BurndownDTO burnDownData = await workEstimator.GetBurndownDataAsync( new IssuesQuery { Team = team, Milestone = milestone, FilterLabels = labels, IncludeInvestigations = includeInvestigations, Clause = IssuesQueryClause.All, QueryIssues = true }, cancellationToken); return(new JsonResult(burnDownData)); }
public async Task <ActionResult <MergedPRsViewModel> > ExportMarkdown(string team, CancellationToken cancellationToken) { if (!ModelState.IsValid) { throw new InvalidOperationException(ModelState.Values.First().Errors.First().ErrorMessage); } IWorkEstimator workEstimator = await GetWorkEstimatorAsync(team, cancellationToken); TeamInfo teamInfo = await this.GetCurrentTeamAsync(team, cancellationToken); return(new MergedPRsViewModel { PullRequests = await workEstimator.GetPullRequestsAsync(DateTimeOffset.UtcNow.AddDays(-7), cancellationToken), Team = teamInfo, IconRetriever = await this.CreateProfileIconRetriever(teamInfo, cancellationToken) }); }