using Magicodes.ExporterAndImporter.Core;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WIDESEAWCS_Core.DB.Models
{
    public class BaseEntity
    {
        #region 数据状态管理

        /// <summary>
        /// 状态 <br/>
        /// 中立字段,某些表可使用某些表不使用
        /// </summary>
        //public bool Enabled { get; set; } = true;

        /// <summary>
        /// 中立字段,某些表可使用某些表不使用   <br/>
        /// 逻辑上的删除,非物理删除  <br/>
        /// 例如:单据删除并非直接删除
        /// </summary>
        //public bool IsDeleted { get; set; }

        /// <summary>
        /// 中立字段 <br/>
        /// 是否内置数据
        /// </summary>
        //public bool IsInternal { get; set; }

        #endregion

        #region 创建

        /// <summary>
        /// 创建者
        /// </summary>
        [ImporterHeader(IsIgnore = true)]
        [ExporterHeader(DisplayName = "创建者")]
        [SugarColumn(IsNullable = false, IsOnlyIgnoreUpdate = true, ColumnDescription = "创建者")]
        public string Creater { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        [ImporterHeader(IsIgnore = true)]
        [ExporterHeader(DisplayName = "创建时间")]
        [SugarColumn(IsNullable = false, IsOnlyIgnoreUpdate = true, ColumnDescription = "创建时间")]
        public DateTime CreateDate { get; set; } = DateTime.Now;

        #endregion

        #region 修改

        /// <summary>
        /// 更新者
        /// </summary>
        [ImporterHeader(IsIgnore = true)]
        [ExporterHeader(DisplayName = "修改人")]
        [SugarColumn(IsNullable = true, IsOnlyIgnoreInsert = true, ColumnDescription = "修改人")]
        public string Modifier { get; set; }

        /// <summary>
        /// 修改日期
        /// </summary>
        [ImporterHeader(IsIgnore = true)]
        [ExporterHeader(DisplayName = "修改日期")]
        [SugarColumn(IsNullable = true, IsOnlyIgnoreInsert = true, ColumnDescription = "修改日期")]
        public DateTime? ModifyDate { get; set; }

        /// <summary>
        /// 数据版本
        /// </summary>
        //[SugarColumn(DefaultValue = "0", IsEnableUpdateVersionValidation = true)] //标识版本字段
        //public long Version { get; set; }

        #endregion
    }
}