using System.Net; using Microsoft.AspNetCore.Mvc; namespace HopFrame.Api.Logic; public class LogicResult : ILogicResult { public HttpStatusCode State { get; set; } public string Message { get; set; } public bool IsSuccessful => State == HttpStatusCode.OK; public static LogicResult Ok() { return new LogicResult() { State = HttpStatusCode.OK }; } public static LogicResult BadRequest() { return new LogicResult() { State = HttpStatusCode.BadRequest }; } public static LogicResult BadRequest(string message) { return new LogicResult() { State = HttpStatusCode.BadRequest, Message = message }; } public static LogicResult Forbidden() { return new LogicResult() { State = HttpStatusCode.Forbidden }; } public static LogicResult Forbidden(string message) { return new LogicResult() { State = HttpStatusCode.Forbidden, Message = message }; } public static LogicResult NotFound() { return new LogicResult() { State = HttpStatusCode.NotFound }; } public static LogicResult NotFound(string message) { return new LogicResult() { State = HttpStatusCode.NotFound, Message = message }; } public static LogicResult Conflict() { return new LogicResult() { State = HttpStatusCode.Conflict }; } public static LogicResult Conflict(string message) { return new LogicResult() { State = HttpStatusCode.Conflict, Message = message }; } public static LogicResult Forward(LogicResult result) { return new LogicResult() { State = result.State, Message = result.Message }; } public static LogicResult Forward(ILogicResult result) { return new LogicResult() { State = result.State, Message = result.Message }; } public static implicit operator ActionResult(LogicResult v) { if (v.State == HttpStatusCode.OK) return new OkResult(); return new ObjectResult(v.Message) { StatusCode = (int)v.State }; } } public class LogicResult : ILogicResult { public HttpStatusCode State { get; set; } public T Data { get; set; } public string Message { get; set; } public bool IsSuccessful => State == HttpStatusCode.OK; public static LogicResult Ok() { return new LogicResult() { State = HttpStatusCode.OK }; } public static LogicResult Ok(T result) { return new LogicResult() { State = HttpStatusCode.OK, Data = result }; } public static LogicResult BadRequest() { return new LogicResult() { State = HttpStatusCode.BadRequest }; } public static LogicResult BadRequest(string message) { return new LogicResult() { State = HttpStatusCode.BadRequest, Message = message }; } public static LogicResult Forbidden() { return new LogicResult() { State = HttpStatusCode.Forbidden }; } public static LogicResult Forbidden(string message) { return new LogicResult() { State = HttpStatusCode.Forbidden, Message = message }; } public static LogicResult NotFound() { return new LogicResult() { State = HttpStatusCode.NotFound }; } public static LogicResult NotFound(string message) { return new LogicResult() { State = HttpStatusCode.NotFound, Message = message }; } public static LogicResult Conflict() { return new LogicResult() { State = HttpStatusCode.Conflict }; } public static LogicResult Conflict(string message) { return new LogicResult() { State = HttpStatusCode.Conflict, Message = message }; } public static LogicResult Forward(ILogicResult result) { return new LogicResult() { State = result.State, Message = result.Message }; } public static LogicResult Forward(ILogicResult result) { return new LogicResult() { State = result.State, Message = result.Message }; } public static implicit operator ActionResult(LogicResult v) { if (v.State == HttpStatusCode.OK) return new OkObjectResult(v.Data); return new ObjectResult(v.Message) { StatusCode = (int)v.State }; } }