Exemplo n.º 1
0
        public QueryHierarchyItem CreateFolder()
        {
            Guid   projectId = ClientSampleHelpers.FindAnyProject(this.Context).Id;
            string queryPath = "Shared Queries";

            QueryHierarchyItem postedQuery = new QueryHierarchyItem()
            {
                Name     = "Sample Folder",
                IsFolder = true
            };

            VssConnection connection = Context.Connection;
            WorkItemTrackingHttpClient workItemTrackingClient = connection.GetClient <WorkItemTrackingHttpClient>();

            try
            {
                QueryHierarchyItem query = workItemTrackingClient.CreateQueryAsync(postedQuery, projectId, queryPath).Result;

                Console.WriteLine("Folder Successfully Created");
                Console.WriteLine("Id:         {0}", query.Id);
                Console.WriteLine("Name:       {0}", query.Name);
                Console.WriteLine("Path:       {0}", query.Path);

                return(query);
            }
            catch (AggregateException ex)
            {
                Console.WriteLine("Error creating folder: " + ex.InnerException.Message);
                return(null);
            }
        }
Exemplo n.º 2
0
        public static async Task <QueryHierarchyItem> AddQueryAsync(this WorkItemTrackingHttpClient source, TeamProject project, QueryHierarchyItem query, CancellationToken cancellationToken)
        {
            //Have to build up the path to the query
            var queryPath = new QueryPath(query.Path);

            if (queryPath.Parent != null && !queryPath.Parent.IsRoot)
            {
                await source.AddFolderAsync(project, queryPath.Parent, cancellationToken : cancellationToken).ConfigureAwait(false);
            }

            //Clone the query
            var newQuery = new QueryHierarchyItem()
            {
                Clauses       = query.Clauses,
                Columns       = query.Columns,
                FilterOptions = query.FilterOptions,
                IsPublic      = query.IsPublic,
                LinkClauses   = query.LinkClauses,
                Name          = query.Name,
                QueryType     = query.QueryType,
                SortColumns   = query.SortColumns,
                SourceClauses = query.SourceClauses,
                TargetClauses = query.TargetClauses,
                Wiql          = query.Wiql
            };

            return(await source.CreateQueryAsync(newQuery, project.Id, queryPath.Parent?.FullPath, cancellationToken : cancellationToken).ConfigureAwait(false));
        }
Exemplo n.º 3
0
        public void Setup(string queryName, IEnumerable <string> tfsProjectNames, string query)
        {
            foreach (var tfsProjectName in tfsProjectNames)
            {
                var queryHierarchyItems = _witClient.GetQueriesAsync(tfsProjectName, depth: 2).Result;
                var myQueriesFolder     = queryHierarchyItems.FirstOrDefault(qhi => qhi.Name.Equals("My Queries"));
                if (myQueriesFolder == null)
                {
                    continue;
                }

                QueryHierarchyItem togglQuery = null;
                if (myQueriesFolder.Children != null)
                {
                    togglQuery = myQueriesFolder.Children.FirstOrDefault(qhi => qhi.Name.Equals(queryName));
                }

                if (togglQuery != null)
                {
                    continue;
                }

                togglQuery = new QueryHierarchyItem
                {
                    Name     = queryName,
                    Wiql     = query,
                    IsFolder = false
                };
                var result = _witClient.CreateQueryAsync(togglQuery, tfsProjectName, myQueriesFolder.Name).Result;
            }
        }
Exemplo n.º 4
0
        public static async Task GetTask(VssConnection connection, string projeto)
        {
            WorkItemTrackingHttpClient witClient = connection.GetClient <WorkItemTrackingHttpClient>();

            //WorkItem workitem = await witClient.GetWorkItemAsync(4621);

            List <QueryHierarchyItem> queryHierarchyItems = witClient.GetQueriesAsync(projeto, depth: 2).Result;

            QueryHierarchyItem myQueriesFolder = queryHierarchyItems.FirstOrDefault(qhi => qhi.Name.Equals("Shared Queries"));

            if (myQueriesFolder != null)
            {
                string queryName = "Integra";

                // See if our 'REST Sample' query already exists under 'My Queries' folder.
                QueryHierarchyItem newBugsQuery = null;
                if (myQueriesFolder.Children != null)
                {
                    newBugsQuery = myQueriesFolder.Children.FirstOrDefault(qhi => qhi.Name.Equals(queryName));
                }
                if (newBugsQuery == null)
                {
                    // if the 'REST Sample' query does not exist, create it.
                    newBugsQuery = new QueryHierarchyItem()
                    {
                        Name     = queryName,
                        Wiql     = "SELECT [System.Id],[System.WorkItemType],[System.Title],[System.AssignedTo],[System.State],[System.Tags] FROM WorkItems WHERE [System.TeamProject] = @project AND [System.WorkItemType] = 'Bug' AND [System.State] = 'New'",
                        IsFolder = false
                    };
                    newBugsQuery = witClient.CreateQueryAsync(newBugsQuery, projeto, myQueriesFolder.Name).Result;
                }

                WorkItemQueryResult result = witClient.QueryByIdAsync(newBugsQuery.Id).Result;

                if (result.WorkItems.Any())
                {
                    int       skip      = 0;
                    const int batchSize = 100;
                    IEnumerable <WorkItemReference> workItemRefs;
                    do
                    {
                        workItemRefs = result.WorkItems.Skip(skip).Take(batchSize);
                        if (workItemRefs.Any())
                        {
                            // get details for each work item in the batch
                            List <WorkItem> workItems = witClient.GetWorkItemsAsync(workItemRefs.Select(wir => wir.Id)).Result;
                            foreach (WorkItem workItem in workItems)
                            {
                                var teste = workItem;
                            }
                        }
                        skip += batchSize;
                    }while (workItemRefs.Count() == batchSize);
                }
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Create new query
        /// </summary>
        /// <param name="project"></param>
        /// <param name="queryPath"></param>
        /// <param name="QueryName"></param>
        /// <param name="wiqlStr"></param>
        static void AddQuery(string project, string queryPath, string QueryName, string wiqlStr)
        {
            QueryHierarchyItem query = new QueryHierarchyItem();

            query.QueryType = QueryType.Flat;
            query.Name      = QueryName;
            query.Wiql      = wiqlStr;

            query = WitClient.CreateQueryAsync(query, project, queryPath).Result;
        }
Exemplo n.º 6
0
        public QueryHierarchyItem CreateQuery()
        {
            Guid   projectId = ClientSampleHelpers.FindAnyProject(this.Context).Id;
            string queryPath = "My Queries";

            QueryHierarchyItem postedQuery = new QueryHierarchyItem()
            {
                Name = "Sample Query",
                Wiql = "Select [System.Id], [System.Title], [System.State] From WorkItems Where [System.WorkItemType] = 'Bug' order by [Microsoft.VSTS.Common.Priority] asc, [System.CreatedDate] desc"
            };

            VssConnection connection = Context.Connection;
            WorkItemTrackingHttpClient workItemTrackingClient = connection.GetClient <WorkItemTrackingHttpClient>();

            try
            {
                QueryHierarchyItem query = workItemTrackingClient.CreateQueryAsync(postedQuery, projectId, queryPath).Result;

                // Save the ID of the newly created query for use in later samples
                this.Context.SetValue <Guid>("$sampleQueryId", query.Id);

                Console.WriteLine("Query Successfully Created");
                Console.WriteLine("Id:         {0}", query.Id);
                Console.WriteLine("Name:       {0}", query.Name);
                Console.WriteLine("Path:       {0}", query.Path);

                return(query);
            }
            catch (AggregateException ex)
            {
                if (ex.InnerException.Message.Contains("TF237018"))
                {
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    Console.WriteLine("Error creating query: Query name in specified path already exists");
                    Console.ForegroundColor = ConsoleColor.White;
                }

                return(null);
            }
        }
Exemplo n.º 7
0
        public static WorkItemQueryResult ExecuteItemsSelectionWQery(VssConnection _connection, string tag)
        {
            var           teamProjectName        = "WorkPractice";
            VssConnection connection             = _connection;
            WorkItemTrackingHttpClient witClient = connection.GetClient <WorkItemTrackingHttpClient>();

            //Получить 2 уровня элементов иерархии запросов
            List <QueryHierarchyItem> queryHierarchyItems = witClient.GetQueriesAsync(teamProjectName, depth: 2).Result;

            // Найдите папку 'My Queries' folder
            QueryHierarchyItem myQueriesFolder = queryHierarchyItems.FirstOrDefault(qhi => qhi.Name.Equals("My Queries"));

            if (myQueriesFolder != null)
            {
                string queryName = tag + "SomeQueri";

                // See if our 'REST Sample' query already exists under 'My Queries' folder.
                QueryHierarchyItem newBugsQuery = null;
                if (myQueriesFolder.Children != null)
                {
                    newBugsQuery = myQueriesFolder.Children.FirstOrDefault(qhi => qhi.Name.Equals(queryName));
                }
                if (newBugsQuery == null)
                {
                    // if the 'REST Sample' query does not exist, create it.
                    newBugsQuery = new QueryHierarchyItem()
                    {
                        Name     = queryName,
                        Wiql     = "SELECT [System.Id],[System.WorkItemType],[System.Title],[System.AssignedTo],[System.State],[System.Tags] FROM WorkItems WHERE [System.TeamProject] = @project AND [System.WorkItemType] = 'Task' AND [System.State] = 'Done' AND [System.Tags] Contains '" + tag + "' ",
                        IsFolder = false
                    };
                    newBugsQuery = witClient.CreateQueryAsync(newBugsQuery, teamProjectName, myQueriesFolder.Name).Result;
                }

                // Выполняется запрос и получается егоо результат
                return(witClient.QueryByIdAsync(newBugsQuery.Id).Result);;
            }
            return(null);
        }
Exemplo n.º 8
0
        public static async Task <QueryHierarchyItem> AddFolderAsync(this WorkItemTrackingHttpClient source, TeamProject project, QueryPath folderPath, CancellationToken cancellationToken)
        {
            var folder = await source.GetFolderAsync(project, folderPath.FullPath, cancellationToken).ConfigureAwait(false);

            if (folder != null)
            {
                return(folder);
            }

            //Ensure the parent folder exists, unless it is a root path
            cancellationToken.ThrowIfCancellationRequested();
            if (folderPath.Parent != null && !folderPath.Parent.IsRoot)
            {
                await source.AddFolderAsync(project, folderPath.Parent, cancellationToken).ConfigureAwait(false);
            }

            var query = new QueryHierarchyItem()
            {
                Name = folderPath.Name, IsFolder = true
            };

            cancellationToken.ThrowIfCancellationRequested();
            return(await source.CreateQueryAsync(query, project.Id, folderPath.Parent?.FullPath, cancellationToken : cancellationToken).ConfigureAwait(false));
        }
Exemplo n.º 9
0
        void ConnectToOnLineTfsAndCreateQuries(string projectName)
        {
            List <QueryHierarchyItem> queryHierarchyItems = _workItemTrackingClient.GetQueriesAsync(projectName, depth: 2).Result;
            QueryHierarchyItem        sharedQueriesFolder = queryHierarchyItems.FirstOrDefault(qhi => qhi.Name.Equals(QuieriesFolder, StringComparison.InvariantCulture));

            if (sharedQueriesFolder != null)
            {
                _queriesFolder = sharedQueriesFolder.Children?.FirstOrDefault(qhi => qhi.Name.Equals(QueriesFolderName, StringComparison.InvariantCulture));
                if (_queriesFolder == null)
                {
                    QueryHierarchyItem queriesFolder = new QueryHierarchyItem
                    {
                        IsFolder    = true,
                        HasChildren = true,
                        Name        = QueriesFolderName
                    };
                    _queriesFolder = _workItemTrackingClient.CreateQueryAsync(queriesFolder, projectName, sharedQueriesFolder.Name).Result;
                }
            }
        }
Exemplo n.º 10
0
        public static List <WorkItem> getBugs(VssConnection connection)
        {
            // Create instance of WorkItemTrackingHttpClient using VssConnection
            WorkItemTrackingHttpClient witClient = connection.GetClient <WorkItemTrackingHttpClient>();

            List <WorkItem> bugList = new List <WorkItem>();
            // Get 2 levels of query hierarchy items
            List <QueryHierarchyItem> queryHierarchyItems = witClient.GetQueriesAsync(teamProjectName, depth: 2).Result;

            // Search for 'My Queries' folder
            QueryHierarchyItem myQueriesFolder = queryHierarchyItems.FirstOrDefault(qhi => qhi.Name.Equals("My Queries"));

            if (myQueriesFolder != null)
            {
                string queryName = "REST Sample";

                // See if our 'REST Sample' query already exists under 'My Queries' folder.
                QueryHierarchyItem newBugsQuery = null;
                if (myQueriesFolder.Children != null)
                {
                    newBugsQuery = myQueriesFolder.Children.FirstOrDefault(qhi => qhi.Name.Equals(queryName));
                }
                if (newBugsQuery == null)
                {
                    // if the 'REST Sample' query does not exist, create it.
                    newBugsQuery = new QueryHierarchyItem()
                    {
                        Name     = queryName,
                        Wiql     = "SELECT [System.Id],[System.WorkItemType],[System.Title],[System.AssignedTo],[System.State],[System.Tags] FROM WorkItems WHERE [System.TeamProject] = @project AND [System.WorkItemType] = 'Bug' AND [System.State] = 'New'",
                        IsFolder = false
                    };
                    newBugsQuery = witClient.CreateQueryAsync(newBugsQuery, teamProjectName, myQueriesFolder.Name).Result;
                }

                // run the 'REST Sample' query
                WorkItemQueryResult result = witClient.QueryByIdAsync(newBugsQuery.Id).Result;

                if (result.WorkItems.Any())
                {
                    int       skip      = 0;
                    const int batchSize = 100;
                    IEnumerable <WorkItemReference> workItemRefs;
                    do
                    {
                        workItemRefs = result.WorkItems.Skip(skip).Take(batchSize);
                        if (workItemRefs.Any())
                        {
                            // get details for each work item in the batch
                            List <WorkItem> workItems = witClient.GetWorkItemsAsync(workItemRefs.Select(wir => wir.Id)).Result;
                            foreach (WorkItem workItem in workItems)
                            {
                                bugList.Add(workItem);
                                // write work item to console
                                Console.WriteLine("{0} {1}", workItem.Id, workItem.Fields["System.Title"]);
                            }
                        }
                        skip += batchSize;
                    }while (workItemRefs.Count() == batchSize);
                }
                else
                {
                    Console.WriteLine("No bugs were returned from query.");
                }
            }

            return(bugList);
        }
Exemplo n.º 11
0
        public static void SampleREST()
        {
            Uri    collectionUri       = new Uri("https://vso-lis.visualstudio.com");
            string personalAccessToken = "Its my Personal";
            string teamProjectName     = "SDB20";
            // Create a connection object, which we will use to get httpclient objects.  This is more robust
            // then newing up httpclient objects directly.  Be sure to send in the full collection uri.
            // For example:  http://myserver:8080/tfs/defaultcollection
            // We are using default VssCredentials which uses NTLM against a Team Foundation Server.  See additional provided
            // examples for creating credentials for other types of authentication.
            VssConnection connection = new VssConnection(collectionUri, new VssCredentials());

            // Create instance of WorkItemTrackingHttpClient using VssConnection
            WorkItemTrackingHttpClient witClient = connection.GetClient <WorkItemTrackingHttpClient>();

            // Get 2 levels of query hierarchy items
            List <QueryHierarchyItem> queryHierarchyItems = witClient.GetQueriesAsync(teamProjectName, depth: 2).Result;

            // Search for 'My Queries' folder
            QueryHierarchyItem myQueriesFolder = queryHierarchyItems.FirstOrDefault(qhi => qhi.Name.Equals("My Queries"));

            if (myQueriesFolder != null)
            {
                string queryName = "REST Sample";

                // See if our 'REST Sample' query already exists under 'My Queries' folder.
                QueryHierarchyItem newBugsQuery = null;
                if (myQueriesFolder.Children != null)
                {
                    newBugsQuery = myQueriesFolder.Children.FirstOrDefault(qhi => qhi.Name.Equals(queryName));
                }
                if (newBugsQuery == null)
                {
                    // if the 'REST Sample' query does not exist, create it.
                    newBugsQuery = new QueryHierarchyItem()
                    {
                        Name     = queryName,
                        Wiql     = "SELECT [System.Id],[System.WorkItemType],[System.Title],[System.AssignedTo],[System.State],[System.Tags] FROM WorkItems WHERE [System.TeamProject] = @project AND [System.WorkItemType] = 'Bug' AND [System.State] = 'New'",
                        IsFolder = false
                    };
                    newBugsQuery = witClient.CreateQueryAsync(newBugsQuery, teamProjectName, myQueriesFolder.Name).Result;
                }

                // run the 'REST Sample' query
                WorkItemQueryResult result = witClient.QueryByIdAsync(newBugsQuery.Id).Result;

                if (result.WorkItems.Any())
                {
                    int       skip      = 0;
                    const int batchSize = 100;
                    IEnumerable <WorkItemReference> workItemRefs;
                    do
                    {
                        workItemRefs = result.WorkItems.Skip(skip).Take(batchSize);
                        if (workItemRefs.Any())
                        {
                            // get details for each work item in the batch
                            List <WorkItem> workItems = witClient.GetWorkItemsAsync(workItemRefs.Select(wir => wir.Id)).Result;
                            foreach (WorkItem workItem in workItems)
                            {
                                // write work item to console
                                Console.WriteLine("{0} {1}", workItem.Id, workItem.Fields["System.Title"]);
                            }
                        }
                        skip += batchSize;
                    }while (workItemRefs.Count() == batchSize);
                }
                else
                {
                    Console.WriteLine("No work items were returned from query.");
                }
            }
        }