/// <summary> /// Monitor status for an active review, given the key. /// A review is regarded as completed when at least one reviewer is signed off. /// </summary> /// <param name="client">An instance of <see cref="ReviewDashboardServiceClient" />.</param> /// <param name="key">Key of the request to be monitored. Can be accessed from DB.</param> /// <param name="author">Author of the review.</param> /// <returns>True if at least one reviewer is signed off.</returns> public static bool ReviewCompleted(ReviewDashboardServiceClient client, string key, string author) { var response = client.Query(new CodeReviewQuery { Authors = new[] { author }, ReviewStatuses = new[] { CodeReviewStatus.Active }, UserAgent = author }); if (response != null) { if (response.Reviews != null) { foreach (var review in response.Reviews) { if (review != null) { if (review.Key.Equals(key)) { foreach (var reviewer in review.Reviewers) { if (reviewer.Status == ReviewerStatus.SignedOff && MembershipCheckHelpers.IsInSecurityGroup(reviewer.Name, Constants.SecurityGroup)) { Logger.Info("[" + reviewer.DisplayName + "] has approved the request. Review with id = [" + key + "] is completed"); return(true); } } } } } } } return(false); }
public IEnumerable <CodeFlowReview> PullData(DateTime startUtcTime, DateTime endUtcTime) { using (var codeFlowReviewClient = new ReviewDashboardServiceClient()) { var alias = Environment.UserName.Split('\\').Last(); // REVIEW cheap inaccurate way to get user alias Console.WriteLine("Pulling reviews authored by " + alias); var result = codeFlowReviewClient.QueryReviewSummaries(new CodeReviewQuery { CreatedBeforeDate = endUtcTime, CreatedAfterDate = startUtcTime, Authors = new[] { alias }, UserAgent = "EECTES/WorkSummarizer 1.0" }); if (result.Reviews == null) { return(Enumerable.Empty <CodeFlowReview>()); } return(result.Reviews .Select(p => { return new CodeFlowReview { AuthorLogin = p.AuthorLogin, PublishedUtcDate = p.CreatedOn.ToUniversalTime(), ClosedUtcDate = p.CompletedOn.ToUniversalTime(), Name = p.Name, Reviewers = p.Reviewers.Select(s => IdentityUtility.Create(s.Name)) }; }) .ToList()); } }
private static void InitializeClients() { Logger.Debug("Initializing CodeFlow Review Clients..."); _rClient = new ReviewServiceClient(); _qClient = new ReviewDashboardServiceClient(); }