All checks were successful
continuous-integration/drone/push Build is passing
And update all references including comments etc.
37 lines
979 B
C#
37 lines
979 B
C#
using FluentValidation;
|
|
using FluentValidation.Results;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
namespace Vegasco.Server.Api.Common;
|
|
|
|
public class FluentValidationOptions<TOptions> : IValidateOptions<TOptions>
|
|
where TOptions : class
|
|
{
|
|
private readonly IEnumerable<IValidator<TOptions>> _validators;
|
|
|
|
public string? Name { get; set; }
|
|
|
|
public FluentValidationOptions(string? name, IEnumerable<IValidator<TOptions>> validators)
|
|
{
|
|
Name = name;
|
|
_validators = validators;
|
|
}
|
|
|
|
public ValidateOptionsResult Validate(string? name, TOptions options)
|
|
{
|
|
if (name is not null && name != Name)
|
|
{
|
|
return ValidateOptionsResult.Skip;
|
|
}
|
|
|
|
ArgumentNullException.ThrowIfNull(options);
|
|
|
|
List<ValidationResult> failedValidations = _validators.ValidateAllAsync(options).Result;
|
|
if (failedValidations.Count == 0)
|
|
{
|
|
return ValidateOptionsResult.Success;
|
|
}
|
|
|
|
return ValidateOptionsResult.Fail(failedValidations.SelectMany(x => x.Errors.Select(x => x.ErrorMessage)));
|
|
}
|
|
} |