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

namespace AMESCoreStudio.WebApi.Models.AMES
{
    /// <summary>
    /// 工單鎖定資料檔
    /// </summary>
    [Table("WIP_LOCK", Schema = "JHAMES")]
    [DataContract]
    public class WipLock
    {
        /// <summary>
        /// 工單鎖定ID
        /// </summary>
        [Key]
        [Column("WIP_LOCK_ID")]
        [DataMember]
        public int WipLockID { get; set; }

        /// <summary>
        /// 工單號碼
        /// </summary>
        [Column("WIP_NO")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "工單號碼")]
        public string WipNO { get; set; }

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

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

        /// <summary>
        /// 鎖定類型
        /// </summary>
        [Column("LOCK_TYPE")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "鎖定類型")]
        public string LockType { get; set; } = "WIP";

        /// <summary>
        /// 鎖定原因類別(0-3C認證工單;1-驗證工單;3-維修換料待分析)
        /// </summary>
        [Column("LOCK_REASON_TYPE")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "鎖定原因類別")]
        public string LockReasonType { get; set; } = "0";

        /// <summary>
        /// 鎖定人員
        /// </summary>
        [Column("LOCK_USERID")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "鎖定人員")]
        public int LockUserID { get; set; }

        /// <summary>
        /// 鎖定日期
        /// </summary>
        [Column("LOCK_DATE")]
        [DataMember]
        [Required(ErrorMessage = "{0},不能空白")]
        [Display(Name = "鎖定日期")]
        public DateTime LockDate { get; set; } = DateTime.Now;

        /// <summary>
        /// 解鎖人員
        /// </summary>
        [Column("UNLOCK_USERID")]
        [DataMember]
        [Display(Name = "解鎖人員")]
        public int? UnLockUserID { get; set; }

        /// <summary>
        /// 解鎖日期
        /// </summary>
        [Column("UNLOCK_DATE")]
        [DataMember]
        [Display(Name = "解鎖日期")]
        public DateTime? UnLockDate { get; set; }


        /// <summary>
        /// 站别資料
        /// </summary>
        [ForeignKey("StationID")]
        public virtual BAS.Stations Stations { get; set; }

        /// <summary>
        /// 工單機種資料
        /// </summary>
        [ForeignKey("WipNO")]
        public virtual WipAtt WipAtt { get; set; }
    }
}