using Microsoft.AspNetCore.Mvc;

namespace SiteManagementSystem_SoftwareEngineering_.Model
{
    public class ApiResponse : OkObjectResult
    {
        private ApiResponse(int code, string message, object? data)
            : base(new ResponseModel(code, message, data)) { }

        public static ApiResponse Success(string message = "", object? data = null) =>
            new ApiResponse(200, message, data);
        public static ApiResponse Forbidden(string message = "", object? data = null) =>
            new ApiResponse(403, message, data);
        public static ApiResponse Fail(string message = "", object? data = null) =>
            new ApiResponse(500, message, data);
    }

    file class ResponseModel
    {
        public int Code { get; set; }
        public string Message { get; set; }
        public object? Data { get; set; }

        public ResponseModel(int code, string message, object? data)
        {
            Code = code;
            Message = message;
            Data = data;
        }
    }
}