public void EditCurrentUserTelephone()
        {
            RefreshContext();

            var receivedTelephone = (string)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (!String.IsNullOrEmpty(receivedTelephone))
                {
                    if (receivedTelephone.Length != 13 || !Regex.IsMatch(receivedTelephone, "^\\+[0-9]*$"))
                    {
                        Session.SendErrorMessage("Неверный формат номера!");
                        return;
                    }
                }
                else
                {
                    receivedTelephone = null;
                }

                CurrentUser.Telephone = receivedTelephone;

                AutodealersContext.Update(CurrentUser);
                AutodealersContext.SaveChanges();

                _BinaryFormatter.Serialize(_NetworkStream, MessageType.Success);
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }

            RefreshContext();
        }
        public void EditCurrentUserSurname()
        {
            RefreshContext();

            var receivedSurname = (string)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (!String.IsNullOrEmpty(receivedSurname))
                {
                    if (receivedSurname.Length < 2)
                    {
                        Session.SendErrorMessage("Фамилия должна иметь минимум 2 символа!");
                        return;
                    }
                    if (receivedSurname.Length > 20)
                    {
                        Session.SendErrorMessage("Фамилия должна иметь максимум 20 символов!");
                        return;
                    }

                    if (!Regex.IsMatch(receivedSurname, "^[a-zA-Zа-яА-Я]+$"))
                    {
                        Session.SendErrorMessage("Фамилия содержит недопустимые символы!");
                        return;
                    }

                    receivedSurname = Char.ToUpper(receivedSurname[0]) + receivedSurname.Substring(1);
                }
                else
                {
                    receivedSurname = null;
                }

                CurrentUser.Surname = receivedSurname;

                AutodealersContext.Update(CurrentUser);
                AutodealersContext.SaveChanges();

                _BinaryFormatter.Serialize(_NetworkStream, MessageType.Success);
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }

            RefreshContext();
        }
        public void EditCurrentUserPassword()
        {
            RefreshContext();

            var receivedPassword = (string)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (receivedPassword.Length < 8)
                {
                    Session.SendErrorMessage("Пароль должен состоять минимум из 8 символов!");
                    return;
                }
                if (receivedPassword.Length > 20)
                {
                    Session.SendErrorMessage("Пароль должен состоять максимум из 20 символов!");
                    return;
                }

                if (!Regex.IsMatch(receivedPassword, "^[a-zA-Z0-9]+$"))
                {
                    Session.SendErrorMessage("Пароль содержит недопустимые символы!");
                    return;
                }

                CurrentUser.Password = receivedPassword;

                AutodealersContext.Update(CurrentUser);
                AutodealersContext.SaveChanges();

                _BinaryFormatter.Serialize(_NetworkStream, MessageType.Success);
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }

            RefreshContext();
        }
        public void Edit()
        {
            RefreshContext();

            var receivedUser = (User)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (Session.UserController.CurrentUser.SuperUser)
                {
                    var editUser = AutodealersContext.User.FirstOrDefault(u => u.UserId == receivedUser.UserId);

                    if (editUser != null)
                    {
                        if (editUser.UserId == CurrentUser.UserId && editUser.SuperUser != receivedUser.SuperUser)
                        {
                            Session.SendErrorMessage("Не возможно изменить права самому себе. Сделайте это через другого администратора!");
                        }
                        else if (editUser.UserId == CurrentUser.UserId && editUser.BanStatus != receivedUser.BanStatus)
                        {
                            Session.SendErrorMessage("Не возможно заблокировать самого себя. Сделайте это через другого администратора!");
                        }
                        else
                        {
                            if (editUser.Username != receivedUser.Username)
                            {
                                var user = AutodealersContext.User.FirstOrDefault(u => u.Username == receivedUser.Username);

                                if (user != null)
                                {
                                    Session.SendErrorMessage("Пользователь с таким логином уже существует!");
                                    return;
                                }
                            }

                            if (receivedUser.Username.Length < 5)
                            {
                                Session.SendErrorMessage("Логин должен состоять минимум из 5 символов!");
                                return;
                            }
                            if (receivedUser.Username.Length > 20)
                            {
                                Session.SendErrorMessage("Логин должен состоять максимум из 20 символов!");
                                return;
                            }

                            if (!Regex.IsMatch(receivedUser.Username, "^[a-zA-Z0-9]+$"))
                            {
                                Session.SendErrorMessage("Логин содержит недопустимые символы!");
                                return;
                            }

                            if (receivedUser.Password.Length < 8)
                            {
                                Session.SendErrorMessage("Пароль должен состоять минимум из 8 символов!");
                                return;
                            }
                            if (receivedUser.Password.Length > 20)
                            {
                                Session.SendErrorMessage("Пароль должен состоять максимум из 20 символов!");
                                return;
                            }

                            if (!Regex.IsMatch(receivedUser.Password, "^[a-zA-Z0-9]+$"))
                            {
                                Session.SendErrorMessage("Пароль содержит недопустимые символы!");
                                return;
                            }

                            if (!String.IsNullOrEmpty(receivedUser.Firstname))
                            {
                                if (receivedUser.Firstname.Length < 2)
                                {
                                    Session.SendErrorMessage("Имя должно состоять минимум из 2 символов!");
                                    return;
                                }
                                if (receivedUser.Firstname.Length > 20)
                                {
                                    Session.SendErrorMessage("Имя должно состоять максимум из 20 символов!");
                                }

                                if (!Regex.IsMatch(receivedUser.Firstname, "^[a-zA-Zа-яА-Я]+$"))
                                {
                                    Session.SendErrorMessage("Имя содержит недопустимые символы!");
                                    return;
                                }
                            }
                            else
                            {
                                receivedUser.Firstname = null;
                            }

                            if (!String.IsNullOrEmpty(receivedUser.Surname))
                            {
                                if (receivedUser.Surname.Length < 2)
                                {
                                    Session.SendErrorMessage("Фамилия должна состоять минимум из 2 символов!");
                                    return;
                                }
                                if (receivedUser.Surname.Length > 20)
                                {
                                    Session.SendErrorMessage("Фамилия должна состоять максимум из 20 символов!");
                                }

                                if (!Regex.IsMatch(receivedUser.Surname, "^[a-zA-Zа-яА-Я]+$"))
                                {
                                    Session.SendErrorMessage("Фамилия содержит недопустимые символы!");
                                    return;
                                }
                            }
                            else
                            {
                                receivedUser.Surname = null;
                            }

                            if (!String.IsNullOrEmpty(receivedUser.Telephone))
                            {
                                if (receivedUser.Telephone.Length != 13 || !Regex.IsMatch(receivedUser.Telephone, "^\\+[0-9]*$"))
                                {
                                    Session.SendErrorMessage("Неверный формат номера!");
                                    return;
                                }
                            }
                            else
                            {
                                receivedUser.Telephone = null;
                            }

                            editUser.Username  = receivedUser.Username;
                            editUser.Password  = receivedUser.Password;
                            editUser.Firstname = receivedUser.Firstname;
                            editUser.Surname   = receivedUser.Surname;
                            editUser.Telephone = receivedUser.Telephone;
                            editUser.SuperUser = receivedUser.SuperUser;
                            editUser.BanStatus = receivedUser.BanStatus;

                            AutodealersContext.Update(editUser);
                            AutodealersContext.SaveChanges();

                            _BinaryFormatter.Serialize(_NetworkStream, MessageType.Success);
                        }
                    }
                    else
                    {
                        Session.SendErrorMessage("Пользователь не найден!");
                    }
                }
                else
                {
                    Session.SendErrorMessage("Для этого действия требуются права администратора!");
                }
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }
            RefreshContext();
        }
        public void EditCurrentUserUsername()
        {
            RefreshContext();

            var receivedUsername = (string)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (CurrentUser.Username != receivedUsername)
                {
                    var user = AutodealersContext.User.FirstOrDefault(u => u.Username == receivedUsername);

                    if (user != null)
                    {
                        Session.SendErrorMessage("Пользователь с таким логином уже существует!");
                        return;
                    }

                    if (receivedUsername.Length < 5)
                    {
                        Session.SendErrorMessage("Логин должен состоять минимум из 5 символов!");
                        return;
                    }
                    if (receivedUsername.Length > 20)
                    {
                        Session.SendErrorMessage("Логин должен состоять максимум из 20 символов!");
                        return;
                    }

                    if (!Regex.IsMatch(receivedUsername, "^[a-zA-Z0-9]+$"))
                    {
                        Session.SendErrorMessage("Логин содержит недопустимые символы!");
                        return;
                    }

                    CurrentUser.Username = receivedUsername;

                    AutodealersContext.Update(CurrentUser);
                    AutodealersContext.SaveChanges();

                    _BinaryFormatter.Serialize(_NetworkStream, MessageType.Success);
                }
                else
                {
                    if (receivedUsername.Length < 5)
                    {
                        Session.SendErrorMessage("Логин должен состоять минимум из 5 символов!");
                        return;
                    }
                    if (receivedUsername.Length > 20)
                    {
                        Session.SendErrorMessage("Логин должен состоять максимум из 20 символов!");
                        return;
                    }

                    if (!Regex.IsMatch(receivedUsername, "^[a-zA-Z0-9]+$"))
                    {
                        Session.SendErrorMessage("Логин содержит недопустимые символы!");
                        return;
                    }

                    CurrentUser.Username = receivedUsername;

                    AutodealersContext.Update(CurrentUser);
                    AutodealersContext.SaveChanges();

                    _BinaryFormatter.Serialize(_NetworkStream, MessageType.Success);
                }
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }

            RefreshContext();
        }