using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Web;

namespace ChangFa.Machinery.WebPage.Models
{
    public class ApiResult
    {
        /// <summary>
        /// 返回码
        /// </summary>
        public ApiStatusCode Code { set; get; } = ApiStatusCode.Success;
        /// <summary>
        /// 返回消息
        /// </summary>
        public string Message { set; get; } = string.Empty;
        /// <summary>
        /// 是否成功
        /// </summary>
        public bool IsSuccess { get { return Code == ApiStatusCode.Success; } }
    }

    /// <summary>
    /// api消息枚举
    /// 统一格式:BB-CCC
    /// B:项目或模块名称,一般公司不会超过99个项目;
    /// C:具体错误编号,自增即可,一个项目999种错误应该够用;
    /// </summary>
    public enum ApiStatusCode
    {
        #region 通用错误码

        [Description("操作成功")]
        Success = 200,

        [Description("创建成功")]
        Created = 201,

        [Description("更新成功")]
        Accepted = 202,

        [Description("请求的地址不存在或者包含不支持的参数")]
        BadRequest = 400,

        [Description("未授权的访问")]
        Unauthorized = 401,

        [Description("被禁止访问")]
        Forbidden = 403,

        [Description("请求的资源不存在")]
        NotFound = 404,

        [Description("服务器内部错误")]
        InternalServerError = 500,

        #endregion 通用错误码

        #region 业务错误码 ---用户相关

        /// <summary>
        /// 无效的密码
        /// </summary>
        [Description("无效的密码")]
        InvalidPassword = 10001,

        /// <summary>
        /// 密码过期
        /// </summary>
        [Description("密码过期")]
        PasswordExpired = 10002,

        /// <summary>
        /// 用户锁定
        /// </summary>
        [Description("用户锁定")]
        UserLockedOut = 10003,

        /// <summary>
        /// 验证码错误
        /// </summary>
        [Description("验证码错误")]
        VerifyError = 10004,
        #endregion 业务错误码 ---用户相关

        #region 业务错误码 ---请求数据

        /// <summary>
        /// 无效的参数
        /// </summary>
        [Description("无效的参数")]
        InvalidParameter = 11001,

        #endregion 业务错误码 ---请求数据

        #region 业务错误码 ---数据库相关
        /// <summary>
        /// 数据库记录不存在
        /// </summary>
        [Description("记录不存在")]
        RecordNotFound = 12001,

        /// <summary>
        /// 记录已经存在
        /// </summary>
        [Description("记录已经存在")]
        RecordAlreadyExist = 12002,

        /// <summary>
        /// 数据库操作错误
        /// </summary>
        [Description("数据库操作错误")]
        DBOperateFail = 12003,

        #endregion 业务错误码 ---数据库相关
    }
}