public async Task <IActionResult> GetColors() { var colors = await _mediator.Send(new GetColorsQuery()); return(colors.Match( result => OkResponse(colors.LeftOrDefault()), error => BadRequestResponse(string.Empty, OperationOutcome.ValidationFailOutcome(colors.RightOrDefault().Errors.Select(e => e.ErrorMessage))) )); }
public static ApiResponse <BadRequest400Payload> ProcessInvalidModelState(ModelStateDictionary modelState) { var errors = GetErrorsFromModelState(modelState); var payload = new ApiResponse <BadRequest400Payload> { Data = null, Outcome = OperationOutcome.ValidationFailOutcome(errors) }; return(payload); }
public IActionResult BadRequestResponse <T>(T data, string errorMessage = null, dynamic errors = null) { var outcome = OperationOutcome.ValidationFailOutcome(errors, errorMessage); var apiResponse = new ApiResponse <T> { Data = data, Outcome = outcome }; return(BadRequest(apiResponse)); }
public IActionResult InternalServerErrorResponse <T>(T data, string errorMessage = null, dynamic errors = null) { var outcome = OperationOutcome.ValidationFailOutcome(errors, errorMessage); var apiResponse = new ApiResponse <T> { Data = data, Outcome = outcome }; return(this.ServerError(apiResponse)); }
public IActionResult UnprocessableEntityResponse <T>(T data, string errorMessage = null, dynamic errors = null) { var outcome = OperationOutcome.ValidationFailOutcome(errors, errorMessage); var apiResponse = new ApiResponse <T> { Data = data, Outcome = outcome }; return(StatusCode(StatusCodes.Status422UnprocessableEntity, apiResponse)); }
public static IActionResult ToUnprocessableRequestResult(this ValidateableResponse source, string message = null) { var outcome = OperationOutcome.ValidationFailOutcome(source.Errors, message ?? string.Empty); var apiResponse = new ApiResponse <UnprocessableEntityPayload> { Data = null, Outcome = outcome }; return(new ObjectResult(apiResponse) { StatusCode = StatusCodes.Status422UnprocessableEntity }); }
private OperationOutcome GetClientErrorPayload(Origin origin, Exception exception) { var operationOutcome = default(OperationOutcome); switch (origin) { case Origin.ValidationError: operationOutcome = OperationOutcome.ValidationFailOutcome( ((ApiValidationException)exception).Errors, Errors.ValidationFailure ); break; case Origin.Action: case Origin.Unhandled: operationOutcome = OperationOutcome.UnSuccessfulOutcome; operationOutcome.ErrorId = Guid.NewGuid().ToString(); #if DEBUG operationOutcome.Message = string.Format(Errors.UnhandledErrorDebug, exception.GetBaseException().Message); operationOutcome.Errors = exception.StackTrace.Split( Environment.NewLine, StringSplitOptions.RemoveEmptyEntries ).Select(str => str.Trim()); // ease of readability, for debugging purposes 👍 #else operationOutcome.Message = string.Format(Errors.UnhandledError, operationOutcome.ErrorId); #endif break; default: throw new ArgumentOutOfRangeException(nameof(origin), origin, null); } return(operationOutcome); }