//TODO: verify what time trello sends at client //TODO: unit tests public CardStatsModel Build(string cardId) { var cardHistory = cardHistoryService.Get(cardId); var card = taskManagerClient.GetCard(cardId); var result = new CardStatsModel { Id = cardId, Name = card.Name, LastActivity = card.LastActivity }; result.SetLabels(card.Labels); if (cardHistory.Movements.Length <= 1) { return(result); } if (cardHistory.CreateDate.HasValue) { AddDuration(result, cardHistory.Movements[0].FromListId, cardHistory.Movements[0].Date.Subtract(cardHistory.CreateDate.Value)); } for (var i = 0; i < cardHistory.Movements.Length - 1; i++) { if (!string.Equals(cardHistory.Movements[i].ToListId, cardHistory.Movements[i + 1].FromListId)) { loggerFactory.Get <CardStatsBuilder>() .LogError($"Broken actions chain obtained for cardId {cardId}. To {cardHistory.Movements[i].ToListId}, From {cardHistory.Movements[i + 1].FromListId}, chain index {i}."); } else { var listId = cardHistory.Movements[i + 1].FromListId; var duration = cardHistory.Movements[i + 1].Date.Subtract(cardHistory.Movements[i].Date); AddDuration(result, listId, duration); } } return(result); }
public void ItCanLoadParticularCard() { var actual = trelloClient.GetCard("lpDZvlGm"); Assert.IsNotNull(actual); }