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

#nullable disable

namespace AMESCoreStudio.WebApi.Models.AMES
{
    /// <summary>
    /// 工單資訊-板卡工程資訊
    /// </summary>
    [Table("WIP_BOARD", Schema = "JHAMES")]
    [DataContract]
    public partial class WipBoard
    {
        /// <summary>
        /// 工單號碼
        /// </summary>
        [Key]
        [Column("WIP_NO")]
        [StringLength(30)]
        [DataMember]
        public string WipNo { get; set; }

        /// <summary>
        /// 料號 or 工程編號
        /// </summary>
        [Required]
        [Column("ITEM_NO")]
        [StringLength(20)]
        [DataMember]
        [Display(Name = "工程編號")]
        public string ItemNo { get; set; }

        /// <summary>
        /// 工程負責人員
        /// </summary>
        [DataMember]
        [Column("ENGINEER")]
        [Display(Name = "工程負責人員")]
        [StringLength(20)]
        public string Engineer { get; set; }

        /// <summary>
        /// SMD點膠
        /// </summary>
        [Column("SMD")]
        [DataMember]
        [Display(Name = "SMD點膠")]
        public string Smd { get; set; }

        /// <summary>
        /// SMD點紅膠備註
        /// </summary>
        [Column("SMD_REMARKS")]
        [DataMember]
        [Display(Name = "SMD點膠")]
        public string SmdRemarks { get; set; }

        /// <summary>
        /// SMD點防焊膠
        /// </summary>
        [Column("SMD_SOLDER_MASK")]
        [StringLength(30)]
        [DataMember]
        public string SmdSolderMask { get; set; }

        /// <summary>
        /// SMD點防焊膠備註
        /// </summary>
        [Column("SMD_SM_REMARKS")]
        [DataMember]
        [Display(Name = "SMD點防焊膠備註")]
        public string SmdSMRemarks { get; set; }

        /// <summary>
        /// 正背面
        /// </summary>
        [Column("DIP_SIDE")]
        [StringLength(10)]
        [DataMember]
        [Display(Name = "正背面")]
        public string DipSide { get; set; }

        /// <summary>
        /// DIP正背面備註
        /// </summary>
        [Column("DIP_REMARKS")]
        [DataMember]
        [Display(Name = "DIP正背面備註")]
        public string DipRemarks { get; set; }

        /// <summary>
        /// 是否需要CARRIER(Y/N)
        /// </summary>
        [Column("DIP_CARRIER")]
        [StringLength(2)]
        [DataMember]
        [Display(Name = "CARRIER")]
        public string DipCarrier { get; set; }

        /// <summary>
        /// 是否需要貼付膠帶(Y/N)
        /// </summary>
        [Column("DIP_TAPE")]
        [StringLength(2)]
        [DataMember]
        [Display(Name = "貼付膠帶")]
        public string DipTape { get; set; }

        /// <summary>
        /// 是否需要點防焊膠(Y/N)
        /// </summary>
        [Column("DIP_SOLDER_MASK")]
        [StringLength(2)]
        [DataMember]
        public string DipSolderMask { get; set; }

        /// <summary>
        /// 是否燒錄(Y/N)
        /// </summary>
        [Column("BURN")]
        [StringLength(2)]
        [DataMember]
        [Display(Name = "是否燒錄")]
        public string Burn { get; set; }

        /// <summary>
        /// 燒錄位置
        /// </summary>
        [Column("BURN_LOCATION")]
        [StringLength(20)]
        [DataMember]
        [Display(Name = "燒錄位置")]

        public string BurnLocation { get; set; }

        /// <summary>
        /// 燒錄備註
        /// </summary>
        [Column("BURN_REMARKS")]
        [DataMember]

        public string BurnRemarks { get; set; }

        /// <summary>
        /// 零件是否需要烘烤(Y/N)
        /// </summary>
        [Column("IS_PARTS_BAKE")]
        [StringLength(2)]
        [DataMember]
        public string ISPartsBake { get; set; }

        /// <summary>
        /// 零件烘烤溫度
        /// </summary>
        [Column("PARTS_BAKE")]
        [DataMember]
        [Display(Name = "零件烘烤溫度")]
        public int PartsBake { get; set; }


        /// <summary>
        /// 零件烘烤溫度-其他
        /// </summary>
        [NotMapped]
        public int? PartsBakeOther { get; set; } = 0;

        /// <summary>
        /// 零件烘烤時間
        /// </summary>
        [Column("PARTS_BAKE_TIME", TypeName = "NUMBER")]
        [DataMember]
        [Display(Name = "零件烘烤時間")]
        public decimal PartsBakeTime { get; set; }

        /// <summary>
        /// 零件烘烤超過48hrs(Y/N)
        /// </summary>
        [Column("PARTS_BAKE_OVERTIME")]
        [DataMember]
        [Display(Name = "零件烘烤超過48hrs(Y/N)")]
        public string PartsBakeOvertime { get; set; }

        /// <summary>
        /// 零件烘烤備註
        /// </summary>
        [Column("PARTS_BAKE_REMARKS")]
        [DataMember]

        public string PartsBakeRemarks { get; set; }

        /// <summary>
        /// PCB是否需要烘烤(Y/N)
        /// </summary>
        [Column("IS_PCB_BAKE")]
        [DataMember]
        [Display(Name = "PCB是否需要烘烤")]
        public string ISPcbBake { get; set; }

        /// <summary>
        /// PCB烘烤
        /// </summary>
        [Column("PCB_BAKE")]
        [DataMember]
        [Display(Name = "PCB烘烤")]
        public string PcbBake { get; set; }

        /// <summary>
        /// PCB烘烤備註
        /// </summary>
        [Column("PCB_BAKE_REMARKS")]
        [DataMember]

        public string PcbBakeRemarks { get; set; }

        /// <summary>
        /// PCB加工
        /// </summary>
        [Column("PCB_PROCESSING")]
        [DataMember]
        [Display(Name = "PCB加工")]
        public string PcbProcessing { get; set; }


        /// <summary>
        /// PCB加工備註
        /// </summary>
        [Column("PCB_PROCESSING_REMARKS")]
        [DataMember]

        public string PcbProcessingRemarks { get; set; }

        /// <summary>
        /// 錫膏
        /// </summary>
        [Column("SOLDER_PASTE")]
        [DataMember]
        [Display(Name = "錫膏")]
        public string SolderPaste { get; set; }

        /// <summary>
        /// 錫膏備註
        /// </summary>
        [Column("SOLDER_PASTE_REMARKS")]
        [DataMember]

        public string SolderPasteRemarks { get; set; }

        /// <summary>
        /// 燒機比率
        /// </summary>
        [Column("BI_RATIO", TypeName = "NUMBER")]
        [DataMember]
        [Display(Name = "燒機比率")]
        public decimal BiRatio { get; set; }

        /// <summary>
        /// 燒機溫度
        /// </summary>
        [Column("BI_TEMPERATURE")]
        [StringLength(20)]
        [DataMember]
        [Display(Name = "燒機溫度")]
        public string BiTemperature { get; set; }

        /// <summary>
        /// 燒機時間
        /// </summary>
        [Column("BI_TIME")]
        [StringLength(20)]
        [DataMember]
        [Display(Name = "燒機時間")]
        public string BiTime { get; set; }

        /// <summary>
        /// 燒機備註
        /// </summary>
        [Column("BI_REMARKS")]
        [DataMember]

        public string BiRemarks { get; set; }

        /// <summary>
        /// BIOS版本
        /// </summary>
        [Column("BIOS_VER")]
        [DataMember]
        [Display(Name = "BIOS版本")]
        public string BiosVer { get; set; }

        /// <summary>
        /// BIOS備註
        /// </summary>
        [Column("BIOS_REMARKS")]
        [DataMember]

        public string BiosRemarks { get; set; }

        /// <summary>
        /// Check Sum
        /// </summary>
        [Column("CHECKSUM")]
        [StringLength(20)]
        [DataMember]
        [Display(Name = "Check Sum")]
        public string Checksum { get; set; }

        /// <summary>
        /// Check Sum備註
        /// </summary>
        [Column("CS_REMARKS")]
        [DataMember]

        public string CsRemarks { 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>
        /// PE工程師姓名 Engineer
        /// </summary>
        [NotMapped]
        [DataMember]
        public string Engineer_Name { get; set; }

        /// <summary>
        /// SMDs
        /// </summary>
        [NotMapped]
        public virtual List<string> SMDs { get; set; }

        /// <summary>
        /// SMD防焊膠s
        /// </summary>
        [NotMapped]
        public virtual List<string> SmdSolderMasks { get; set; }

        /// <summary>
        /// 正背面
        /// </summary>
        [NotMapped]
        public virtual List<string> DipSides { get; set; }

    }
}