Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
                            }
                        }
                    }
                }
            }
        }