Example #1
0
        public TrelloData GetCardsToExamine()
        {
            var trinityStoriesBoard = _trelloClient.GetBoard(_configuration.TrelloBoard);
            var listsInBoard = _trelloClient.GetListsForBoard(trinityStoriesBoard);

            var listsToScan = GetListsToScan(listsInBoard);

            var trelloData = new TrelloData();
            foreach (var list in listsToScan)
            {
                var listData = CreateListData(list);
                trelloData.AddListData(listData);
            }

            foreach (var listName in _configuration.ListNames.ExtraListsToCount)
            {
                var list = listsInBoard.Where(l => listName ==l.Name).Single();
                var listData = CreateListData(list);
                trelloData.AddListToCount(listData);
            }

            var milestoneList = listsInBoard.Where(l => l.Name == _configuration.ListNames.MilestoneList).SingleOrDefault();
            if(milestoneList != null)
            {
                trelloData.MilestoneList = CreateListData(milestoneList);
            }

            return trelloData;
        }
        public BoardStatsAnalysis BuildBoardStatsAnalysis(TrelloData trelloData, List<TimesheetData> timesheetData)
        {
            var boardStats = new BoardStats();
            BuildCardStats(trelloData, boardStats);
            boardStats.ListStats = GetListStats(trelloData.ListsToCount);
            boardStats.TimesheetData = timesheetData;
            boardStats.ProjectStartDate = ProjectStartDate;
            var boardStatsAnalysis = new BoardStatsAnalysis(_configuration, boardStats);

            boardStatsAnalysis.NextMilestoneProjection = BuildProjectionsForNextMilestone(trelloData, boardStatsAnalysis);
            boardStatsAnalysis.Projections = BuildProjections(trelloData, boardStatsAnalysis);

            if (trelloData.MilestoneList != null)
            {
                var milestones = new List<Milestone>();
                foreach (var card in trelloData.MilestoneList.CardDataCollection)
                {

                    if (card.Card.Due.HasValue)
                    {
                        milestones.Add(new Milestone() { Name = card.Card.Name, TargetDate = card.Card.Due.Value });
                    }
                }
                boardStatsAnalysis.Milestones = milestones;
            }

            return boardStatsAnalysis;
        }
        private void BuildCardStats(TrelloData trelloData, BoardStats boardStats)
        {
            foreach (var listData in trelloData.ListDataCollection)
            {
                foreach (var cardData in listData.CardDataCollection)
                {
                    var stat = new CardStats() { CardData = cardData, ListData = listData, ListNames = _configuration.ListNames, TimeZone = _configuration.TimeZone };

                    if (stat.IsComplete || stat.IsInProgress || stat.IsInTest)
                        boardStats.AddGoodCardStat(stat);
                    else
                        boardStats.AddBadCardStat(stat);
                }
            }
        }
 private double GetEstimatedPointsNextMilestoneForList(TrelloData trelloData, string listName)
 {
     var estimatedListData = trelloData.GetListData(listName);
     var estimatedPoints = estimatedListData.CardDataCollection.Where(c=>c.Card.Labels.Any(l=>l.Name == "Next Milestone")).Sum(cd => cd.Points);
     return estimatedPoints;
 }
 private double GetEstimatedPointsForList(TrelloData trelloData, string listName)
 {
     var estimatedListData = trelloData.GetListData(listName);
     var estimatedPoints = estimatedListData.CardDataCollection.Sum(cd => cd.Points);
     return estimatedPoints;
 }
        private BoardProjections BuildProjectionsForNextMilestone(TrelloData trelloData, BoardStatsAnalysis boardStatsAnalysis)
        {
            var estimatedPoints = GetEstimatedPointsNextMilestoneForList(trelloData, _configuration.ListNames.EstimatedList);
            estimatedPoints += GetEstimatedPointsNextMilestoneForList(trelloData, _configuration.ListNames.InProgressListName);
            estimatedPoints += GetEstimatedPointsNextMilestoneForList(trelloData, _configuration.ListNames.InTestListName);

            boardStatsAnalysis.EstimatedListPoints = estimatedPoints;

            var projection = BuildBoardProjection(boardStatsAnalysis, estimatedPoints);
            return projection;
        }