using EmployeeManagmentContracts.BusinessLogicContracts; using EmployeeManagmentContracts.ViewModels; using System.Collections.Generic; using System.Linq; using System.Windows; namespace EmployeeManagmentView.Employee { public partial class DeleteEmployeeWindow : Window { private readonly IEmployeeLogic _employeeLogic; private IEnumerable _allEmployees; // Список сотрудников для фильтрации public DeleteEmployeeWindow(IEmployeeLogic employeeLogic) { _employeeLogic = employeeLogic; InitializeComponent(); LoadEmployees(); } private void LoadEmployees() { _allEmployees = _employeeLogic.GetFullList(); // Загрузка всех данных EmployeesDataGrid.ItemsSource = _allEmployees; } private void DeleteButton_Click(object sender, RoutedEventArgs e) { if (EmployeesDataGrid.SelectedItem is EmployeeViewModel selectedEmployee) { // Удаление сотрудника _employeeLogic.Delete(selectedEmployee.Id); MessageBox.Show("Сотрудник успешно удален!"); LoadEmployees(); // Перезагрузка данных после удаления SearchTextBox.Text = string.Empty; // Очистка поля поиска } else { MessageBox.Show("Пожалуйста, выберите сотрудника для удаления."); } } private void SearchTextBox_TextChanged(object sender, System.Windows.Controls.TextChangedEventArgs e) { string query = SearchTextBox.Text.ToLower(); if (string.IsNullOrWhiteSpace(query)) { // Отображаем все записи EmployeesDataGrid.ItemsSource = _allEmployees; } else { // Фильтрация по всем полям сущности var filteredList = _allEmployees.Where(emp => (emp.NameJob?.ToLower().Contains(query) ?? false) || (emp.PartTimeJob?.ToLower().Contains(query) ?? false) || (emp.PhysicalPersonName?.ToLower().Contains(query) ?? false) || (emp.StartJob.HasValue && emp.StartJob.Value.ToString("dd.MM.yyyy").Contains(query)) || (emp.EndJob.HasValue && emp.EndJob.Value.ToString("dd.MM.yyyy").Contains(query)) || emp.Bid.ToString().Contains(query) ).ToList(); EmployeesDataGrid.ItemsSource = filteredList; } } } }