using APT.BaseData.Domain.Entities.FM;
using APT.BaseData.Domain.Enums.PF;
using APT.Infrastructure.Core;
using APT.MS.Domain.Enums;
using APT.MS.Domain.Enums.SK;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;

namespace APT.MS.Domain.Entities.FO
{
    [Description("企业信息登记表")]
    public class T_FO_ENTERPRISE_INFORMATION_REGISTRATION : MesEntityBase
    {
        [Description("发起人")]
        [DataFieldForeignKey("Nav_ApplyUser")]
        public Guid? APPLY_USER_ID { get; set; }


        [Description("导航属性：发起人")]
        public T_FM_USER Nav_ApplyUser { get; set; }
        [Description("发起部门")]
        [DataFieldForeignKey("Nav_ApplyDepartment")]
        public Guid? APPLY_DEPARTMENT_ID { get; set; }

        [Description("导航属性：发起部门")]
        public T_FM_DEPARTMENT Nav_ApplyDepartment { get; set; }
        [Description("公司名称")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        [DataFieldLength(50)]
        public string COMPANY_NAME { get; set; }

        [Description("统一社会信用代码")]
        [FormFieldEdit]
        [DataFieldLength(50)]
        public string IDENTIFY_CODE { get; set; }
        [Description("法定代表人")]
        [FormFieldEdit]
        [DataFieldLength(50)]
        public string USER_NAME { get; set; }
        [Description("营业开始时间")]
        [FormFieldEdit]
        public DateTime? WORK_DATE { get; set; }

        [Description("营业结束时间")]
        [FormFieldEdit]
        public DateTime? WORK_END_DATE { get; set; }

        [Description("矿山名称")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        [DataFieldLength(50)]
        public string NAME { get; set; }
        [Description("开采矿种")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        [DataFieldLength(50)]
        public string TYPE { get; set; }

        [Description("开采方式")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        [EnumName("FOMethodEnum")]
        public FOMethodEnum? METHOD { get; set; }
        [Description("生产单元")]
        public virtual ICollection<T_FO_ENTERPRISE_INFORMATION_REGISTRATION_UNIT> Nav_ProUnits { get; set; }
        [Description("生产规模（吨/年）")]
        [FormFieldEdit]
        public decimal? MODE { get; set; }
        [Description("矿区面积（平方公里）")]
        [FormFieldEdit]
        public decimal? AREA { get; set; }

        [Description("采矿许可证号")]
        [FormFieldEdit]
        [DataFieldLength(50)]
        public string ALLOW_NO { get; set; }
        [Description("许可证有效开始时间")]
        [FormFieldEdit]
        public DateTime? ALLOW_DATE { get; set; }
        [Description("许可证有效结束时间")]
        [FormFieldEdit]
        public DateTime? ALLOW_END_DATE { get; set; }
        [Description("安全生产许可证号")]
        [FormFieldEdit]
        [DataFieldLength(50)]
        public string SAFE_ALLOW_NO { get; set; }
        [Description("安全生产许可证有效开始时间")]
        [FormFieldEdit]
        public DateTime? SAFE_ALLOW_DATE { get; set; }
        [Description("安全生产许可证有效结束时间")]
        [FormFieldEdit]
        public DateTime? SAFE_ALLOW_END_DATE { get; set; }

        [Description("公司简介")]
        [FormFieldEdit]
        [DataFieldLength(1000)]
        public string COMPANY_DESCRIPTION { get; set; }
        [Description("营业执照附件")]
        [FormFieldEdit]
        public virtual ICollection<T_FO_ENTERPRISE_INFORMATION_REGISTRATION_WORKFILE> Nav_WorkFiles { get; set; }
        [Description("采矿证附件")]
        [FormFieldEdit]
        public virtual ICollection<T_FO_ENTERPRISE_INFORMATION_REGISTRATION_ALLOWFILE> Nav_AllowFiles { get; set; }
        [Description("安全生产许可证附件")]
        [FormFieldEdit]
        public virtual ICollection<T_FO_ENTERPRISE_INFORMATION_REGISTRATION_SAFEFILE> Nav_SafeFiles { get; set; }
        [Description("其他附件")]
        [FormFieldEdit]
        public virtual ICollection<T_FO_ENTERPRISE_INFORMATION_REGISTRATION_FILE> Nav_Files { get; set; }
        [Description("状态")]
        [FormFieldTable]
        [FormFieldQuery]
        [EnumName("PFStandardStatus")]
        public PFStandardStatus STATUS { get; set; }

        [Description("是否发布")]
        [DataFieldIngore]
        public string PUBLISH { get; set; }

        [Description("是否已提醒")]
        public bool IS_SEND { get; set; } = false;
    }
}
