Add validator for InvokeBatchRecActionViewsCommand
Introduced InvokeBatchRecActionViewsCommandValidator using FluentValidation. This validator ensures BatchId is provided and checks asynchronously via MediatR that no results exist for the given BatchId before allowing the command to proceed. Provides a clear validation message if results are already present.
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
using FluentValidation;
|
||||
using MediatR;
|
||||
using ReC.Application.RecActions.Commands;
|
||||
using ReC.Application.Results.Queries;
|
||||
|
||||
namespace ReC.Application.Common.Validations;
|
||||
|
||||
public class InvokeBatchRecActionViewsCommandValidator : AbstractValidator<InvokeBatchRecActionViewsCommand>
|
||||
{
|
||||
public InvokeBatchRecActionViewsCommandValidator(ISender sender)
|
||||
{
|
||||
RuleFor(x => x.References.BatchId)
|
||||
.NotEmpty()
|
||||
.WithMessage("BatchId is required.")
|
||||
.MustAsync(async (batchId, cancel) =>
|
||||
{
|
||||
var any = await sender.Send(new AnyResultViewQuery(BatchId: batchId), cancel);
|
||||
return !any;
|
||||
})
|
||||
.WithMessage(x => $"Cannot invoke rec actions for batch '{x.References.BatchId}' because there are already results associated with it.");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user