StaffChangeOrAddPage.xaml.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. using Microsoft.Win32;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.IO;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. using System.Windows;
  9. using System.Windows.Controls;
  10. using System.Windows.Data;
  11. using System.Windows.Documents;
  12. using System.Windows.Input;
  13. using System.Windows.Media;
  14. using System.Windows.Media.Imaging;
  15. using System.Windows.Navigation;
  16. using System.Windows.Shapes;
  17. namespace Hotel_Course_Project
  18. {
  19. /// <summary>
  20. /// Логика взаимодействия для StaffChangeOrAddPage.xaml
  21. /// </summary>
  22. public partial class StaffChangeOrAddPage : Page
  23. {
  24. public byte[] cotractImage;
  25. public string FilePath;
  26. public Staff _staff;
  27. public int IdStaff = 0;
  28. public StaffChangeOrAddPage(Staff staff)
  29. {
  30. InitializeComponent();
  31. DataContext = staff;
  32. _staff = staff;
  33. SStaffRole.ItemsSource = DataBase.db.StaffRole.ToList();
  34. if (DataContext != null)
  35. {
  36. SStaffRole.Text = staff.ToString();
  37. StaffChangeOrAddBtn.Content = "Изменить данные";
  38. this.Title = "Информация о сотруднике";
  39. IdStaff = staff.Id;
  40. StaffDeleteOrRestoreBtn.Visibility = Visibility.Visible;
  41. if (staff.Id_PersStatus == 1)
  42. {
  43. StaffDeleteOrRestoreBtn.Content = "Удалить сотрудника";
  44. }
  45. else
  46. {
  47. StaffDeleteOrRestoreBtn.Content = "Востановить сотрудника";
  48. }
  49. }
  50. else
  51. {
  52. StaffChangeOrAddBtn.Content = "Добавить сотрудника";
  53. this.Title = "Окно добавления сотрудника";
  54. StaffDeleteOrRestoreBtn.Visibility = Visibility.Collapsed;
  55. }
  56. if (staff == null || staff.PhotoContract == null)
  57. {
  58. SContractPhoto.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/no_picture.jpg"));
  59. }
  60. }
  61. private void StaffChangeOrAddBtn_Click(object sender, RoutedEventArgs e)
  62. {
  63. if (DataContext == null)
  64. {
  65. var existUser = DataBase.db.Staff.SingleOrDefault(item => item.Login == SLogin.Text);
  66. if (existUser != null && DataContext == null)
  67. {
  68. MessageBox.Show("Такой логин уже имеется в базе данных!");
  69. return;
  70. }
  71. }
  72. if (SLName.Text == null || SFName.Text == null || SLogin.Text == null || SPassword.Text == null)
  73. {
  74. MessageBox.Show("Ключевые поля не были заполнены!");
  75. return;
  76. }
  77. else
  78. {
  79. var existUserS = DataBase.db.Staff.SingleOrDefault(item => item.Login == SLogin.Text && item.Id != IdStaff);
  80. if (existUserS != null)
  81. {
  82. MessageBox.Show("Такой логин уже имеется в базе данных у другого сотрудника!");
  83. return;
  84. }
  85. else if (DataContext == null)
  86. {
  87. int numRole = DataBase.db.StaffRole.SingleOrDefault(item => item.Name == SStaffRole.Text).Id;
  88. Staff staff = new Staff()
  89. {
  90. LName = SLName.Text,
  91. FName = SFName.Text,
  92. MName = SMName.Text,
  93. Login = SLogin.Text,
  94. Password = SPassword.Text,
  95. Id_StaffRole = numRole,
  96. PhotoContract = cotractImage,
  97. Id_PersStatus = 1
  98. };
  99. DataBase.db.Staff.Add(staff);
  100. var lastId = DataBase.db.Staff.OrderByDescending(item => item.Id).FirstOrDefault().Id;
  101. DataBase.db.SaveChanges();
  102. MessageBox.Show("Сотрудник добавлен в базу.");
  103. }
  104. else
  105. {
  106. MessageBox.Show("Данные по сотрудинку изменены.");
  107. _staff.PhotoContract = cotractImage;
  108. DataBase.db.SaveChanges();
  109. }
  110. PChanger.MainFrame.GoBack();
  111. }
  112. }
  113. private void StaffDeleteOrRestoreBtn_Click(object sender, RoutedEventArgs e)
  114. {
  115. if (_staff.Id_PersStatus == 1)
  116. {
  117. _staff.Id_PersStatus = 2;
  118. MessageBox.Show("Статус пользователя изменился на <удалён>");
  119. }
  120. else
  121. {
  122. _staff.Id_PersStatus = 1;
  123. MessageBox.Show("Статус пользователя восстановлен");
  124. }
  125. DataBase.db.SaveChanges();
  126. PChanger.MainFrame.GoBack();
  127. }
  128. private void SContractPhoto_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
  129. {
  130. OpenFileDialog openFileDialog = new OpenFileDialog();
  131. if (openFileDialog.ShowDialog() == true)
  132. {
  133. FilePath = openFileDialog.FileName;
  134. string uriString = $"{FilePath}";
  135. BitmapImage bitimage = new BitmapImage(new Uri(@uriString));
  136. SContractPhoto.Source = bitimage;
  137. cotractImage = SomeMethods.ConvertBitmapImageToByte(bitimage);
  138. }
  139. else
  140. {
  141. FilePath = string.Empty;
  142. }
  143. }
  144. }
  145. }