예제 #1
0
        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();
        }
예제 #2
0
        public CarController(Session session)
        {
            Session            = session ?? throw new ArgumentNullException(nameof(session), "Сессия не найдена.");
            AutodealersContext = new AutodealersContext();

            _NetworkStream   = Session.Client.GetStream();
            _BinaryFormatter = new BinaryFormatter();
        }
예제 #3
0
        public void Delete()
        {
            RefreshContext();

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

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

                    if (deleteUser != null)
                    {
                        if (deleteUser.UserId == CurrentUser.UserId && deleteUser.SuperUser)
                        {
                            Session.SendErrorMessage("Невозможно удалить текущего администратора. Сделайте это через другого адмнинистратора.");
                        }
                        else
                        {
                            var deals = AutodealersContext.Deal.Where(d => d.UserId == deleteUser.UserId).ToList();

                            foreach (var d in deals)
                            {
                                var admin = AutodealersContext.User.ToList().FirstOrDefault(u => u.SuperUser);

                                if (admin != null)
                                {
                                    d.UserId = admin.UserId;
                                }
                            }

                            AutodealersContext.User.Remove(deleteUser);
                            AutodealersContext.SaveChanges();

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

            RefreshContext();
        }
예제 #4
0
        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();
        }
예제 #5
0
        public void BuyCar()
        {
            RefreshContext();

            var receivedCar = (Car)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (receivedCar != null)
                {
                    var boughtCar = AutodealersContext.Car.FirstOrDefault(c => c.CarId == receivedCar.CarId);

                    if (boughtCar != null)
                    {
                        var deal = new Deal();
                        deal.CarId  = boughtCar.CarId;
                        deal.Amount = boughtCar.Price;
                        deal.UserId = Session.UserController.CurrentUser.UserId;

                        boughtCar.IsSold = true;

                        AutodealersContext.Deal.Add(deal);
                        AutodealersContext.SaveChanges();

                        Session.SendSuccessfulMessage("Вы успешно приобрели автомобиль!");
                    }
                    else
                    {
                        Session.SendErrorMessage("Автомобиль не найден!");
                    }
                }
                else
                {
                    Session.SendErrorMessage("Ошибка получения!");
                }
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }

            RefreshContext();
        }
예제 #6
0
        public void BanUnbanUser()
        {
            RefreshContext();

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

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

                    if (banUnbanUser != null)
                    {
                        if (banUnbanUser.UserId == CurrentUser.UserId && banUnbanUser.SuperUser)
                        {
                            Session.SendErrorMessage("Невозможно заблокировать текущего администратора. Сделайте это через другого адмнистратора.");
                        }
                        else
                        {
                            banUnbanUser.BanStatus = !banUnbanUser.BanStatus;
                            AutodealersContext.SaveChanges();

                            _BinaryFormatter.Serialize(_NetworkStream, MessageType.Success);
                        }
                    }
                    else
                    {
                        Session.SendErrorMessage("Пользователь не найден!");
                    }
                }
                else
                {
                    Session.SendErrorMessage("Для этого действия требуются права администратора!");
                }
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }
            RefreshContext();
        }
예제 #7
0
        public void Delete()
        {
            RefreshContext();
            var receivedAutodealer = (Autodealer)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (Session.UserController.CurrentUser.SuperUser)
                {
                    var deleteAutodealer = AutodealersContext.Autodealer.FirstOrDefault(a => a.AutodealerId == receivedAutodealer.AutodealerId);

                    if (deleteAutodealer != null)
                    {
                        if (deleteAutodealer.AutodealerId != CurrentAutodealer.AutodealerId)
                        {
                            AutodealersContext.Autodealer.Remove(deleteAutodealer);
                            AutodealersContext.SaveChanges();

                            _BinaryFormatter.Serialize(_NetworkStream, MessageType.Success);
                        }
                        else
                        {
                            Session.SendErrorMessage("Невозможно удалить текущий автосалон!");
                        }
                    }
                    else
                    {
                        Session.SendErrorMessage("Пользователь не найден!");
                    }
                }
                else
                {
                    Session.SendErrorMessage("Для этого действия требуются права администратора!");
                }
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }
            RefreshContext();
        }
예제 #8
0
        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();
        }
예제 #9
0
        public void Delete()
        {
            RefreshContext();

            var receivedCar = (Car)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (Session.UserController.CurrentUser.SuperUser)
                {
                    var deleteCar = AutodealersContext.Car.FirstOrDefault(c => c.CarId == receivedCar.CarId);

                    if (deleteCar != null)
                    {
                        AutodealersContext.Car.Remove(deleteCar);
                        AutodealersContext.SaveChanges();

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

            RefreshContext();
        }
예제 #10
0
 public void RefreshContext()
 {
     AutodealersContext = new AutodealersContext();
 }
예제 #11
0
        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();
        }
예제 #12
0
        public void Edit()
        {
            RefreshContext();

            var receivedCar = (Car)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (Session.UserController.CurrentUser.SuperUser)
                {
                    var editCar = AutodealersContext.Car.FirstOrDefault(c => c.CarId == receivedCar.CarId);

                    if (editCar != null)
                    {
                        if (String.IsNullOrEmpty(receivedCar.Brand))
                        {
                            Session.SendErrorMessage("Марка не установлена!");
                            return;
                        }
                        if (!Regex.IsMatch(receivedCar.Brand, "^[A-Za-zА-Яа-я- ]+$"))
                        {
                            Session.SendErrorMessage("Марка введена некорректно!");
                            return;
                        }
                        if (receivedCar.Brand.Length > 30)
                        {
                            Session.SendErrorMessage("Марка должна состоять максимум из 30 символов!");
                            return;
                        }
                        if (String.IsNullOrEmpty(receivedCar.Model))
                        {
                            Session.SendErrorMessage("Модель не установлена!");
                            return;
                        }
                        if (!Regex.IsMatch(receivedCar.Model, "^[A-Za-zА-Яа-я0-9- ]+$"))
                        {
                            Session.SendErrorMessage("Модель введена некорректно!");
                            return;
                        }
                        if (receivedCar.Model.Length > 30)
                        {
                            Session.SendErrorMessage("Модель должна состоять максимум из 30 символов!");
                            return;
                        }
                        if (receivedCar.BodyType == 0)
                        {
                            Session.SendErrorMessage("Тип кузова не выбран!");
                            return;
                        }
                        if (receivedCar.EngineType == 0)
                        {
                            Session.SendErrorMessage("Тип двигателя не выбран!");
                            return;
                        }
                        if (receivedCar.TransmissionType == 0)
                        {
                            Session.SendErrorMessage("Тип КПП не выбран!");
                            return;
                        }
                        if (receivedCar.WheelDriveType == 0)
                        {
                            Session.SendErrorMessage("Тип привода не выбран!");
                            return;
                        }
                        if (receivedCar.BodyColor == 0)
                        {
                            Session.SendErrorMessage("Цвет кузова не выбран!");
                            return;
                        }
                        if (receivedCar.InteriorMaterial == 0)
                        {
                            Session.SendErrorMessage("Материал салона не выбран!");
                            return;
                        }
                        if (receivedCar.InteriorColor == 0)
                        {
                            Session.SendErrorMessage("Цвет салона не выбран!");
                            return;
                        }
                        if (receivedCar.Price < 1)
                        {
                            Session.SendErrorMessage("Цена должна быть больше нуля!");
                            return;
                        }

                        editCar.Model            = receivedCar.Model;
                        editCar.YearOfIssue      = receivedCar.YearOfIssue;
                        editCar.BodyType         = receivedCar.BodyType;
                        editCar.EngineVolume     = receivedCar.EngineVolume;
                        editCar.EngineType       = receivedCar.EngineType;
                        editCar.TransmissionType = receivedCar.TransmissionType;
                        editCar.WheelDriveType   = receivedCar.WheelDriveType;
                        editCar.Mileage          = receivedCar.Mileage;
                        editCar.BodyColor        = receivedCar.BodyColor;
                        editCar.InteriorMaterial = receivedCar.InteriorMaterial;
                        editCar.InteriorColor    = receivedCar.InteriorColor;
                        editCar.Price            = receivedCar.Price;

                        editCar.Brand = Char.ToUpper(receivedCar.Brand[0]) + receivedCar.Brand.Substring(1);
                        editCar.Model = Char.ToUpper(receivedCar.Model[0]) + receivedCar.Model.Substring(1);
                        editCar.AllowanceOrDiscount = editCar.Price * CalcuateOdd();
                        editCar.Price += editCar.AllowanceOrDiscount;

                        AutodealersContext.Car.Update(editCar);
                        AutodealersContext.SaveChanges();

                        Session.SendSuccessfulMessage($"Надбавка к цене - {editCar.AllowanceOrDiscount.ToString("C", CultureInfo.CreateSpecificCulture("en-US"))}\nОкончательная цена - {editCar.Price.ToString("C", CultureInfo.CreateSpecificCulture("en-US"))}");
                    }
                    else
                    {
                        Session.SendErrorMessage("Автомобиль не найден!");
                    }
                }
                else
                {
                    Session.SendErrorMessage("Для этого действия требуются права администратора!");
                }
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }

            RefreshContext();
        }
예제 #13
0
        public void Edit()
        {
            RefreshContext();

            var receivedAutodealer = (Autodealer)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (Session.UserController.CurrentUser.SuperUser)
                {
                    var editAutodealer = AutodealersContext.Autodealer.FirstOrDefault(a => a.AutodealerId == receivedAutodealer.AutodealerId);

                    if (editAutodealer != null)
                    {
                        if (!Regex.IsMatch(receivedAutodealer.Title, "^[A-Za-zА-Яа-я0-9 ]+$"))
                        {
                            Session.SendErrorMessage("Название введено некорректно!");
                            return;
                        }
                        if (receivedAutodealer.Title.Length > 100)
                        {
                            Session.SendErrorMessage("Название автосалона должно состоять максимум из 100 символов!");
                            return;
                        }

                        if (!Regex.IsMatch(receivedAutodealer.City, "^[A-Za-zА-Яа-я]+$"))
                        {
                            Session.SendErrorMessage("Город введен некорректно!");
                            return;
                        }
                        if (receivedAutodealer.City.Length > 50)
                        {
                            Session.SendErrorMessage("Название города должно состоять максимум из 50 символов!");
                            return;
                        }

                        if (receivedAutodealer.Address != "")
                        {
                            if (!Regex.IsMatch(receivedAutodealer.Address, "^[A-Za-zА-Яа-я0-9 .,]+$"))
                            {
                                Session.SendErrorMessage("Адрес введен некорректно!");
                                return;
                            }
                            if (receivedAutodealer.Address.Length > 50)
                            {
                                Session.SendErrorMessage("Адрес должен состоять максимум из 50 символов!");
                                return;
                            }
                        }
                        else
                        {
                            receivedAutodealer.Address = null;
                        }

                        editAutodealer.Title        = receivedAutodealer.Title;
                        editAutodealer.WorkingHours = receivedAutodealer.WorkingHours;
                        editAutodealer.City         = receivedAutodealer.City;
                        editAutodealer.Address      = receivedAutodealer.Address;

                        AutodealersContext.Autodealer.Update(editAutodealer);
                        AutodealersContext.SaveChanges();

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

            RefreshContext();
        }
예제 #14
0
        public void Add()
        {
            RefreshContext();

            var receivedAutodealer = (Autodealer)_BinaryFormatter.Deserialize(_NetworkStream);

            if (Session.UserController.IsAuthorized)
            {
                if (Session.UserController.CurrentUser.SuperUser)
                {
                    if (Session.AutodealerController.CurrentAutodealer != null)
                    {
                        if (receivedAutodealer != null)
                        {
                            if (!Regex.IsMatch(receivedAutodealer.Title, "^[A-Za-zА-Яа-я0-9 -]+$"))
                            {
                                Session.SendErrorMessage("Название введено некорректно!");
                                return;
                            }
                            if (receivedAutodealer.Title.Length > 100)
                            {
                                Session.SendErrorMessage("Название автосалона должно состоять максимум из 100 символов!");
                                return;
                            }

                            if (!Regex.IsMatch(receivedAutodealer.City, "^[A-Za-zА-Яа-я]+$"))
                            {
                                Session.SendErrorMessage("Город введен некорректно!");
                                return;
                            }
                            if (receivedAutodealer.City.Length > 50)
                            {
                                Session.SendErrorMessage("Название города должно состоять максимум из 50 символов!");
                                return;
                            }

                            if (receivedAutodealer.Address != "")
                            {
                                if (!Regex.IsMatch(receivedAutodealer.Address, "^[A-Za-zА-Яа-я0-9 .,-]+$"))
                                {
                                    Session.SendErrorMessage("Адрес введен некорректно!");
                                    return;
                                }
                                if (receivedAutodealer.Address.Length > 50)
                                {
                                    Session.SendErrorMessage("Адрес должен состоять максимум из 50 символов!");
                                    return;
                                }
                            }
                            else
                            {
                                receivedAutodealer.Address = null;
                            }

                            var autodealer = new Autodealer
                            {
                                Title        = receivedAutodealer.Title,
                                WorkingHours = receivedAutodealer.WorkingHours,
                                City         = receivedAutodealer.City,
                                Address      = receivedAutodealer.Address
                            };

                            AutodealersContext.Autodealer.Add(autodealer);

                            AutodealersContext.SaveChanges();

                            _BinaryFormatter.Serialize(_NetworkStream, MessageType.Success);

                            AutodealersContext.Statistics.Add(new Statistics
                            {
                                AutodealerId = autodealer.AutodealerId,
                                Month        = (Month)DateTime.Now.Month,
                                Year         = DateTime.Now.Year
                            });
                            AutodealersContext.SaveChanges();
                        }
                        else
                        {
                            Session.SendErrorMessage("Сделка не найдена!");
                        }
                    }
                    else
                    {
                        Session.SendErrorMessage("Автосалон не найден!");
                    }
                }
                else
                {
                    Session.SendErrorMessage("Для этого действия требуются права администратора!");
                }
            }
            else
            {
                Session.SendErrorMessage("Для этого действия требуется авторизация!");
            }

            RefreshContext();
        }
예제 #15
0
        public void Add()
        {
            RefreshContext();

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

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

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

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

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

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

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

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

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

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

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

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

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

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

                    AutodealersContext.User.Add(user);
                    AutodealersContext.SaveChanges();

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

            string username  = (string)_BinaryFormatter.Deserialize(_NetworkStream);
            string password  = (string)_BinaryFormatter.Deserialize(_NetworkStream);
            string firstname = (string)_BinaryFormatter.Deserialize(_NetworkStream);
            string surname   = (string)_BinaryFormatter.Deserialize(_NetworkStream);
            string telephone = (string)_BinaryFormatter.Deserialize(_NetworkStream);

            var user = AutodealersContext.User.FirstOrDefault(u => u.Username == username);

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

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

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

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

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

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

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

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

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

            user = new User
            {
                Username  = username,
                Password  = password,
                Firstname = firstname,
                Surname   = surname,
                Telephone = telephone
            };

            AutodealersContext.User.Add(user);
            AutodealersContext.SaveChanges();

            Session.SendSuccessfulMessage("Вы успешно зарегистрировались!");

            RefreshContext();
        }
예제 #17
0
        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();
        }