Exemple #1
0
        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);
            }
        }
Exemple #3
0
        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"];
            }
        }
Exemple #4
0
        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;
        }
Exemple #7
0
        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;
        }