public static MutatorsConfigurator <TRoot, TChild, string> NotLongerThan <TRoot, TChild>(
            this MutatorsConfigurator <TRoot, TChild, string> configurator,
            int length,
            MultiLanguageTextBase title,
            int priority = 0,
            ValidationResultType type = ValidationResultType.Error)
        {
            var pathToValue = (Expression <Func <TRoot, string> >)configurator.PathToValue.ReplaceEachWithCurrent();
            var condition   = Expression.Convert(Expression.GreaterThan(Expression.MakeMemberAccess(pathToValue.Body, stringLengthProperty), Expression.Constant(length)), typeof(bool?));
            var message     = Expression.Lambda <Func <TRoot, MultiLanguageTextBase> >(Expression.MemberInit(
                                                                                           Expression.New(typeof(LengthOutOfRangeText)),
                                                                                           Expression.Bind(lengthOutOfRangeTextToProperty, Expression.Constant(length, typeof(int?))),
                                                                                           Expression.Bind(lengthOutOfRangeTextTitleProperty, Expression.Constant(title, typeof(MultiLanguageTextBase)))), pathToValue.Parameters);

            configurator.SetMutator(InvalidIfConfiguration.Create(MutatorsCreator.Sharp, priority, Expression.Lambda <Func <TRoot, bool?> >(condition, pathToValue.Parameters), message, type));
            return(configurator);
        }
        public static MutatorsConfigurator <TRoot, TChild, string> LengthInRange <TRoot, TChild>(
            this MutatorsConfigurator <TRoot, TChild, string> configurator,
            int fromLength,
            int toLength,
            MultiLanguageTextBase title,
            int priority = 0,
            ValidationResultType type = ValidationResultType.Error)
        {
            var methodReplacer  = new MethodReplacer(MutatorsHelperFunctions.EachMethod, MutatorsHelperFunctions.CurrentMethod);
            var pathToValue     = (Expression <Func <TRoot, string> >)methodReplacer.Visit(configurator.PathToValue);
            var leftExpression  = Expression.LessThan(Expression.MakeMemberAccess(pathToValue.Body, stringLengthProperty), Expression.Constant(fromLength));
            var rigthExpression = Expression.GreaterThan(Expression.MakeMemberAccess(pathToValue.Body, stringLengthProperty), Expression.Constant(toLength));

            var condition = Expression.Convert(Expression.OrElse(leftExpression, rigthExpression), typeof(bool?));
            var message   = Expression.Lambda <Func <TRoot, MultiLanguageTextBase> >(Expression.MemberInit(
                                                                                         Expression.New(typeof(LengthOutOfRangeText)),
                                                                                         Expression.Bind(lengthOutOfRangeTextToProperty, Expression.Constant(toLength, typeof(int?))),
                                                                                         Expression.Bind(lengthOutOfRangeTextFromProperty, Expression.Constant(fromLength, typeof(int?))),
                                                                                         Expression.Bind(lengthOutOfRangeTextTitleProperty, Expression.Constant(title, typeof(MultiLanguageTextBase)))), pathToValue.Parameters);

            configurator.SetMutator(InvalidIfConfiguration.Create(MutatorsCreator.Sharp, priority, Expression.Lambda <Func <TRoot, bool?> >(condition, pathToValue.Parameters), message, type));
            return(configurator);
        }
 public MutatorsConfigurator <TRoot, TRoot, TValue> Target <TValue>(Expression <Func <TRoot, TValue> > pathToValue, MultiLanguageTextBase title = null)
 {
     return(new MutatorsConfigurator <TRoot, TRoot, TValue>(root, data => data, pathToValue, Condition, title));
 }
Example #4
0
 public static FormattedValidationResult Error(MultiLanguageTextBase message, object value, MultiLanguagePathText path, int priority = 0)
 {
     return(new FormattedValidationResult(ValidationResult.Error(message), value, path, priority));
 }
 public ValidationResult(ValidationResultType validationResultType, MultiLanguageTextBase message)
 {
     Type    = validationResultType;
     Message = message;
 }
 public static ValidationResult Error(MultiLanguageTextBase message)
 {
     return(new ValidationResult(ValidationResultType.Error, message));
 }
 public static ValidationResult Warning(MultiLanguageTextBase message)
 {
     return(new ValidationResult(ValidationResultType.Warning, message));
 }