Пример #1
0
 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");
 }
Пример #2
0
        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);
        }