public async Task Handle(MetricQueryRequest <WorkItemsWidget> request, CancellationToken cancellationToken) { const string workItemsQuery = "SELECT [System.Id] FROM WorkItems " + "WHERE [System.AssignedTo] = {0} " + "AND [State] NOT IN ('Done','Closed','Inactive','Completed')"; var query = string.Format(workItemsQuery, request.DataContext.AssignedTo); var api = new AzureDevOpsApi(request.DataContext.ConnectionSettings); var workItemQueryResult = await api.QueryWorkItemsAsync(query, cancellationToken).ConfigureAwait(false); var ids = workItemQueryResult.WorkItems.Select(w => w.Id).ToList(); if (ids.Count != 0) { var workItems = await api.GetWorkItemsAsync(ids, cancellationToken).ConfigureAwait(false); _uiAction.Invoke(() => UpdateWidget(request.DataContext, workItemQueryResult.WorkItems, workItems)); } else { request.DataContext.Value = 0; request.DataContext.State = State.Ok; _uiAction.Invoke(request.DataContext.Clear); } }
public async Task Handle(MetricQueryRequest <WorkItemQueryWidget> request, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(request.DataContext.QueryId)) { return; } var api = new AzureDevOpsApi(request.DataContext.ConnectionSettings); var workItemQueryResult = await api.QueryWorkItemsByIdAsync(request.DataContext.QueryId, cancellationToken).ConfigureAwait(false); var ids = workItemQueryResult.WorkItems.Select(w => w.Id).ToList(); if (ids.Any()) { var workItems = await api.GetWorkItemsAsync(ids, cancellationToken).ConfigureAwait(false); _uiAction.Invoke(() => UpdateWidget(request.DataContext, workItemQueryResult.WorkItems, workItems)); } else { request.DataContext.Value = 0; request.DataContext.State = State.Ok; _uiAction.Invoke(request.DataContext.Clear); } }
public async Task Handle(InitializeRequest <WorkItemQueryWidget> request, CancellationToken cancellationToken) { var api = new AzureDevOpsApi(request.DataContext.ConnectionSettings); var workItemQueries = await api.GetWorkItemQueriesAsync(request.DataContext.Project, request.DataContext.Query, 1, cancellationToken).ConfigureAwait(false); if (workItemQueries.Count == 0) { request.DataContext.State = State.Unknown; request.DataContext.QueryId = string.Empty; request.DataContext.URL = string.Empty; _uiAction.Invoke(request.DataContext.Clear); request.DataContext.Clear(); _logger.Error($"Work item query {request.DataContext.Query} was not found."); } else { var query = workItemQueries.Value.First(); request.DataContext.QueryId = query.Id; request.DataContext.URL = query.Links["html"]["href"]; } }
public async Task Handle(HealthCheckRequest <ReleaseWidget> request, CancellationToken cancellationToken) { var widget = request.DataContext; var api = new AzureDevOpsApi(widget.ConnectionSettings); var releases = await api.GetReleasesAsync(widget.Project, widget.DefinitionId, 1, cancellationToken).ConfigureAwait(false); if (releases.Count == 0) { widget.State = State.None; return; } var release = releases.Value.First(); UpdateInfo(widget, release); _uiAction.Invoke(() => UpdateEnvironments(widget, release)); var deployments = await api.GetDeploymentsAsync(widget.Project, widget.DefinitionId, 10, cancellationToken).ConfigureAwait(false); if (deployments.Count > 0) { UpdateHistory(widget, deployments.Value.ToList()); } }
public async Task Handle(MetricQueryRequest <IndexCountWidget> request, CancellationToken cancellationToken) { var indexCountWidget = request.DataContext; var client = elasticsearchHelper.GetElasticClient(indexCountWidget); var indexCountResponse = await client.IndexListAsync(cancellationToken); if (indexCountResponse.IsValid) { request.DataContext.Value = indexCountResponse.Indices.Length; if (uiAction != null) //uiAction is null on unit tests... { CollectionSynchronizer <IndexEntry, Item> synchronizer = null; switch (indexCountWidget.IndexDetails) { case IndexDetail.None: synchronizer = GetNoneSynchronizer(request); break; case IndexDetail.Health: synchronizer = GetHealthSynchronizer(request); break; case IndexDetail.DocumentsCount: synchronizer = GetDocumentsCountSynchronizer(request); break; case IndexDetail.DeletedDocumentsCount: synchronizer = GetDeletedDocumentsCountSynchronizer(request); break; case IndexDetail.TotalStoreSize: synchronizer = GetTotalStoreSizeSynchronizer(request); break; case IndexDetail.PrimaryStoreSize: synchronizer = GetPrimaryStoreSizeSynchronizer(request); break; } uiAction.Invoke(() => synchronizer.Synchronize(indexCountResponse.Indices, request.DataContext.Items)); } request.DataContext.State = State.Ok; } else { indexCountWidget.State = State.Invalid; } }
public async Task Handle(MetricQueryRequest <GitHubIssuesWidget> request, CancellationToken cancellationToken) { var issues = await new GitHubApi().GetIssuesAsync(request.DataContext.Owner, request.DataContext.Repository).ConfigureAwait(false); var list = issues.ToList(); request.DataContext.Value = list.Count; var synchronizer = GetSynchronizer(request); _uiAction.Invoke(() => synchronizer.Synchronize(list, request.DataContext.Items)); request.DataContext.State = State.Ok; }
public async Task Handle(MetricQueryRequest <PullRequestsWidget> request, CancellationToken cancellationToken) { if (string.IsNullOrEmpty(request.DataContext.RepositoryId)) { return; } var api = new AzureDevOpsApi(request.DataContext.ConnectionSettings); var pullRequests = await api.GetPullRequestsAsync( request.DataContext.Project, request.DataContext.RepositoryId, request.DataContext.SourceBranch, request.DataContext.TargetBranch, cancellationToken).ConfigureAwait(false); request.DataContext.Value = pullRequests.Count; var synchronizer = GetSynchronizer(request); _uiAction.Invoke(() => synchronizer.Synchronize(pullRequests.Value.ToList(), request.DataContext.Items)); request.DataContext.State = State.Ok; }