Files
tnsu-approval-route/backend/src/Tnsu.ApprovalRoute.Api/Common/ResultExtensions.cs
T
2026-07-24 12:27:42 +05:00

34 lines
1.2 KiB
C#

using FluentResults;
using Microsoft.AspNetCore.Mvc;
using Tnsu.ApprovalRoute.Application.Common.Errors;
namespace Tnsu.ApprovalRoute.Api.Common;
public static class ResultExtensions
{
public static IActionResult ToActionResult<T>(this Result<T> result)
{
if (result.IsFailed)
return result.Errors[0].ToActionResult();
var warnings = result.Reasons.OfType<Warning>().Select(w => w.Message).ToList();
return new OkObjectResult(new ApiResponse<T>(result.Value, warnings));
}
public static IActionResult ToActionResult(this Result result)
{
if (result.IsFailed)
return result.Errors[0].ToActionResult();
return new NoContentResult();
}
private static IActionResult ToActionResult(this IError error) => error switch
{
NotFoundError => new NotFoundObjectResult(new ApiError(error.Message)),
ValidationError => new BadRequestObjectResult(new ApiError(error.Message)),
ConflictError => new ConflictObjectResult(new ApiError(error.Message)),
_ => new ObjectResult(new ApiError(error.Message)) { StatusCode = StatusCodes.Status500InternalServerError }
};
}