protected ActionResult ValidationErrors(Result failure) { var newModelState = new ModelStateDictionary(); switch (failure.ErrorType) { case ErrorType.ObjectValidationFailed: newModelState.AddValidationErrors(failure.ObjectValidationErrors); break; case ErrorType.ObjectDoesNotExist: return(ApiNotFoundErrorMessage(Messages.NotFound)); case ErrorType.ConcurrencyConflict: newModelState.AddValidationErrors(failure.ObjectValidationErrors); break; default: //perhaps should be throwing so Startup returns a 500 //throw ex; newModelState.AddModelError("", Messages.UnknownError); break; } return(ValidationErrors(newModelState)); }
protected ActionResult ValidationProblem(Result failure) { var newModelState = new ModelStateDictionary(); switch (failure.ErrorType) { case ErrorType.ValidationFailed: newModelState.AddValidationErrors(failure.Errors); break; case ErrorType.NotFound: return(NotFound()); case ErrorType.ConcurrencyConflict: newModelState.AddValidationErrors(failure.Errors); break; default: throw new Exception(Messages.UnknownError); } return(ValidationProblem(newModelState)); }
public override void Handle(ExceptionHandlerContext context) { if (context.Exception is ValidationFailedException) { var ex = context.Exception as ValidationFailedException; if (context.ExceptionContext.ActionContext != null) { ModelStateDictionary modelState = context.ExceptionContext.ActionContext.ModelState; modelState.AddValidationErrors(ex.ValidationErrors); context.Result = new CustomHttpResult( context.Request, HttpStatusCode.BadRequest, BadRequestResponse.Create(modelState)); } else { context.Result = new CustomHttpResult( context.Request, HttpStatusCode.BadRequest, BadRequestResponse.Create(ex.ValidationErrors)); } } else if (context.Exception is EntityNotFoundException) { context.Result = new CustomHttpResult( context.Request, HttpStatusCode.NotFound, BaseApiResponse.NotFound(context.Request.RequestUri)); } else if (context.Exception is ResourceForbiddenException) { context.Result = new CustomHttpResult( context.Request, HttpStatusCode.Forbidden, BaseApiResponse.Forbidden()); } else { context.Result = new CustomHttpResult( context.Request, context.Exception is SecurityException ? HttpStatusCode.Unauthorized : HttpStatusCode.InternalServerError, BaseApiResponse.InternalServerError(context.Exception.Message)); } }