public Task ExecuteResultAsync(ActionContext context)
        {
            var errors = context.ModelState
                         .Where(x => x.Value.Errors.Count > 0)
                         .ToDictionary(
                kvp => kvp.Key,
                kvp => kvp.Value.Errors.Select(e => e.ErrorMessage).ToArray()
                );

            var problemDetails = new ValidationErrorViewModel
            {
                Status           = 400,
                Title            = "Request Validation Error",
                StackTrace       = "See ValidationErrors for details",
                ValidationErrors = errors
            };

            context.HttpContext.Response.StatusCode = 400;
            context.HttpContext.Response.WriteAsync(JsonConvert.SerializeObject(problemDetails));
            return(Task.CompletedTask);
        }
        private static ValidationErrorViewModel ConstructValidationError(string message)
        {
            var validationError = new ValidationErrorViewModel();

            if (!string.IsNullOrEmpty(message) && message.Contains("@"))
            {
                string[] errorParts = message.Split('@');
                int      code       = 0;

                if (errorParts.Length == 3)
                {
                    Int32.TryParse(errorParts[0] ?? "0", out code);
                    if (code == 1)
                    {
                        return(null);
                    }
                    validationError.Code   = code;
                    validationError.Reason = errorParts[1] ?? string.Empty;
                    validationError.Skus   = new List <SkuErrorModel> {
                        new SkuErrorModel {
                            Sku = errorParts[2] ?? string.Empty, MaxQuantity = 0
                        }
                    };
                    return(validationError);
                }
                if (errorParts.Length == 2)
                {
                    validationError.Code   = 10416;
                    validationError.Reason = errorParts[0] ?? string.Empty;
                    validationError.Skus   = null;
                    return(validationError);
                }
            }
            validationError.Code   = 10416;
            validationError.Reason = "Quote Failed";
            validationError.Skus   = null;
            return(validationError);
        }