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

namespace AMESCoreStudio.WebApi.Models.AMES
{
    /// <summary>
    /// 條碼鎖定資料表
    /// </summary>
    [Table("BARCODE_LOCK", Schema = "JHAMES")]
    [DataContract]
    public class BarcodeLock
    {
        /// <summary>
        /// 條鎖定ID
        /// </summary>
        [Key]
        [Column("BARCODE_LOCK_ID")]
        [DataMember]
        [Display(Name = "條鎖定ID")]

        public int BarcodeLockID { get; set; }
        /// <summary>
        /// 條碼ID
        /// </summary>
        [Column("BARCODE_ID")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "條碼ID")]
        public int BarcodeID { get; set; }

        /// <summary>
        /// 工單ID
        /// </summary>
        [Column("WIP_ID")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "工單ID")]
        public int WipID { get; set; }

        /// <summary>
        /// 條碼流程狀態
        /// </summary>
        [Column("STATUS_ID")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "條碼流程狀態")]
        public int StatusID { get; set; }

        /// <summary>
        /// 鎖定原因
        /// </summary>
        [Column("LOCK_REASON")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "鎖定原因")]
        public string LockReason { get; set; }

        /// <summary>
        /// 解鎖原因
        /// </summary>
        [Column("UNLOCK_REASON")]
        [DataMember]
        [Display(Name = "解鎖原因")]
        public string UnLockReason { get; set; }

        /// <summary>
        /// 條碼鎖定狀態(0-鎖定; 1-解鎖)
        /// </summary>
        [Column("LOCK_STATUS")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "條碼鎖定狀態")]
        public int LockStatus { get; set; } = 0;

        /// <summary>
        /// 鎖定者
        /// </summary>
        [Column("LOCK_USERID")]
        [DataMember]
        public int LockUserID { get; set; }

        /// <summary>
        /// 鎖定時間
        /// </summary>
        [Column("LOCK_DATE")]
        [DataMember]
        public DateTime LockDate { get; set; } = DateTime.Now;

        /// <summary>
        /// 解鎖者
        /// </summary>
        [Column("UNLOCK_USERID")]
        [DataMember]

        public int? UnLockUserID { get; set; } 

        /// <summary>
        /// 解鎖時間
        /// </summary>
        [Column("UNLOCK_DATE")]
        [DataMember]
        public DateTime? UnLockDate { get; set; } 

        /// <summary>
        /// 條碼Info
        /// </summary>
        [ForeignKey("BarcodeID")]
        [DataMember]
        public virtual BarcodeInfo GetBarcodeInfo { get; set; }

    }
}