|
@@ -1,5 +1,6 @@
|
|
|
using InvestTracker.Entities;
|
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
+using Microsoft.IdentityModel.Tokens;
|
|
|
using Prism.Commands;
|
|
|
using Prism.Mvvm;
|
|
|
using System;
|
|
@@ -21,6 +22,7 @@ namespace InvestTracker.VM
|
|
|
public DelegateCommand EditCommand { get; set; }
|
|
|
public DelegateCommand DeleteCommand { get; set; }
|
|
|
public DelegateCommand FindCommand { get; set; }
|
|
|
+ public DelegateCommand ToggleFilterCommand { get; set; }
|
|
|
#endregion
|
|
|
|
|
|
/// <summary>
|
|
@@ -56,12 +58,12 @@ namespace InvestTracker.VM
|
|
|
/// <summary>
|
|
|
/// По какой фамилии фильтровать поиск
|
|
|
/// </summary>
|
|
|
- public string FilterSurname { get; set; }
|
|
|
+ public string? FilterSurname { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
|
/// По какой должности фильтровать поиск
|
|
|
/// </summary>
|
|
|
- public Entities.Title FilterTitle { get; set; }
|
|
|
+ public Entities.Title? FilterTitle { get; set; }
|
|
|
|
|
|
/// <summary>
|
|
|
/// Активен ли фильтр в данный момент
|
|
@@ -70,12 +72,13 @@ 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);
|
|
|
+ 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);
|
|
|
+ ToggleFilterCommand = new DelegateCommand(ToggleFilterCommand_Executed, WhenClean);
|
|
|
|
|
|
GridBlocked = true;
|
|
|
|
|
@@ -211,8 +214,43 @@ namespace InvestTracker.VM
|
|
|
/// </summary>
|
|
|
private void Find_Executed()
|
|
|
{
|
|
|
- FilterActive = true;
|
|
|
- RaisePropertyChanged(nameof(FilterActive));
|
|
|
+ // 1. Установить список сотрудников по условиям
|
|
|
+ Func<Employee, bool> filter = (Employee e) => {
|
|
|
+ if (FilterSurname.IsNullOrEmpty() == false)
|
|
|
+ {
|
|
|
+ if (e.Surname != FilterSurname)
|
|
|
+ {
|
|
|
+ // Не совпадают фамилии
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (FilterTitle != null)
|
|
|
+ {
|
|
|
+ if (e.Title != FilterTitle)
|
|
|
+ {
|
|
|
+ // Не совпадают должности
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return true;
|
|
|
+ };
|
|
|
+
|
|
|
+ var filteredEmployees = _dbContext.Employees
|
|
|
+ .Where(filter)
|
|
|
+ .ToList();
|
|
|
+
|
|
|
+ // 2. Проверить результаты
|
|
|
+ if (filteredEmployees.Count == 0)
|
|
|
+ {
|
|
|
+ MessageBox.Show("Не найдено ни одного сотрудника, используя заданные параметры");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 3. Перезаписать сотрудников
|
|
|
+ Employees = new ObservableCollection<Employee>(filteredEmployees);
|
|
|
+ RaisePropertyChanged(nameof(Employees));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -244,6 +282,18 @@ namespace InvestTracker.VM
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void ToggleFilterCommand_Executed()
|
|
|
+ {
|
|
|
+ FilterActive = !FilterActive;
|
|
|
+ if (FilterActive == false)
|
|
|
+ {
|
|
|
+ // Сбрасываем фильтр
|
|
|
+ Employees = new ObservableCollection<Employee>(_dbContext.Employees.ToList());
|
|
|
+ RaisePropertyChanged(nameof(Employees));
|
|
|
+ }
|
|
|
+ RaisePropertyChanged(nameof(FilterActive));
|
|
|
+ }
|
|
|
+
|
|
|
/// <summary>
|
|
|
/// Заставляет все команды вызвать свои методы .RaiseExecuteChanged
|
|
|
/// </summary>
|
|
@@ -255,6 +305,7 @@ namespace InvestTracker.VM
|
|
|
EditCommand.RaiseCanExecuteChanged();
|
|
|
DeleteCommand.RaiseCanExecuteChanged();
|
|
|
FindCommand.RaiseCanExecuteChanged();
|
|
|
+ ToggleFilterCommand.RaiseCanExecuteChanged();
|
|
|
}
|
|
|
}
|
|
|
}
|