Beispiel #1
0
        private void AddingMethod(bool check = true)
        {
            if (listBoxErrors.Items != null)
            {
                listBoxErrors.Items.Clear();
            }

            user.Login = textBoxAddLogin.Text;

            Regex           regex   = new Regex(@"\W|[А-Яа-я]+");
            MatchCollection matches = regex.Matches(user.Login);

            if (matches.Count > 0)
            {
                listBoxErrors.Items.Add("Логин содержит недопустимые символы!");
            }

            var results           = new List <ValidationResult>();
            var validationContext = new ValidationContext(user);

            if (!Validator.TryValidateObject(user, validationContext, results, true))
            {
                foreach (var error in results)
                {
                    listBoxErrors.Items.Add(error.ErrorMessage);
                }
            }
            if (service.CheckForAvailability("Login", user.Login, listBoxErrors) && check)
            {
                listBoxErrors.Items.Add("Логин уже занят!");
            }

            string pattern = @"(?=^.{6,32}$)((?=.*\d)(?=.*\W+))(?![.\n])(?=.*[A-Z])(?=.*[a-z]).*$";

            if (textBoxPassword.Text.Length < 6 || textBoxPassword.Text.Length > 32)
            {
                listBoxErrors.Items.Add("\nДлина пароля должна быть не меньше 6 символов и не больше 32 символов.");
            }
            else if (!(Regex.IsMatch(textBoxPassword.Text, pattern)))
            {
                listBoxErrors.Items.Add("\nПароль должен содержать цифровой и спец символы, а также буквы верхнего, нижнего регистра.");
            }

            user.Password = textBoxPassword.Text.GetHashCode().ToString();
            string PasswordCopy = textBoxConfirm.Text.GetHashCode().ToString();

            if (user.Password != PasswordCopy)
            {
                listBoxErrors.Items.Add("Пароли не совпадают.");
            }

            user.Address = textBoxAddress.Text;
            if (string.IsNullOrEmpty(user.Address) || string.IsNullOrWhiteSpace(user.Address))
            {
                listBoxErrors.Items.Add("Поле адреса пустое, заполните пожалуйста.");
            }

            user.Phone = textBoxPhone.Text;

            string pattern2 = @"^\+?[7]\d{10}$";

            if (!(Regex.IsMatch(user.Phone, pattern2, RegexOptions.IgnoreCase)))
            {
                listBoxErrors.Items.Add("Телефонный номер содержит недопустимые символы или введен не корректно.");
            }
            if (service.CheckForAvailability("Phone", user.Phone, listBoxErrors) && check)
            {
                listBoxErrors.Items.Add("Номер в базе существует.");
            }

            string isAdmin = textBoxAdmin.Text;

            if (isAdmin == "Да")
            {
                user.IsAdmin = true;
            }
            else if (isAdmin == "Нет")
            {
                user.IsAdmin = false;
            }
            else
            {
                listBoxErrors.Items.Add("Признак админа указан не корректно.");
            }

            if (listBoxErrors.Items.Count == 0)
            {
                try
                {
                    using (ContextUser context = new ContextUser())
                    {
                        context.Users.AddOrUpdate(user);
                        context.SaveChanges();
                    };
                    MessageBox.Show("Успешно сохранено", "Информация", MessageBoxButtons.OK);
                }
                catch (Exception exception)
                {
                    MessageBox.Show(exception.Message, exception.Source, MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                finally
                {
                    Close();
                }
            }
        }