Beispiel #1
0
        private bool SaveEditCharacter()
        {
            bool saved = false;

            if (_characterEditViewModel.CharacterModel != null)
            {
                if (String.IsNullOrWhiteSpace(_characterEditViewModel.Name))
                {
                    _dialogService.ShowConfirmationDialog("Required Field", "Name is required.", "OK", null, null);
                }
                else
                {
                    _characterEditViewModel.CharacterModel.Id = _selectedCharacter.CharacterModel.Id;
                    _compendium.UpdateCharacter(_characterEditViewModel.CharacterModel);

                    _selectedCharacter = new CharacterViewModel(_characterEditViewModel.CharacterModel);

                    if (_characterEditViewModel.IsNew)
                    {
                        _selectedCharacter.SetupNewlyCreatedCharacter();
                    }

                    CharacterListItemViewModel oldListItem = _characters.FirstOrDefault(x => x.CharacterModel.Id == _characterEditViewModel.CharacterModel.Id);
                    if (oldListItem != null)
                    {
                        if (_characterSearchService.SearchInputApplies(_characterSearchInput, _selectedCharacter.CharacterModel))
                        {
                            oldListItem.UpdateModel(_characterEditViewModel.CharacterModel);
                        }
                        else
                        {
                            _characters.Remove(oldListItem);
                        }
                    }

                    _characterEditViewModel = null;
                    _editHasUnsavedChanges  = false;

                    SortCharacters();

                    _compendium.SaveCharacters();

                    OnPropertyChanged(nameof(SelectedCharacter));
                    OnPropertyChanged(nameof(EditingCharacter));
                    OnPropertyChanged(nameof(IsEditingCharacter));
                    OnPropertyChanged(nameof(HasUnsavedChanges));

                    saved = true;
                }
            }

            return(saved);
        }