using Common.NETCore.Models; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; using System.Net; namespace FASS.Scheduler.Attributes { public class ResultAttribute : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext context) { if (context.Result is StatusCodeResult statusCodeResult) { var responseResult = new ResponseResult(); responseResult.Code = statusCodeResult.StatusCode.ToString(); if (statusCodeResult is OkResult) { responseResult.Success = true; responseResult.Data = Enum.GetName(typeof(HttpStatusCode), (HttpStatusCode)statusCodeResult.StatusCode); } else { responseResult.Success = false; responseResult.Message = Enum.GetName(typeof(HttpStatusCode), (HttpStatusCode)statusCodeResult.StatusCode); } context.Result = new OkObjectResult(responseResult); } else if (context.Result is ObjectResult objectResult) { var responseResult = new ResponseResult(); responseResult.Code = (objectResult?.StatusCode ?? 0).ToString(); if (objectResult is OkObjectResult) { responseResult.Success = true; responseResult.Data = objectResult.Value; } else { responseResult.Success = false; responseResult.Message = objectResult?.Value; } context.Result = new OkObjectResult(responseResult); } } } }