From 7e29b884408a1bc02ef217bad1c17d4369194cd3 Mon Sep 17 00:00:00 2001 From: Kevin J Lambert Date: Tue, 7 Jun 2022 08:17:38 -0400 Subject: [PATCH] Added support for ValidateAsync --- .../YuckQi.Domain.Services.csproj | 2 +- .../Extensions/AbstractValidatorExtensions.cs | 26 +++++++++++++++---- .../YuckQi.Domain.Validation.csproj | 2 +- src/YuckQi.Domain/YuckQi.Domain.csproj | 2 +- 4 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/YuckQi.Domain.Services/YuckQi.Domain.Services.csproj b/src/YuckQi.Domain.Services/YuckQi.Domain.Services.csproj index f3734d7..d8ec536 100644 --- a/src/YuckQi.Domain.Services/YuckQi.Domain.Services.csproj +++ b/src/YuckQi.Domain.Services/YuckQi.Domain.Services.csproj @@ -4,7 +4,7 @@ netstandard2.0 true Kevin J Lambert - 1.3.0 + 1.3.1 LICENSE A .NET library for bootstrapping a domain services project. diff --git a/src/YuckQi.Domain.Validation/Extensions/AbstractValidatorExtensions.cs b/src/YuckQi.Domain.Validation/Extensions/AbstractValidatorExtensions.cs index 8c4bafa..e4b1c9c 100644 --- a/src/YuckQi.Domain.Validation/Extensions/AbstractValidatorExtensions.cs +++ b/src/YuckQi.Domain.Validation/Extensions/AbstractValidatorExtensions.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Threading.Tasks; using FluentValidation; using FluentValidation.Results; @@ -10,14 +11,29 @@ public static class AbstractValidatorExtensions { public static Result GetResult(this AbstractValidator validator, T item, String failedValidationMessageId) { - var result = validator.Validate(item); - if (result == null) - throw new ArgumentNullException(nameof(result)); + var validationResult = validator.Validate(item); + var result = BuildResult(validationResult, item, failedValidationMessageId); - if (result.IsValid) + return result; + } + + public static async Task> GetResultAsync(this AbstractValidator validator, T item, String failedValidationMessageId) + { + var validationResult = await validator.ValidateAsync(item); + var result = BuildResult(validationResult, item, failedValidationMessageId); + + return result; + } + + private static Result BuildResult(ValidationResult validationResult, T item, String failedValidationMessageId) + { + if (validationResult == null) + throw new ArgumentNullException(nameof(validationResult)); + + if (validationResult.IsValid) return new Result(item); - return new Result(default, GetResultDetail(result, failedValidationMessageId)); + return new Result(default, GetResultDetail(validationResult, failedValidationMessageId)); } private static IReadOnlyCollection GetResultDetail(ValidationResult result, String failedValidationMessageId) diff --git a/src/YuckQi.Domain.Validation/YuckQi.Domain.Validation.csproj b/src/YuckQi.Domain.Validation/YuckQi.Domain.Validation.csproj index f56e229..eea7979 100644 --- a/src/YuckQi.Domain.Validation/YuckQi.Domain.Validation.csproj +++ b/src/YuckQi.Domain.Validation/YuckQi.Domain.Validation.csproj @@ -4,7 +4,7 @@ netstandard2.0 true Kevin J Lambert - 1.3.0 + 1.3.1 LICENSE A .NET library providing domain validation fundamentals. diff --git a/src/YuckQi.Domain/YuckQi.Domain.csproj b/src/YuckQi.Domain/YuckQi.Domain.csproj index 7d9c6a6..90a9c6c 100644 --- a/src/YuckQi.Domain/YuckQi.Domain.csproj +++ b/src/YuckQi.Domain/YuckQi.Domain.csproj @@ -4,7 +4,7 @@ netstandard2.0 true Kevin J Lambert - 1.3.0 + 1.3.1 LICENSE A .NET library for bootstrapping a domain model project.