public async Task Consume(ConsumeContext <IUserDeliveriesRequested> context) { try { var message = context.Message; var query = this._mapper.Map <UserDeliveriesRequestedQuery>(message); using (var scope = this._serviceScopeFactory.CreateScope()) { var mediator = scope.ServiceProvider.GetRequiredService <IMediator>(); var response = await mediator.Send(query); await context.RespondAsync(response); } } catch (ValidationsException e) { var errors = e.Errors.Aggregate((curr, next) => $"{curr}; {next}"); var internalErrorResponseDto = new InternalErrorResponseDto { Message = "Please correct the validations errors and try again", Details = errors, Type = InternalErrorResponseTypeEnum.Validation }; await context.RespondAsync <InternalErrorResponseDto>(internalErrorResponseDto); // log ex this._logger.LogError(e, errors); } catch (Exception e) { var internalErrorResponseDto = new InternalErrorResponseDto { Message = $"Something went wrong in {nameof(UserDeliveriesRequestedConsumer)}", Details = "An error occured", Type = InternalErrorResponseTypeEnum.Error }; await context.RespondAsync <InternalErrorResponseDto>(internalErrorResponseDto); this._logger.LogError(e, $"Something went wrong in {nameof(UserDeliveriesRequestedConsumer)}"); } }
public HttpResponseException(InternalErrorResponseDto internalResponseDto) { this.ExceptionDto = internalResponseDto; }