|
@@ -55,18 +55,18 @@ namespace InvestTracker.VM
|
|
|
|
|
|
public EmployeeBrowseVM()
|
|
|
{
|
|
|
- UndoCommand = new DelegateCommand(Undo_Executed, WhenDirty);
|
|
|
- SaveCommand = new DelegateCommand(Save_Executed, WhenDirty);
|
|
|
- NewCommand = new DelegateCommand(New_Executed, WhenClean);
|
|
|
- EditCommand = new DelegateCommand(Edit_Executed, WhenClean);
|
|
|
- DeleteCommand = new DelegateCommand(Delete_Executed, WhenClean);
|
|
|
- FindCommand = new DelegateCommand(Find_Executed, WhenClean);
|
|
|
-
|
|
|
- GridBlocked = true;
|
|
|
-
|
|
|
- _dbContext = new InvestContext();
|
|
|
- Employees = new ObservableCollection<Employee>(_dbContext.Employees.ToList());
|
|
|
- AllTitles = new ObservableCollection<Title>(_dbContext.Titles.ToList());
|
|
|
+ UndoCommand = new DelegateCommand(Undo_Executed, WhenDirty);
|
|
|
+ SaveCommand = new DelegateCommand(Save_Executed, WhenDirty);
|
|
|
+ NewCommand = new DelegateCommand(New_Executed, WhenClean);
|
|
|
+ EditCommand = new DelegateCommand(Edit_Executed, WhenClean);
|
|
|
+ DeleteCommand = new DelegateCommand(Delete_Executed, WhenClean);
|
|
|
+ FindCommand = new DelegateCommand(Find_Executed, WhenClean);
|
|
|
+
|
|
|
+ GridBlocked = true;
|
|
|
+
|
|
|
+ _dbContext = new InvestContext();
|
|
|
+ Employees = new ObservableCollection<Employee>(_dbContext.Employees.ToList());
|
|
|
+ AllTitles = new ObservableCollection<Title>(_dbContext.Titles.ToList());
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -74,8 +74,34 @@ namespace InvestTracker.VM
|
|
|
/// </summary>
|
|
|
private void Undo_Executed()
|
|
|
{
|
|
|
- MessageBox.Show("Undoing");
|
|
|
- isDirty = true;
|
|
|
+ // http://stackoverflow.com/questions/5466677/ddg#17967959
|
|
|
+ var changedEntries = _dbContext.ChangeTracker.Entries()
|
|
|
+ .Where(x => x.State != EntityState.Unchanged)
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ foreach (var entry in changedEntries)
|
|
|
+ {
|
|
|
+ switch (entry.State)
|
|
|
+ {
|
|
|
+ case EntityState.Modified:
|
|
|
+ entry.CurrentValues.SetValues(entry.OriginalValues);
|
|
|
+ entry.State = EntityState.Unchanged;
|
|
|
+ break;
|
|
|
+ case EntityState.Added:
|
|
|
+ entry.State = EntityState.Detached;
|
|
|
+ break;
|
|
|
+ case EntityState.Deleted:
|
|
|
+ entry.State = EntityState.Unchanged;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ Employees = new ObservableCollection<Employee>(_dbContext.Employees.ToList());
|
|
|
+
|
|
|
+ GridBlocked = true;
|
|
|
+ isDirty = false;
|
|
|
+ RaisePropertyChanged(nameof(GridBlocked));
|
|
|
+ RaisePropertyChanged(nameof(Employees));
|
|
|
ReEvaluateCommands();
|
|
|
}
|
|
|
|
|
@@ -95,6 +121,7 @@ namespace InvestTracker.VM
|
|
|
message += "\r\n" + ex.InnerException.Message;
|
|
|
}
|
|
|
MessageBox.Show(message);
|
|
|
+ return;
|
|
|
}
|
|
|
|
|
|
GridBlocked = true;
|
|
@@ -137,23 +164,24 @@ namespace InvestTracker.VM
|
|
|
/// </summary>
|
|
|
private void Delete_Executed()
|
|
|
{
|
|
|
- if (SelectedEmployee != null)
|
|
|
+ if (SelectedEmployee == null)
|
|
|
{
|
|
|
- MessageBoxResult result = MessageBox.Show(
|
|
|
- $"Удалить сотрудника: {SelectedEmployee.Surname} {SelectedEmployee.Name} {SelectedEmployee.Patronymic}",
|
|
|
- "Предупреждение",
|
|
|
- MessageBoxButton.OKCancel);
|
|
|
+ MessageBox.Show("Не выбрана строка для удаления");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ MessageBoxResult result = MessageBox.Show(
|
|
|
+ $"Удалить сотрудника: {SelectedEmployee.Surname} {SelectedEmployee.Name} {SelectedEmployee.Patronymic}",
|
|
|
+ "Предупреждение",
|
|
|
+ MessageBoxButton.OKCancel);
|
|
|
|
|
|
- if (result == MessageBoxResult.OK)
|
|
|
- {
|
|
|
- _dbContext.Employees.Remove(SelectedEmployee);
|
|
|
- _dbContext.SaveChanges();
|
|
|
- Employees.Remove(SelectedEmployee);
|
|
|
- } else
|
|
|
- {
|
|
|
- MessageBox.Show("Не выбрана строка для удаления");
|
|
|
- }
|
|
|
+ if (result != MessageBoxResult.OK)
|
|
|
+ {
|
|
|
+ return;
|
|
|
}
|
|
|
+
|
|
|
+ _dbContext.Employees.Remove(SelectedEmployee);
|
|
|
+ Employees.Remove(SelectedEmployee);
|
|
|
isDirty = true;
|
|
|
RaisePropertyChanged(nameof(isDirty));
|
|
|
RaisePropertyChanged(nameof(SelectedEmployee));
|