RegistrationPage.xaml.cs 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using System.Linq;
  2. using System.Windows;
  3. using System.Windows.Controls;
  4. using System.Windows.Navigation;
  5. namespace MyTests.Pages
  6. {
  7. public partial class RegistrationPage : Page
  8. {
  9. public RegistrationPage()
  10. {
  11. InitializeComponent();
  12. }
  13. private void RegButton_Click(object sender, RoutedEventArgs e)
  14. {
  15. try
  16. {
  17. if (!Functions.IsValidEmail(EmailBox.Text)) // Проверка на правильность ввода электронной почты
  18. new ErrorWindow("Email введен неверно.").Show(); // Вывод ошибки
  19. else if (Functions.IsEmailAlreadyTaken(EmailBox.Text)) // Проверка на свободность электронной почты
  20. new ErrorWindow("Данный email уже используется.").Show();// Вывод ошибки
  21. else if (!Functions.IsValidLength(LogBox.Text.Trim())) // Проверка на минтимальную длину логина
  22. new ErrorWindow("Поле «Логин» должно содержать не менее 5 символов.").Show();// Вывод ошибки
  23. else if (!Functions.IsValidLength(PassBox.Password.Trim())) // Проверка на минтимальную длину пароля
  24. new ErrorWindow("Поле «Пароль» должно содержать не менее 5 символов.").Show();// Вывод ошибки
  25. else if (!Functions.IsLogEqualPass(LogBox.Text, PassBox.Password)) // Проверка на различие логина и пароля
  26. new ErrorWindow(" Поля «Логин» и «Пароль» не должны быть равны").Show();// Вывод ошибки
  27. else if (Functions.IsLoginAlreadyTaken(LogBox.Text)) // Проверка на свободность логина
  28. new ErrorWindow("Данный логин уже занят").Show();// Вывод ошибки
  29. else // Иначе, т.е если все проверки пройдены
  30. {
  31. string[] fio = new string[3]; // Создание массива из 3 элементов
  32. fio = FIOBox.Text.Split(' '); // Заполнение массива ФИО пользователя с разделением по пробелу . т.е Фамилия - [0], Имя - [1], Отчество - [2]
  33. Users newUser = new Users() // Создание пользователя
  34. {
  35. IdUser = cdb.db.Users.Select(p => p.IdUser).DefaultIfEmpty(0).Max() + 1, // id = максимальный id +1
  36. Login = LogBox.Text,
  37. Password = Functions.EncryptPassword(PassBox.Password), // Шифрование пароля
  38. Email = EmailBox.Text,
  39. Post = cdb.db.Users.Count() == 0 ? "Преподаватель" : "Пользователь", // Если пользователей 0, то первому выдаются права Преподавателя
  40. Surname = fio[0],
  41. Name = fio[1],
  42. Patronymic = fio[2]
  43. };
  44. cdb.db.Users.Add(newUser); // Добавление в базу данных
  45. cdb.db.SaveChanges(); // Сохранение
  46. new ErrorWindow("Успешная регистрация").ShowDialog(); // Вывод диалогового окна
  47. NavigationService.Navigate(new LoginPage()); // Переход на страницу входа
  48. }
  49. }
  50. catch
  51. {
  52. new ErrorWindow("Ошибка.").ShowDialog(); // Вывод ошибки
  53. }
  54. }
  55. private void BackButton_Click(object sender, RoutedEventArgs e)
  56. {
  57. NavigationService.Navigate(new LoginPage()); // Переход на страницу входа
  58. }
  59. }
  60. }