public IEnumerable <SprintResult> GetSprintList(DateTime startTime, DateTime endTime, int pageNumber, int pageRows) { Database db = new DatabaseProviderFactory().Create("JIRA"); List <SprintResult> result = new List <SprintResult>(); using (DbCommand cmd = db.GetStoredProcCommand("[dbo].[GetSprintList]")) { cmd.CommandTimeout = dbTimeout; db.AddInParameter(cmd, "@StartDate", DbType.DateTime2, startTime); db.AddInParameter(cmd, "@EndDate", DbType.DateTime2, endTime); db.AddInParameter(cmd, "@PageNumber", DbType.Int32, pageNumber); db.AddInParameter(cmd, "@PageRows", DbType.Int32, pageRows); DataSet ds = db.ExecuteDataSet(cmd); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) { SprintResult item = new SprintResult(); item.Id = (int)ds.Tables[0].Rows[i]["Id"]; item.Subject = DBNull.Value.Equals(ds.Tables[0].Rows[i]["Subject"]) ? "" : (string)ds.Tables[0].Rows[i]["Subject"]; item.Status = DBNull.Value.Equals(ds.Tables[0].Rows[i]["Status"]) ? "" : (string)ds.Tables[0].Rows[i]["Status"]; item.Description = DBNull.Value.Equals(ds.Tables[0].Rows[i]["Description"]) ? "" : (string)ds.Tables[0].Rows[i]["Description"]; item.Reporter = DBNull.Value.Equals(ds.Tables[0].Rows[i]["Reporter"]) ? "" : (string)ds.Tables[0].Rows[i]["Reporter"]; item.Project = DBNull.Value.Equals(ds.Tables[0].Rows[i]["Project"]) ? "" : (string)ds.Tables[0].Rows[i]["Project"]; item.StartTime = DBNull.Value.Equals(ds.Tables[0].Rows[i]["StartTime"]) ? DateTime.MinValue : (DateTime)ds.Tables[0].Rows[i]["StartTime"]; item.EndTime = DBNull.Value.Equals(ds.Tables[0].Rows[i]["EndTime"]) ? DateTime.MinValue : (DateTime)ds.Tables[0].Rows[i]["EndTime"]; result.Add(item); } SprintResult.TotalCount = (int)ds.Tables[1].Rows[0]["TotalCount"]; } return(result); }
private SprintResult GetSprintsFromTeam(HttpClient client, Team team) { SprintResult sprintResult = null; try { string query = $"{GetPath(team)}/_apis/work/teamsettings/iterations?api-version={team.APIVersion}"; HttpResponseMessage queryHttpResponseMessage = client.GetAsync(query).Result; if (queryHttpResponseMessage.IsSuccessStatusCode) { //bind the response content to the queryResult object sprintResult = queryHttpResponseMessage.Content.ReadAsAsync <SprintResult>().Result; //string queryId = queryResult.id; } else { sprintResult = new SprintResult(); } return(sprintResult); } catch (Exception) { sprintResult = new SprintResult(); } return(sprintResult); }
private SprintDto ConvertToSprintDisplayDto(SprintResult p) { var dto = new SprintDto { SprintId = p.SprintId, EndDate = p.EndDate, StartDate = p.StartDate, SprintName = p.SprintName, CompletedStories = p.CompletedStories, TotalStories = p.TotalStories, TeamID = p.TeamID, TeamName = _cacheService.GetProjectTeamName(p.TeamID) }; return(dto); }
public void ProcessTeams() { string file = $@"{AppDomain.CurrentDomain.BaseDirectory}appSettings.JSON"; string fileContents = GetFileContents(file); AppSetting settings = JsonConvert.DeserializeObject <AppSetting>(fileContents); foreach (var team in settings.Teams) { Console.WriteLine($"Exporting team {team.Code}."); string _credentials = Convert.ToBase64String(System.Text.ASCIIEncoding.ASCII.GetBytes(string.Format("{0}:{1}", "", team.Token))); string siteUrl = $@"https://{team.TFSUrl}"; using (var client = new HttpClient()) { client.BaseAddress = new Uri(siteUrl); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", _credentials); //GetWorkItemsByWiql(client, team); SprintResult sprintsFromSourceSystem = GetSprintsFromTeam(client, team); HttpResponseMessage queryHttpResponseMessage = RunQueries(client, team); if (queryHttpResponseMessage.IsSuccessStatusCode) { //bind the response content to the queryResult object QueryResult queryResult = queryHttpResponseMessage.Content.ReadAsAsync <QueryResult>().Result; string queryId = queryResult.id; HttpResponseMessage httpResponseMessage = RunIDQuery(client, team, queryId); if (httpResponseMessage.IsSuccessStatusCode) { WorkItemQueryResult workItemQueryResult = httpResponseMessage.Content.ReadAsAsync <WorkItemQueryResult>().Result; //now that we have a bunch of work items, build a list of id's so we can get details var builder = new System.Text.StringBuilder(); foreach (var item in workItemQueryResult.workItems) { builder.Append(item.id.ToString()).Append(","); } //clean up string of id's string ids = builder.ToString().TrimEnd(new char[] { ',' }); //string[] idToQuery = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); HttpResponseMessage getWorkItemsHttpResponse = RunWorkItemsQuery(client, team, ids, settings); if (getWorkItemsHttpResponse.IsSuccessStatusCode) { var result = getWorkItemsHttpResponse.Content.ReadAsStringAsync().Result; RootObject ro = JsonConvert.DeserializeObject <RootObject>(result); ro.SourceSystemSprints = sprintsFromSourceSystem; OutPutObject output = ro.ConvertToOutput(team); string fileContent = JsonConvert.SerializeObject(output); WriteFile(team.Code, settings.OutputDirectory, fileContent); } } } } } }