using System.Web.Http;
using System.Web.Http.Cors;
using CncWebApi.Filters;
using CncWebApi.Infrastructure;
using Newtonsoft.Json.Serialization;

namespace CncWebApi.App_Start
{
    /// <summary>
    /// Web API 路由和过滤器配置
    /// 在 Global.asax Application_Start 中调用
    /// </summary>
    public static class WebApiConfig
    {
        /// <summary>
        /// 注册Web API配置
        /// </summary>
        /// <param name="config">HTTP配置对象</param>
        public static void Register(HttpConfiguration config)
        {
            // 依赖注入解析器
            config.DependencyResolver = new ServiceResolver();

            // 跨域配置（局域网场景，允许所有来源）
            config.EnableCors(new EnableCorsAttribute("*", "*", "*"));

            // 路由注册
            config.MapHttpAttributeRoutes();

            // 全局异常过滤器
            config.Filters.Add(new GlobalExceptionFilter());

            // 统一JSON序列化设置：camelCase输出（Code→code, Message→message, Data→data）
            config.Formatters.JsonFormatter.SerializerSettings.ContractResolver =
                new CamelCasePropertyNamesContractResolver();
            config.Formatters.JsonFormatter.SerializerSettings.NullValueHandling =
                Newtonsoft.Json.NullValueHandling.Ignore;
            config.Formatters.JsonFormatter.SerializerSettings.DateFormatString =
                "yyyy-MM-dd HH:mm:ss";
            // 移除XML格式器，统一使用JSON
            config.Formatters.Remove(config.Formatters.XmlFormatter);
        }
    }
}
