public void Validate(object target, Notification notification)
 {
     var context = new ValidationContext(this);
     _query
         .RulesFor(target)
         .Each(rule => rule.Validate(target, context, notification));
 }
 public void Validate(ValidationContext context)
 {
     if (!IsValid)
     {
         context.Notification.RegisterMessage<ValidatedClass>(x => x.Name, ValidationKeys.REQUIRED);
     }
 }
示例#3
0
        public void ValidateAgainstSession(ISession session, ValidationContext context)
        {
            var projection = buildProjection(session, (DomainEntity)context.Target);

            var count =  Convert.ToInt64(projection.UniqueResult());

            Validate(count, context);
        }
示例#4
0
        public void Validate(long count, ValidationContext context)
        {
            if (count <= 0) return;

            var message = new NotificationMessage(FastPackKeys.FIELD_MUST_BE_UNIQUE);
            _properties.Each(p => message.AddAccessor(new SingleProperty(p)));

            context.Notification.RegisterMessage(message);
        }
示例#5
0
        public void Validate(Accessor accessor, ValidationContext context)
        {
            var username = context.GetFieldValue<string>(accessor);
            var users = context.Service<IUserService>();

            if(users.UsernameExists(username))
            {
                context.Notification.RegisterMessage(accessor, StringToken.FromKeyString("Validation:Username", "Username '{username}' already exists"), TemplateValue.For("username", username));
            }
        }
示例#6
0
	    public void Validate(Accessor accessor, ValidationContext context)
        {
            var username = context.GetFieldValue<string>(accessor);
            var service = context.Service<IUserService>();

            if(service.UsernameExists(username))
            {
                context.Notification.RegisterMessage(accessor, Token, TemplateValue.For("username", username));
            }
        }
示例#7
0
        public void Validate(object target, Notification notification)
        {
            var validatedType = _typeResolver.ResolveType(target);
            var context = new ValidationContext(this, notification, target){
                TargetType = validatedType,
                Resolver = _typeResolver
            };

            _sources.SelectMany(x => x.RulesFor(validatedType))
                .Each(rule => rule.Validate(context));
        }
		public void Validate(Accessor accessor, ValidationContext context)
		{
			var items = (IEnumerable<StringWrapper>)accessor.GetValue(context.Target);

			if (items.Any(i => i.Text.StartsWith(prefix, StringComparison.OrdinalIgnoreCase)))
			{
				var m = prefix + " is not a valid prefix for \""+ GetFormattedPropertyName(accessor)  + "\"";
				var em = StringToken.FromKeyString("", m);
				context.Notification.RegisterMessage(accessor, em);
			}
		}
        public void Validate(object target, ValidationContext context, Notification notification)
        {
            var values = _accessor.GetValue(target) as IEnumerable;
            if(values == null)
            {
                return;
            }

            var targetType = _resolver.ResolveType(values);
            var childNotification = new Notification(targetType);

            values.Each(value => context.Provider.Validate(value, childNotification));
            notification.Include(childNotification);
        }
示例#10
0
        public void Validate(object target, ValidationContext context, Notification notification)
        {
            var declaringType = _typeResolver.ResolveType(target);
            var rawValue = _accessor.GetValue(target);

            var strategyContext = new ValidationStrategyContext(target, rawValue, declaringType, context.Provider, notification);
            var result = _strategy.Validate(strategyContext);
            if(result.IsValid)
            {
                return;
            }

            // TODO -- this is clunky. Need to make the localization pieces easier to consume
            _strategy
                .GetMessageSubstitutions(_accessor)
                .Each((key, value) => result.Message.AddSubstitution(key, value));

            notification
                .RegisterMessage(_accessor, result.Message);
        }
示例#11
0
 public void Validate(Accessor accessor, ValidationContext context)
 {
     Thread.Sleep(_throttle);
 }
 public void Validate(Accessor accessor, ValidationContext context)
 {
     throw new System.NotImplementedException();
 }
示例#13
0
 public void Validate(ValidationContext context)
 {
     _transactions.Execute<ISession>(session => ValidateAgainstSession(session, context));
 }
示例#14
0
 public virtual void Execute(ValidationContext context)
 {
     _steps.Each(step => step.Execute(context));
 }
示例#15
0
 public void Validate(ValidationContext context)
 {
     context.Target.As<IValidated>().Validate(context);
 }
 public void Validate(Accessor accessor, ValidationContext context)
 {
     context.Notification.RegisterMessage(accessor, Token);
 }
示例#17
0
        public void Validate(Accessor accessor, ValidationContext context)
        {
            var username = context.GetFieldValue<string>(accessor);
            var service = context.Service<IUserService>();

            if(service.UsernameExists(username))
            {
                context.Notification.RegisterMessage(accessor, StringToken.FromKeyString("UniqueUser", "'{username}' is already in use"), TemplateValue.For("username", username));
            }
        }
示例#18
0
 public void Execute(ValidationContext context)
 {
     // TODO -- Could push a logging mechanism into the context
     _rules.Each(x => x.Validate(context));
 }