public string BuildPullRequestUrl(TFSAdvanced.Updater.Models.PullRequests.PullRequest pullRequest, string baseUrl) { return ($"{baseUrl}/{pullRequest.repository.project.name}/_git/{pullRequest.repository.name}/pullrequest/{pullRequest.pullRequestId}?view=files"); }
private PullRequest BuildPullRequest(TFSAdvanced.Updater.Models.PullRequests.PullRequest x, Build build) { PullRequest pullRequestDto = new PullRequest { Id = x.pullRequestId, Title = x.title, Url = x.remoteUrl, CreatedDate = x.creationDate, Creator = new User { Name = x.createdBy.displayName, IconUrl = x.createdBy.imageUrl }, Repository = new Repository { Name = x.repository.name, Url = x.repository.remoteUrl, Project = new Project { Name = x.repository.project.name, Url = x.repository.project.remoteUrl } }, MergeStatus = x.mergeStatus == "conflicts" ? MergeStatus.Failed : MergeStatus.Succeeded, IsAutoCompleteSet = x.completionOptions != null, HasEnoughReviewers = x.hasEnoughReviewers, AcceptedReviewers = x.acceptedReviewers, RequiredReviewers = x.requiredReviewers, Reviewers = new List <Reviewer>() }; if (x.reviewers != null) { foreach (var reviewer in x.reviewers) { if (reviewer.isContainer) { continue; } // Only ignore the review of the creator if the vote is approved or noresponse if (reviewer.id == x.createdBy.id && (reviewer.vote == (int)Vote.Approved || reviewer.vote == (int)Vote.NoResponse)) { continue; } var reviewerDto = new Reviewer { Name = reviewer.displayName, IconUrl = reviewer.imageUrl }; switch ((Vote)reviewer.vote) { case Vote.Approved: reviewerDto.ReviewStatus = ReviewStatus.Approved; break; case Vote.ApprovedWithSuggestions: reviewerDto.ReviewStatus = ReviewStatus.ApprovedWithSuggestions; break; case Vote.NoResponse: reviewerDto.ReviewStatus = ReviewStatus.NoResponse; break; case Vote.Rejected: reviewerDto.ReviewStatus = ReviewStatus.Rejected; break; case Vote.WaitingForAuthor: reviewerDto.ReviewStatus = ReviewStatus.WaitingForAuthor; break; } pullRequestDto.Reviewers.Add(reviewerDto); } } if (build == null) { pullRequestDto.BuildStatus = BuildStatus.NoBuild; } else { pullRequestDto.buildId = build.Id; pullRequestDto.BuildUrl = build.Url; pullRequestDto.BuildStatus = build.BuildStatus; } return(pullRequestDto); }