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

namespace AMESCoreStudio.WebApi.Models.AMES
{
    /// <summary>
    /// 條碼變更資料表
    /// </summary>
    [Table("BARCODE_INFO", Schema = "JHAMES")]
    [DataContract]
    public class BarcodeInfo
    {
        /// <summary>
        /// 條碼ID
        /// </summary>
        [Column("BARCODE_ID")]
        [DataMember]
        [Display(Name = "條碼ID")]
        [Key]
        public int BarcodeID { get; set; }

        /// <summary>
        /// 條碼序號
        /// </summary>
        [Column("BARCODE_NO")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "條碼序號")]
        public string BarcodeNo { get; set; }

        /// <summary>
        /// 條碼狀態代碼
        /// </summary>
        [Column("STATUS_NO")]
        [DataMember]
        public string StatusNo { get; set; }

        /// <summary>
        /// 客戶條碼
        /// </summary>
        [Column("EXTRA_BARCODE_NO")]
        [Display(Name = "出貨序號")]
        [DataMember]
        public string ExtraBarcodeNo { get; set; }

        /// <summary>
        /// 存放位置ID
        /// </summary>
        [Column("LOCATION_ID")]
        [DataMember]
        public int LocationID { get; set; }

        /// <summary>
        /// 條碼過站位置
        /// </summary>
        [Column("STATION_ID")]
        [DataMember]
        public int StationID { get; set; }

        /// <summary>
        /// 條碼過站狀態 P:PASS F:不良
        /// </summary>
        [Column("RULE_STATUS")]
        [DataMember]
        public string RuleStatus { get; set; }

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

        /// <summary>
        /// 包装箱號
        /// </summary>
        [Column("BOX_NO")]
        [DataMember]
        public string BoxNo { get; set; }


        /// <summary>
        /// 系统狀態
        /// </summary>
        [Column("SYSTYPE")]
        [DataMember]
        public string SysType { get; set; } = "S";

        /// <summary>
        /// 條碼流程狀態
        /// </summary>
        [Column("STATUS_ID")]
        [DataMember]
        public int StatusID { 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]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "建立時間")]
        public DateTime CreateDate { get; set; } = DateTime.Now;

        /// <summary>
        /// 修改時間
        /// </summary>
        [Column("UPDATE_DATE")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "修改時間")]
        public DateTime UpdateDate { get; set; } = DateTime.Now;

        /// <summary>
        /// 工單資料
        /// </summary>
        [ForeignKey("WipID")]
        [DataMember]
        public virtual WipInfo GetWipInfo { get; set; }

        /// <summary>
        /// 流程站別資料
        /// </summary>
        [ForeignKey("StatusID")]
        [DataMember]
        public virtual Stations GetStation { get; set; }

    }
}