Workers.xaml.cs 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. using LR1.Entities;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Collections.ObjectModel;
  5. using System.Data.Services.Client;
  6. using System.Data.Entity.Core.Objects;
  7. using System.Linq;
  8. using System.Text;
  9. using System.Threading.Tasks;
  10. using System.Windows;
  11. using System.Windows.Controls;
  12. using System.Windows.Data;
  13. using System.Windows.Documents;
  14. using System.Windows.Input;
  15. using System.Windows.Media;
  16. using System.Windows.Media.Imaging;
  17. using System.Windows.Navigation;
  18. using System.Windows.Shapes;
  19. using System.Data.Entity.Core.Objects.DataClasses;
  20. using System.Data.Entity.Core;
  21. using System.Data.Entity.Infrastructure;
  22. using System.Data.Entity.Migrations;
  23. using System.Data.Entity.ModelConfiguration;
  24. using System.Data.Entity.Spatial;
  25. using System.Data.Entity.SqlServer;
  26. using System.Data.Entity.Utilities;
  27. using System.Data.Entity.Validation;
  28. using System.Data.Objects;
  29. using System.Data.Entity;
  30. namespace LR1
  31. {
  32. /// <summary>
  33. /// Логика взаимодействия для Workers.xaml
  34. /// </summary>
  35. public partial class Workers : Page
  36. {
  37. public static WorkersEntities DataEntitiesEmployee { get; set; }
  38. public static ObservableCollection<Employee> ListEmployee;
  39. public Workers()
  40. {
  41. DataEntitiesEmployee = new WorkersEntities();
  42. InitializeComponent();
  43. ListEmployee = new ObservableCollection<Employee>();
  44. }
  45. private bool isDirty = true;
  46. private bool isLoaded = false;
  47. private void UndoCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
  48. {
  49. e.CanExecute = isLoaded;
  50. }
  51. private void UndoCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
  52. {
  53. RewriteEmployee();
  54. DataGridEmployee.IsReadOnly = true;
  55. MessageBox.Show("Отмена");
  56. isDirty = true;
  57. isLoaded = false;
  58. }
  59. private void DeleteCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
  60. {
  61. e.CanExecute = isDirty;
  62. }
  63. private void DeleteCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
  64. {
  65. Employee emp = DataGridEmployee.SelectedItem as Employee;
  66. if (emp !=null)
  67. {
  68. MessageBoxResult result = MessageBox.Show("Удалить сотрудника: " + emp.Surname + " " + emp.Patronymic, "Предупреждение", MessageBoxButton.OKCancel);
  69. if (result == MessageBoxResult.OK)
  70. {
  71. DataEntitiesEmployee.Employees.Remove(emp);
  72. DataGridEmployee.SelectedIndex = DataGridEmployee.SelectedIndex == 0 ? 1 : DataGridEmployee.SelectedIndex - 1;
  73. ListEmployee.Remove(emp);
  74. DataEntitiesEmployee.SaveChanges();
  75. }
  76. }
  77. else
  78. {
  79. MessageBox.Show("Выберите строку для удаления");
  80. }
  81. MessageBox.Show("Удаление");
  82. isDirty = true;
  83. isLoaded = false;
  84. }
  85. private void AddCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
  86. {
  87. e.CanExecute = isDirty;
  88. }
  89. private void AddCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
  90. {
  91. Employee employee = Employee.CreateEmployee(DataGridEmployee.Items.Count + 14, "не задано", "не задано", "не задано", 0);
  92. employee.Telephone = "не задано";
  93. employee.Email = "не задано";
  94. try
  95. {
  96. DataEntitiesEmployee.Employees.Add(employee);
  97. ListEmployee.Add(employee);
  98. DataGridEmployee.ScrollIntoView(employee);
  99. DataGridEmployee.SelectedIndex = DataGridEmployee.Items.Count - 1;
  100. DataGridEmployee.Focus();
  101. DataGridEmployee.IsReadOnly = false;
  102. MessageBox.Show("Создание");
  103. isDirty = false;
  104. isLoaded = true;
  105. }
  106. catch (DataServiceRequestException ex)
  107. {
  108. throw new ApplicationException("Ошибка добавления нового сотрудника в контекст данных" + ex.ToString());
  109. }
  110. }
  111. private void EditCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
  112. {
  113. e.CanExecute = isDirty;
  114. }
  115. private void EditCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
  116. {
  117. MessageBox.Show("Редактирование");
  118. DataGridEmployee.IsReadOnly = false;
  119. DataGridEmployee.BeginEdit();
  120. isDirty = false;
  121. isLoaded = true;
  122. }
  123. private void FindCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
  124. {
  125. e.CanExecute = isDirty;
  126. }
  127. private void FindCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
  128. {
  129. MessageBox.Show("Поиск");
  130. isDirty = false;
  131. isLoaded = true;
  132. BorderFind.Visibility = System.Windows.Visibility.Visible;
  133. }
  134. private void SaveCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
  135. {
  136. e.CanExecute = isLoaded;
  137. }
  138. private void SaveCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
  139. {
  140. MessageBox.Show("Сохра");
  141. DataEntitiesEmployee.SaveChanges();
  142. isDirty = true;
  143. DataGridEmployee.IsReadOnly=true;
  144. isLoaded = false;
  145. }
  146. private void Page_Loaded(object sender, RoutedEventArgs e)
  147. {
  148. GetEmployees();
  149. DataGridEmployee.ItemsSource = ListEmployee;
  150. }
  151. private void GetEmployees()
  152. {
  153. var queryEmployee = DataEntitiesEmployee.Employees.OrderBy(Employee => Employee.Surname);
  154. foreach (Employee emp in queryEmployee)
  155. {
  156. ListEmployee.Add(emp);
  157. }
  158. DataGridEmployee.ItemsSource = ListEmployee;
  159. }
  160. private void RewriteEmployee()
  161. {
  162. DataEntitiesEmployee = new WorkersEntities();
  163. ListEmployee.Clear();
  164. GetEmployees();
  165. }
  166. private void TextBoxSurname_TextChanged(object sender, TextChangedEventArgs e)
  167. {
  168. ButtonFindTitle.IsEnabled = false;
  169. ButtonFindSurname.IsEnabled = true;
  170. ComboBoxTitle.Text = "";
  171. }
  172. private void ComboBoxTitle_SelectionChanged(object sender, SelectionChangedEventArgs e)
  173. {
  174. ButtonFindTitle.IsEnabled = true;
  175. ButtonFindSurname.IsEnabled = false;
  176. TextBoxSurname.Text = "";
  177. }
  178. private void ButtonFindSurname_Click(object sender, RoutedEventArgs e)
  179. {
  180. string surname = TextBoxSurname.Text;
  181. DataEntitiesEmployee = new WorkersEntities();
  182. ListEmployee.Clear();
  183. var queryEmployee = from employee in DataEntitiesEmployee.Employees
  184. where employee.Surname == surname
  185. select employee;
  186. foreach (Employee emp in queryEmployee)
  187. {
  188. ListEmployee.Add(emp);
  189. }
  190. if (ListEmployee.Count > 0)
  191. {
  192. DataGridEmployee.ItemsSource = ListEmployee;
  193. ButtonFindSurname.IsEnabled = true;
  194. ButtonFindTitle.IsEnabled = false;
  195. }
  196. else
  197. MessageBox.Show("сотрудник с фамилией \n" + surname+" не найден", "Предупреждение!", MessageBoxButton.OK, MessageBoxImage.Warning);
  198. }
  199. private void ButtonFindTitle_Click(object sender, RoutedEventArgs e)
  200. {
  201. DataEntitiesEmployee = new WorkersEntities();
  202. ListEmployee.Clear();
  203. Title title = ComboBoxTitle.SelectedItem as Title;
  204. //var queryEmployee = DataEntitiesEmployee.Employees.OrderBy(Employee => Employee.Surname);
  205. var queryEmployee = from employee in DataEntitiesEmployee.Employees
  206. where employee.TitleID == title.ID
  207. orderby employee.Surname
  208. select employee;
  209. foreach (Employee emp in queryEmployee)
  210. {
  211. ListEmployee.Add(emp);
  212. }
  213. DataGridEmployee.ItemsSource = ListEmployee;
  214. }
  215. private void RefreshCommandBinding_Executed(object sender, ExecutedRoutedEventArgs e)
  216. {
  217. RewriteEmployee();
  218. DataGridEmployee.IsReadOnly = false;
  219. }
  220. }
  221. }