|
@@ -51,7 +51,7 @@ namespace InvestTracker.VM
|
|
|
/// <summary>
|
|
|
/// Выбранный на данный момент сотрудник
|
|
|
/// </summary>
|
|
|
- public Employee SelectedEmployee { get; set; }
|
|
|
+ public Employee? SelectedEmployee { get; set; }
|
|
|
|
|
|
public EmployeeBrowseVM()
|
|
|
{
|
|
@@ -76,6 +76,7 @@ namespace InvestTracker.VM
|
|
|
{
|
|
|
MessageBox.Show("Undoing");
|
|
|
isDirty = true;
|
|
|
+ ReEvaluateCommands();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -83,9 +84,24 @@ namespace InvestTracker.VM
|
|
|
/// </summary>
|
|
|
private void Save_Executed()
|
|
|
{
|
|
|
- _dbContext.SaveChanges();
|
|
|
+ try
|
|
|
+ {
|
|
|
+ _dbContext.SaveChanges();
|
|
|
+ } catch (DbUpdateException ex)
|
|
|
+ {
|
|
|
+ string message = "Введённые данные о сотруднике не верны.";
|
|
|
+ if (ex.InnerException != null)
|
|
|
+ {
|
|
|
+ message += "\r\n" + ex.InnerException.Message;
|
|
|
+ }
|
|
|
+ MessageBox.Show(message);
|
|
|
+ }
|
|
|
+
|
|
|
GridBlocked = true;
|
|
|
isDirty = false;
|
|
|
+
|
|
|
+ RaisePropertyChanged(nameof(GridBlocked));
|
|
|
+ ReEvaluateCommands();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -93,9 +109,15 @@ namespace InvestTracker.VM
|
|
|
/// </summary>
|
|
|
private void New_Executed()
|
|
|
{
|
|
|
- Employee newEmployee = _dbContext.Employee.Create();
|
|
|
+ Employee newEmployee = new Employee();
|
|
|
+ _dbContext.Attach(newEmployee);
|
|
|
+ Employees.Add(newEmployee);
|
|
|
+
|
|
|
GridBlocked = false;
|
|
|
isDirty = true;
|
|
|
+
|
|
|
+ RaisePropertyChanged(nameof(GridBlocked));
|
|
|
+ ReEvaluateCommands();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -105,6 +127,9 @@ namespace InvestTracker.VM
|
|
|
{
|
|
|
GridBlocked = false;
|
|
|
isDirty = true;
|
|
|
+
|
|
|
+ RaisePropertyChanged(nameof(GridBlocked));
|
|
|
+ ReEvaluateCommands();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -121,14 +146,18 @@ namespace InvestTracker.VM
|
|
|
|
|
|
if (result == MessageBoxResult.OK)
|
|
|
{
|
|
|
- _dbContext.DeleteObject(SelectedEmployee);
|
|
|
+ _dbContext.Employees.Remove(SelectedEmployee);
|
|
|
_dbContext.SaveChanges();
|
|
|
+ Employees.Remove(SelectedEmployee);
|
|
|
} else
|
|
|
{
|
|
|
MessageBox.Show("Не выбрана строка для удаления");
|
|
|
}
|
|
|
}
|
|
|
isDirty = true;
|
|
|
+ RaisePropertyChanged(nameof(isDirty));
|
|
|
+ RaisePropertyChanged(nameof(SelectedEmployee));
|
|
|
+ ReEvaluateCommands();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -137,6 +166,7 @@ namespace InvestTracker.VM
|
|
|
private void Find_Executed()
|
|
|
{
|
|
|
MessageBox.Show("Searching...");
|
|
|
+ ReEvaluateCommands();
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -167,5 +197,18 @@ namespace InvestTracker.VM
|
|
|
return false;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// Заставляет все команды вызвать свои методы .RaiseExecuteChanged
|
|
|
+ /// </summary>
|
|
|
+ private void ReEvaluateCommands()
|
|
|
+ {
|
|
|
+ UndoCommand.RaiseCanExecuteChanged();
|
|
|
+ SaveCommand.RaiseCanExecuteChanged();
|
|
|
+ NewCommand.RaiseCanExecuteChanged();
|
|
|
+ EditCommand.RaiseCanExecuteChanged();
|
|
|
+ DeleteCommand.RaiseCanExecuteChanged();
|
|
|
+ FindCommand.RaiseCanExecuteChanged();
|
|
|
+ }
|
|
|
}
|
|
|
}
|