예제 #1
0
        public Tuple <List <Issue>, Dictionary <string, List <JContainer> > > GetAllIssuesInSprint(int sprintId, List <string> mandatoryFields = null, List <string> customFields = null)
        {
            Dictionary <string, List <JContainer> > customData = new Dictionary <string, List <JContainer> >();
            var       issues   = new List <Issue>();
            int       retries  = 0;
            const int pageSize = 1000;

            int issueCount;

            do
            {
                string x = _webRequester.HttpGetByWebRequest(GetSprintIssuesPath(sprintId, pageSize, retries, mandatoryFields), _username, _password);
                var    deserializedCall = JsonConvert.DeserializeObject <SprintIssuesDTO>(x);
                var    data             = JObject.Parse(x);

                if (customFields != null)
                {
                    foreach (var issue in data["issues"])
                    {
                        List <JContainer> issueCustomValues = new List <JContainer>();
                        foreach (var field in customFields)
                        {
                            issueCustomValues.Add(issue["fields"][field]?.Parent);
                        }

                        customData.Add(issue["key"].Value <string>(), issueCustomValues);
                    }
                }

                issues.AddRange(deserializedCall.issues);
                issueCount = deserializedCall.issues.Count;

                AdaptCloudDataIfNeeded(deserializedCall.issues);

                retries++;
            } while (issueCount >= pageSize);

            return(new Tuple <List <Issue>, Dictionary <string, List <JContainer> > >(issues, customData));
        }