using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;

#nullable disable

namespace AMESCoreStudio.WebApi.Models.AMES
{
    /// <summary>
    /// 工時收集資料檔
    /// </summary>
    [Table("WORKING_HOURS_COLLECTION", Schema = "JHAMES")]
    [DataContract]

    public partial class WorkingHoursCollection
    {
        /// <summary>
        /// 工時收集ID
        /// </summary>
        [Key]
        [Column("TIMESHEET_ID")]
        [Required(ErrorMessage = "{0},不能空白")]
        [DataMember]
        public int TimeSheetID { get; set; }

        /// <summary>
        /// 生產單位
        /// </summary>
        [Column("UNIT_NO")]
        [StringLength(20)]
        [Display(Name = "生產單位")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        public string UnitNo { get; set; }

        /// <summary>
        /// 線別ID
        /// </summary>
        [DataMember]
        [Column("LINE_ID")]
        [Display(Name = "線別")]
        [Required(ErrorMessage = "{0},不能空白")]
        public int LineID { get; set; }

        /// <summary>
        /// 站別
        /// </summary>
        [DataMember]
        [Column("STATION_ID")]
        [Display(Name = "站別")]
        [Required(ErrorMessage = "{0},不能空白")]
        public int StationID { get; set; }

        /// <summary>
        /// 板面
        /// </summary>
        [Column("SIDE")]
        [StringLength(6)]
        [DataMember]
        [Display(Name = "板面")]
        public string Side { get; set; }

        /// <summary>
        /// 工單號碼
        /// </summary>
        [Column("WIP_NO")]
        [StringLength(30)]
        [DataMember]
        [Display(Name = "工單號碼")]
        public string WipNo { get; set; }

        /// <summary>
        /// 料號 or 工程編號
        /// </summary>
        [Column("ITEM_NO")]
        [StringLength(40)]
        [DataMember]
        [Display(Name = "工程編號")]
        [Required(ErrorMessage = "{0},不能空白")]
        public string ItemNo { get; set; }

        /// <summary>
        /// 作業人數
        /// </summary>
        [DataMember]
        [Display(Name = "作業人數")]
        [Column("OP_CNT")]
        [Required(ErrorMessage = "{0},不能空白")]
        public int OPCNT { get; set; } = 1;

        /// <summary>
        /// 開工時間
        /// </summary>
        [Column("OPEN_TIME")]
        [DataMember]
        [Display(Name = "開工時間")]
        [Required(ErrorMessage = "{0},不能空白")]
        public DateTime OpenTime { get; set; } = System.DateTime.Now;

        /// <summary>
        /// 班別
        /// </summary>
        [Column("CLASS_ID")]
        [DataMember]
        [Display(Name = "班別")]
        public int ClassID { get; set; }

        /// <summary>
        /// 完工時間
        /// </summary>
        [Column("CLOSE_TIME")]
        [DataMember]
        [Display(Name = "完工時間")]
        public DateTime? CloseTime { get; set; }

        /// <summary>
        /// 扣除無工作時間
        /// </summary>
        [Column("DEDUCTION_TIME")]
        [DataMember]
        [Display(Name = "扣除無工作時間")]
        public int? DeductionTime { get; set; }

        /// <summary>
        /// 組合機種數量
        /// </summary>
        [Column("MULTIPLE_COUNT")]
        [DataMember]
        [Display(Name = "組合機種數量")]
        public int? MultipleCount { get; set; }

        /// <summary>
        /// 生產數量
        /// </summary>
        [Column("PRODUCTION_QTY")]
        [DataMember]
        [Display(Name = "生產數量")]
        public int? ProductionQty { get; set; }

        /// <summary>
        /// CT
        /// </summary>
        [Column("TOTAL_CT")]
        [DataMember]
        [Display(Name = "CT")]
        public double? TotalCT { get; set; }

        /// <summary>
        /// 起始Sensor ID
        /// </summary>
        [Column("INPUT_SENSOR_ID")]
        [StringLength(16)]
        [DataMember]
        [Display(Name = "資料採集器(投入站)")]
        public string InputSensorID { get; set; }

        /// <summary>
        /// 結止Sensor
        /// </summary>
        [Column("OUTPUT_SENSOR_ID")]
        [StringLength(16)]
        [DataMember]
        [Display(Name = "資料採集器(產出站)")]
        public string OutputSensorID { get; set; }

        /// <summary>
        /// 備註
        /// </summary>
        [Column("MEMO")]
        [StringLength(200)]
        [DataMember]
        [Display(Name = "備註")]
        public string Memo { get; set; }

        /// <summary>
        /// 創建者ID
        /// </summary>
        [Column("CREATE_USERID")]
        [DataMember]
        public int CreateUserID { get; set; } = 0;

        /// <summary>
        /// 創建日期
        /// </summary>
        [Column("CREATE_DATE")]
        [DataMember]
        public DateTime CreateDate { get; set; } = System.DateTime.Now;

        /// <summary>
        /// 更新者ID
        /// </summary>
        [Column("UPDATE_USERID")]
        [DataMember]
        public int UpdateUserID { get; set; } = 0;

        /// <summary>
        /// 更新日期
        /// </summary>
        [Column("UPDATE_DATE", TypeName = "DATE")]
        [DataMember]
        public DateTime UpdateDate { get; set; } = System.DateTime.Now;


        /// <summary>
        /// 工單機種資料
        /// </summary>
        [ForeignKey("UnitNo")]
        public virtual AMESCoreStudio.WebApi.Models.BAS.FactoryUnit Unit { get; set; }

        /// <summary>
        /// 工單機種資料
        /// </summary>
        [ForeignKey("LineID")]
        public virtual AMESCoreStudio.WebApi.Models.BAS.LineInfo Line { get; set; }

        /// <summary>
        /// 料號StationID主檔
        /// </summary>
        [ForeignKey("StationID")]
        public virtual AMESCoreStudio.WebApi.Models.AMES.StationWorkingHour Station { get; set; }

        /// <summary>
        /// PE工程師姓名 Engineer
        /// </summary>
        //[NotMapped]
        //public string Engineer_Name { get; set; }
    }
}