using Microsoft.EntityFrameworkCore; using Prism.Commands; using Prism.Mvvm; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.ComponentModel; using System.Linq; using System.Windows; using System.Windows.Input; using WpfAppUI.Model; using WpfAppUI.View.WindowEmploee; namespace WpfAppUI.ViewModel { internal class EmploeeViewModel : BindableBase { #region Поля private DelegateCommand _addCommand; private DelegateCommand _undoCommand; private DelegateCommand _editCommand; private DelegateCommand _searchCommand; private DelegateCommand _saveCommand; private DelegateCommand _deleteCommand; private DelegateCommand _filterClear; private Emploee _selectedItemInDataGrid; private string _searchFilterSurname; private Post _searchFilterPost; private Visibility _visibilityText; private ObservableCollection EmploeeFilter; #endregion #region Реализация методов для привязки private void UndoCommandRealization() { MessageBox.Show("Отменить"); } private void AddCommandRealization() { NewEmploee emploee = new NewEmploee(); Nullable dialogResult = emploee.ShowDialog(); if (dialogResult == false) { UpdateData(); } } private void EditCommandRealization() { if (_selectedItemInDataGrid != null) { EditEmploee editEmploee = new EditEmploee(_selectedItemInDataGrid.id); Nullable dialogResult = editEmploee.ShowDialog(); if (dialogResult == false) { UpdateData(); } } else MessageBox.Show("Выберите строку с нужным сотрудником", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } private void SearchCommandRealization() { MessageBox.Show("Поиск"); } private void SaveCommandRealization() { MessageBox.Show("Сохранить"); } private void DeleteCommandRealization() { if ( _selectedItemInDataGrid != null) { if (MessageBox.Show($"Вы уверены что хотите удалить рабочего {_selectedItemInDataGrid.Surname} безвозвратно?", "Удаление сотрудника", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { if (!DBRequests.DeleteEmploeeById(_selectedItemInDataGrid.id)) MessageBox.Show("Ошибка при удалении", "Ошибка"); else MessageBox.Show("Сотрудник удалён успешно", "Успешный успех"); UpdateData(); } } else MessageBox.Show("Выберите строку с нужным сотрудником", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } private void FilterClearRealization() { SearchFilterSurname = null; SearchFilterPost = null; } #endregion #region Методы private void UpdateData() { EmploeesOutput.Clear(); if (SearchFilterSurname != null && SearchFilterPost != null) { var epml = EmploeeFilter.Where(i => i.Post.Name == SearchFilterPost.Name && i.Surname.Contains(SearchFilterSurname)).ToList(); foreach (var i in epml) { EmploeesOutput.Add(i); } } else if (SearchFilterPost != null) { var epml = EmploeeFilter.Where(i => i.Post.Name == SearchFilterPost.Name).ToList(); foreach (var i in epml) { EmploeesOutput.Add(i); } } else if (SearchFilterSurname != null) { var epml = EmploeeFilter.Where(i => i.Surname.Contains(SearchFilterSurname)).ToList(); foreach (var i in epml) { EmploeesOutput.Add(i); } } else { var epml = DBRequests.AllDataRequest(); foreach (var i in epml) { EmploeesOutput.Add(i); } } if (EmploeesOutput.Count == 0) VisibilityText = Visibility.Visible; else VisibilityText = Visibility.Hidden; } #endregion #region Конструктор public EmploeeViewModel() { UndoCommand = new DelegateCommand(UndoCommandRealization, () => true); AddCommand = new DelegateCommand(AddCommandRealization, () => true); EditCommand = new DelegateCommand(EditCommandRealization, () => true); SearchCommand = new DelegateCommand(SearchCommandRealization, () => true); SaveCommand = new DelegateCommand(SaveCommandRealization, () => true); DeleteCommand = new DelegateCommand(DeleteCommandRealization, () => true); FilterClear = new DelegateCommand(FilterClearRealization, () => true); EmploeeFilter = new ObservableCollection(DBRequests.AllDataRequest()); EmploeesOutput = new ObservableCollection(DBRequests.AllDataRequest()); Posts = new ObservableCollection(DBRequests.PostRequest()); VisibilityText = Visibility.Hidden; } #endregion #region Свойства public DelegateCommand UndoCommand { get { return _undoCommand; } set { _undoCommand = value; } } public DelegateCommand AddCommand { get { return _addCommand; } set { _addCommand = value; } } public DelegateCommand EditCommand { get { return _editCommand; } set { _editCommand = value; } } public DelegateCommand SearchCommand { get { return _searchCommand; } set { _searchCommand = value; } } public DelegateCommand SaveCommand { get { return _saveCommand; } set { _saveCommand = value; } } public DelegateCommand DeleteCommand { get { return _deleteCommand; } set { _deleteCommand = value; } } public DelegateCommand FilterClear { get => _filterClear; set => _filterClear = value; } public ObservableCollection EmploeesOutput { get; set; } public ObservableCollection Posts { get; set; } public Emploee SelectedItem { get => _selectedItemInDataGrid; set => _selectedItemInDataGrid = value; } public Visibility VisibilityText { get => _visibilityText; set { _visibilityText = value; RaisePropertyChanged(); } } public string SearchFilterSurname { get => _searchFilterSurname; set { _searchFilterSurname = value; UpdateData(); RaisePropertyChanged(); } } public Post SearchFilterPost { get => _searchFilterPost; set { _searchFilterPost = value; UpdateData(); RaisePropertyChanged(); } } #endregion } }