public bool UpdateWorkItemUsingByPassRules()

in src/VstsRestAPI/WorkItemAndTracking/WorkItem.cs [84:203]


        public bool UpdateWorkItemUsingByPassRules(string json, string projectName, string currentUser, string jsonSettings)
        {
            try
            {
                string itemType = "";
                string itemTypes = "";
                string userType = "";
                string json_Users = "";
                string jsonType = "";
                string jsonTypes = "";
                List<int> workItemIds = new List<int>();
                var jsonItems = JObject.Parse(jsonSettings);
                List<string> tags = new List<string>();
                JArray tag = jsonItems["tags"].Value<JArray>();
                foreach (var data in tag.Values())
                {
                    tags.Add(data.ToString());
                }


                JArray userList = jsonItems["users"].Value<JArray>();
                List<string> users = new List<string>();
                foreach (var data in userList.Values())
                {
                    users.Add(data.ToString());
                }

                if (!string.IsNullOrEmpty(currentUser))
                {
                    users.Add(currentUser);
                }

                Dictionary<string, List<string>> dic = new Dictionary<string, List<string>>
            {
                {
                    "Feature",
                    new List<string>() {
                "In Progress",
                "New",
                "Done",
                    }
                },
                {
                    "Product Backlog Item",
                    new List<string>() {
                "Approved",
                "Committed",
                "New",
                "Done",
                    }
                },
                {
                    "Bug",
                    new List<string>() {
                "Approved",
                "Committed",
                "New",
                "Done",
                    }
                },
                {
                    "Task",
                    new List<string>() {
                "In Progress",
                "To Do",
                "Done",
                    }
                }
            };
                using (var client = GetHttpClient())
                {
                    HttpResponseMessage response = new HttpResponseMessage();
                    HttpRequestMessage request = new HttpRequestMessage();
                    foreach (var type in dic.Keys)
                    {
                        var res = GetListOfWorkItems_ByWiql(projectName, type);
                        workItemIds.Clear();
                        foreach (var ids in res.workItems)
                        {
                            workItemIds.Add(ids.id);
                        }
                        foreach (var id in workItemIds)
                        {
                            if (type == "Feature" || type == "Product Backlog Item" || type == "Bug" || type == "Task")
                            {
                                itemType = dic[type][new Random().Next(0, dic[type].Count)];
                                itemTypes = tags[new Random().Next(0, tags.Count)];
                                userType = users[new Random().Next(0, users.Count)];
                                jsonType = json.Replace("$State$", itemType.ToString());
                                jsonTypes = jsonType.Replace("$Tags$", itemTypes.ToString());
                                json_Users = jsonTypes.Replace("$Users$", userType.ToString());
                            }

                            var jsonContent = new StringContent(json_Users, Encoding.UTF8, "application/json-patch+json");
                            var method = new HttpMethod("PATCH");
                            // send the request
                            request = new HttpRequestMessage(method, _configuration.UriString + "_apis/wit/workitems/" + id + "?bypassRules=true&api-version=" + _configuration.VersionNumber) { Content = jsonContent };
                            response = client.SendAsync(request).Result;
                            if (response.IsSuccessStatusCode)
                            {
                                response.StatusCode = System.Net.HttpStatusCode.OK;
                            }
                            else
                            {
                                var errorMessage = response.Content.ReadAsStringAsync();
                                string error = Utility.GeterroMessage(errorMessage.Result.ToString());
                                this.LastFailureMessage = error;
                            }
                        }
                    }
                    //return true;
                }
            }
            catch (Exception ex)
            {
                logger.Info(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + ex.Message + "\n" + ex.StackTrace + "\n");
            }
            return false;

        }