Beispiel #1
0
        private void RemoveSelectedStory()
        {
            if (SelectedStory == null)
            {
                return;
            }

            _menuBasedShellViewModel.IsLoadingData = true;

            new Task(() =>
            {
                try
                {
                    _storiesDataModel.Remove(SelectedStory.Story);

                    ComponentsContainer.Get <Dispatcher>().Invoke(
                        delegate
                    {
                        AllUserStories.Remove(SelectedStory);
                    });

                    HideDialog?.Invoke(this, null);
                }
                catch (Exception ex)
                {
                    ShowMessage($"User story doesn't removed: technical issues encountered.");
                    _logger.Fatal(ex);
                }

                _menuBasedShellViewModel.IsLoadingData = false;
            }).Start();
        }
Beispiel #2
0
        private void EditSelectedStory()
        {
            if (StoryDialogViewModel == null)
            {
                return;
            }

            if (!StoryDialogViewModel.CanExecuteConfirmCommand(null))
            {
                return;
            }

            if (SelectedStory == null)
            {
                return;
            }

            _menuBasedShellViewModel.IsLoadingData = true;

            new Task(() =>
            {
                try
                {
                    StoryItem newStoryItem = SelectedStory.Clone() as StoryItem;

                    newStoryItem.Name            = StoryDialogViewModel.Name;
                    newStoryItem.Importance      = StoryDialogViewModel.Importance;
                    newStoryItem.InitialEstimate = StoryDialogViewModel.InitialEstimate;
                    newStoryItem.Status          = StoryDialogViewModel.Status;
                    newStoryItem.HowToDemo       = StoryDialogViewModel.HowToDemo;
                    newStoryItem.Notes           = StoryDialogViewModel.Notes;

                    string previousStatus = SelectedStory.Status;
                    string newStatus      = newStoryItem.Status;

                    if (previousStatus != newStatus)                                                                 // status was changed
                    {
                        if (previousStatus == _storyStatusesDataModel.GetStatusText(StoryStatus.WaitingForExecutor)) // it was "WaitingForExecutor" status
                        {
                            newStoryItem.ExecutorId = _menuBasedShellViewModel.CurrentUser.Id;
                        }
                        else if (previousStatus == _storyStatusesDataModel.GetStatusText(StoryStatus.InProgress)) // it was "InProgress" status
                        {
                            if (newStoryItem.ExecutorId != _menuBasedShellViewModel.CurrentUser.Id)
                            {
                                StoryDialogViewModel.ErrorMessage      = "You can't change the task executing by another user.";
                                StoryDialogViewModel.ShowErrorMessage  = true;
                                _menuBasedShellViewModel.IsLoadingData = false;
                                return;
                            }
                            else
                            {
                                newStoryItem.ExecutorId = (newStatus == _storyStatusesDataModel.GetStatusText(StoryStatus.WaitingForExecutor)) ? 0 : _menuBasedShellViewModel.CurrentUser.Id;
                            }
                        }
                        else if (previousStatus == _storyStatusesDataModel.GetStatusText(StoryStatus.Completed)) // it was "Completed" status
                        {
                            if (newStoryItem.ExecutorId != _menuBasedShellViewModel.CurrentUser.Id)
                            {
                                StoryDialogViewModel.ErrorMessage      = "You can't change the task executed by another user.";
                                StoryDialogViewModel.ShowErrorMessage  = true;
                                _menuBasedShellViewModel.IsLoadingData = false;
                                return;
                            }
                            else
                            {
                                newStoryItem.ExecutorId = (newStatus == _storyStatusesDataModel.GetStatusText(StoryStatus.WaitingForExecutor)) ? 0 : _menuBasedShellViewModel.CurrentUser.Id;
                            }
                        }
                    }

                    if (SelectedStory.Equals(newStoryItem))
                    {
                        StoryDialogViewModel.ErrorMessage      = "Story data is not changed";
                        StoryDialogViewModel.ShowErrorMessage  = true;
                        _menuBasedShellViewModel.IsLoadingData = false;
                        return;
                    }

                    List <StoryItem> storyItemsWithTheSameName = AllUserStories.Where(si => si.Name == newStoryItem.Name).ToList();

                    if (storyItemsWithTheSameName.Count > 0)
                    {
                        if (storyItemsWithTheSameName.First().Id != newStoryItem.Id)
                        {
                            StoryDialogViewModel.ErrorMessage      = $"Story with name '{newStoryItem.Name}' already exists.";
                            StoryDialogViewModel.ShowErrorMessage  = true;
                            _menuBasedShellViewModel.IsLoadingData = false;
                            return;
                        }
                    }

                    _logger.Debug($"Started editing story with id '{SelectedStory.Id}'.");

                    _storiesDataModel.Update(newStoryItem.Story);

                    StoryItem item = AllUserStories.FirstOrDefault(s => s.Id == newStoryItem.Id);

                    if (item != null)
                    {
                        ComponentsContainer.Get <Dispatcher>().Invoke(
                            delegate
                        {
                            AllUserStories.Remove(item);
                            newStoryItem.StoryUpdated += OnStoryItemUpdated;
                            AllUserStories.Add(newStoryItem);
                        });
                    }

                    HideDialog?.Invoke(this, null);
                }
                catch (Exception ex)
                {
                    ShowMessage($"User story doesn't edited: technical issues encountered.");
                    _logger.Fatal(ex);
                }

                _menuBasedShellViewModel.IsLoadingData = false;
            }).Start();
        }