using APT.BaseData.Domain.Entities.FM;
using APT.Infrastructure.Core;
using APT.MS.Domain.Entities.OG;
using APT.MS.Domain.Enums;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace APT.MS.Domain.Entities.OG
{
    /// <summary>
    /// 外部联系沟通记录
    /// </summary>
    [Description("外部联系沟通记录")]
    public class T_OG_EXTERNAL_CONTACT_COMMUNICATE : MesEntityBase
    {
        /// <summary>
        /// 日期
        /// </summary>
        [Description("日期")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public DateTime? START_TIME { get; set; }

        /// <summary>
        /// 责任部门ID
        /// </summary>
        [Description("责任部门")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        [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]
        [FormFieldQuery]
        [FormFieldEdit]
        [DataFieldForeignKey("Nav_User")]
        public Guid? USER_ID { get; set; }

        /// <summary>
        /// 导航: 沟通人员
        /// </summary>
        [Description("导航: 沟通人员")]
        public T_FM_USER Nav_User { get; set; }

        /// <summary>
        /// 外部单位ID
        /// </summary>
        [Description("外部单位")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        [DataFieldForeignKey("Nav_ExternalContactDetail")]
        public Guid? EXTERNAL_COMPANY_ID { get; set; }

        /// <summary>
        /// 导航: 外部单位
        /// </summary>
        [Description("导航: 外部单位")]
        public T_OG_EXTERNAL_CONTACT_DETAIL Nav_ExternalContactDetail { get; set; }

        /// <summary>
        /// 外部单位沟通人
        /// </summary>
        [Description("外部单位沟通人")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        [DataFieldLength(50)]
        public string EXTERNAL_COMMUNICATE_PERSON { get; set; }

        /// <summary>
        /// 沟通目的
        /// </summary>
        [Description("沟通目的")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public string COMMUNICATE_PURPOSE { get; set; }

        /// <summary>
        /// 沟通事项名称
        /// </summary>
        [Description("沟通事项名称")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public string COMMUNICATE_NAME { get; set; }

        /// <summary>
        /// 沟通事项描述
        /// </summary>
        [Description("沟通事项描述")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public string COMMUNICATE_DES { get; set; }

        /// <summary>
        /// 导航属性：沟通事项文件
        /// </summary>
        [Description("导航属性：沟通事项文件")]
        public ICollection<T_OG_EXTERNAL_CONTACT_COMMUNICATE_FILE> Nav_FileList { get; set; }

        /// <summary>
        /// 落实部门ID
        /// </summary>
        [Description("落实部门")]
        [FormFieldTable]
        [FormFieldQuery]
        [DataFieldForeignKey("Nav_DoDepartment")]
        public Guid? DO_DEPARTMENT_ID { get; set; }

        /// <summary>
        /// 导航: 落实部门
        /// </summary>
        [Description("导航: 落实部门")]
        public T_FM_DEPARTMENT Nav_DoDepartment { get; set; }

        /// <summary>
        /// 落实人员ID
        /// </summary>
        [Description("落实人员")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        [DataFieldForeignKey("Nav_DoUser")]
        public Guid? DO_USER_ID { get; set; }

        /// <summary>
        /// 导航: 落实人员
        /// </summary>
        [Description("导航: 落实人员")]
        public T_FM_USER Nav_DoUser { get; set; }

        /// <summary>
        /// 落实情况描述
        /// </summary>
        [Description("落实情况描述")]
        [FormFieldTable]
        [FormFieldQuery]
        [FormFieldEdit]
        public string IMPLEMENT_DESCRIPTION { get; set; }

        /// <summary>
        /// 导航属性：落实文件附件
        /// </summary>
        [Description("导航属性：落实文件附件")]
        public ICollection<T_OG_EXTERNAL_CONTACT_COMMUNICATE_IMPL_FILE> Nav_ImpFileList { get; set; }

        /// <summary>
        /// 状态
        /// </summary>
        [Description("状态")]
        [EnumName("OGInnerContactStatus")]
        [FormFieldTable]
        [FormFieldQuery]
        public OGInnerContactStatus STATUS { get; set; }
        [Description("是否发布")]
        [DataFieldIngore]
        public string PUBLISH { get; set; }
        [DataFieldIngore]
        public int IS_OVERTIME { get; set; }
    }
}
