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(this Result 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); } }