Пример #1
0
        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);
        }