d076f4e98d
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/11
33 lines
1.1 KiB
C#
33 lines
1.1 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();
|
|
|
|
return new OkObjectResult(new ApiResponse<T>(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 }
|
|
};
|
|
}
|