protected bool ValidateModel(PassportModel model)
        {
            ValidateFileLength(model.InternalPassportScanFile, "InternalPassportScanFile", 20);

            //проверка для номера паспорта
            if (string.IsNullOrEmpty(model.InternalPassportNumber) || string.IsNullOrWhiteSpace(model.InternalPassportNumber))
            {
                ModelState.AddModelError("InternalPassportNumber", "Обязательное поле");
            }
            else
            {
                try
                {
                    Convert.ToInt32(model.InternalPassportNumber);
                }
                catch
                {
                    ModelState.AddModelError("InternalPassportNumber", "Числовое поле");
                }

                //Российский паспорт
                if (model.DocumentTypeId == 1 && model.InternalPassportNumber.Length != 6)
                {
                    ModelState.AddModelError("InternalPassportNumber", "Требуется 6 цифр");
                }
            }

            if (!model.IsPassportDraft)
            {
                //PassportModel mt = EmploymentBl.GetPassportModel(model.UserId);
                //if (model.InternalPassportScanFile == null && string.IsNullOrEmpty(mt.InternalPassportScanAttachmentFilename))
                //{
                //    ModelState.AddModelError("InternalPassportScanFile", "Не выбран файл скана документа для загрузки!");
                //}

                if (!model.IsValidate)
                {
                    ModelState.AddModelError("IsValidate", "Подтвердите правильность предоставленных данных! Подтвердив правильность предоставленных данных, Вы не сможете больше вносить изменения в данную часть анкеты!");
                }
            }
            return ModelState.IsValid;
        }
        public ActionResult Passport(PassportModel model, IEnumerable<HttpPostedFileBase> files)
        {
            string error = String.Empty;
            string SPPath = AuthenticationService.CurrentUser.Id.ToString();

            if (ValidateModel(model))
            {
                model.IsDraft = model.IsPassportDraft;
                EmploymentBl.ProcessSaving<PassportModel, Passport>(model, out error);
                model = EmploymentBl.GetPassportModel(model.UserId);
                ViewBag.Error = error;
                ModelState.AddModelError("IsValidate", string.IsNullOrEmpty(error) ? "Данные сохранены!" : error);
            }
            else
            {   //так как при использования вкладок, страницу приходится перезагружать с потерей данных, то передаем модель с библиотекой ошибок через переменную сессии
                model = EmploymentBl.GetPassportModel(model);
                if (Session["PassportM" + SPPath] != null)
                    Session.Remove("PassportM" + SPPath);
                if (Session["PassportM" + SPPath] == null)
                    Session.Add("PassportM" + SPPath, model);
            }

            if (Session["PassportMS" + SPPath] != null)
                Session.Remove("PassportMS" + SPPath);
            if (Session["PassportMS" + SPPath] == null)
            {
                ModelStateDictionary mst = ModelState;
                Session.Add("PassportMS" + SPPath, mst);
            }

            if ((AuthenticationService.CurrentUser.UserRole & UserRole.PersonnelManager) > 0 && EmploymentBl.IsUnlimitedEditAvailable())
                return Redirect("PersonnelInfo?id=" + model.UserId + "&IsCandidateInfoAvailable=true&IsBackgroundCheckAvailable=true&IsManagersAvailable=true&IsPersonalManagersAvailable=true&TabIndex=2");
            else
                return model.IsFinal && !EmploymentBl.IsUnlimitedEditAvailable() ? View("PassportReadOnly", model) : View(model);
        }