public void Pull()
        {
            _initializing = true;
            if (Business.Data?.Sprint?.Boards != null && Boards.Count == 0)
            {
                Boards = new ObservableCollection <Tuple <int, string> >(Business.Data.Sprint.Boards);
            }

            if (Business.Data?.Sprint?.Sprints != null)
            {
                Sprints = new ObservableCollection <Tuple <int, string> >(Business.Data.Sprint.Sprints);
            }

            try
            {
                var board = Boards.First(i => i.Item1 == Business.Data.Sprint.SelectedBoard);
                if (!SelectedBoards.Contains(board))
                {
                    SelectedBoards.Add(board);
                }

                SelectedSprint = Sprints.First(i => i.Item1 == Business.Data.Sprint.SelectedSprint);
            }
            catch (Exception ex)
            {
                Debug.WriteLine($"{ex.Message} {ex.StackTrace}");
            }

            _initializing = false;
        }
 public void Flush()
 {
     Business.Data.Sprint.SelectedBoard  = SelectedBoards.FirstOrDefault()?.Item1 ?? 0;
     Business.Data.Sprint.SelectedSprint = SelectedSprint?.Item1 ?? 0;
     Business.Data.Sprint.Boards         = Boards?.ToList();
     Business.Data.Sprint.Sprints        = Sprints?.ToList();
 }
        private void SelectedBoardChangedComandExecute()
        {
            if (!_initializing && !SelectedBoards.Equals(default(Tuple <int, string>)))
            {
                try
                {
                    int board      = -1;
                    var boardTuple = SelectedBoards.FirstOrDefault();
                    if (boardTuple != null)
                    {
                        board = boardTuple.Item1;
                    }

                    if (board >= 0 && Business.Data.Sprint.SelectedBoard == board)
                    {
                        return;
                    }

                    if (board >= 0)
                    {
                        IsBusy = true;
                        Task.Factory.StartNew(() => Business.Jira.GetOpenSprints(board)).ContinueWith(t =>
                        {
                            Business.Data.Sprint.SelectedBoard = board;
                            if (!t.IsFaulted)
                            {
                                Sprints        = new ObservableCollection <Tuple <int, string> >(t.Result);
                                var sprint     = Sprints.FirstOrDefault(i => i.Item1 == Business.Data.Sprint.SelectedSprint);
                                SelectedSprint = sprint ?? Sprints.FirstOrDefault();
                            }
                            else
                            {
                                _window.ShowMessageAsync("Error fetching open sprints", t.Exception.Flatten().Message + Environment.NewLine + t.Exception.Flatten().StackTrace);
                            }

                            IsBusy = false;
                        }, TaskScheduler.FromCurrentSynchronizationContext());
                    }
                }
                catch (Exception ex)
                {
                    _window.ShowMessageAsync("Error fetching open sprints", ex.Message + Environment.NewLine + ex.StackTrace);
                }
            }

            _initializing = false;
        }