28 lines
1.0 KiB
C#
28 lines
1.0 KiB
C#
using TeleWave.Application.Common.Models;
|
|
|
|
namespace TeleWave.Api.Common;
|
|
|
|
public static class ResultExtensions
|
|
{
|
|
public static IResult ToHttpResult(this Result result) =>
|
|
result.IsSuccess ? Results.NoContent() : ToProblem(result.Error);
|
|
|
|
public static IResult ToHttpResult<T>(this Result<T> result) =>
|
|
result.IsSuccess ? Results.Ok(result.Value) : ToProblem(result.Error);
|
|
|
|
public static IResult ToProblem(this Error error)
|
|
{
|
|
var statusCode = error.Type switch
|
|
{
|
|
ErrorType.Validation => StatusCodes.Status400BadRequest,
|
|
ErrorType.Unauthorized => StatusCodes.Status401Unauthorized,
|
|
ErrorType.Forbidden => StatusCodes.Status403Forbidden,
|
|
ErrorType.NotFound => StatusCodes.Status404NotFound,
|
|
ErrorType.Conflict => StatusCodes.Status409Conflict,
|
|
_ => StatusCodes.Status422UnprocessableEntity,
|
|
};
|
|
|
|
return Results.Problem(title: error.Code, detail: error.Message, statusCode: statusCode);
|
|
}
|
|
}
|