Пример #1
0
        public ActionResult ChangeValve(int valveID, string returnUrl)
        {
            Valve tempV = repositorie.Valves.SingleOrDefault(v => v.V_ID == valveID);

            VChange_VM model = new VChange_VM
            {
                Valve = tempV,
                Enterprises = repositorie.Enterprises,
                ReturnURL = returnUrl,

                ID = valveID,
                ModelName = tempV.V_model,
                Enterprise = tempV.V_ownerEnterprise,
                SerialNo = tempV.V_serNo,
                InvNo = tempV.V_invNo,
                Comment = tempV.V_comment,
            };

            if (tempV.V_diam != null) model.Dy = tempV.V_diam.ToString();
            if (tempV.V_KV != null) model.Kv = tempV.V_KV.ToString();
            if (tempV.V_prodDate != null) model.ProdYear = tempV.V_prodDate.Value.Year.ToString();

            return View(model);
        }
Пример #2
0
        public ActionResult ChangeValve(VChange_VM model)
        {
            //валидация введенных пользователем данных
            ModelState.Clear();
            //диаметр должен быть в пределах 15 - 200 либо не введен вообще
            int intDy = 0;
            try
            {
                if (model.Dy != null)
                {
                    intDy = Int32.Parse(model.Dy); //если введена фигня, то не распарсит
                    if (intDy < 15 || intDy > 200)
                    {
                        ModelState.AddModelError("DyError", "Введен недостоверный Дy!");
                    }
                }

            }
            catch
            {
                ModelState.AddModelError("DyError", "Введен недостоверный Дy!");
            }
            //Kv должен быть в пределах 0,1 - 450 либо не введен вообще
            double doubleKv = 0;
            try
            {
                if (model.Kv != null)
                {
                    string stringKv = model.Kv.Replace('.', ','); //для того, чтобы пользователь имел возможность вводить и через точку и через запятую
                    doubleKv = Double.Parse(stringKv); //если введена фигня, то не распарсит
                    if (doubleKv <= 0.1 || doubleKv > 450)
                    {
                        ModelState.AddModelError("KvError", "Введен недостоверный Kv!");
                    }
                }

            }
            catch
            {
                ModelState.AddModelError("DyError", "Введен недостоверный Kv!");
            }
            //год производства должен быть в пределах 1980 - н.в. либо не введен вообще
            int intYear = 0;
            try
            {
                if (model.ProdYear != null)
                {
                    intYear = Int32.Parse(model.ProdYear); //если ввели совсем уж хуйню, то не распарсит
                    if (intYear < 1980 || intYear > DateTime.Now.Year)
                    {
                        ModelState.AddModelError("DateError", "Введен недостоверный год!");
                    }
                }
            }
            catch
            {
                ModelState.AddModelError("DateError", "Введен недостоверный год!");
            }

            //проверяем длину инвентарного номера и заводского номера - должны быть меньше 30 символов
            if ((model.InvNo != null && model.InvNo.Length > 30) || (model.SerialNo != null && model.SerialNo.Length > 30))
            {
                ModelState.AddModelError("DateError", "Ошибка: слишком длинный номер!");
            }

            //проверяем длинну примечания, должна быть не менее 1000 символов
            if (model.Comment != null && model.Comment.Length > 1000)
            {
                ModelState.AddModelError("ExtError", "Слишком длинное примечание!");
            }

            //конец валидации

            if (ModelState.IsValid)
            {
                //валидация успешна создаем и сохраняем в БД новый экземпляр Valve
                Valve tempV = new Valve
                {
                    V_ID = model.ID,
                    V_model = model.ModelName,
                    V_comment = model.Comment,
                    V_invNo = model.InvNo,
                    V_ownerEnterprise = model.Enterprise,
                    V_serNo = model.SerialNo
                };

                if (model.Dy != null) tempV.V_diam = intDy;
                if (model.Kv != null) tempV.V_KV = doubleKv;
                if (model.ProdYear != null) tempV.V_prodDate = new DateTime(intYear, 1, 1);

                try
                {
                    repositorie.SaveValve(tempV);
                }
                catch (Exception e)
                {
                    //не удалось изменить
                    ModelState.AddModelError("err", e.Message);
                    ModelState.AddModelError("err", "Не удалось изменить КЗР!");
                }
            }

            if (ModelState.IsValid)
            {
                //изенение успешно, возвращаем страницу из которой был вызов на создание нового КЗР
                return Redirect(model.ReturnURL);
            }
            else
            {
                //валидация неудачна
                model.Enterprises = repositorie.Enterprises;
                model.Valve = repositorie.Valves.SingleOrDefault(v => v.V_ID == model.ID);
                return View(model);
            }
        }