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;
}