﻿using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Models.Models.Engineering
{
    public class TBL_Event_Process_Log
    {
        /// <summary>
        /// 自增ID
        /// </summary>
        [Key, Column(TypeName = "int"), Comment("自增长"), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int ID { get; set; }
        /// <summary>
        /// 关联的事务ID
        /// </summary>
        [Column(TypeName = "int"), Comment("关联的事务ID")]
        public int EventID { get; set; }

        /// <summary>
        /// 本条处理前状态类型（1：已提交  2：处理中   3：已处理   4：验证中  5：已关闭）
        /// </summary>
        [Column(TypeName = "int"), Comment("本条处理前状态类型（1：已提交  2：处理中   3：已处理   4：验证中  5：已关闭）")]

        public int BeforeStatus { get; set; }
        /// <summary>
        /// 本条处理后状态类型（1：已提交  2：处理中   3：已处理   4：验证中  5：已关闭）
        /// </summary>
        [Column(TypeName = "int"), Comment("本条处理后状态类型（1：已提交  2：处理中   3：已处理   4：验证中  5：已关闭）")]

        public int AfterStatus { get; set; }
        /// <summary>
        /// 处理类型，根据处理类型事务状态将会自动进行转换.处理类型，根据处理类型事务状态将会自动进行转换
        ///1：提交事务：BeforeStatus = 0，AfterStatus = 1
        ///2：开始处理：BeforeStatus = 1，AfterStatus = 2
        ///3：处理完成：BeforeStatus = 2，AfterStatus = 3
        ///4：正在验证：BeforeStatus = 3，AfterStatus = 4
        ///5：验证通过：BeforeStatus = 4，AfterStatus = 5
        ///6：验证不通过：BeforeStatus = 4，AfterStatus = 1
        ///7：增加评论：BeforeStatus = x，AfterStatus = x ：增加评论信息不会导致事务状态转换
        /// </summary>
        [Column(TypeName = "int"), Comment("处理类型，根据处理类型事务状态将会自动进行转换.处理类型，根据处理类型事务状态将会自动进行转换")]
        public int ProcessType { get; set; }
        /// <summary>
        /// 事务发生时间，精确到秒
        /// </summary>
        [Column(TypeName = "datetime(3)"), Comment("事务发生时间，精确到秒")]
        public DateTime DateTime { get; set; }
        /// <summary>
        /// 提出人
        /// </summary>
        [Column(TypeName = "varchar(50)"), Comment("提出人")]
        public string Handle { get; set; }
        /// <summary>
        /// 备注
        /// </summary>
        [Column(TypeName = "varchar(255)"), Comment("备注")]
        public string Remark { get; set; }
    }
}
