using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Runtime.Serialization;

namespace AMESCoreStudio.WebApi.DTO.AMES
{
    /// <summary>
    /// (過站資料)BarCodeCheck Dto
    /// </summary>
    [DataContract]
    public class BarCodeCheckDto
    {
        public BarCodeCheckDto()
        {
            inputItems = new List<inputItem>();
            outfits = new List<Outfit>();
        }

        /// <summary>
        /// 工單號碼
        /// </summary>
        [DataMember]
        public string wipNo { get; set; }

        /// <summary>
        /// 工單ID
        /// </summary>
        [DataMember]
        public int wipID { get; set; } = 0;

        /// <summary>
        /// 內部條碼
        /// </summary>
        [DataMember]
        public string barcode { get; set; }

        /// <summary>
        /// 內部條碼ID
        /// </summary>
        [DataMember]
        public int barcodeID { get; set; } = 0;

        /// <summary>
        /// 條碼狀態 M:一般 S:維修
        /// </summary>
        [DataMember]
        public string barcodeType { get; set; } = "M";

        /// <summary>
        /// 條碼過站狀態 P:Pass F:Fail 
        /// </summary>
        [DataMember]
        public string ruleStatus { get; set; } = "P";

        /// <summary>
        /// 生產單位
        /// </summary>
        [DataMember]
        public string unitNo { get; set; }

        /// <summary>
        /// 流程ID
        /// </summary>
        [DataMember]
        public int flowRule { get; set; } = 0;

        /// <summary>
        /// 作業站
        /// </summary>
        [DataMember]
        public int station { get; set; } = 0;

        /// <summary>
        /// RuleStationID
        /// </summary>
        [DataMember]
        public int ruleStationID { get; set; } = 0;

        /// <summary>
        /// 線別站
        /// </summary>
        [DataMember]
        public int line { get; set; } = 0;

        /// <summary>
        /// 紀錄組件或不良代碼
        /// </summary>
        [DataMember]
        public List<inputItem> inputItems { get; set; }

        /// <summary>
        /// 治具條碼
        /// </summary>
        [DataMember]
        public List<Outfit> outfits { get; set; }

        /// <summary>
        /// 出貨序號
        /// </summary>
        [DataMember]
        public string extNo { get; set; } = string.Empty;

        /// <summary>
        /// 過站UserID
        /// </summary>
        [DataMember]
        public int userID { get; set; } = 0;


        /// <summary>
        /// 紀錄組件或不良代碼
        /// </summary>

        public class inputItem
        {
            /// <summary>
            /// 刷入類型 NG or KP(Item_No)
            /// </summary>
            [DataMember]
            public string inputType { get; set; }

            /// <summary>
            /// 刷入組件資料或不良代碼
            /// </summary>
            [DataMember]
            public string inputData { get; set; }

            /// <summary>
            /// 組件:舊組件序號 NG:異常位置
            /// </summary>
            [DataMember]
            public string oldInputData { get; set; }

            /// <summary>
            /// 組件:組件料號 NG:
            /// </summary>
            [DataMember]
            public string kpItemNo { get; set; }
        }

        /// <summary>
        /// 治具條碼
        /// </summary>
        public class Outfit 
        {
            /// <summary>
            /// 刷入治具條碼
            /// </summary>
            [DataMember]
            public string inputData { get; set; }
        }
    }
}