private async Task AddUpdatesToWorkItemAsync(CompleteWorkItem completeWorkItem) { _log.Enter(this, args: completeWorkItem.Id); var uri = new Uri($"{completeWorkItem.Url}/updates"); var httpResponse = await HttpClient.GetAsync(uri); if (httpResponse.IsSuccessStatusCode) { var content = await httpResponse.Content.ReadAsStringAsync(); var updates = JsonConvert.DeserializeObject <WorkItemUpdate>(content); completeWorkItem.Updates = updates; } }
private TimeSpan CalculateCycleTime(CompleteWorkItem workItem) { _log.Enter(this, args: workItem.Fields.SystemTitle); DateTime startTime = DateTime.MaxValue; DateTime stopTime = DateTime.MinValue; var boardColumnUpdates = workItem.Updates.value.Where(v => v.fields != null && v.fields.SystemBoardColumn != null); var workColumnName = _settings["WorkColumnName"]; var enterWorkColumn = boardColumnUpdates.Where(c => c.fields.SystemBoardColumn.newValue == workColumnName).FirstOrDefault(); var leftWorkColumn = boardColumnUpdates.Where(c => c.fields.SystemBoardColumn.oldValue == workColumnName).LastOrDefault(); if (enterWorkColumn == null || leftWorkColumn == null) { return(TimeSpan.Zero); } startTime = enterWorkColumn.revisedDate; stopTime = leftWorkColumn.revisedDate; // Found both dates, otherwise return no time if (startTime < DateTime.MaxValue && stopTime > DateTime.MinValue) { // Sometimes, the stoptime will give us weird values, so let's not accept more than 90 days off if (stopTime - startTime > TimeSpan.FromDays(90)) { return(TimeSpan.Zero); } return(stopTime - startTime); } return(TimeSpan.Zero); }