using APT.BaseData.Domain.Entities;
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.SC
{
    [Description("会议通知")]
    [DataRuleField("DEPARTMENT_ID")]
    public class T_SC_MT_MEETING : MesEntityBase
    {

        /// <summary>
        /// 通知编号
        /// </summary>
        [Description("通知编号")]
        [FormFieldTable]
        [FormFieldQuery]
        [DataFieldLength(50)]
        [FormFieldEdit]
        public string CODE { get; set; }

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

        /// <summary>
        /// 会议类型
        /// </summary>
        [Description("会议类型")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public SCMEETINGTYPE MEETINGTYPE { get; set; }

        /// <summary>
        /// 会议类型
        /// </summary>
        [Description("会议类型")]
        [DataFieldIngore]
        public string MEETINGTYPESHOW { get; set; }

        /// <summary>
        /// 会议纪要
        /// </summary>
        [Description("导航属性：会议纪要")]
        public virtual T_SC_MT_MEETING_MINUTES Nav_Minutes { get; set; }

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

        /// <summary>
        /// 导航属性：发起部门
        /// </summary>
        [Description("导航属性：发起部门")]
        public virtual T_FM_DEPARTMENT Nav_Department { get; set; }

        /// <summary>
        /// 发起人
        /// </summary>
        [Description("发起人")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        [DataFieldForeignKey("Nav_User_Originator")]
        public Guid USER_ID_ORIGINATOR { get; set; }

        /// <summary>
        /// 导航属性：发起人
        /// </summary>
        [Description("导航属性：发起人")]
        public virtual T_FM_USER Nav_User_Originator { get; set; }


        /// <summary>
        /// 会议主题
        /// </summary>
        [Description("会议主题")]
        [FormFieldTable]
        [FormFieldQuery]
        [DataFieldLength(500)]
        [FormFieldEdit]
        public string THEME { get; set; }


        /// <summary>
        /// 会议主题 中转 目标保存到 THEME 业务直接读取 THEME
        /// </summary>
        [Description("导航属性：会议主题")]
        public ICollection<T_SC_MT_MEETING_THEMES> Nav_ListThemes { get; set; }

        /// <summary>
        /// 会议时间
        /// </summary>
        [Description("会议时间")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public DateTime? BEGIN_TIME { get; set; }

        /// <summary>
        /// 会议地点
        /// </summary>
        [Description("会议地点")]
        [FormFieldTable]
        [FormFieldQuery]
        [DataFieldLength(200)]
        [FormFieldEdit]
        public string ADDRESS { get; set; }


        /// <summary>
        /// 主持人
        /// </summary>
        [Description("主持人")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        [DataFieldForeignKey("Nav_UserHost")]
        public Guid? USER_ID_HOST { get; set; }

        /// <summary>
        /// 导航属性：主持人
        /// </summary>
        [Description("导航属性：主持人")]
        public virtual T_FM_USER Nav_UserHost { get; set; }

        /// <summary>
        /// 记录人
        /// </summary>
        [Description("记录人")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        [DataFieldForeignKey("Nav_UserRecorder")]
        public Guid? USER_ID_RECORDER { get; set; }

        /// <summary>
        /// 导航属性：记录人
        /// </summary>
        [Description("导航属性：记录人")]
        public virtual T_FM_USER Nav_UserRecorder { get; set; }

        /// <summary>
        /// 会议内容(本质 Nav_ListMeetingContentNAME)
        /// </summary>
        [Description("导航属性：会议内容")]
        public ICollection<T_SC_MT_MEETING_CONTENT> Nav_ListMeetingContent { get; set; }

        /// <summary>
        /// 会议内容
        /// </summary>
        [Description("会议内容")]
        [FormFieldTable]
        [DataFieldLength(2000)]
        [FormFieldEdit]
        public string CONTENT { get; set; }


        /// <summary>
        /// 导航属性：参会人员（会议所有人员）
        /// </summary>
        [Description("导航属性：会议所有人员")]
        [FormFieldEdit]
        public ICollection<T_SC_MT_MEETING_PALL> Nav_ListPAll { get; set; }

        /// <summary>
        /// 导航属性：评审人员
        /// </summary>
        [Description("导航属性：评审人员")]
        [FormFieldEdit]
        public ICollection<T_SC_MT_MEETING_PREVIEW> Nav_ListPReView { get; set; }

        /// <summary>
        /// 导航：会议附件表
        /// </summary>
        [Description("导航：会议附件表")]
        public virtual List<T_SC_MT_MEETING_FILE> Nav_Files { get; set; }

        /// <summary>
        /// 导航：加盖公章的会议通知
        /// </summary>
        [Description("导航：加盖公章的会议通知")]
        public virtual List<T_SC_MT_MEETING_FILE_OFFICIALSEAL> Nav_FilesOfficialseal { get; set; }

        /// <summary>
        /// 导航：会议记录附件
        /// </summary>
        [Description("导航：会议记录附件")]
        public virtual List<T_SC_MT_MEETING_FILE_RECORD> Nav_FilesRecord { get; set; }


        /// <summary>
        /// 会议记录
        /// </summary>
        [Description("会议记录")]
        [FormFieldTable]
        [DataFieldLength(2000)]
        [FormFieldEdit]
        public string RECORD { get; set; }

        /// <summary>
        /// 会议发起状态
        /// </summary>
        [Description("会议发起状态")]
        [FormFieldQuery]
        public PFStandardStatus STATUS { get; set; }
        /// <summary>
        /// 会议发起状态
        /// </summary>
        [Description("会议发起状态")]
        [DataFieldIngore]
        public string STATUSSHOW { get; set; }

        /// <summary>
        /// 会议发起审批流
        /// </summary>
        [Description("会议发起审批流")]
        [DataFieldForeignKey("Nav_Approve")]
        public Guid? APPROVE_ID { get; set; }

        /// <summary>
        /// 会议发起审批流
        /// </summary>
        [Description("会议发起审批流")]
        public T_PF_APPROVE Nav_Approve { get; set; }


        /// <summary>
        /// 得分
        /// </summary>
        [Description("得分")]
        public decimal PERSCORE { get; set; }

        /// <summary>
        /// 生成方式
        /// </summary>
        [Description("生成方式")]
        public CREACTTYPEEnum? CREACTTYPE { get; set; }

        [Description("会议召开计划设置ID")]
        public Guid? PLANSET_ID { get; set; }

        /// <summary>
        /// 枚举层级值
        /// </summary>
        [Description("枚举层级值")]
        public int? LEVELVALUE { get; set; }

        /// <summary>
        /// 会议层级(废弃)
        /// </summary>
        [Description("会议层级")]
        [DataFieldForeignKey("Nav_Enums")]
        [FormFieldTable]
        [FormFieldEdit]
        public Guid? CheckLevel_ENUMS_ID { get; set; }

        /// <summary>
        /// 导航：会议层级
        /// </summary>
        [Description("导航：会议层级")]
        public virtual T_FM_ENUMS Nav_Enums { get; set; }

        /// <summary>
        /// 会议是否召开  跑批 会议时间开始  给记录人 发送纪要待办时修改值
        /// </summary>
        [Description("会议是否召开")]
        public bool ISBEGIN { get; set; }

        /// <summary>
        /// 是否取消
        /// </summary>
        [Description("是否取消")]
        public bool ISCANCEL { get; set; }

        [DataFieldIngore]
        public int IS_OVERTIME { get; set; }

        /// <summary>
        /// 是否发送短信（页面信息）
        /// </summary>
        [Description("是否发送短信")]
        public bool IS_SEND { get; set; }

        /// <summary>
        /// 是否已经发送短信（这边改为 false  查看页面可以显示【短信发送】按钮） 
        /// </summary>
        [Description("是否已经发送短信")]
        public bool IS_SENDED { get; set; }

        /// <summary>
        /// 会议内容(普通会议显示再此，为了显示做关联)
        /// </summary>
        [Description("会议内容")]
        [DataFieldIngore]
        public string CONTENT32 { get; set; }
    }
}