EmploeeViewModel.cs 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. using Microsoft.EntityFrameworkCore;
  2. using Prism.Commands;
  3. using Prism.Mvvm;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Collections.ObjectModel;
  7. using System.ComponentModel;
  8. using System.Linq;
  9. using System.Windows;
  10. using System.Windows.Input;
  11. using WpfAppUI.Model;
  12. using WpfAppUI.View.WindowEmploee;
  13. namespace WpfAppUI.ViewModel
  14. {
  15. internal class EmploeeViewModel : BindableBase
  16. {
  17. #region Поля
  18. private DelegateCommand _addCommand;
  19. private DelegateCommand _undoCommand;
  20. private DelegateCommand _editCommand;
  21. private DelegateCommand _searchCommand;
  22. private DelegateCommand _saveCommand;
  23. private DelegateCommand _deleteCommand;
  24. private DelegateCommand _filterClear;
  25. private Emploee _selectedItemInDataGrid;
  26. private string _searchFilterSurname;
  27. private Post _searchFilterPost;
  28. private Visibility _visibilityText;
  29. private ObservableCollection<Emploee> EmploeeFilter;
  30. #endregion
  31. #region Реализация методов для привязки
  32. private void UndoCommandRealization()
  33. {
  34. MessageBox.Show("Отменить");
  35. }
  36. private void AddCommandRealization()
  37. {
  38. NewEmploee emploee = new NewEmploee();
  39. Nullable<bool> dialogResult = emploee.ShowDialog();
  40. if (dialogResult == false)
  41. {
  42. UpdateData();
  43. }
  44. }
  45. private void EditCommandRealization()
  46. {
  47. if (_selectedItemInDataGrid != null)
  48. {
  49. EditEmploee editEmploee = new EditEmploee(_selectedItemInDataGrid.id);
  50. Nullable<bool> dialogResult = editEmploee.ShowDialog();
  51. if (dialogResult == false)
  52. {
  53. UpdateData();
  54. }
  55. }
  56. else
  57. MessageBox.Show("Выберите строку с нужным сотрудником", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
  58. }
  59. private void SearchCommandRealization()
  60. {
  61. MessageBox.Show("Поиск");
  62. }
  63. private void SaveCommandRealization()
  64. {
  65. MessageBox.Show("Сохранить");
  66. }
  67. private void DeleteCommandRealization()
  68. {
  69. if ( _selectedItemInDataGrid != null)
  70. {
  71. if (MessageBox.Show($"Вы уверены что хотите удалить рабочего {_selectedItemInDataGrid.Surname} безвозвратно?", "Удаление сотрудника", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes)
  72. {
  73. if (!DBRequests.DeleteEmploeeById(_selectedItemInDataGrid.id))
  74. MessageBox.Show("Ошибка при удалении", "Ошибка");
  75. else
  76. MessageBox.Show("Сотрудник удалён успешно", "Успешный успех");
  77. UpdateData();
  78. }
  79. } else
  80. MessageBox.Show("Выберите строку с нужным сотрудником", "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error);
  81. }
  82. private void FilterClearRealization()
  83. {
  84. SearchFilterSurname = null;
  85. SearchFilterPost = null;
  86. }
  87. #endregion
  88. #region Методы
  89. private void UpdateData()
  90. {
  91. EmploeesOutput.Clear();
  92. if (SearchFilterSurname != null && SearchFilterPost != null)
  93. {
  94. var epml = EmploeeFilter.Where(i => i.Post.Name == SearchFilterPost.Name && i.Surname.Contains(SearchFilterSurname)).ToList();
  95. foreach (var i in epml)
  96. {
  97. EmploeesOutput.Add(i);
  98. }
  99. }
  100. else if (SearchFilterPost != null)
  101. {
  102. var epml = EmploeeFilter.Where(i => i.Post.Name == SearchFilterPost.Name).ToList();
  103. foreach (var i in epml)
  104. {
  105. EmploeesOutput.Add(i);
  106. }
  107. }
  108. else if (SearchFilterSurname != null)
  109. {
  110. var epml = EmploeeFilter.Where(i => i.Surname.Contains(SearchFilterSurname)).ToList();
  111. foreach (var i in epml)
  112. {
  113. EmploeesOutput.Add(i);
  114. }
  115. }
  116. else
  117. {
  118. var epml = DBRequests.AllDataRequest();
  119. foreach (var i in epml)
  120. {
  121. EmploeesOutput.Add(i);
  122. }
  123. }
  124. if (EmploeesOutput.Count == 0)
  125. VisibilityText = Visibility.Visible;
  126. else
  127. VisibilityText = Visibility.Hidden;
  128. }
  129. #endregion
  130. #region Конструктор
  131. public EmploeeViewModel()
  132. {
  133. UndoCommand = new DelegateCommand(UndoCommandRealization, () => true);
  134. AddCommand = new DelegateCommand(AddCommandRealization, () => true);
  135. EditCommand = new DelegateCommand(EditCommandRealization, () => true);
  136. SearchCommand = new DelegateCommand(SearchCommandRealization, () => true);
  137. SaveCommand = new DelegateCommand(SaveCommandRealization, () => true);
  138. DeleteCommand = new DelegateCommand(DeleteCommandRealization, () => true);
  139. FilterClear = new DelegateCommand(FilterClearRealization, () => true);
  140. EmploeeFilter = new ObservableCollection<Emploee>(DBRequests.AllDataRequest());
  141. EmploeesOutput = new ObservableCollection<Emploee>(DBRequests.AllDataRequest());
  142. Posts = new ObservableCollection<Post>(DBRequests.PostRequest());
  143. VisibilityText = Visibility.Hidden;
  144. }
  145. #endregion
  146. #region Свойства
  147. public DelegateCommand UndoCommand { get { return _undoCommand; } set { _undoCommand = value; } }
  148. public DelegateCommand AddCommand { get { return _addCommand; } set { _addCommand = value; } }
  149. public DelegateCommand EditCommand { get { return _editCommand; } set { _editCommand = value; } }
  150. public DelegateCommand SearchCommand { get { return _searchCommand; } set { _searchCommand = value; } }
  151. public DelegateCommand SaveCommand { get { return _saveCommand; } set { _saveCommand = value; } }
  152. public DelegateCommand DeleteCommand { get { return _deleteCommand; } set { _deleteCommand = value; } }
  153. public DelegateCommand FilterClear { get => _filterClear; set => _filterClear = value; }
  154. public ObservableCollection<Emploee> EmploeesOutput { get; set; }
  155. public ObservableCollection<Post> Posts { get; set; }
  156. public Emploee SelectedItem { get => _selectedItemInDataGrid; set => _selectedItemInDataGrid = value; }
  157. public Visibility VisibilityText
  158. {
  159. get => _visibilityText;
  160. set
  161. {
  162. _visibilityText = value;
  163. RaisePropertyChanged();
  164. }
  165. }
  166. public string SearchFilterSurname
  167. {
  168. get => _searchFilterSurname;
  169. set
  170. {
  171. _searchFilterSurname = value;
  172. UpdateData();
  173. RaisePropertyChanged();
  174. }
  175. }
  176. public Post SearchFilterPost
  177. {
  178. get => _searchFilterPost;
  179. set
  180. {
  181. _searchFilterPost = value;
  182. UpdateData();
  183. RaisePropertyChanged();
  184. }
  185. }
  186. #endregion
  187. }
  188. }