using APT.BaseData.Domain.Enums;
using APT.Infrastructure.Core;
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;

namespace APT.BaseData.Domain.Entities.FM
{
    [Description("部门排班表")]
    public class T_FM_DEPARTMENT_SCHEDULING : MesEntityBase
    {
        [Description("节点ID")]

        [DataFieldForeignKey("Nav_DepartMent","Nav_DepartmentScheduling")]
        public Guid DEPARTMENT_ID { get; set; }

        [Description("日历配置ID")]
        [DataFieldForeignKey("Nav_DepartmentCalendarConfig")]
        public Guid? DEPARTMENT_CALENDAR_CONFIG_ID { get; set; }

        [Description("顺序")]
        [FormFieldTable]
        [FormFieldEdit]
        public int NUM { get; set; }

        [Description("排班日期")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        public DateTime DATE_TIME { get; set; }

        [Description("班次ID")]
        [DataFieldForeignKey("Nav_Class")]
        public Guid CLASS_ID { get; set; }

        [Description("班组ID")]
        [DataFieldForeignKey("Nav_Team")]
        public Guid? TEAM_ID { get; set; }

        [Description("是否启用")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        [EnumName("FMEnableStatusEnum")]
        public int ENABLE_STATUS { get; set; }
        [Description("班前是否已触发")]
        [FormFieldTable]
        [FormFieldEdit]
        [FormFieldQuery]
        public Boolean RUN_STATUS { get; set; }
        [Description("岗位当班是否已触发")]
        public Boolean SHIFT_CLASS_RUN_STATUS { get; set; }
        [Description("上班时间")]
        [FormFieldTable]
        [FormFieldEdit]
        public DateTime START_TIME { get; set; }
        [Description("下班时间")]
        [FormFieldTable]
        [FormFieldEdit]
        public DateTime END_TIME { get; set; }

        [Description("导航：部门表")]
        [FormFieldTable]
        [FormFieldEdit]
        public virtual T_FM_DEPARTMENT Nav_DepartMent { get; set; }

        [Description("导航：班次表")]
        [FormFieldTable]
        [FormFieldEdit]
        public virtual T_FM_CLASS Nav_Class { get; set; }

        [Description("导航：班组表")]
        [FormFieldTable]
        [FormFieldEdit]
        public virtual T_FM_TEAM Nav_Team { get; set; }

        [Description("导航：排班信息明细表")]
        [FormFieldTable]
        [FormFieldEdit]
        public virtual ICollection<T_FM_DEPARTMENT_SCHEDULING_DETAIL> Nav_DepartmentSchedulingDetail { get; set; }
        [Description("导航：排班配置表")]
        public virtual T_FM_DEPARTMENT_CALENDAR_CONFIG Nav_DepartmentCalendarConfig { get; set; }

        [Description("是否跑批")]
        [EnumName("FMTureOrFalse")]
        public FMTureOrFalse IS_RUN { get; set; }
    }
}
