예제 #1
0
        public bool IsValid(ModelStateDictionary modelState)
        {
            modelState.Clear();
            if (Type == TwoFactorType.None)
            {
                modelState.AddModelError("", "Please select a TFA option");
                return(false);
            }

            if (Type == TwoFactorType.EmailCode)
            {
                if (string.IsNullOrEmpty(DataEmail) || !ValidationHelpers.IsValidEmailAddress(DataEmail))
                {
                    modelState.AddModelError("", string.Format("'{0}' is not a valid email address.", DataEmail));
                    return(false);
                }
            }
            if (Type == TwoFactorType.GoogleCode)
            {
                if (!GoogleData.IsValid)
                {
                    modelState.AddModelError("", "An Unknown error occured.");
                    return(false);
                }
            }
            if (Type == TwoFactorType.PinCode)
            {
                if (string.IsNullOrEmpty(DataPin) || DataPin.Length < 4 || DataPin.Length > 8 || !DataPin.All(char.IsDigit))
                {
                    modelState.AddModelError("", "The pin must be between 4 and 8 digits.");
                    return(false);
                }
            }
            return(true);
        }
예제 #2
0
        public void ClearModelStateOnAdd(ModelStateDictionary modelState, UserNewModel model)
        {
            modelState.Clear();

            #region CNP

            if (!Validation.CNPValidator(model.CNP))
            {
                modelState.AddModelError("New.CNP", Resource.InvalidCNP);
            }
            else if (_usersRepository.NotUniqueCNP(model.CNP))
            {
                modelState.AddModelError("New.CNP", Resource.NotUniqueCNP);
            }

            #endregion

            #region User State

            if (model.RoleBtnList != null && model.RoleBtnList.SelectedValues != null)
            {
                var selected = model.RoleBtnList.SelectedValues;
                if (selected == UserRoles.Patient && (model.State == null || model.State.SelectedValues == null))
                {
                    modelState.AddModelError("New.State", Resource.RequiredField);
                }
            }

            #endregion
        }
        private void SetModelStateIsValid(bool isValid = true)
        {
            ModelStateDictionary modelState = (_viewComponent as ViewComponent)?.ModelState;

            if (modelState == null)
            {
                PropertyInfo propertyInfo =
                    _viewComponent.GetType()
                    .GetProperties(BindingFlags.Public | BindingFlags.Instance | BindingFlags.GetProperty)
                    .SingleOrDefault(p => p.Name == "ModelState");

                if (propertyInfo != null && propertyInfo.PropertyType == typeof(ModelStateDictionary))
                {
                    modelState = (ModelStateDictionary)propertyInfo.GetValue(_viewComponent);
                }

                if (modelState == null)
                {
                    throw new ActionTestException(
                              $"{_viewComponent.GetType().FullName} does not have a public \"ModelState\" ModelStateDictionary property.");
                }
            }

            modelState.Clear();

            if (!isValid)
            {
                modelState.AddModelError("key", "message");
            }
        }
예제 #4
0
        public void StartRegistrationForFamilyMember(int id, ModelStateDictionary modelState)
        {
            modelState.Clear(); // ensure we pull form fields from our model, not MVC's
            HistoryAdd("Register");
            int index = List.Count - 1;
            var p = LoadExistingPerson(id, index);

            if(p.NeedsToChooseClass())
                return;

            p.ValidateModelForFind(modelState, id, selectFromFamily: true);
            if (!modelState.IsValid)
                return;

            List[index] = p;

            if (p.ManageSubscriptions() && p.Found == true)
                return;

            if (p.org != null && p.Found == true)
            {
                if (!SupportMissionTrip)
                    p.IsFilled = p.org.RegLimitCount(DbUtil.Db) >= p.org.Limit;
                if (p.IsFilled)
                    modelState.AddModelError(this.GetNameFor(mm => mm.List[List.IndexOf(p)].Found),
                        "Sorry, but registration is filled.");
                if (p.Found == true)
                    p.FillPriorInfo();
                return;
            }
            if (p.org == null && p.ComputesOrganizationByAge())
                modelState.AddModelError(this.GetNameFor(mm => mm.List[id].Found), p.NoAppropriateOrgError);
        }
예제 #5
0
 /// <summary>
 /// 清除全部Error,实际上可以用 modelState.Clear();加在这里只是保持完整性罢了
 /// </summary>
 /// <param name="modelState"></param>
 public static void ClearAllError(ModelStateDictionary modelState)
 {
     modelState.Clear();
     //foreach (var key in modelState.Keys)
     //{
     //    ClearError(modelState, key);
     //}
 }
예제 #6
0
 public static void ToModelErrors(this ValidationResult validationResult, ModelStateDictionary modelState)
 {
     modelState.Clear();
     foreach (var validationError in validationResult.Errors)
     {
         modelState.AddModelError(validationError.Property, validationError.Message);
     }
 }
예제 #7
0
 /// <summary>
 /// 清除全部Error,实际上可以用 modelState.Clear();加在这里只是保持完整性罢了
 /// </summary>
 /// <param name="modelState"></param>
 public static void ClearAllError(ModelStateDictionary modelState)
 {
     modelState.Clear();
     //foreach (var key in modelState.Keys)
     //{
     //    ClearError(modelState, key);
     //}
 }
예제 #8
0
 public static void ValidateModel(this ModelStateDictionary modelState, IList <ValidationError> validationErrors, Type type = null)
 {
     modelState.Clear();
     foreach (var error in validationErrors)
     {
         modelState.AddModelError(type == null ? error.TypeName : type.Name + "." + error.PropertyName, error.ErrorMessage);
     }
 }
 /// <summary>
 /// Clears and add new list of model state dictionary errors
 /// </summary>
 /// <remarks></remarks>
 public static void AddModelError(this ModelStateDictionary item, IEnumerable <string> errors)
 {
     item.Clear();
     foreach (var Error in errors)
     {
         item.AddModelError("Error", Error);
     }
 }
 public static void ToModelErrors(this ValidationResult validationResult, ModelStateDictionary modelState)
 {
     modelState.Clear();
     foreach (var validationError in validationResult.Errors)
     {
         modelState.AddModelError(validationError.Property, validationError.Message);
     }
 }
예제 #11
0
        public void StartRegistrationForFamilyMember(int id, ModelStateDictionary modelState)
        {
            modelState.Clear(); // ensure we pull form fields from our model, not MVC's
            HistoryAdd("Register");
            int index = List.Count - 1;
            var p     = LoadExistingPerson(id, index);

            if (p.NeedsToChooseClass())
            {
                modelState.AddModelError("fammember-" + p.PeopleId, "Please make selection above");
                return;
            }
            if (p.ComputesOrganizationByAge())
            {
                if (p.org == null)
                {
                    modelState.AddModelError("fammember-" + p.PeopleId, "No Appropriate Org");
                    return;
                }
            }
            List[index] = p;

            p.ValidateModelForFind(modelState, id, selectFromFamily: true);
            if (!modelState.IsValid)
            {
                return;
            }

            if (p.ManageSubscriptions() && p.Found == true)
            {
                return;
            }

            if (p.org != null && p.Found == true)
            {
                if (!SupportMissionTrip)
                {
                    p.IsFilled = p.org.RegLimitCount(DbUtil.Db) >= p.org.Limit;
                }

                if (p.IsFilled)
                {
                    modelState.AddModelError(this.GetNameFor(mm => mm.List[List.IndexOf(p)].Found),
                                             "Sorry, but registration is filled.");
                }

                if (p.Found == true)
                {
                    p.FillPriorInfo();
                }

                return;
            }
            if (p.org == null && p.ComputesOrganizationByAge())
            {
                modelState.AddModelError(this.GetNameFor(mm => mm.List[id].Found), p.NoAppropriateOrgError);
            }
        }
 public bool modelStateIsValidAfterReRunValidationOnComplexAttributes(
     ModelStateDictionary modelState, IValidatableObject model)
 {
     modelState.Clear();
     var errors = model.Validate(new ValidationContext(model, null, null));
     foreach(var error in errors)
         foreach(var memberName in error.MemberNames)
             modelState.AddModelError(memberName, error.ErrorMessage);
     return modelState.IsValid;
 }
예제 #13
0
 private string ClearPaymentInfo(ModelStateDictionary modelState)
 {
     CreditCard = string.Empty;
     Expires    = string.Empty;
     Routing    = string.Empty;
     Account    = string.Empty;
     CVV        = string.Empty;
     modelState.Clear();
     return("Please insert your payment information.");
 }
예제 #14
0
        public static bool TryValidateRequiredParameter(this ModelStateDictionary modelState, string value, string parameterName)
        {
            modelState.Clear();

            if (value.IsNullOrWhiteSpace())
            {
                modelState.TryAddModelError(parameterName, $"The {parameterName} parameter is required.");
                return(false);
            }
            return(true);
        }
예제 #15
0
    /// <summary>
    /// If the IsRefresh QueryString parameter is true it clears the ModelStateDictionary and returns false else behaves exactly as ModelState.IsValid property
    /// </summary>
    /// <param name="modelStateDictionary"></param>
    /// <returns></returns>
    public static bool IsValidOrRefresh(this ModelStateDictionary modelStateDictionary)
    {
        bool isRefresh = HttpContext.Current.Request["IsRefresh"].ConvertTo <bool>(false, true);

        if (isRefresh)
        {
            modelStateDictionary.Clear();
        }

        return(!isRefresh && modelStateDictionary.IsValid);
    }
예제 #16
0
 private ManageGivingModel ClearPaymentInfo(ManageGivingModel m, ModelStateDictionary modelState)
 {
     m.CreditCard = string.Empty;
     m.Expires    = string.Empty;
     m.Routing    = string.Empty;
     m.Account    = string.Empty;
     m.CVV        = string.Empty;
     modelState.Clear();
     modelState.AddModelError("form", "Please insert your payment information.");
     return(m);
 }
예제 #17
0
        public async Task <bool> ValidateAsync(FixtureValidator validator, ModelStateDictionary modelState)
        {
            await validator.CheckAsync(CancellationToken.None);

            foreach (var fact in validator.GetFailedFacts())
            {
                if (fact.Exception != null)
                {
                    throw new Exception(null, fact.Exception);
                }

                if (fact.Type == FactType.Critical || fact.Type == FactType.Error)
                {
                    if (fact.FieldNames.Contains(nameof(FixtureValidator.Model.PlannedStart)))
                    {
                        modelState.AddModelError(nameof(EditFixtureViewModel.MatchDate), fact.Message);
                        modelState.AddModelError(nameof(EditFixtureViewModel.MatchTime), fact.Message);
                    }
                    else
                    {
                        foreach (var fieldName in fact.FieldNames)
                        {
                            modelState.AddModelError(fieldName, fact.Message);
                        }
                    }
                }
                else
                {
                    modelState.AddModelError(string.Empty, fact.Message);
                    // Validator generates FactType.Warning only, if no errors exist
                    IsWarning = true;
                }
            }

            // to override warnings, form fields must be unchanged since last post
            var newHash = ComputeInputHash();

            if (IsWarning && OverrideWarnings && newHash == Hash)
            {
                modelState.Clear();
                IsWarning = false;
            }

            if (!modelState.IsValid)
            {
                // Show checkbox unchecked
                OverrideWarnings = false;
                // Set hash field value to latest form fields content
                Hash = newHash;
            }

            return(modelState.IsValid);
        }
예제 #18
0
        public void UpdateValidationState(ModelStateDictionary modelState, string prefix)
        {
            modelState.Clear();

            var validator = new ViewModelValidator();
            //validator.Validate(Model, ValidationResults).AddToModelState(modelState, prefix);


            var validator1 = new ViewModelValidator1();
            //validator1.Validate(Model, ValidationResultsNext).AddToModelState(modelState, prefix);

            var validator2 = new ViewModelValidator2();
            //validator2.Validate(Model, ValidationResultsAll).AddToModelState(modelState, prefix);
        }
예제 #19
0
        public static void ClearValid(this ModelStateDictionary modelState, bool keepFirstRow)
        {
            var errors = modelState.Where(ms => (ms.Value.Errors != null && ms.Value.Errors.Count > 0) || (keepFirstRow && ms.Key.StartsWith("GridData[0]"))).ToList();

            modelState.Clear();

            foreach (var error in errors)
            {
                foreach (var v in error.Value.Errors)
                {
                    modelState.AddModelError(error.Key, v.ErrorMessage);
                }
            }
        }
예제 #20
0
        private Person SetPerson(PersonEditModel personEditModel, SeminarPerson seminarPerson, ModelStateDictionary modelState, Person person = null, HttpPostedFileBase profilePic = null)
        {
            modelState.Clear();

            person = person ?? personEditModel.Person;

            // copy all the fields
            Mapper.Map(personEditModel, person);

            SetAddresses(person, personEditModel.Addresses, ModelState);
            SetContacts(person, personEditModel.Contacts, ModelState);

            if (seminarPerson != null)
            {
                SetCommodities(seminarPerson, personEditModel.Commodities);

                if (personEditModel.Firm != null || !string.IsNullOrEmpty(personEditModel.FirmName))
                {
                    seminarPerson.Firm = personEditModel.Firm ?? new Firm(personEditModel.FirmName, personEditModel.FirmDescription)
                    {
                        WebAddress = personEditModel.FirmWebAddress
                    };
                }
                if (personEditModel.Title != null) //Not sure what is happening here. This may fix it.
                {
                    seminarPerson.Title = personEditModel.Title;
                }
            }

            // deal with the image))
            if (profilePic != null)
            {
                // blank out existing image files
                person.OriginalPicture    = null;
                person.MainProfilePicture = null;
                person.ThumbnailPicture   = null;

                // read the file and set the original picture
                var reader = new BinaryReader(profilePic.InputStream);
                person.OriginalPicture = reader.ReadBytes(profilePic.ContentLength);
                person.ContentType     = profilePic.ContentType;
            }

            // run the validation
            person.TransferValidationMessagesTo(modelState);

            return(person);
        }
예제 #21
0
        public async Task <bool> ValidateAsync(VenueValidator venueValidator, ModelStateDictionary modelState, CancellationToken cancellationToken)
        {
            await venueValidator.CheckAsync(cancellationToken);

            foreach (var fact in venueValidator.GetFailedFacts())
            {
                if (fact.Exception != null)
                {
                    throw new Exception(null, fact.Exception);
                }

                if (fact.Type == FactType.Critical || fact.Type == FactType.Error)
                {
                    foreach (var fieldName in fact.FieldNames)
                    {
                        modelState.AddModelError(string.Join('.', Venue.HtmlFieldPrefix, fieldName), fact.Message);
                    }
                }
                else
                {
                    modelState.AddModelError(string.Empty, fact.Message);
                    // Validator generates FactType.Warning only, if no errors exist
                    IsWarning = true;
                }
            }

            // The Hash is re-calculated with the new submitted values.
            // We have to compare to the original hidden Hash field value,
            // because to override warnings, form fields must be unchanged since last post
            var newHash = ComputeInputHash();

            if (IsWarning && OverrideWarnings && newHash == Hash)
            {
                modelState.Clear();
                IsWarning = false;
            }

            if (!modelState.IsValid)
            {
                // Show checkbox unchecked
                OverrideWarnings = false;
                // Set hash field value to latest form fields content
                Hash = newHash;
            }

            return(modelState.IsValid);
        }
예제 #22
0
        public ModelStateDictionary ValidarCriacaoFornecedor()
        {
            ModelStateDictionary ModelState = new ModelStateDictionary();

            ModelState.Clear();

            if (!string.IsNullOrEmpty(Email))
            {
                if (!Validacao.ValidarEmail(Email))
                {
                    ModelState.AddModelError("Contato.Email", "O e-mail informado não está em um formato válido.");
                }
            }

            if (Categoria == 0)
            {
                ModelState.AddModelError("Categoria", "Informe a Categoria!");
            }

            if (TipoFornecedor == 1 || TipoFornecedor == 3)
            {
                if (CNPJ == null)
                {
                    ModelState.AddModelError("CNPJ", "CNPJ/CPF Obrigatório");
                }
                else
                {
                    if (TipoFornecedor == 1)
                    {
                        if (!Validacao.ValidaCNPJ(CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "")))
                        {
                            ModelState.AddModelError("CNPJ", "CNPJ Inválido");
                        }
                    }
                    else
                    {
                        if (!Validacao.ValidaCPF(CNPJ.Replace(".", "").Replace("/", "").Replace("-", "").Replace("_", "")))
                        {
                            ModelState.AddModelError("CNPJ", "CPF Inválido");
                        }
                    }
                }
            }

            return(ModelState);
        }
예제 #23
0
        public static ModelStateDictionary WithoutFormName(this ModelStateDictionary modelstate)
        {
            ModelStateDictionary newMState = new ModelStateDictionary(modelstate);

            newMState.Clear();

            foreach (var key in modelstate.Keys)
            {
                var errors = String.Join(", ", modelstate[key].Errors
                                         .Select(e => e.ErrorMessage)
                                         .ToList());

                newMState.AddModelError(NormalizeKeyName(key.ToString()), errors);
            }

            return(newMState);
        }
예제 #24
0
        /// <summary>
        /// Set modelState within current errors
        /// </summary>
        /// <param name="modelState"></param>
        /// <param name="ressources"></param>
        /// <param name="errors"></param>
        protected void SetModelState(ModelStateDictionary modelState, LanguageDictionary ressources, Errors errors)
        {
            modelState.Clear();

            foreach (KeyValuePair <string, List <Error> > field in errors.Fields)
            {
                foreach (Error error in field.Value)
                {
                    modelState.AddModelError(field.Key, ressources.GetLabel(ressources.DefaultLanguage, error.Message, error.Parameters));
                }
            }

            foreach (Error error in errors.Global)
            {
                modelState.AddModelError("", ressources.GetLabel(ressources.DefaultLanguage, error.Message, error.Parameters));
            }
        }
        public static void FromContext(this ModelStateDictionary modelState, MappingContext context, bool append = false)
        {
            if (!append)
            {
                modelState.Clear();
            }

            if (context.GlobalErrors.Count > 0)
            {
                foreach (var p in context.GlobalErrors)
                {
                    foreach (var v in p.Value)
                    {
                        modelState.AddModelError(p.Key, v, context.GlobalInputs.TryGetC(p.Key));
                    }
                }
            }
        }
        public static void FromDictionary(this ModelStateDictionary modelState, Dictionary <string, List <string> > errors, NameValueCollection form, bool append = false)
        {
            if (!append)
            {
                modelState.Clear();
            }

            if (errors != null)
            {
                foreach (var p in errors)
                {
                    foreach (var v in p.Value)
                    {
                        modelState.AddModelError(p.Key, v, form[p.Key]);
                    }
                }
            }
        }
예제 #27
0
        public static async Task <bool> TryValidateObjectAsync(this ModelStateDictionary modelState, object data)
        {
            modelState.Clear();

            (var isValid, var results) = await ValidateObjectResultsAsync(data);

            if (!isValid)
            {
                foreach (var result in results)
                {
                    foreach (var memberName in result.MemberNames)
                    {
                        modelState.TryAddModelError(memberName.ToCamelCase(), result.ErrorMessage);
                    }
                }
            }
            return(isValid);
        }
예제 #28
0
        public override void HandleRequest()
        {
            IsValid = modelState.IsValid;

            base.HandleRequest();

            if (IsValid)
            {  // NOTE: Must clear the model state in order to bind
               //       the @Html helpers to the new model values
                modelState.Clear();
            }
            else
            {
                foreach (KeyValuePair <string, string> item in ValidationErrors)
                {
                    modelState.AddModelError(item.Key, item.Value);
                }
            }
        }
예제 #29
0
 public static Result<T> CreateErrorResult<T>(ModelStateDictionary modelState, T data = default(T))
 {
     var result = new Result<T>(false, data);
     foreach (var state in modelState)
     {
         foreach (var error in state.Value.Errors)
         {
             if (!string.IsNullOrEmpty(error.ErrorMessage))
             {
                 result.AddMessage(state.Key, error.ErrorMessage);
             }
             else if (error.Exception != null)
             {
                 result.AddMessage(state.Key, error.Exception.Message);
             }
         }
     }
     modelState.Clear();
     return result;
 }
        public void Add_Even_If_Not_Error_Result()
        {
            var modelState = new ModelStateDictionary();

            var result = new Result(HttpStatusCode.OK, "foo");

            modelState.AddModelErrors(result);

            Assert.AreEqual(1, modelState.Count);

            modelState.Clear();

            var errors = new ErrorBuilder()
                         .Add("a", null, "a")
                         .Add("b", null, "b")
                         .GetErrors();

            result = new Result(HttpStatusCode.OK, errors);
            modelState.AddModelErrors(result);

            Assert.AreEqual(errors.Count, modelState.Sum(m => m.Value.Errors.Count));
        }
예제 #31
0
        public static void ApplyCustomValidationSummaryOrdering(this ModelStateDictionary modelState, IEnumerable <string> modelStateKeys)
        {
            var result = new ModelStateDictionary();

            foreach (string key in modelStateKeys)
            {
                if (modelState.ContainsKey(key) && !result.ContainsKey(key))
                {
                    result.Add(key, modelState[key]);
                }
            }

            foreach (string key in modelState.Keys)
            {
                if (!result.ContainsKey(key))
                {
                    result.Add(key, modelState[key]);
                }
            }

            modelState.Clear();
            modelState.Merge(result);
        }
예제 #32
0
        //методы добавляют к ModelStateDictionary ошибки валидации для различных моделей
        void ValidateControllerCorrect_VM(ControllerCorrect_VM model, ModelStateDictionary state)
        {
            state.Clear();
            //должен быть введен заводской номер
            if (model.SerNo == null) state.AddModelError("1", "Пожалуйста введите заводской номер!");
            //должен быть введен инвентарный номер
            if (model.InvNo == null) state.AddModelError("2", "Пожалуйста введите инвентарный номер!");
            //проверяем длину инвентарного номера и заводского номера - должны быть меньше 30 символов
            if ((model.InvNo != null && model.InvNo.Length > 30) || (model.SerNo != null && model.SerNo.Length > 30))
            {
                state.AddModelError("DateError", "Ошибка: слишком длинный номер!");
            }
            //проверяем введенный пользователем год
            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 то пользователь его не указал просто
                    {
                        state.AddModelError("DateError", "Введен недействительный год производства!");
                    }
                }
                else
                {
                    state.AddModelError("DateError", "Пожалуйста введите год производства!");
                }
            }
            catch
            {
                //нераспарсил
                state.AddModelError("DateError", "Введен недействительный год производства!");
            }

            //Предварительная проверка, что контроллер где то установлен
            if (!dataRepository.Asystems.Where(aS => aS.AS_Controller == model.CID).Any())
            {
                //контроллер нигде не установлен
                state.AddModelError("MountError", "Контроллер не установлен ни на одном объекте!");
            }

            //Примечание должно быть менее 1000 символов
            else if (model.Comment!=null&&model.Comment.Length > 1000)
            {
                state.AddModelError("", "Ошибка: примечание слишком длинное!");
            }
        }
예제 #33
0
        public void validarUsuario(UsuarioViewModel user, ModelStateDictionary modelState)
        {
            modelState.Clear();
            string LetrasRegex  = @"^[a-zA-Z\s]+$";
            string NumerosRegex = @"^(0|[1-9]\d*)$";
            string EmailRegex   = @"^(('[\w-\s]+')|([\w-]+(?:\.[\w-]+)*)|('[\w-\s]+')([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)";

            if (string.IsNullOrEmpty(user.Nombre))
            {
                modelState.AddModelError("Nombre", "El nombre es campo obligatorio!");
            }
            if (string.IsNullOrEmpty(user.Nombre) || user.Nombre.Length <= 0)
            {
                modelState.AddModelError("Nombre", "Tiene que tener al menos un caracter");
            }
            if (string.IsNullOrEmpty(user.Nombre) || user.Nombre.Length > 100)
            {
                modelState.AddModelError("Nombre", "No puede tener mas de 100 caracteres");
            }
            bool isNombreValid = string.IsNullOrEmpty(user.Nombre) || Regex.IsMatch(user.Nombre, LetrasRegex);

            if (!isNombreValid)
            {
                modelState.AddModelError("Nombre", "Solo se aceptan letras");
            }

            if (string.IsNullOrEmpty(user.ApellidoP))
            {
                modelState.AddModelError("ApellidoP", "El apellido paterno es obligatorio!");
            }
            if (string.IsNullOrEmpty(user.ApellidoP) || user.ApellidoP.Length <= 0)
            {
                modelState.AddModelError("ApellidoP", "Tiene que tener al menos un caracter");
            }
            if (string.IsNullOrEmpty(user.ApellidoP) || user.ApellidoP.Length > 100)
            {
                modelState.AddModelError("ApellidoP", "No puede tener mas de 100 caracteres");
            }
            bool isApellidoPValid = string.IsNullOrEmpty(user.ApellidoP) || Regex.IsMatch(user.ApellidoP, LetrasRegex);

            if (!isApellidoPValid)
            {
                modelState.AddModelError("ApellidoP", "Solo se aceptan letras");
            }

            if (string.IsNullOrEmpty(user.ApellidoM))
            {
                modelState.AddModelError("ApellidoM", "El apellido materno es  obligatorio!");
            }
            if (string.IsNullOrEmpty(user.ApellidoM) || user.ApellidoM.Length <= 0)
            {
                modelState.AddModelError("ApellidoM", "Tiene que tener al menos un caracter");
            }
            if (string.IsNullOrEmpty(user.ApellidoM) || user.ApellidoM.Length > 100)
            {
                modelState.AddModelError("ApellidoP", "No puede tener mas de 100 caracteres");
            }
            bool isApellidoMValid = string.IsNullOrEmpty(user.ApellidoM) || Regex.IsMatch(user.ApellidoM, LetrasRegex);

            if (!isApellidoPValid)
            {
                modelState.AddModelError("ApellidoP", "Solo se aceptan letras");
            }

            if (string.IsNullOrEmpty(user.Email))
            {
                modelState.AddModelError("Email", "El Email es obligatorio!");
            }
            if (string.IsNullOrEmpty(user.Email) || user.Email.Length <= 0)
            {
                modelState.AddModelError("Email", "Tiene que tener al menos un caracter");
            }
            if (string.IsNullOrEmpty(user.Email) || user.Email.Length > 100)
            {
                modelState.AddModelError("Email", "No puede tener mas de 100 caracteres");
            }
            bool isEmailValid = string.IsNullOrEmpty(user.Email) || Regex.IsMatch(user.Email, EmailRegex);

            if (!isEmailValid)
            {
                modelState.AddModelError("Email", "Ingrese un Email Correcto ");
            }
            if (existeUserC(user.Email))
            {
                modelState.AddModelError("Email", "Ya existe un usuario con el mismo email");
            }

            if (string.IsNullOrEmpty(user.Password))
            {
                modelState.AddModelError("Password", "La contraseña es obligatorio!");
            }
        }
예제 #34
0
 public void Clear()
 {
     _modelState.Clear();
 }
예제 #35
0
        void ValidateCreporderDetails_VM(CreporderDetails_VM model, ModelStateDictionary state)
        {
            state.Clear();

            //дата обнаружения неисправности
            //должна быть введена, должна иметь правильный формат, не должна быть позже текущей даты, не должна быть раньше 2-х лет
            DateTime tempDate;
            try
            {
                if (model.RevealedDate != null)
                {
                    tempDate = DateTime.Parse(model.RevealedDate); //если ввели некоректные данные, то не распарсит
                    if (tempDate>DateTime.Now)
                    {
                        state.AddModelError("", "Дата обнаружения неисправности позже текущей даты!");
                    }
                    else if(tempDate<DateTime.Now.AddYears(-2))
                    {
                        state.AddModelError("", "Неисправность не должна быть обнаружена более 2-х лет назад!");
                    }
                }
                else
                {
                    state.AddModelError("", "Пожалуйста введите дату обнаружения неисправности!");
                }
            }
            catch
            {
                //нераспарсил
                state.AddModelError("DateError", "Пожалуйста введить дату обнаружения неисправности в формате ДД.ММ.ГГГГ");
            }

            //описание неисправности: обязательно, не более 1000 символов
            if (model.ReporderDescription==null)
            {
                state.AddModelError("", "Пожалуйста введите описание неисправности!");
            }
            else if (model.ReporderDescription.Length>1000)
            {
                state.AddModelError("", "Описание неисправности слишком длинное!");
            }

            //адрес местонахождения: проверяем только если пользователь снял галку "установлен на тепловом пункте"
            //обязательно должен быть введен, должен быть не более 300 символов
            if(!model.Mounted)
            {
                if (model.EquipLocation==null)
                {
                    state.AddModelError("", "Пожалуйста укажите адрес местонахождения (или выберите 'находится в ТП')!");
                }
                else if(model.EquipLocation.Length>300)
                {
                    state.AddModelError("", "Адрес установки слишком длинный!");
                }
            }

            //срок выполнения работ, если введен, то должен быть не более 200 символов
            if(model.ExpectedRepairTerm!=null && model.ExpectedRepairTerm.Length>200)
            {
                state.AddModelError("", "Срок выполнения работ слишком длинный!");
            }

            //контакт: должен быть отмечен по крайней мере 1 контакт и не более 5;
            int count = 0;
            if(model.ContactsChoice!=null)
            {
                foreach (var contact in model.ContactsChoice)
                {
                    if (contact.Checked == true) count++;
                }
            }

            if (count==0)
            {
                state.AddModelError("", "Пожалуйста выберите контактных лиц!");
            }
            else if (count>5)
            {
                state.AddModelError("", "Пожалуйста выберите не более 5 контактных лиц!");
            }
        }
예제 #36
0
 void ValidateCreporderList_VM(CreporderList_VM model, ModelStateDictionary state)
 {
     state.Clear();
     //введенные даты, должны иметь правильный формат
     DateTime Date;
     try
     {
         if (model.StartRevDate!=null)Date = DateTime.Parse(model.StartRevDate);
         if (model.FinishRevDate!=null)Date = DateTime.Parse(model.FinishRevDate);
     }
     catch
     {
         state.AddModelError("", "Даты необходимо ввести в формате ДД.ММ.ГГГГ");
     }
 }
예제 #37
0
        void ValidateEditCRepOrderStatus_VM(EditCRepOrderStatus_VM model, ModelStateDictionary state)
        {
            state.Clear();
            DateTime tempDate;
            float tempFloat;
            string tempString;
            //валидация проходит отдельно для каждого варианта нового статуса
            //1.sended
            if (model.NewStatus=="sended")
            {
                //дата отправки
                //должна быть введена, должна иметь правильный формат, должна быть в интервале дата обнаружения -- текущая дата
                try
                {
                    if (model.SendedDate != null)
                    {
                        tempDate = DateTime.Parse(model.SendedDate); //если ввели некоректные данные, то не распарсит
                        if (tempDate > DateTime.Now)
                        {
                            state.AddModelError("", "Дата направления заявки позже текущей даты!");
                        }
                        else if (tempDate < model.Order.CRO_revealedDate)
                        {
                            //state.AddModelError("", "Заявка не может быть направлена раньше обнаружения неисправности!");
                        }
                    }
                    else
                    {
                        state.AddModelError("", "Пожалуйста введите дату направления заявки!");
                    }
                }
                catch
                {
                    //нераспарсил
                    state.AddModelError("DateError", "Пожалуйста введить дату направления заявки в формате ДД.ММ.ГГГГ");
                }
                //номер заявки - должен быть присвоен, должен быть не более 10 символов
                if (model.No== null)
                    state.AddModelError("NoError", "Пожалуйста укажите номер, присвоенный заявке!");
                else if (model.No.Length>10)
                    state.AddModelError("NoError", "Ошибка: номер заявки должен быть в пределах 10 символов");

            } //sended

            //2. billed
            if (model.NewStatus == "billed")
            {
                //дата предъявления
                //должна быть введена, должна иметь правильный формат, должна быть в интервале дата восстановления -- текущая дата
                //перед приемкой к оплате работ заявка должна быть закрыта
                try
                {
                    if (model.BilledDate != null)
                    {
                        tempDate = DateTime.Parse(model.BilledDate); //если ввели некоректные данные, то не распарсит
                        if (tempDate > DateTime.Now)
                        {
                            state.AddModelError("", "Дата предъявления работ к оплате позже текущей даты!");
                        }

                        if(model.Order.CRO_closedDate==null)
                        {
                            state.AddModelError("", "Ошибка: попытка внесения информации об оплате заявки, которая не закрыта!");
                        }
                        else if (tempDate < model.Order.CRO_closedDate)
                        {
                            state.AddModelError("", "Ошибка. Дата предъявления работ к оплате раньше даты закрытия заявки!");
                        }
                    }
                    else
                    {
                        state.AddModelError("", "Пожалуйста введите дату предъявления работ к оплате!");
                    }
                }
                catch
                {
                    //нераспарсил
                    state.AddModelError("DateError", "Пожалуйста введить дату предъявления работ к оплате в формате ДД.ММ.ГГГГ");
                }

                //подрядная организация
                //должна быть выбрана
                if(model.Contractor==null)
                {
                    state.AddModelError("", "Пожалуйста выберите подрядную организацию!");
                }

                //стоимость ремонта
                // должна быть введена, должна быть в интервале 150 - 150 000,00
                if (model.RepairCost!=null)
                {
                    //на
                    tempString = model.RepairCost.Replace('.', ',');//для того, чтобы пользователь имел возможность вводить и через точку и через запятую
                    try
                    {
                        tempFloat = float.Parse(tempString);
                        //распарсил, продолжаем
                        if (tempFloat<150.00 || tempFloat>150000.00)
                        {
                            state.AddModelError("", "Ошибка: введена недостоверная сумма!");
                        }
                    }
                    catch
                    {
                        state.AddModelError("","Пожалуйста введите сумму в формате XXXX,XX!");
                    }
                }
                else
                {
                    //сумма не введена
                    state.AddModelError("", "Пожалуйста введите сумму!");
                }

            } //billed

            //3. examined
            if (model.NewStatus == "examined")
            {
                //дата обследования
                //должна быть введена, должна иметь правильный формат, должна быть в интервале дата отправки заявки -- текущая дата
                //перед обследованием заявка должна быть направлена Подрядчику
                try
                {
                    if (model.ExaminedDate != null)
                    {
                        tempDate = DateTime.Parse(model.ExaminedDate); //если ввели некоректные данные, то не распарсит
                        if (tempDate > DateTime.Now)
                        {
                            state.AddModelError("", "Дата обследования позже текущей даты!");
                        }

                        if (model.Order.CRO_sendedDate==null)
                        {
                            state.AddModelError("", "Ошибка: обследование невозможно, заявка не была направлена подрядчику!");
                        }
                        else if (tempDate < model.Order.CRO_revealedDate)
                        {
                            //state.AddModelError("", "Ошибка: обследования объекта раньше даты обнаружения неисправности!");
                        }
                    }
                    else
                    {
                        state.AddModelError("", "Пожалуйста введите дату обследования!");
                    }
                }
                catch
                {
                    //нераспарсил
                    state.AddModelError("DateError", "Пожалуйста введить дату обследования в формате ДД.ММ.ГГГГ");
                }
                // Примечание должно быть не более 1000 символов
                if (model.Comment!=null&&model.Comment.Length>1000)
                {
                    state.AddModelError("CommentError", "Ошибка: примечание слишком длинное!");
                }

            } //examined

            //4. notexamined
            if (model.NewStatus == "notexamined")
            {
                //запрещено удаление информации об обследовании и итогах работы, если работы предъявлены к оплате
                if (model.Order.CRO_billedDate != null)
                {
                    state.AddModelError("", "Ошибка удаления информации: выполнение работ по заявке предъявлено к оплате");
                }
                // Примечание должно быть не более 1000 символов
                if (model.Comment != null && model.Comment.Length > 1000)
                {
                    state.AddModelError("CommentError", "Ошибка: примечание слишком длинное!");
                }
            }//notexamined

            //5. closed
            if (model.NewStatus == "closed")
            {
                //результат ремонта
                //должен быть указан, должен быть либо repeared, cancelled, decommited
                if (model.RepairResult==null)
                {
                    state.AddModelError("", "Пожалуйста укажите результат выполнения заявки");
                }
                else if (model.RepairResult != "repeared" && model.RepairResult != "decommited" && model.RepairResult != "cancelled")
                {
                    state.AddModelError("", "Ошибка: указан неизвестный результат выполнения заявки");
                }

                //дата закрытия заявки
                //должна быть введена, должна иметь правильный формат, должна быть в интервале дата отправки заявки -- текущая дата
                //если результат ремонта : выполнен или извещение, то заявка должна быть направлена

                try
                {
                    if (model.ClosedDate != null)
                    {
                        tempDate = DateTime.Parse(model.ClosedDate); //если ввели некоректные данные, то не распарсит
                        if (tempDate > DateTime.Now)
                        {
                            state.AddModelError("", "Ошибка: дата закрытия заявки позже текущей даты!");
                        }

                        if (model.Order.CRO_sendedDate == null)
                        {
                            if(model.RepairResult!= "cancelled")
                            {
                                //результат ремонта : выполнен или извещение
                                //state.AddModelError("", "Ошибка закрытия заявки: заявка не была направлена подрядчику!");
                            }
                        }
                        else if (tempDate < model.Order.CRO_sendedDate)
                        {
                            //state.AddModelError("", "Ошибка: дата закрытия заявки раньше, чем дата направления ее подрядчику!");
                        }
                    }
                    else
                    {
                        switch (model.RepairResult)
                        {
                            case ("repeared"):
                                state.AddModelError("", "Пожалуйста введите дату выполнения ремонта!");
                                break;
                            case ("decommited"):
                                state.AddModelError("", "Пожалуйста введите дату выдачи извещения!");
                                break;
                            case ("cancelled"):
                                state.AddModelError("", "Пожалуйста введите дату отмены заявки!");
                                break;
                        }
                    }
                }
                catch
                {
                    //нераспарсил
                    state.AddModelError("DateError", "Пожалуйста введить дату в формате ДД.ММ.ГГГГ");
                }

                //Вердикт
                // Должен быть указан, долен быть не более 1000 символов
                //описание неисправности: обязательно, не более 1000 символов
                if (model.Verdict == null)
                {
                    switch (model.RepairResult)
                    {
                        case ("repeared"):
                            state.AddModelError("", "Пожалуйста опишите выявленные дефекты!");
                            break;
                        case ("decommited"):
                            state.AddModelError("", "Пожалуйста укажите заключение подрядчика!");
                            break;
                        case ("cancelled"):
                            state.AddModelError("", "Пожалуйста укажите причины отмены заявки!");
                            break;
                    }
                }
                else if (model.Verdict.Length > 1000)
                {
                    switch (model.RepairResult)
                    {
                        case ("repeared"):
                            state.AddModelError("", "Ошибка: слишком длинное описание дефектов!");
                            break;
                        case ("decommited"):
                            state.AddModelError("", "Ошибка: слишком длинное заключение подрядчика!");
                            break;
                        case ("cancelled"):
                            state.AddModelError("", "Ошибка: слишком длинное описание причин отмены заявки!");
                            break;
                    }
                }
            } //closed

            //6. examinednotclosed
            //запрещено удаление информации об обследовании и итогах работы, если работы предъявлены к оплате
            if (model.NewStatus == "examinednotclosed")
            {
                if (model.Order.CRO_billedDate != null)
                {
                    state.AddModelError("", "Ошибка удаления информации: выполнение работ по заявке предъявлено к оплате");
                }
                // Примечание должно быть не более 1000 символов
                if (model.Comment != null && model.Comment.Length > 1000)
                {
                    state.AddModelError("CommentError", "Ошибка: примечание слишком длинное!");
                }
            }//examinednotclosed
        }
예제 #38
0
        //метод валидации
        public void Validate(ModelStateDictionary state)
        {
            state.Clear();

            //планируемое количество замен
            //должно быть в интервале 0 - общее количество контроллеров автоматики
            DBRepository dataRepo = new DBRepository();
            int contrAmm = dataRepo.ETKAutomControllers.Count();
            int replLvl;
            try
            {
                if (ReplacementLevel != null) //если null, то значит пользователь ничего не ввел в поле (допустимо)
                {
                    replLvl = Int32.Parse(ReplacementLevel); //если ввели не число, то не распарсит
                    if (replLvl < 0)
                    {
                        state.AddModelError("DateError", "Пожалуйста введите достоверный уровень замен контролеров в год!");
                    }
                }
            }
            catch
            {
                //нераспарсил
                state.AddModelError("DateError", "Пожалуйста введите достоверный уровень замен контролеров в год!");
            }

            //валидация выбранных факторов
            //если пользователь выбрал учитывать модификацию, то также должна быть выбрана модель
            if(ModificationFact&&!ModelFact)
                state.AddModelError("DateError", "При выборе \"Учитывать модификацию...\" обязательно должно быть выбрано \"Учитывать модель\"!");

            //валидация типа оборудования: пропускаем только контроллеры, при добавлении возможности обработки новых видов оборудования необходимо внести изменения
            if (EquType!="controllers")
                state.AddModelError("EquTypeError", "Метод для выбранного типа оборудования в настоящее время не реализован!");
        }
예제 #39
0
        public void Clear_RemovesAllEntries_IfDictionaryIsEmpty()
        {
            // Arrange
            var dictionary = new ModelStateDictionary();

            // Act
            dictionary.Clear();

            // Assert
            Assert.Equal(0, dictionary.Count);
            Assert.Equal(0, dictionary.ErrorCount);
            Assert.Empty(dictionary);
            Assert.Equal(ModelValidationState.Valid, dictionary.ValidationState);
        }
예제 #40
0
        private Person SetPerson(PersonEditModel personEditModel, SeminarPerson seminarPerson, ModelStateDictionary modelState, Person person = null, HttpPostedFileBase profilePic = null)
        {
            modelState.Clear();

            person = person ?? personEditModel.Person;

            // copy all the fields
            Mapper.Map(personEditModel, person);

            SetAddresses(person, personEditModel.Addresses, ModelState);
            SetContacts(person, personEditModel.Contacts, ModelState);

            if (seminarPerson != null)
            {
                SetCommodities(seminarPerson, personEditModel.Commodities);

                if (personEditModel.Firm != null || !string.IsNullOrEmpty(personEditModel.FirmName))
                {
                    seminarPerson.Firm = personEditModel.Firm ?? new Firm(personEditModel.FirmName, personEditModel.FirmDescription) { WebAddress = personEditModel.FirmWebAddress };
                }
                if (personEditModel.Title != null) //Not sure what is happening here. This may fix it.
                {
                    seminarPerson.Title = personEditModel.Title;
                }
            }

            // deal with the image))
            if (profilePic != null)
            {
                // blank out existing image files
                person.OriginalPicture = null;
                person.MainProfilePicture = null;
                person.ThumbnailPicture = null;

                // read the file and set the original picture
                var reader = new BinaryReader(profilePic.InputStream);
                person.OriginalPicture = reader.ReadBytes(profilePic.ContentLength);
                person.ContentType = profilePic.ContentType;
            }

            // run the validation
            person.TransferValidationMessagesTo(modelState);

            return person;
        }
예제 #41
0
        void ValidateCreateCRepOrder_Equipment_VM(CreateCRepOrder_Equipment_VM model,ModelStateDictionary state)
        {
            state.Clear();
            //контроллер должен быть выбран
            if (model.CID==null)
            {
                state.AddModelError("", "Пожалуйста выберите контроллер");
            }
            else
            {
                //выбранный контроллер не должен находится в ремонте
                HSA.Domain.BD.Controller controller = dataRepository.Controllers.SingleOrDefault(c => c.C_ID == model.CID);
                if(controller.IsBroken())
                {
                    state.AddModelError("", "Пожалуйста выберите контроллер, который не находится в ремонте");
                }

            }
        }
예제 #42
0
        public async Task <bool> ValidateAsync(TeamValidator teamValidator, long tournamentId, ModelStateDictionary modelState, CancellationToken cancellationToken)
        {
            if (Round.ShowSelector && Round.SelectedRoundId.HasValue)
            {
                var tirValidator = new TeamInRoundValidator(
                    new TeamInRoundEntity {
                    RoundId = Round.SelectedRoundId.Value, TeamId = teamValidator.Model.Id
                },
                    (teamValidator.Data, tournamentId));

                await tirValidator.CheckAsync(cancellationToken);

                foreach (var fact in tirValidator.GetFailedFacts())
                {
                    // validator currently only has one rule
                    if (fact.Id == TeamInRoundValidator.FactId.RoundBelongsToTournament)
                    {
                        modelState.AddModelError(string.Join('.', Round.HtmlFieldPrefix, nameof(Round.SelectedRoundId)),
                                                 fact.Message);
                    }
                }
            }

            await teamValidator.CheckAsync(cancellationToken);

            foreach (var fact in teamValidator.GetFailedFacts())
            {
                if (fact.Exception != null)
                {
                    throw new Exception(null, fact.Exception);
                }

                if (fact.Type == FactType.Critical || fact.Type == FactType.Error)
                {
                    foreach (var fieldName in fact.FieldNames)
                    {
                        modelState.AddModelError(string.Join('.', Team.HtmlFieldPrefix, fieldName), fact.Message);
                    }
                }
                else
                {
                    modelState.AddModelError(string.Empty, fact.Message);
                    // Validator generates FactType.Warning only, if no errors exist
                    IsWarning = true;
                }
            }

            // The Hash is re-calculated with the new submitted values.
            // We have to compare to the original hidden Hash field value,
            // because to override warnings, form fields must be unchanged since last post
            var newHash = ComputeInputHash();

            if (IsWarning && OverrideWarnings && newHash == Hash)
            {
                modelState.Clear();
                IsWarning = false;
            }

            if (!modelState.IsValid)
            {
                // Show checkbox unchecked
                OverrideWarnings = false;
                // Set hash field value to latest form fields content
                Hash = newHash;
            }

            return(modelState.IsValid);
        }
예제 #43
0
        public void Clear_RemovesAllEntries()
        {
            // Arrange
            var dictionary = new ModelStateDictionary();
            dictionary.AddModelError("a", "a-error");
            dictionary.AddModelError("b", "b-error");
            dictionary.AddModelError("c", "c-error");

            // Act
            dictionary.Clear();

            // Assert
            Assert.Equal(0, dictionary.Count);
            Assert.Equal(0, dictionary.ErrorCount);
            Assert.Empty(dictionary);
            Assert.Equal(ModelValidationState.Valid, dictionary.ValidationState);
        }