| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- using SharedKernel.Results;
- namespace Web.Api.Common;
- public static class CustomResults
- {
- public static IResult Problem(Result result)
- {
- if (result.IsSuccess)
- {
- throw new InvalidOperationException();
- }
- var statusCode = GetStatusCode(result.Error.Type);
- if (result.Error is ValidationError validationError)
- {
- return ApiResponse.Fail(
- statusCode,
- result.Error.Description,
- validationError.Errors.Select(e => new
- {
- code = e.Code,
- description = e.Description
- })
- );
- }
- return ApiResponse.Fail(statusCode, result.Error.Description);
- }
- private static int GetStatusCode(ErrorType errorType) => errorType switch
- {
- ErrorType.Validation or ErrorType.Problem => StatusCodes.Status400BadRequest,
- ErrorType.Unauthorized => StatusCodes.Status401Unauthorized,
- ErrorType.NotFound => StatusCodes.Status404NotFound,
- ErrorType.Forbidden => StatusCodes.Status403Forbidden,
- ErrorType.Conflict => StatusCodes.Status409Conflict,
- ErrorType.MethodNotAllowed => StatusCodes.Status405MethodNotAllowed,
- _ => StatusCodes.Status500InternalServerError
- };
- }
|