public async Task <ICommandResponse> HandleAsync(TCommand command) { ICommandResponse retVal; if (IsValidatingCommand(command)) { var originalLogInfo = command.ToLog(); var templateArguments = new List <object> { _commandValidator.GetType().Name }; templateArguments.AddRange(originalLogInfo.LogMessageParameters); _logger.LogDebug(_logTemplate + originalLogInfo.LogMessageTemplate, templateArguments.ToArray(), _commandValidator.GetType().Name); var valResult = await _commandValidator.ValidateAsync(command); _logger.LogDebug("Validation {validationSuccess} for {CommandValidatorName:l}", valResult.IsValid, _commandValidator.GetType().Name); if (valResult.IsValid) { retVal = await InnerCommandHandler.HandleAsync(command); } else { _logger.LogInformation(_validationFailureTemplate, _commandValidator.GetType().Name, valResult.ValidationEntries.Select(e => e.ErrorMessage).ToArray()); retVal = new CommandResponse { Successful = false, ValidationEntries = valResult.ValidationEntries.ToList() }; } } else { retVal = await InnerCommandHandler.HandleAsync(command); } return(retVal); }
public async Task <TResult> HandleAsync(TCommand command) { await _validator.ValidateAsync(command); return(await _decoratedHandler.HandleAsync(command)); }