public ActionResult CChange(CChange_VM model)
        {
            //валидация
            //проверяем введенный год
            ModelState.Clear();
            int intYear = 0;
            try
            {
                if (model.prodYear != null) //если null, то значит пользователь ничего не ввел в поле (допустимо)
                {
                    intYear = Int32.Parse(model.prodYear); //если ввели совсем уж хуйню, то не распарсит
                    if (intYear != 0 && !(intYear > 1980 && intYear <= DateTime.Now.Year)) //год должен быть в интервале 1980 - текущий год, если год = 0 то пользователь его не указал просто
                    {
                        ModelState.AddModelError("DateError", "Введен недействительный год!");
                    }
                }

            }
            catch
            {
                //нераспарсил
                ModelState.AddModelError("DateError", "Введен недействительный год!");
            }

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

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

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

            if (ModelState.IsValid)
            {
                //валидация успешна: пробуем сохранить в БД
                HSA.Domain.BD.Controller tempC = new Domain.BD.Controller
                {
                    C_ID = model.ID,
                    C_modelNo = model.modelNo,
                    C_serNo = model.serNo,
                    C_invNo = model.invNo,
                    C_comment = model.comment,
                    C_OwnerEnterprise = model.Enterprise,
                };

                if (model.prodYear != null) tempC.C_prodDate = new DateTime(intYear, 1, 1);
                try
                {
                    repositorie.SaveController(tempC);
                }
                catch (Exception e)
                {
                    ModelState.AddModelError("err", e.Message);
                }
            }

            if (ModelState.IsValid)
            {
                //сохранение успешно
                return Redirect(model.returnURL);
            }
            else
            {
                //сохранение не успешно: вывод ошибок
                model.controller = repositorie.Controllers.SingleOrDefault(c => c.C_ID == model.ID);
                model.models = repositorie.C_models;
                model.Enterprises = repositorie.Enterprises;
                return View(model);
            }
        }
        public ActionResult NewController(NewController_VM Model)
        {
            //валидация данных
            //проверяем введенный год
            ModelState.Clear();
            int intYear = 0;
            try
            {
                if (Model.prodYear != null) //если null, то значит пользователь ничего не ввел в поле (допустимо)
                {
                    intYear = Int32.Parse(Model.prodYear); //если ввели совсем уж хуйню, то не распарсит
                    if (intYear != 0 && !(intYear > 1980 && intYear <= DateTime.Now.Year)) //год должен быть в интервале 1980 - текущий год, если год = 0 то пользователь его не указал просто
                    {
                        ModelState.AddModelError("DateError", "Введен недостоверный год!");
                    }
                }
            }
            catch
            {
                ModelState.AddModelError("DateError", "Введен недостоверный год!");
            }

            //проверяем, что пользователь выбрал модель
            if (Model.modelNo == 0)
            {
                ModelState.AddModelError("CModelError", "Выберите модель контроллера!");
            }

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

            //проверяем длину комментария (<1000 символов)
            if (Model.comment != null && Model.comment.Length > 1000)
            {
                ModelState.AddModelError("tooBigcom", "Слишком длинное примечание!");
            }

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

            if (ModelState.IsValid)
            {
                //валидация успешна: пробуем добавить в БД
                HSA.Domain.BD.Controller tempC = new Domain.BD.Controller
                {
                    C_modelNo = Model.modelNo,
                    C_serNo = Model.serNo,
                    C_invNo = Model.invNo,
                    C_comment = Model.comment,
                    C_OwnerEnterprise = Model.enterprise,
                };

                //год надо обрабатывать отдельно с проверкой на null
                if (Model.prodYear != null) tempC.C_prodDate = new DateTime(intYear, 1, 1);

                int tempCID=0;
                try
                {
                    tempCID = repositorie.SaveController(tempC);
                }
                catch (Exception e)
                {
                    //сохранить не удалось
                    ModelState.AddModelError("err", e.Message);
                }

                //привязываем контроллер к системе, если в модели присутствует номер системы
                if (Model.aSystemNo != null && ModelState.IsValid)
                {
                    ASystem tempS = repositorie.Asystems.SingleOrDefault(aS => aS.AS_ID == Model.aSystemNo);
                    tempS.AS_Controller = tempCID;
                    try
                    {
                        repositorie.SaveASystem(tempS);
                    }
                    catch (Exception e)
                    {
                        ModelState.AddModelError("err", e.Message);
                    }

                }
            }

            if (ModelState.IsValid)
            {
                //возвращаем страницу из которой был вызов на создание нового контроллера
                return Redirect(Model.returnURL);
            }
            else
            {
                //сохранение неудачно
                Model.models = repositorie.C_models;
                Model.enterprises = repositorie.Enterprises;
                if (Model.aSystemNo!=null) Model.aSystem = repositorie.Asystems.SingleOrDefault(aS => aS.AS_ID == Model.aSystemNo);
                return View(Model);
            }
        }