using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums.PF;
using APT.Infrastructure.Core;
using APT.MS.Domain.Enums;
using System;
using System.Collections.Generic;
using System.ComponentModel;
namespace APT.MS.Domain.Entities.SE
{
    /// <summary>
    /// 年度培训计划
    /// </summary>
    [Description("年度培训计划")]
    public class T_SE_TRAIN_PLAN : MesEntityBase
    {
        /// <summary>
        /// 计划年度
        /// </summary>
        [Description("计划年度")]
        public Guid? PLAN_ID { get; set; }

        /// <summary>
        /// 计划类型
        /// </summary>
        [Description("计划类型")]
        [EnumName("PlanType")]
        [FormFieldTable]
        [FormFieldQuery]
        public PlanType TYPE { get; set; }

        /// <summary>
        /// 计划年度
        /// </summary>
        [Description("计划年度")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        public int YEAR { get; set; }

        /// <summary>
        /// 发起时间
        /// </summary>
        [Description("发起时间")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        public DateTime LAUNCH_TIME { get; set; }

        /// <summary>
        /// 发起时间
        /// </summary>
        [Description("截止时间")]
        [FormFieldTable]
        [FormFieldQuery]
        public DateTime? END_TIME { get; set; }

        /// <summary>
        /// 发起部门ID
        /// </summary>
        [Description("发起部门")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        [DataFieldForeignKey("Nav_Department")]
        public Guid? DEPARTMENT_ID { get; set; }
        /// <summary>
        /// 导航: 发起部门
        /// </summary>
        [Description("导航: 发起部门")]
        public T_FM_DEPARTMENT Nav_Department { get; set; }

        /// <summary>
        /// 发起人员ID
        /// </summary>
        [Description("发起人员")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        [DataFieldForeignKey("Nav_User")]
        public Guid? LAUNCH_USER_ID { get; set; }
        /// <summary>
        /// 导航: 发起人员
        /// </summary>
        [Description("导航: 发起人员")]
        public T_FM_USER Nav_User { get; set; }

        /// <summary>
        /// 计划名称
        /// </summary>
        [Description("计划名称")]
        [DataFieldLength(200)]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        public string PLAN_NAME { get; set; }

        /// <summary>
        /// 指导原则
        /// </summary>
        [Description("指导原则")]
        [DataFieldLength(500)]
        [FormFieldEdit]
        public string GUIDE_PRINCIPLE { get; set; }

        /// <summary>
        /// 培训要求
        /// </summary>
        [Description("培训要求")]
        [DataFieldLength(500)]
        [FormFieldEdit]
        public string TRAIN_REQUIREMENT { get; set; }

        /// <summary>
        /// 导航: 年度培训计划详情
        /// </summary>
        [Description("导航: 年度培训计划详情")]
        [FormFieldEdit]
        public ICollection<T_SE_TRAIN_PLAN_DETAIL> Nav_ListPlanDetail { get; set; }

        /// <summary>
        /// 导航属性：附件
        /// </summary>
        [Description("导航属性：附件")]
        public ICollection<T_SE_TRAIN_PLAN_FILE> Nav_Files { get; set; }

        /// <summary>
        /// 完成比例 50% => 50
        /// </summary>
        [Description("完成比例")]
        [FormFieldTable]
        public decimal? PERSENT { get; set; }

        /// <summary>
        /// 状态
        /// </summary>
        [Description("状态")]
        [EnumName("PFStandardStatus")]
        [FormFieldTable]
        [FormFieldQuery]
        public PFStandardStatus STATUS { get; set; }

        /// <summary>
        /// 审批信息
        /// </summary>
        [Description("审批信息")]
        [DataFieldIngore]
        public BaseData.Domain.Entities.T_PF_APPROVE Nav_Approve { get; set; }
    }
}