using Microsoft.Win32; using System; using System.Linq; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media.Imaging; namespace Hotel_Course_Project { /// /// Логика взаимодействия для StaffChangeOrAddPage.xaml /// public partial class StaffChangeOrAddPage : Page { public byte[] contractImage; public string FilePath; public Staff _staff; public Staff addStaff; public int IdStaff = 0; public StaffChangeOrAddPage(Staff staff) { InitializeComponent(); DataContext = staff; _staff = staff; SStaffRole.ItemsSource = DataBase.db.StaffRole.ToList(); if (DataContext != null) { SStaffRole.Text = staff.ToString(); StaffChangeOrAddBtn.Content = "Изменить данные"; this.Title = "Информация о сотруднике"; IdStaff = staff.Id; StaffDeleteOrRestoreBtn.Visibility = Visibility.Visible; if (staff.Id_PersStatus == 1) { StaffDeleteOrRestoreBtn.Content = "Удалить сотрудника"; } else { StaffDeleteOrRestoreBtn.Content = "Востановить сотрудника"; } } else { StaffChangeOrAddBtn.Content = "Добавить сотрудника"; this.Title = "Окно добавления сотрудника"; StaffDeleteOrRestoreBtn.Visibility = Visibility.Collapsed; } } private void StaffChangeOrAddBtn_Click(object sender, RoutedEventArgs e) { if (DataContext == null) { if (SStaffRole.Text == null || SStaffRole.Text == "") { MessageBox.Show("Не выбрана должность"); return; } else { int numRole = DataBase.db.StaffRole.SingleOrDefault(item => item.Name == SStaffRole.Text).Id; if (TestAddStaff(SLName.Text, SFName.Text, SMName.Text, SLogin.Text, SPassword.Text, numRole) == true) { DataBase.db.Staff.Add(addStaff); var lastId = DataBase.db.Staff.OrderByDescending(item => item.Id).FirstOrDefault().Id; DataBase.db.Staff.SingleOrDefault(item => item.Id == lastId).PhotoContract = contractImage; DataBase.db.SaveChanges(); MessageBox.Show("Сотрудник добавлен в базу."); } else { if (SLName.Text == null || SLName.Text == "" || SFName.Text == null || SFName.Text == "" || SMName.Text == null || SMName.Text == "" || SLogin.Text == null || SLogin.Text == "" || SPassword.Text == null || SPassword.Text == "") { MessageBox.Show("Ключевые поля не были заполнены!"); } else { MessageBox.Show("Такой логин уже имеется в базе данных у другого сотрудника!"); } } } } else { if (SLName.Text == null || SFName.Text == null || SLogin.Text == null || SPassword.Text == null) { MessageBox.Show("Ключевые поля не были заполнены!"); return; } else if (DataBase.db.Staff.SingleOrDefault(item => item.Id == IdStaff).Login != SLogin.Text) { if (DataBase.db.Staff.SingleOrDefault(item => item.Login == SLogin.Text) != null) { MessageBox.Show("Такой логин имеется у другого сотрудника"); return; } } MessageBox.Show("Данные по сотрудинку изменены."); _staff.PhotoContract = contractImage; DataBase.db.SaveChanges(); PChanger.MainFrame.GoBack(); return; } } public bool TestAddStaff(string LName, string FName, string MName, string Login, string Password, int numRole) { if (LName == null || LName == "" || FName == null || FName == "" || Login == null || Login == "" || Password == null || Password == "") { return false; } else { var existUserS = DataBase.db.Staff.SingleOrDefault(item => item.Login == Login); if (existUserS != null) { return false; } else { Staff staff = new Staff() { LName = LName, FName = FName, MName = MName, Login = Login, Password = Password, Id_StaffRole = numRole, Id_PersStatus = 1 }; addStaff = staff; return true; } } } private void StaffDeleteOrRestoreBtn_Click(object sender, RoutedEventArgs e) { if (_staff.Id_PersStatus == 1) { _staff.Id_PersStatus = 2; MessageBox.Show("Статус пользователя изменился на <удалён>"); } else { _staff.Id_PersStatus = 1; MessageBox.Show("Статус пользователя восстановлен"); } DataBase.db.SaveChanges(); PChanger.MainFrame.GoBack(); } private void SContractPhoto_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == true) { FilePath = openFileDialog.FileName; string uriString = $"{FilePath}"; BitmapImage bitimage = new BitmapImage(new Uri(@uriString)); if (TestReceiveImage(uriString) == true) { SContractPhoto.Source = bitimage; contractImage = SomeMethods.ConvertBitmapImageToByte(bitimage); } else { MessageBox.Show("Ошибка выбора изображения"); } } else { FilePath = string.Empty; } } public bool TestReceiveImage(string uriString) { try { BitmapImage bitimage = new BitmapImage(new Uri(@uriString)); return true; } catch { return false; } } private void Page_Loaded(object sender, RoutedEventArgs e) { if (_staff == null || _staff.PhotoContract == null) { SContractPhoto.Source = new BitmapImage(new Uri("pack://application:,,,/Resources/no_picture.jpg")); } } } }