public override bool BeforeExecute(IOperation operation) { var accumulatedErrors = new List <ValidationFailure>(); foreach (var input in operation.Inputs) { if (input == null) { continue; } var bindingResult = input.Binder.BuildObject(); if (bindingResult == null || !bindingResult.Successful) { continue; } var validatorType = typeof(IValidator <>).MakeGenericType(bindingResult.Instance.GetType()); if (!_resolver.HasDependency(validatorType)) { continue; } var validator = _resolver.Resolve(validatorType) as IValidator; if (validator == null) { continue; } var resultForParameter = validator.Validate(bindingResult.Instance); accumulatedErrors.AddRange(resultForParameter.Errors); } if (!accumulatedErrors.Any()) { return(true); } var body = new ResponseForInvalidRequest(accumulatedErrors); _context.OperationResult = new OperationResult.BadRequest { ResponseResource = body }; LogBadRequest(operation, body); return(false); }
public override bool BeforeExecute(IOperation operation) { var accumulatedErrors = new List<ValidationFailure>(); foreach (var input in operation.Inputs) { if (input == null) { continue; } var bindingResult = input.Binder.BuildObject(); if (bindingResult == null || !bindingResult.Successful) { continue; } var validatorType = typeof(IValidator<>).MakeGenericType(bindingResult.Instance.GetType()); if (!_resolver.HasDependency(validatorType)) { continue; } var validator = _resolver.Resolve(validatorType) as IValidator; if (validator == null) { continue; } var resultForParameter = validator.Validate(bindingResult.Instance); accumulatedErrors.AddRange(resultForParameter.Errors); } if (!accumulatedErrors.Any()) { return true; } var body = new ResponseForInvalidRequest(accumulatedErrors); _context.OperationResult = new OperationResult.BadRequest { ResponseResource = body }; LogBadRequest(operation, body); return false; }