public RemoteValidationResult Validate(RemoteValidationContext context, RemoteValidationResult result) { var filterDefinition = context.Definitions.FirstOrDefault(x => x.Alias == FieldFilter); if (filterDefinition == null) { var message = new ActionTaskResultMessage() { ResourceClass = ValidationHelper.ResourceClass, ResourceName = nameof(RemoteValidationMessages.MissingParam), Parameters = new object[] { FieldFilter } }; result.AddErrorMessage(ValidationHelper.ToString(context, message)); } else { var filter = context.ProvideValueExact <string>(filterDefinition); if (string.IsNullOrEmpty(filter)) { return(result); } var normalizedFilter = DPathProcessor.NormalizeExpression(filter); if (!DPathProcessor.IsExpressionValid(normalizedFilter)) { var message = new ActionTaskResultMessage() { ResourceClass = ValidationHelper.ResourceClass, ResourceName = nameof(RemoteValidationMessages.InvalidFilter), Parameters = new object[] { normalizedFilter } }; result.AddModelError(filterDefinition.PropertyName, ValidationHelper.ToString(context, message)); } } return(result); }
public RemoteValidationResult Validate(RemoteValidationContext context, RemoteValidationResult result) { var xmlDefinition = context.Definitions.FirstOrDefault(x => x.Alias == FieldXmlDefinition); if (xmlDefinition == null) { var message = new ActionTaskResultMessage() { ResourceClass = ValidationHelper.ResourceClass, ResourceName = nameof(RemoteValidationMessages.FieldNotFound), Parameters = new object[] { FieldXmlDefinition } }; result.Messages.Add(ValidationHelper.ToString(context, message)); } var xaml = context.ProvideValueExact <string>(xmlDefinition); if (!string.IsNullOrWhiteSpace(xaml)) { Content definition; try { definition = (Content)XamlConfigurationParser.CreateFrom(xaml); } catch (Exception ex) { var message = new ActionTaskResultMessage() { ResourceClass = ValidationHelper.ResourceClass, ResourceName = nameof(RemoteValidationMessages.NotValidXamlDefinition), Parameters = new object[] { ex.Message } }; result.Messages.Add(ValidationHelper.ToString(context, message)); return(result); } var jsonDefinition = context.Definitions.FirstOrDefault(x => x.Alias == FieldJsonDefinition); if (jsonDefinition != null) { using (var stream = new MemoryStream()) { using (var reader = new StreamReader(stream)) { try { _formatter.Write(stream, definition); stream.Position = 0; context.SetValue(result, jsonDefinition, reader.ReadToEnd()); } catch (Exception ex) { var message = new ActionTaskResultMessage() { ResourceClass = ValidationHelper.ResourceClass, ResourceName = nameof(RemoteValidationMessages.JsonDefinitionError), Parameters = new object[] { ex.Message } }; result.Messages.Add(ValidationHelper.ToString(context, message)); return(result); } } } } } return(result); }