Exemplo n.º 1
0
        public FormLayout Layout_Get()
        {
            //get process id stored in cache so we don't have to load it each time
            System.Guid processId = Context.GetValue <Guid>("$processId");

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            Console.Write("Getting layout for '{0}'....", _witRefName);

            FormLayout layout = client.GetFormLayoutAsync(processId, _witRefName).Result;

            Console.WriteLine("success");
            Console.WriteLine("");

            List <Page> pages = layout.Pages as List <Page>;

            foreach (Page page in pages)
            {
                Console.WriteLine("{0} ({1})", page.Label, page.Id);

                foreach (Section section in page.Sections)
                {
                    Console.WriteLine("    {0}", section.Id);

                    foreach (Group group in section.Groups)
                    {
                        Console.WriteLine("        {0} ({1})", group.Label, group.Id);
                    }
                }
            }

            return(layout);
        }
Exemplo n.º 2
0
        public List <ProcessInfo> Process_List()
        {
            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            Console.Write("Getting list of processes....");

            List <ProcessInfo> list = client.GetListOfProcessesAsync().Result;

            if (list == null || list.Count == 0)
            {
                Console.WriteLine("No processes found");
            }
            else
            {
                Console.WriteLine("Done");

                foreach (var item in list)
                {
                    Console.WriteLine("{0}    {1}    {2}", item.Name, item.TypeId, item.ReferenceName);
                }
            }

            return(list);
        }
Exemplo n.º 3
0
        public ProcessInfo Process_Get()
        {
            ProcessInfo processInfo = null;

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            //extra step to get the process by name
            //you should not have to do this
            List <ProcessInfo> list = client.GetListOfProcessesAsync().Result;
            ProcessInfo        item = list.Find(x => x.ReferenceName == _refName);

            //we did not find the process by name
            if (item == null)
            {
                Console.WriteLine("Process '{0}' not found", _refName);
                return(null);
            }

            //we found something, so lets store the id in cache
            Context.SetValue <Guid>("$processId", item.TypeId);

            //load the process by id
            processInfo = client.GetProcessByItsIdAsync(item.TypeId).Result;

            Console.WriteLine("Get process...success");
            Console.WriteLine("{0}    {1}", _refName, processInfo.TypeId);

            return(processInfo);
        }
Exemplo n.º 4
0
        public ProcessInfo Get()
        {
            System.Guid processTypeId;
            ProcessInfo processInfo = null;

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            Console.Write("Get process....");

            //get a list of the procesess so i can pull the right process and get the id
            //shouldn't need to do this in production code. Just save the typeId to load process directly
            List <ProcessInfo> list = client.GetListOfProcessesAsync().Result;

            //get the process for a specific refname
            var item = list.Find(x => x.ReferenceName == _refname);

            if (item == null)
            {
                Console.WriteLine("Failed");
                Console.WriteLine("No process found for '{0}'", _refname);
            }
            else
            {
                processTypeId = item.TypeId;

                //load the process by id
                processInfo = client.GetProcessByItsIdAsync(processTypeId).Result;

                Console.WriteLine("success");
                Console.WriteLine("{0}    {1}", _refname, processInfo.TypeId);
            }

            return(processInfo);
        }
Exemplo n.º 5
0
        public static ProcessWorkItemType CloneWorkItemType(VssConnection connection, string witRefName, Guid processId)
        {
            ProcessWorkItemType wit = Process.GetWorkItemType(connection, processId, witRefName);

            if (wit == null)
            {
                return(null);
            }

            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            CreateProcessWorkItemTypeRequest createWitRequest = new CreateProcessWorkItemTypeRequest()
            {
                Color        = wit.Color,
                Description  = wit.Description,
                Name         = wit.Name,
                Icon         = wit.Icon,
                InheritsFrom = wit.Inherits,
                IsDisabled   = false
            };

            ProcessWorkItemType results = client.CreateProcessWorkItemTypeAsync(createWitRequest, processId).Result;

            return(results);
        }
        public ProcessTemplate(string accountUri, string token)
        {
            var           Credentials = new VssBasicCredential("", token);
            VssConnection connection  = new VssConnection(new System.Uri("https://whateveryousay.visualstudio.com/"), Credentials);

            witProcessClient = connection.GetClient <WorkItemTrackingProcessHttpClient>();
            witClient        = connection.GetClient <WorkItemTrackingHttpClient>();
        }
        private static List <WorkItemTypeModel> GetProcessWorkItemTypes(VssConnection connection, Process process)
        {
            WorkItemTrackingProcessHttpClient workClient = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            List <WorkItemTypeModel> types = workClient.GetWorkItemTypesAsync(process.Id).Result;

            return(types);
        }
Exemplo n.º 8
0
        public ProcessWorkItemType WorkItemTypes_Create()
        {
            //get process id stored in cache so we don't have to load it each time
            System.Guid processId = Context.GetValue <Guid>("$processId");

            ProcessWorkItemType processWorkItemType = null;

            CreateProcessWorkItemTypeRequest createWorkItemType = new CreateProcessWorkItemTypeRequest()
            {
                Name        = "Change Request",
                Description = "Change request to track requests for changes :)",
                Color       = "f6546a",
                Icon        = "icon_airplane"
                              //InheritsFrom = "Microsoft.VSTS.WorkItemTypes.UserStory"
            };

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            Console.Write("Does work item type '{0}' already exists? ... ", createWorkItemType.Name);

            //get list of work item types and see if wit exists
            List <ProcessWorkItemType> list = client.GetProcessWorkItemTypesAsync(processId).Result;

            processWorkItemType = list.Find(x => x.Name == "Change Request");

            if (processWorkItemType == null)
            {
                Console.WriteLine("No");
                Console.WriteLine("");
                Console.Write("Creating new work item type '" + createWorkItemType.Name + "'...");

                try
                {
                    //create new work item type
                    processWorkItemType = client.CreateProcessWorkItemTypeAsync(createWorkItemType, processId).Result;

                    Console.WriteLine("success");
                    Console.WriteLine("{0} : {1}", processWorkItemType.Name, processWorkItemType.ReferenceName);
                }
                catch (Exception ex)
                {
                    Console.WriteLine("failed");
                    Console.WriteLine("Error creating work item type: " + ex.InnerException.Message);
                }
            }
            else
            {
                Console.WriteLine("Yes");
                Console.WriteLine("{0} : {1}", processWorkItemType.Name, processWorkItemType.ReferenceName);
            }

            Context.SetValue <ProcessWorkItemType>("$newWorkItemType", processWorkItemType);

            return(processWorkItemType);
        }
Exemplo n.º 9
0
 static void InitClients(VssConnection Connection)
 {
     WitClient            = Connection.GetClient <WorkItemTrackingHttpClient>();
     BuildClient          = Connection.GetClient <BuildHttpClient>();
     ProjectClient        = Connection.GetClient <ProjectHttpClient>();
     GitClient            = Connection.GetClient <GitHttpClient>();
     TfvsClient           = Connection.GetClient <TfvcHttpClient>();
     TestManagementClient = Connection.GetClient <TestManagementHttpClient>();
     ProcessHttpClient    = Connection.GetClient <WorkItemTrackingProcessHttpClient>();
 }
Exemplo n.º 10
0
        public ProcessInfo Process_GetById()
        {
            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();
            List <ProcessInfo> processes             = this.Process_List();

            var processInfo = client.GetProcessByItsIdAsync(Context.GetValue <Guid>("$processId")).Result;

            return(processInfo);
        }
Exemplo n.º 11
0
        public Group Group_AddWithFields()
        {
            //get process id stored in cache so we don't have to load it each time
            System.Guid processId = Context.GetValue <Guid>("$processId");

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            Console.Write("Getting form layout to find all pages, sections, and groups...");

            FormLayout layout = client.GetFormLayoutAsync(processId, _witRefName).Result;

            //searching through the layout page to find the right page, section, and group
            Page  page  = ProcessHelper.getPage(layout, "Details");
            Group group = ProcessHelper.getGroup(layout, "Details", "Section2", "NewGroup");

            Console.WriteLine("done");

            if (group != null)
            {
                Console.WriteLine("Group '{0}' already exists on section '{1}' on page '{2}'", group.Label, "Section2", page.Label);
            }
            else
            {
                Console.Write("Creating new group 'NewGroup'...");

                List <Control> controlList = new List <Control>()
                {
                    new Control()
                    {
                        Id = _fieldRefName, Order = 1, Label = "Colors", Visible = true, Name = "Colors", Watermark = "Select a color"
                    },
                    new Control()
                    {
                        Id = "Microsoft.VSTS.Common.Activity", Order = 2, Label = "Activity", Visible = true
                    }
                };

                Group newGroup = new Group()
                {
                    Controls   = controlList,
                    Id         = null,
                    Label      = "NewGroup",
                    Overridden = false,
                    Visible    = true,
                    Order      = 1
                };

                group = client.AddGroupAsync(newGroup, processId, _witRefName, page.Id, "Section2").Result;

                Console.WriteLine("done");
            }

            return(group);
        }
Exemplo n.º 12
0
        public ProcessWorkItemTypeField Field_GetWorkItemTypeField()
        {
            ProcessWorkItemTypeField processWorkItemTypeField = null;

            System.Guid processId = Context.GetValue <Guid>("$processId");

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            processWorkItemTypeField = client.GetWorkItemTypeFieldAsync(processId, _witRefName, _fieldRefName).Result;

            return(processWorkItemTypeField);
        }
Exemplo n.º 13
0
        public List <ProcessWorkItemTypeField> Field_GetAllWorkItemTypeFieldsAsync()
        {
            System.Guid processId = Context.GetValue <Guid>("$processId");

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            //get the list of fields on the work item item
            Console.Write("Loading list of fields on the work item and checking to see if field '{0}' already exists...", _fieldRefName);

            List <ProcessWorkItemTypeField> list = client.GetAllWorkItemTypeFieldsAsync(processId, _witRefName).Result;

            return(list);
        }
Exemplo n.º 14
0
        public static ProcessWorkItemTypeField GetField(VssConnection connection, Guid processId, string witRefName, string fieldRefName)
        {
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            try
            {
                ProcessWorkItemTypeField item = client.GetWorkItemTypeFieldAsync(processId, witRefName, fieldRefName).Result;

                return(item);
            }
            catch (Exception ex)
            {
                return(null);
            }
        }
Exemplo n.º 15
0
        public static ProcessWorkItemType GetWorkItemType(VssConnection connection, System.Guid processId, string witRefName)
        {
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            try
            {
                ProcessWorkItemType result = client.GetProcessWorkItemTypeAsync(processId, witRefName).Result;

                return(result);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Exemplo n.º 16
0
        public static List <ProcessInfo> GetProcesses(VssConnection connection)
        {
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            try
            {
                List <Microsoft.TeamFoundation.WorkItemTracking.Process.WebApi.Models.ProcessInfo> list = client.GetListOfProcessesAsync().Result;

                return(list);
            }
            catch (Exception)
            {
                return(null);
            }
        }
        private static ProcessWorkItemType CreateWorkItemType(VssConnection connection, Process process, WorkItemTypeModel workItemType)
        {
            var model = new CreateProcessWorkItemTypeRequest()
            {
                Name         = workItemType.Name,
                InheritsFrom = workItemType.Id,
                Color        = workItemType.Color,
                Icon         = workItemType.Icon,
                IsDisabled   = workItemType.IsDisabled ?? false
            };

            WorkItemTrackingProcessHttpClient workClient = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            return(workClient.CreateProcessWorkItemTypeAsync(model, process.Id).Result);
        }
Exemplo n.º 18
0
        public static List <ProcessWorkItemType> GetWorkItemTypes(VssConnection connection, System.Guid processId)
        {
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            try
            {
                List <ProcessWorkItemType> list = client.GetProcessWorkItemTypesAsync(processId).Result;

                return(list);
            }
            catch (Exception)
            {
                return(null);
            }
        }
Exemplo n.º 19
0
        public PickListMetadata Field_CreatePicklist()
        {
            List <PickListMetadata> pickListMetadata = null;
            PickList picklist     = null;
            string   pickListName = "colorsPicklist";

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            Console.Write("Searching to see if picklist '{0}' exists....", pickListName);

            pickListMetadata = client.GetListsMetadataAsync().Result;
            PickListMetadata item = pickListMetadata.Find(x => x.Name == pickListName);

            if (item != null)
            {
                Context.SetValue <Guid>("$picklistId", item.Id);
                Console.WriteLine("picklist found");

                return(item);
            }
            else
            {
                Console.WriteLine("picklist not found");
                Console.Write("Creating new picklist....");

                IList <string> list = new List <string>();

                list.Add("Blue");
                list.Add("Green");
                list.Add("Red");
                list.Add("Purple");

                picklist = new PickList()
                {
                    Name        = pickListName,
                    Items       = list,
                    Type        = "String",
                    IsSuggested = false
                };

                PickList result = client.CreateListAsync(picklist).Result;
                Context.SetValue <Guid>("$picklistId", result.Id);

                Console.WriteLine("done");
                return(result);
            }
        }
Exemplo n.º 20
0
        public ProcessWorkItemTypeField Field_UpdateWorkItemTypeField()
        {
            UpdateProcessWorkItemTypeFieldRequest newfieldRequest = new UpdateProcessWorkItemTypeFieldRequest()
            {
                DefaultValue = "Blue"
            };

            System.Guid processId = Context.GetValue <Guid>("$processId");

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            ProcessWorkItemTypeField processWorkItemTypeField = client.UpdateWorkItemTypeFieldAsync(newfieldRequest, processId, _witRefName, _fieldRefName).Result;

            return(processWorkItemTypeField);
        }
Exemplo n.º 21
0
        public ProcessWorkItemTypeField Field_AddSystemFieldToWorkItemType()
        {
            string fieldName = "Microsoft.VSTS.Common.Activity";

            ProcessWorkItemTypeField processWorkItemTypeField = null;

            System.Guid processId = Context.GetValue <Guid>("$processId");

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            //get the list of fields on the work item item
            Console.Write("Loading list of fields on the work item and checking to see if field '{0}' already exists...", fieldName);

            List <ProcessWorkItemTypeField> list = client.GetAllWorkItemTypeFieldsAsync(processId, _witRefName).Result;

            //check to see if the field already exists on the work item
            processWorkItemTypeField = list.Find(x => x.ReferenceName == fieldName);

            //field is already on the work item, so just return it
            if (processWorkItemTypeField != null)
            {
                Console.WriteLine("field found");
                return(processWorkItemTypeField);
            }
            else
            {
                //the field is not on the work item, so we best add it
                Console.WriteLine("field not found");
                Console.Write("Adding field to work item...");

                AddProcessWorkItemTypeFieldRequest fieldRequest = new AddProcessWorkItemTypeFieldRequest()
                {
                    AllowGroups   = false,
                    DefaultValue  = String.Empty,
                    ReadOnly      = false,
                    ReferenceName = fieldName,
                    Required      = false
                };

                processWorkItemTypeField = client.AddFieldToWorkItemTypeAsync(fieldRequest, processId, _witRefName).Result;

                Console.WriteLine("done");

                return(processWorkItemTypeField);
            }
        }
Exemplo n.º 22
0
        public ProcessInfo Process_Create()
        {
            ProcessInfo processInfo = Process_Get();

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

            //create process model record object that will be used to create the process
            CreateProcessModel processModel = new CreateProcessModel
            {
                Name = "MyNewAgileProcess",
                ParentProcessTypeId = new System.Guid("adcc42ab-9882-485e-a3ed-7678f01f66bc"),
                ReferenceName       = _refName,
                Description         = "My new process"
            };

            Console.Write("Creating new processes '" + _refName + "'...");

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            try
            {
                //save type id for later use
                processInfo = client.CreateNewProcessAsync(processModel).Result;

                Console.WriteLine("success");
                Console.WriteLine("Process Id: {0}", processInfo.TypeId);

                Context.SetValue <Guid>("$processId", processInfo.TypeId);
            }
            catch (Exception ex) //exception will be thrown if process already exists
            {
                Console.WriteLine("failed");
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine(ex.InnerException.Message);
            }
            finally
            {
                Console.ForegroundColor = ConsoleColor.White;
            }

            return(processInfo);
        }
Exemplo n.º 23
0
        public ProcessWorkItemType WorkItemType_Get()
        {
            ProcessWorkItemType processWorkItemType = null;

            //get process id stored in cache so we don't have to load it each time
            System.Guid processId = Context.GetValue <Guid>("$processId");

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            //load the process by id
            processWorkItemType = client.GetProcessWorkItemTypeAsync(processId, _witRefName).Result;

            Console.WriteLine("Getting work item type for " + _refName);

            return(processWorkItemType);
        }
Exemplo n.º 24
0
        public List <ProcessWorkItemType> WorkItemTypes_List()
        {
            //get process id stored in cache so we don't have to load it each time
            System.Guid processId = Context.GetValue <Guid>("$processId");

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            Console.Write("Getting list of work item types for '" + processId.ToString() + "'...");
            List <ProcessWorkItemType> list = client.GetProcessWorkItemTypesAsync(processId).Result;

            Console.WriteLine("success");

            foreach (var item in list)
            {
                Console.WriteLine("{0} : {1}", item.Name, item.ReferenceName);
            }

            return(list);
        }
Exemplo n.º 25
0
        public ProcessWorkItemType WorkItemTypes_Update()
        {
            //get process id stored in cache so we don't have to load it each time
            System.Guid processId = Context.GetValue <Guid>("$processId");

            //create UpdateProcessWorkItemTypeRequest object and set properties for whatever you want to change
            UpdateProcessWorkItemTypeRequest updateWorkItemType = new UpdateProcessWorkItemTypeRequest()
            {
                Description = "This is my description"
            };

            VssConnection connection = Context.Connection;
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();

            Console.Write("Updating description for 'Change Request' work item type...");
            ProcessWorkItemType result = client.UpdateProcessWorkItemTypeAsync(updateWorkItemType, processId, _witRefName).Result;

            Console.WriteLine("success");

            return(result);
        }
Exemplo n.º 26
0
        public static List <FieldsPerProcess> ListFieldsForProcess(VssConnection connection, string process)
        {
            WorkItemTrackingProcessHttpClient client = connection.GetClient <WorkItemTrackingProcessHttpClient>();
            List <FieldsPerProcess>           list   = new List <FieldsPerProcess>();

            //get the process by name
            List <ProcessInfo> listProcess = client.GetListOfProcessesAsync().Result;

            ProcessInfo processInfo = listProcess.Find(x => x.Name == process);

            //if processInfo is null then just return null
            if (processInfo == null)
            {
                return(null);
            }

            //get list of work item types per the processid
            List <ProcessWorkItemType> listWorkItemTypes = client.GetProcessWorkItemTypesAsync(processInfo.TypeId).Result;

            //loop thru each wit and get the list of fields
            //add to viewmodel object and return that
            foreach (ProcessWorkItemType wit in listWorkItemTypes)
            {
                List <ProcessWorkItemTypeField> listFields = client.GetAllWorkItemTypeFieldsAsync(processInfo.TypeId, wit.ReferenceName).Result;

                if (listFields.Count > 0)
                {
                    list.Add(new FieldsPerProcess()
                    {
                        workItemType = wit, fields = listFields
                    });
                }
                else
                {
                    list.Add(null);
                }
            }

            return(list);
        }