public async Task <ValidatedResult <TResponse> > PublishAsync <TResponse>(IAsyncNotification asynchNotifcation)
        {
            using (LoggerContext.DecorateWithUser())
            {
                _logger.Debug("Publish {@validationResult} for {User}", asynchNotifcation);
            }

            var validationSummary = _requestValidator.Validate(asynchNotifcation);
            var validationResult  = new ValidatedResult <TResponse> {
                ValidationSummary = validationSummary
            };

            if (validationSummary.IsValid)
            {
                await _mediator.PublishAsync(asynchNotifcation);
            }

            return(await Task.FromResult(validationResult));
        }
        private ValidatedResult <TResponse> GetValidatedResult <TResponse>(IRequest <TResponse> request, ValidationSummary validationSummary)
        {
            var validationResult = new ValidatedResult <TResponse> {
                ValidationSummary = validationSummary
            };

            if (validationSummary.IsValid)
            {
                var response = GetResult(request);
                validationResult.Result = response;
            }

            using (LoggerContext.DecorateWithUser())
            {
                _logger.Debug("Response {@validationResult} for {User}", request);
            }


            return(validationResult);
        }