public ActionResult CreateNewValve(CreateNewValve_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 newValve = new Valve { V_model = model.ModelName, V_comment = model.Comment, V_invNo = model.InvNo, V_ownerEnterprise = model.Enterprise, V_serNo = model.SerialNo }; if (model.Dy != null) newValve.V_diam = intDy; if (model.Kv != null) newValve.V_KV = doubleKv; if (model.ProdYear != null) newValve.V_prodDate = new DateTime(intYear, 1, 1); int valveNewID = 0;//номер нужен для привязки КЗР к системе try { valveNewID = repositorie.SaveValve(newValve); } catch (Exception e) { //сохранить не удалось ModelState.AddModelError("err", e.Message); ModelState.AddModelError("err", "Не удалось создать КЗР!"); } //если в модель ранее передана системы, значит сохраненный КЗР надо сразу привязать к этой системе if (model.ASystemNo!=null&&ModelState.IsValid) { ASystem system = repositorie.Asystems.SingleOrDefault(aS=>aS.AS_ID==model.ASystemNo); system.AS_Valve = valveNewID; try { repositorie.SaveASystem(system); } catch (Exception e) { //привязать не удалось ModelState.AddModelError("err", e.Message); ModelState.AddModelError("err", "Не удалось смонтировать КЗР на систему!"); } } } if (ModelState.IsValid) { //все операции успешны, возвращаем страницу из которой был вызов на создание нового КЗР return Redirect(model.ReturnURL); } else { //операции неудачны, перегружаем страницу if (model.ASystemNo != null) model.ASystem = repositorie.Asystems.SingleOrDefault(aS => aS.AS_ID == model.ASystemNo); model.Enterprises = repositorie.Enterprises; return View(model); } }
public ActionResult CreateNewValve(string returnURL, System.Nullable<int> asystemNo = null) { CreateNewValve_VM model = new CreateNewValve_VM { ASystemNo = asystemNo, Enterprise = uRepositorie.Users.SingleOrDefault(u => u.Name == System.Web.HttpContext.Current.User.Identity.Name).Enterprise, Enterprises = repositorie.Enterprises, ReturnURL = returnURL }; if(asystemNo!=null) model.ASystem = repositorie.Asystems.SingleOrDefault(aS=>aS.AS_ID==asystemNo); return View(model); }