Beispiel #1
0
        private static async Task <string> GetChangeLog(string ticketNumber, string fromState, string toState)
        {
            var output = new StringBuilder();

            IClient client = new JiraClient(_url, _userName,
                                            _password);

            Issue issue = await client.GetAsync($"issue/{ticketNumber}")
                          .WithArgument("expand", "changelog")
                          .As <Issue>();

            DateTime?startTime       = null;
            var      endTime         = DateTime.Now.AddDays(-365);
            var      quickTransition = true;

            foreach (var historyItem in issue.ChangeLog.Histories.OrderBy(x => x.Created))
            {
                foreach (var item in historyItem.Items)
                {
                    if (item.Field == "status")
                    {
                        if (item.ToString.ToLower() == fromState.ToLower())
                        {
                            var timeTransitioned = historyItem.Created;
                            quickTransition = false;
                            if (!startTime.HasValue)
                            {
                                startTime = timeTransitioned;
                            }
                        }
                        else if (item.ToString.ToLower() == toState.ToLower())
                        {
                            var timeTransitioned = historyItem.Created;
                            if (timeTransitioned.Ticks > endTime.Ticks)
                            {
                                endTime = timeTransitioned;
                            }
                        }
                    }
                }
            }
            if (!quickTransition)
            {
                var time = endTime.Subtract(startTime.Value).Days;
                if (time >= 0)
                {
                    var resultString =
                        $"Issue: {issue.Key} = Transition time : {endTime.Subtract(startTime.Value).Days}";
                    Console.WriteLine(resultString);
                    output.AppendLine(resultString);
                }
            }
            return(output.ToString());
        }