using System; using System.Text.RegularExpressions; using System.Windows.Forms; namespace WindowsFormsApp4 { public partial class RegisterForm : Form { public RegisterForm() { InitializeComponent(); AttachEventHandlers(); } private void AttachEventHandlers() { btnRegister.Click += BtnRegister_Click; btnBack.Click += BtnBack_Click; } private bool ValidateFields() { if (string.IsNullOrWhiteSpace(txtLastName.Text)) { MessageBox.Show("Введите фамилию", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtLastName.Focus(); return false; } if (string.IsNullOrWhiteSpace(txtFirstName.Text)) { MessageBox.Show("Введите имя", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtFirstName.Focus(); return false; } string phone = txtPhone.Text.Trim(); if (string.IsNullOrWhiteSpace(phone)) { MessageBox.Show("Введите номер телефона", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtPhone.Focus(); return false; } Regex phoneRegex = new Regex(@"^(\+7|8)[0-9]{10}$"); if (!phoneRegex.IsMatch(phone)) { MessageBox.Show("Некорректный номер телефона. Формат: +7XXXXXXXXXX или 8XXXXXXXXXX", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtPhone.Focus(); return false; } if (string.IsNullOrWhiteSpace(txtLogin.Text)) { MessageBox.Show("Введите логин", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtLogin.Focus(); return false; } if (txtLogin.Text.Length < 3) { MessageBox.Show("Логин должен содержать не менее 3 символов", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtLogin.Focus(); return false; } if (string.IsNullOrWhiteSpace(txtPassword.Text)) { MessageBox.Show("Введите пароль", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtPassword.Focus(); return false; } if (txtPassword.Text.Length < 6) { MessageBox.Show("Пароль должен содержать не менее 6 символов", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtPassword.Focus(); return false; } if (txtPassword.Text != txtConfirmPassword.Text) { MessageBox.Show("Пароли не совпадают", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtConfirmPassword.Focus(); return false; } return true; } private void BtnRegister_Click(object sender, EventArgs e) { if (!ValidateFields()) return; if (DatabaseHelper.LoginExists(txtLogin.Text.Trim())) { MessageBox.Show("Пользователь с таким логином уже существует", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtLogin.Focus(); return; } if (DatabaseHelper.PhoneExists(txtPhone.Text.Trim())) { MessageBox.Show("Пользователь с таким номером телефона уже зарегистрирован", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Warning); txtPhone.Focus(); return; } int newClientId = DatabaseHelper.RegisterClient( txtLastName.Text.Trim(), txtFirstName.Text.Trim(), string.IsNullOrWhiteSpace(txtMiddleName.Text) ? null : txtMiddleName.Text.Trim(), txtPhone.Text.Trim() ); if (newClientId > 0) { int newUserId = DatabaseHelper.CreateUser( txtLastName.Text.Trim(), txtFirstName.Text.Trim(), string.IsNullOrWhiteSpace(txtMiddleName.Text) ? null : txtMiddleName.Text.Trim(), txtPhone.Text.Trim(), "client", newClientId, null ); if (newUserId > 0) { bool authCreated = DatabaseHelper.CreateUserAuth( newUserId, txtLogin.Text.Trim(), txtPassword.Text.Trim() ); if (authCreated) { MessageBox.Show("Регистрация прошла успешно! Теперь вы можете войти в систему.", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information); StartForm startForm = new StartForm(); startForm.Show(); this.Close(); } else { MessageBox.Show("Ошибка при создании учётной записи", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Ошибка при создании пользователя", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } else { MessageBox.Show("Ошибка при регистрации клиента", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void BtnBack_Click(object sender, EventArgs e) { StartForm startForm = new StartForm(); startForm.Show(); this.Close(); } } }