public SearchResponse SearchIssuesByQuery(JqlQuery jqlQuery, List <string> fields, int startAt, int maxResults)
        {
            var searchRequest = new SearchRequest
            {
                JqlQuery   = jqlQuery.CreateJqlQuery(),
                Fields     = fields,
                StartAt    = startAt,
                MaxResults = maxResults
            };

            try
            {
                var request  = CreateRequest(Method.GET, searchRequest.CreateSearchRequest());
                var response = ExecuteRequest(request);

                AssertStatus(response, HttpStatusCode.OK);

                var data = _deserializer.Deserialize <SearchResponse>(response);
                return(data);
            }
            catch (Exception ex)
            {
                Trace.TraceError("SearchIssuesByQuery(jqlQuery, fields, startAt, maxResults) error: {0}", ex);
                throw new JiraClientException("Could not load issues", ex);
            }
        }
Пример #2
0
        public List <Issue> SearchIssuesByTraineeId(int traineeId)
        {
            var trainee = _traineeProvider.GetTrainee(traineeId);

            // jql query
            var query = new JqlQuery
            {
                Assignee   = trainee.User.Login,
                IssueTypes = new List <string> {
                    "Task", "Sub-task", "Bug", "Improvement"
                },
                StartDate   = trainee.Group.StartDate,
                ReleaseDate = trainee.Group.FinishDate,
            };

            // fields to return
            var fields = new List <string>
            {
                "summary",
                "timetracking",
                "assignee",
                "issuetype",
                "status",
            };

            var startAt    = 0;
            var maxResults = -1;

            var issues = _client.SearchIssuesByQuery(query, fields, startAt, maxResults).Issues;

            var issuesDataModel = new List <Issue>();

            foreach (var issue in issues)
            {
                issuesDataModel.Add(new Issue
                {
                    Key              = issue.Key,
                    Summary          = issue.Fields.Summary,
                    Status           = issue.Fields.Status.Name,
                    IconUrl          = issue.Fields.IssueType.IconUrl,
                    IssueType        = issue.Fields.IssueType.Name,
                    OriginalEstimate = issue.Fields.TimeTracking.OriginalEstimateSeconds,
                    TimeSpent        = issue.Fields.TimeTracking.TimeSpentSeconds,
                    ColorName        = issue.Fields.Status.StatusCategory.ColorName,
                    TraineeId        = traineeId
                });
            }

            return(issuesDataModel);
        }