Ejemplo n.º 1
0
        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)))
                       ));
        }
Ejemplo n.º 2
0
        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);
        }