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(this Result result) { if (result.IsFailed) return result.Errors[0].ToActionResult(); return new OkObjectResult(new ApiResponse(result.Value)); } 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 } }; }