/// <summary> /// Get kanban board columns /// </summary> /// <param name="projectName"></param> /// <param name="teamName"></param> /// <returns></returns> public GetBoardColumnResponse.ColumnResponse getBoardColumns(string projectName, string teamName) { GetBoardColumnResponse.ColumnResponse columns = new GetBoardColumnResponse.ColumnResponse(); using (var client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _credentials); //var patchValue = new StringContent(JsonConvert.SerializeObject(Columns), Encoding.UTF8, "application/json"); // mediaType needs to be application/json-patch+json for a patch call // var method = new HttpMethod("GET"); var response = client.GetAsync(_configuration.UriString + "/" + projectName + "/" + teamName + "/_apis/work/boards/Backlog%20items?api-version=" + _configuration.VersionNumber + "-preview").Result; // var response = client.SendAsync(request).Result; if (response.IsSuccessStatusCode) { columns = response.Content.ReadAsAsync <GetBoardColumnResponse.ColumnResponse>().Result; this.rowFieldName = columns.fields.rowField.referenceName; return(columns); } else { var errorMessage = response.Content.ReadAsStringAsync(); string error = Utility.GeterroMessage(errorMessage.Result.ToString()); this.lastFailureMessage = error; return(new GetBoardColumnResponse.ColumnResponse()); } } }
/// <summary> /// Get kanban board columns /// </summary> /// <param name="projectName"></param> /// <param name="teamName"></param> /// <returns></returns> public GetBoardColumnResponse.ColumnResponse GetBoardColumns(string projectName, string teamName, string boardType) { try { GetBoardColumnResponse.ColumnResponse columns = new GetBoardColumnResponse.ColumnResponse(); using (var client = GetHttpClient()) { var response = client.GetAsync(_configuration.UriString + "/" + projectName + "/" + teamName + "/_apis/work/boards/" + boardType + "?api-version=" + _configuration.VersionNumber).Result; if (response.IsSuccessStatusCode) { columns = response.Content.ReadAsAsync <GetBoardColumnResponse.ColumnResponse>().Result; this.rowFieldName = columns.fields.rowField.referenceName; return(columns); } else { var errorMessage = response.Content.ReadAsStringAsync(); string error = Utility.GeterroMessage(errorMessage.Result.ToString()); this.LastFailureMessage = error; return(new GetBoardColumnResponse.ColumnResponse()); } } } catch (Exception ex) { logger.Debug(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + "CreateNewTeam" + "\t" + ex.Message + "\t" + "\n" + ex.StackTrace + "\n"); } return(new GetBoardColumnResponse.ColumnResponse()); }
/// <summary> /// Update kanban board colums styles /// </summary> /// <param name="projectName"></param> /// <param name="fileName"></param> /// <returns></returns> public bool UpdateBoard(string projectName, string fileName) { string teamName = projectName + " Team"; List <ColumnPost> Columns = JsonConvert.DeserializeObject <List <ColumnPost> >(fileName); GetBoardColumnResponse.ColumnResponse currColumns = getBoardColumns(projectName, teamName); if (currColumns.columns == null) { return(false); } string newColID = ""; string doneColID = ""; foreach (GetBoardColumnResponse.Value col in currColumns.columns) { if (col.name == "New") { newColID = col.id; } else if (col.name == "Done") { doneColID = col.id; } } foreach (ColumnPost col in Columns) { if (col.name == "New") { col.id = newColID; } else if (col.name == "Done") { col.id = doneColID; } } using (var client = new HttpClient()) { client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", _credentials); var patchValue = new StringContent(JsonConvert.SerializeObject(Columns), Encoding.UTF8, "application/json"); // mediaType needs to be application/json-patch+json for a patch call var method = new HttpMethod("PUT"); var request = new HttpRequestMessage(method, _configuration.UriString + "/" + projectName + "/" + teamName + "/_apis/work/boards/Backlog%20items/columns?api-version=" + _configuration.VersionNumber + "-preview") { Content = patchValue }; var response = client.SendAsync(request).Result; if (response.IsSuccessStatusCode) { return(true); } else { var errorMessage = response.Content.ReadAsStringAsync(); string error = Utility.GeterroMessage(errorMessage.Result.ToString()); this.lastFailureMessage = error; return(false); } } }
/// <summary> /// Update kanban board colums styles /// </summary> /// <param name="projectName"></param> /// <param name="fileName"></param> /// <returns></returns> public bool UpdateBoard(string projectName, string json, string boardType, string teamName) { try { List <Scrum.Columns> scrumColumns = new List <Scrum.Columns>(); string newColID = ""; string doneColID = ""; GetBoardColumnResponse.ColumnResponse currColumns = new GetBoardColumnResponse.ColumnResponse(); scrumColumns = JsonConvert.DeserializeObject <List <Scrum.Columns> >(json); currColumns = GetBoardColumns(projectName, teamName, boardType); if (currColumns.columns != null) { foreach (GetBoardColumnResponse.Value col in currColumns.columns) { if (col.columnType.ToLower() == "incoming") { newColID = col.id; } else if (col.columnType.ToLower() == "outgoing") { doneColID = col.id; } } foreach (Scrum.Columns col in scrumColumns) { if (col.columnType.ToLower() == "incoming") { col.id = newColID; } else if (col.columnType.ToLower() == "outgoing") { col.id = doneColID; } } } if (currColumns.columns == null) { return(false); } using (var client = GetHttpClient()) { StringContent patchValue = new StringContent(""); string stringSerialize = JsonConvert.SerializeObject(scrumColumns, new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }); patchValue = new StringContent(stringSerialize, Encoding.UTF8, "application/json"); // mediaType needs to be application/json-patch+json for a patch call var method = new HttpMethod("PUT"); //PUT https://dev.azure.com/{organization}/{project}/{team}/_apis/work/boards/{board}/columns?api-version=4.1 var request = new HttpRequestMessage(method, _configuration.UriString + "/" + projectName + "/" + teamName + "/_apis/work/boards/" + boardType + "/columns?api-version=" + _configuration.VersionNumber) { Content = patchValue }; var response = client.SendAsync(request).Result; if (response.IsSuccessStatusCode) { return(true); } else { var errorMessage = response.Content.ReadAsStringAsync(); string error = Utility.GeterroMessage(errorMessage.Result.ToString()); this.LastFailureMessage = error; return(false); } } } catch (Exception ex) { logger.Debug(DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss") + "\t" + "CreateNewTeam" + "\t" + ex.Message + "\t" + "\n" + ex.StackTrace + "\n"); } return(false); }