RegisterForm.cs 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using System;
  2. using System.Text.RegularExpressions;
  3. using System.Windows.Forms;
  4. namespace WindowsFormsApp4
  5. {
  6. public partial class RegisterForm : Form
  7. {
  8. public RegisterForm()
  9. {
  10. InitializeComponent();
  11. AttachEventHandlers();
  12. }
  13. private void AttachEventHandlers()
  14. {
  15. btnRegister.Click += BtnRegister_Click;
  16. btnBack.Click += BtnBack_Click;
  17. }
  18. private bool ValidateFields()
  19. {
  20. if (string.IsNullOrWhiteSpace(txtLastName.Text))
  21. {
  22. MessageBox.Show("Введите фамилию", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  23. txtLastName.Focus();
  24. return false;
  25. }
  26. if (string.IsNullOrWhiteSpace(txtFirstName.Text))
  27. {
  28. MessageBox.Show("Введите имя", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  29. txtFirstName.Focus();
  30. return false;
  31. }
  32. string phone = txtPhone.Text.Trim();
  33. if (string.IsNullOrWhiteSpace(phone))
  34. {
  35. MessageBox.Show("Введите номер телефона", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  36. txtPhone.Focus();
  37. return false;
  38. }
  39. Regex phoneRegex = new Regex(@"^(\+7|8)[0-9]{10}$");
  40. if (!phoneRegex.IsMatch(phone))
  41. {
  42. MessageBox.Show("Некорректный номер телефона. Формат: +7XXXXXXXXXX или 8XXXXXXXXXX",
  43. "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  44. txtPhone.Focus();
  45. return false;
  46. }
  47. if (string.IsNullOrWhiteSpace(txtLogin.Text))
  48. {
  49. MessageBox.Show("Введите логин", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  50. txtLogin.Focus();
  51. return false;
  52. }
  53. if (txtLogin.Text.Length < 3)
  54. {
  55. MessageBox.Show("Логин должен содержать не менее 3 символов",
  56. "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  57. txtLogin.Focus();
  58. return false;
  59. }
  60. if (string.IsNullOrWhiteSpace(txtPassword.Text))
  61. {
  62. MessageBox.Show("Введите пароль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  63. txtPassword.Focus();
  64. return false;
  65. }
  66. if (txtPassword.Text.Length < 6)
  67. {
  68. MessageBox.Show("Пароль должен содержать не менее 6 символов",
  69. "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  70. txtPassword.Focus();
  71. return false;
  72. }
  73. if (txtPassword.Text != txtConfirmPassword.Text)
  74. {
  75. MessageBox.Show("Пароли не совпадают", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  76. txtConfirmPassword.Focus();
  77. return false;
  78. }
  79. return true;
  80. }
  81. private void BtnRegister_Click(object sender, EventArgs e)
  82. {
  83. if (!ValidateFields())
  84. return;
  85. if (DatabaseHelper.LoginExists(txtLogin.Text.Trim()))
  86. {
  87. MessageBox.Show("Пользователь с таким логином уже существует",
  88. "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  89. txtLogin.Focus();
  90. return;
  91. }
  92. if (DatabaseHelper.PhoneExists(txtPhone.Text.Trim()))
  93. {
  94. MessageBox.Show("Пользователь с таким номером телефона уже зарегистрирован",
  95. "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning);
  96. txtPhone.Focus();
  97. return;
  98. }
  99. int newClientId = DatabaseHelper.RegisterClient(
  100. txtLastName.Text.Trim(),
  101. txtFirstName.Text.Trim(),
  102. string.IsNullOrWhiteSpace(txtMiddleName.Text) ? null : txtMiddleName.Text.Trim(),
  103. txtPhone.Text.Trim()
  104. );
  105. if (newClientId > 0)
  106. {
  107. int newUserId = DatabaseHelper.CreateUser(
  108. txtLastName.Text.Trim(),
  109. txtFirstName.Text.Trim(),
  110. string.IsNullOrWhiteSpace(txtMiddleName.Text) ? null : txtMiddleName.Text.Trim(),
  111. txtPhone.Text.Trim(),
  112. "client",
  113. newClientId,
  114. null
  115. );
  116. if (newUserId > 0)
  117. {
  118. bool authCreated = DatabaseHelper.CreateUserAuth(
  119. newUserId,
  120. txtLogin.Text.Trim(),
  121. txtPassword.Text.Trim()
  122. );
  123. if (authCreated)
  124. {
  125. MessageBox.Show("Регистрация прошла успешно! Теперь вы можете войти в систему.",
  126. "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information);
  127. StartForm startForm = new StartForm();
  128. startForm.Show();
  129. this.Close();
  130. }
  131. else
  132. {
  133. MessageBox.Show("Ошибка при создании учётной записи",
  134. "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
  135. }
  136. }
  137. else
  138. {
  139. MessageBox.Show("Ошибка при создании пользователя",
  140. "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
  141. }
  142. }
  143. else
  144. {
  145. MessageBox.Show("Ошибка при регистрации клиента",
  146. "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
  147. }
  148. }
  149. private void BtnBack_Click(object sender, EventArgs e)
  150. {
  151. StartForm startForm = new StartForm();
  152. startForm.Show();
  153. this.Close();
  154. }
  155. }
  156. }