public static IEnumerable <IValidator> CreateValidators(IField field, FieldValidatorFactory createFieldValidator) { Guard.NotNull(field, nameof(field)); var visitor = new DefaultFieldValueValidatorsFactory(createFieldValidator); return(field.Accept(visitor)); }
public override CommandExecutionResult Execute(string answerValue, CommandModel model = null) { var question = model.Data.As <Question>(); var validators = FieldValidatorFactory.CreateFieldValidators(question); foreach (var validator in validators) { var result = validator.Validate(answerValue); if (result.IsValid == false) { return(CurrentScreen(question, result)); } } question.Answer.Value = answerValue; return(NextScreen(question)); }
private DefaultFieldValueValidatorsFactory(FieldValidatorFactory createFieldValidator) { this.createFieldValidator = createFieldValidator; }
public IEnumerable <IValidator> CreateValueValidators(ValidationContext context, IField field, FieldValidatorFactory createFieldValidator) { return(DefaultFieldValueValidatorsFactory.CreateValidators(field, createFieldValidator)); }
public IEnumerable <IValidator> CreateFieldValidators(ValidationContext context, IField field, FieldValidatorFactory createFieldValidator) { if (field is IField <UIFieldProperties> ) { yield return(NoValueValidator.Instance); } }
public IEnumerable <IValidator> CreateContentValidators(ValidationContext context, FieldValidatorFactory createFieldValidator) { foreach (var validatorTag in ValidatorTags(context.Schema.Properties.Tags)) { yield return(new CompositeUniqueValidator(validatorTag, contentRepository)); } }
public IEnumerable <IValidator> CreateValueValidators(ValidationContext context, IField field, FieldValidatorFactory createFieldValidator) { if (field is IField <AssetsFieldProperties> assetsField) { var checkAssets = new CheckAssets(async ids => { return(await assetRepository.QueryAsync(context.AppId.Id, new HashSet <Guid>(ids))); }); yield return(new AssetsValidator(assetsField.Properties, checkAssets)); } if (field is IField <ReferencesFieldProperties> referencesField) { var checkReferences = new CheckContentsByIds(async ids => { return(await contentRepository.QueryIdsAsync(context.AppId.Id, ids, SearchScope.All)); }); yield return(new ReferencesValidator(referencesField.Properties.SchemaIds, checkReferences)); } if (field is IField <NumberFieldProperties> numberField && numberField.Properties.IsUnique) { var checkUniqueness = new CheckUniqueness(async filter => { return(await contentRepository.QueryIdsAsync(context.AppId.Id, context.SchemaId.Id, filter)); }); yield return(new UniqueValidator(checkUniqueness)); } if (field is IField <StringFieldProperties> stringField && stringField.Properties.IsUnique) { var checkUniqueness = new CheckUniqueness(async filter => { return(await contentRepository.QueryIdsAsync(context.AppId.Id, context.SchemaId.Id, filter)); }); yield return(new UniqueValidator(checkUniqueness)); } }