コード例 #1
0
        public WorkMetric(JItemStatus itemStatus, DateTime start, DateTime end, int startHour, int endHour, JIssue issue, List <JIssue> issues, string forceIgnoreReason)
        {
            ItemStatus = itemStatus;
            Start      = start;
            End        = end;
            StartHour  = startHour;
            EndHour    = endHour;
            if (!string.IsNullOrWhiteSpace(forceIgnoreReason))
            {
                _forceIgnoreReason = forceIgnoreReason;
            }

            CalculateExclusions(issue, issues);
        }
コード例 #2
0
        private List <WorkMetric> BuildIssueMetrics(JIssue issue, List <JIssue> jIssues)
        {
            var ret = new List <WorkMetric>();

            SortedDictionary <DateTime, JItemStatus> statusStartList = new SortedDictionary <DateTime, JItemStatus>();

            foreach (var changeLog in issue.ChangeLogs)
            {
                var items = changeLog.Items.Where(item => item.FieldName == "status");
                foreach (JIssueChangeLogItem item in items)
                {
                    var itemStatus = _repo.JItemStatuses.SingleOrDefault(y => y.StatusName.ToLower() == item.ToValue.ToLower());
                    if (itemStatus == null && issue.IssueType.ToLower() != "epic")
                    {
                        var err = string.Format("Error getting JItemStatus for Issue {0} ({1}).  Cannot determine calendar/active work time for state: '{2}'.  (** If this item SHOULD be included in calendarWork or activeWork calculations then a value will need to be added to the JiraConIssueStatus.txt for status: {2})", issue.Key, issue.IssueType, item.ToValue);
                        ConsoleUtil.WriteLine(err, ConsoleColor.DarkRed, ConsoleColor.Gray, false);
                        ConsoleUtil.WriteLine("PRESS ANY KEY TO CONTINUE", ConsoleColor.DarkRed, ConsoleColor.Gray, false);
                        var ok = Console.ReadKey(true);
                    }
                    if (itemStatus == null)
                    {
                        itemStatus = new JItemStatus(item.ToValue.ToLower(), "ERROR", "ERROR", "ERROR");
                    }
                    statusStartList.Add(changeLog.CreatedDate, itemStatus);
                }
            }

            if (statusStartList.Count == 0)
            {
                return(ret);
            }

            var keys = statusStartList.Keys.ToList().OrderBy(x => x).ToList();

            string forceIgnoreReason = null;

            if (_forceIgnoreKeyAndReason.ContainsKey(issue.Key))
            {
                forceIgnoreReason = _forceIgnoreKeyAndReason[issue.Key];
            }

            for (int i = 0; i < keys.Count; i++)
            {
                //takes care of entries for first (if more than one item exists) and last
                if (keys.Count == 1)
                {
                    ret.Add(new WorkMetric(statusStartList[keys[i]], keys[i], DateTime.Now, _startHour, _endHour, issue, jIssues, forceIgnoreReason));
                }
                else if (i == keys.Count - 1)
                {
                    ret.Add(new WorkMetric(statusStartList[keys[i - 1]], keys[i - 1], keys[i], _startHour, _endHour, issue, jIssues, forceIgnoreReason));
                    ret.Add(new WorkMetric(statusStartList[keys[i]], keys[i], DateTime.Now, _startHour, _endHour, issue, jIssues, forceIgnoreReason));
                }
                else if (i > 0)
                {
                    ret.Add(new WorkMetric(statusStartList[keys[i - 1]], keys[i - 1], keys[i], _startHour, _endHour, issue, jIssues, forceIgnoreReason));
                }
            }

            return(ret);
        }