Esempio n. 1
0
        private async Task <IEnumerable <Wit> > InternalGetWorkItemsAsync(string query, string[] fields, int?top, bool?timePrecision,
                                                                          WorkItemExpand?expand, WorkItemErrorPolicy?errorPolicy,
                                                                          CancellationToken cancellationToken)
        {
            log?.WriteLine(LogLevel.Query, query);

            Wiql wiql = new Wiql {
                Query = query
            };

            if (errorPolicy == null)
            {
                errorPolicy = ErrorPolicy;
            }

            using var mc = log?.Enter(LogLevel.RawApis, new object[] { wiql, timePrecision, top, null, cancellationToken }, "QueryByWiqlAsync");

            // Return a list of URLs + Ids for matching workItems.
            WorkItemQueryResult queryResult = await WorkItemClient.QueryByWiqlAsync(wiql, timePrecision, top, userState : null, cancellationToken)
                                              .ConfigureAwait(false);

            if (queryResult.WorkItems?.Any() == true)
            {
                var ids = queryResult.WorkItems.Select(wi => wi.Id).ToList();

                // Get the actual work items from the IDs; chunked.
                return(await InternalGetWitsByIdChunked(ids, fields, queryResult.AsOf, expand, errorPolicy, cancellationToken)
                       .ConfigureAwait(false));
            }

            return(Enumerable.Empty <Wit>());
        }
        /// <summary>
        /// TODO: Return an set of objects which contains data like - link to the WorkItem
        /// </summary>
        /// <returns></returns>
        private async Task <int> FindActiveWorkItemsForCurrentUser(string mailAddress)
        {
            var workItemQueryResult = await WorkItemClient.QueryByWiqlAsync(new Wiql
            {
                Query =
                    string.Format(AssignedToWorkItemsQuery, mailAddress)
            }, "VSOnline", top : 100).ConfigureAwait(false);

            return(workItemQueryResult.WorkItems.Count());
        }