public AgileBoardViewModel(IJiraApi jiraApi,
           JiraSessionViewModel jiraSession,
           IMessenger messenger,
           IssuesStatisticsCalculator statisticsCalculator,
           RawAgileBoard board)
        {
            Board = board;

            _messenger = messenger;
            _jiraApi = jiraApi;
            _jiraSession = jiraSession;
            _statisticsCalculator = statisticsCalculator;

            PickUpSprintCommand = new RelayCommand(OpenPickUpSprint, () => Board.Type == "scrum");
            OpenPivotAnalysisCommand = new RelayCommand(() => _messenger.Send(new OpenPivotAnalysisMessage(BoardContent.Issues)));
            OpenEpicsOverviewCommand = new RelayCommand(() => _messenger.Send(new OpenEpicsOverviewMessage(BoardContent.Issues, BoardContent.Epics)), () => Board.Type == "scrum");
            BrowseIssuesCommand = new RelayCommand(() => _messenger.Send(new OpenIssuesBrowserMessage(BoardContent.Issues)));
            OpenGraveyardCommand = new RelayCommand(() => _messenger.Send(new OpenBoardGraveyardMessage(BoardContent.Issues)));
            OpenSprintsVelocityCommand = new RelayCommand(() => _messenger.Send(new OpenSprintsVelocityMessage(BoardContent)), () => Board.Type == "scrum");

            RefreshDataCommand = new RelayCommand(() =>
            {
                _forceReload = true;
                DownloadElements();
            }, () => IsBusy == false);
            FetchChangesCommand = new RelayCommand(() =>
            {
                DownloadElements();
            }, () => IsBusy == false);

            DownloadElements();
        }
        public SprintDetailsViewModel(RawAgileSprint sprint,
         IList<JiraIssue> issues,
         IMessenger messenger,
         IssuesStatisticsCalculator statisticsCalculator)
        {
            Sprint = sprint;
            Issues = issues;

            _messenger = messenger;
            _statisticsCalculator = statisticsCalculator;

            ScrumCardsCommand = new RelayCommand(() => _messenger.Send(new OpenScrumCardsMessage(Issues)));
            BurnDownCommand = new RelayCommand(() => _messenger.Send(new OpenBurnDownMessage(Sprint, Issues)));
            EngagementCommand = new RelayCommand(() => _messenger.Send(new OpenEngagementChartMessage(Issues)));
            BrowseIssuesCommand = new RelayCommand(() => _messenger.Send(new OpenIssuesBrowserMessage(Issues)));

            GatherStatistics();
        }