using System;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Runtime.Serialization;
using AMESCoreStudio.WebApi.Models.BAS;
using AMESCoreStudio.WebApi.Models.SYS;

#nullable disable

namespace AMESCoreStudio.WebApi.Models.AMES
{
    /// <summary>
    /// 條碼過站資料檔
    /// </summary>
    [Table("BARCODE_STATION", Schema = "JHAMES")]
    [DataContract]
    public partial class BarcodeStation
    {
        /// <summary>
        /// 內部條碼ID
        /// </summary>
        [Key]
        [Column("BARCODE_ID")]
        [DataMember]
        [Display(Name = "內部條碼ID")]
        public int BarcodeID { get; set; }

        /// <summary>
        /// 工單ID
        /// </summary>
        [Key]
        [Column("WIP_ID")]
        [DataMember]
        [Display(Name = "工單ID")]
        public int WipID { get; set; }

        /// <summary>
        /// 流程ID
        /// </summary>
        [Key]
        [Column("FLOW_RULE_ID")]
        [DataMember]
        [Display(Name = "流程ID")]
        public int FlowRuleID { get; set; }

        /// <summary>
        /// 流程站別ID
        /// </summary>
        [Key]
        [Column("STATION_ID")]
        [DataMember]
        [Display(Name = "流程站別ID")]
        public int StationID { get; set; }

        /// <summary>
        /// 規則狀態值
        /// </summary>
        [Key]
        [Column("RULE_STATUS")]
        [StringLength(1)]
        [DataMember]
        [Display(Name = "規則狀態值")]
        public string RuleStatus { get; set; }

        /// <summary>
        /// 投入日期
        /// </summary>
        [Key]
        [Column("INPUT_DATE", TypeName = "DATE")]
        [DataMember]
        [Display(Name = "投入日期")]
        public DateTime InputDate { get; set; }

        /// <summary>
        /// 系统狀態
        /// </summary>
        [Required]
        [Column("SYSTYPE")]
        [StringLength(1)]
        [DataMember]
        [Display(Name = "系统狀態")]
        public string Systype { get; set; } = "S";


        /// <summary>
        /// 線别ID
        /// </summary>
        [Column("LINE_ID")]
        [DataMember]
        [Display(Name = "線别ID")]
        public int LineId { get; set; } = -1;

        /// <summary>
        /// 站别的次數
        /// </summary>
        [Column("STATION_FLAG")]
        [DataMember]
        [Display(Name = "站别的次數")]
        public int StationFlag { get; set; } = 1;

        /// <summary>
        /// 過站次數(不限定工單)
        /// </summary>
        [Column("STATION_TIMES")]
        [DataMember]
        [Display(Name = "過站次數")]
        public int StationTimes { get; set; } = 1;

        /// <summary>
        /// 建立者
        /// </summary>
        [Column("CREATE_USERID")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "建立者")]
        public int CreateUserID { get; set; } = 0;

        /// <summary>
        /// 建立時間
        /// </summary>
        [Column("CREATE_DATE")]
        [DataMember]
        [Display(Name = "建立時間")]
        public DateTime CreateDate { get; set; } = DateTime.Now;

        /// <summary>
        /// 工單-基本資料
        /// </summary>
        [ForeignKey("RuleStationID")]
        [DataMember]
        [NotMapped]
        public virtual RuleStation GetRuleStation { get; set; }

        /// <summary>
        /// 建立者姓名
        /// </summary>
        [DataMember]
        [NotMapped]
        public virtual string UserName { get; set; }
    }
}