using System; using System.Windows; using eJay.Model; using GalaSoft.MvvmLight; using GalaSoft.MvvmLight.Command; namespace eJay.ViewModel.Dialogs { public class NewPersonDialogViewModel : ViewModelBase { #region Public Properties public event EventHandler RequestClose; public PersonDialogMode DialogMode { get; set; } public Guid EditPersonId { get; set; } public Person EditPerson { get; set; } #endregion #region WindowTitle (string) Property /// /// Privater Teil von /// private string _windowTitle; /// /// Comment /// public string WindowTitle { get { return _windowTitle; } set { _windowTitle = value; RaisePropertyChanged(() => WindowTitle); } } #endregion #region SaveButtonText (string) Property /// /// Privater Teil von /// private string _saveButtonText; /// /// Comment /// public string SaveButtonText { get { return _saveButtonText; } set { _saveButtonText = value; RaisePropertyChanged(() => SaveButtonText); } } #endregion #region FirstNameTextBoxText (string) Property /// /// Privater Teil von /// private string _firstNameTextBoxText; /// /// Comment /// public string FirstNameTextBoxText { get { return _firstNameTextBoxText; } set { _firstNameTextBoxText = value; RaisePropertyChanged(() => FirstNameTextBoxText); CreatePersonButtonClickCommand.RaiseCanExecuteChanged(); } } #endregion #region LastNameTextBoxText (string) Property /// /// Privater Teil von /// private string _lastNameTextBoxText; /// /// Comment /// public string LastNameTextBoxText { get { return _lastNameTextBoxText; } set { _lastNameTextBoxText = value; RaisePropertyChanged(() => LastNameTextBoxText); CreatePersonButtonClickCommand.RaiseCanExecuteChanged(); } } #endregion #region CreatePersonButtonClickCommand Command /// /// Private member backing variable for /// private RelayCommand _createPersonButtonClickCommand = null; /// /// Comment /// public RelayCommand CreatePersonButtonClickCommand => _createPersonButtonClickCommand ?? (_createPersonButtonClickCommand = new RelayCommand(CreatePersonButtonClickCommand_Execute, CreatePersonButtonClickCommand_CanExecute)); private bool CreatePersonButtonClickCommand_CanExecute() { if (string.IsNullOrWhiteSpace(FirstNameTextBoxText) || string.IsNullOrWhiteSpace(LastNameTextBoxText)) { return false; } return true; } private void CreatePersonButtonClickCommand_Execute() { if (CreatePersonButtonClickCommand_CanExecute()) { bool success = false; if (DialogMode == PersonDialogMode.New) { var newPerson = new Person { FirstName = FirstNameTextBoxText, LastName = LastNameTextBoxText }; if (App.Database.Insert(newPerson) == 1) success = true; } if (DialogMode == PersonDialogMode.Edit) { EditPerson.FirstName = FirstNameTextBoxText; EditPerson.LastName = LastNameTextBoxText; if(App.Database.InsertOrReplace(EditPerson) == 1) success = true; } if (success) { App.Locator.MainView.UpdatePersonsList(); App.Locator.AddTransactionView.UpdatesPersonsComboBox(); RequestClose?.Invoke(null, null); } else { MessageBox.Show("Something bad happened", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } } } #endregion #region SetModeSpecifics() //////////////////////////////////////////////////////////////////////////////////////////////////// /// Sets mode specifics. /// /// Andre Beging, 12.09.2017. //////////////////////////////////////////////////////////////////////////////////////////////////// public void SetModeSpecifics() { if (DialogMode != PersonDialogMode.Edit || EditPersonId == Guid.Empty) { ClearView(); return; } // edit mode EditPerson = App.Database.Get(EditPersonId); if (EditPerson == null) { ClearView(); return; } FirstNameTextBoxText = EditPerson.FirstName; LastNameTextBoxText = EditPerson.LastName; WindowTitle = "Edit Person"; SaveButtonText = "Save"; } #endregion #region ClearView() //////////////////////////////////////////////////////////////////////////////////////////////////// /// Clears the view. /// /// Andre Beging, 08.09.2017. //////////////////////////////////////////////////////////////////////////////////////////////////// public void ClearView() { FirstNameTextBoxText = string.Empty; LastNameTextBoxText = string.Empty; DialogMode = PersonDialogMode.New; WindowTitle = "New Person"; SaveButtonText = "Create"; EditPersonId = Guid.Empty; } #endregion } }