public void OnException(ExceptionContext context)
        {
            this._logger.LogError(new EventId(context.Exception.HResult),
                                  context.Exception,
                                  context.Exception.Message);

            if (context.Exception.GetType() == typeof(BasketDomainException))
            {
                var error = new JosnErrorResponse()
                {
                    Messages = new[] { context.Exception.Message }
                };

                context.Result = new BadRequestObjectResult(error);
                context.HttpContext.Response.StatusCode = StatusCodes.Status400BadRequest;
            }
            else
            {
                var error = new JosnErrorResponse()
                {
                    Messages = new[] { context.Exception.Message }
                };

                if (this._env.IsDevelopment())
                {
                    error.DeveloperMessage = context.Exception;
                }

                context.Result = new InnerServerErrorObjectResult(error);
                context.HttpContext.Response.StatusCode = StatusCodes.Status500InternalServerError;
            }

            context.ExceptionHandled = true;
        }
        public override void OnActionExecuting(ActionExecutingContext context)
        {
            if (context.ModelState.IsValid)
            {
                return;
            }

            var validatedErrors = context.ModelState
                                  .Keys
                                  .SelectMany(key => context.ModelState[key].Errors)
                                  .Select(m => m.ErrorMessage);

            var error = new JosnErrorResponse()
            {
                Messages = validatedErrors.ToArray()
            };

            context.Result = new BadRequestObjectResult(error);
        }