using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AMESCoreStudio.WebApi.Models.AMES;
using AMESCoreStudio.WebApi.Models.BAS;
using System.ComponentModel.DataAnnotations;
using AMESCoreStudio.WebApi.DTO.AMES;

namespace AMESCoreStudio.Web.ViewModels.PCS
{
    public class PCS009RViewModel
    {
        public PCS009RViewModel()
        {
            WinInfos = new List<WinInfo>();
            BarCodeLogs = new List<BarCodeLog>();
            BarCodeChanges = new List<BarCodeChange>();
            BarCodeKPs = new List<BarcodeItemDTO>();
            KPChanges = new List<BarcodeItemChangeDTO>();
            Outfits = new List<Outfit>();
            nGInfoDtos = new List<NGInfoDto>();
        }

        /// <summary>
        /// 內部條碼
        /// </summary>
        public string BarCodeNo { get; set; }


        /// <summary>
        /// 外部條碼 
        /// </summary>
        public string ExtraBarCodeNo { get; set; }


        /// <summary>
        /// 狀態描述
        /// </summary>
        public string StatusNo { get; set; }

        /// <summary>
        /// 包裝箱號
        /// </summary>
        public string BoxNo { get; set; }

        /// <summary>
        /// 入庫單號
        /// </summary>
        public string InhouseNo { get; set; }


        /// <summary>
        /// 重量
        /// </summary>
        public string Wight { get; set; }

    

        /// <summary>
        /// 工單歷程
        /// </summary>
        public List<WinInfo> WinInfos { get; set; }

        /// <summary>
        /// 生產歷程
        /// </summary>
        public List<BarCodeLog> BarCodeLogs { get; set; }

        /// <summary>
        /// 組件清單
        /// </summary>
        public List<BarcodeItemDTO> BarCodeKPs { get; set; }

        /// <summary>
        /// 治具清單
        /// </summary>
        public List<Outfit> Outfits { get; set; }

        /// <summary>
        /// 條碼變更
        /// </summary>
        public List<BarCodeChange> BarCodeChanges { get; set; }

        /// <summary>
        /// 組件變更
        /// </summary>
        public List<BarcodeItemChangeDTO> KPChanges { get; set; }

        /// <summary>
        /// 維修紀錄
        /// </summary>
        public List<NGInfoDto> nGInfoDtos { get; set; }

    }

    /// <summary>
    /// 工單資料
    /// </summary>
    public class WinInfo
    {
        /// <summary>
        /// 工單號碼
        /// </summary>
        public string WipNo { get; set; }

        /// <summary>
        /// 料號
        /// </summary>
        public string ItemNo { get; set; }

        /// <summary>
        /// 生產單位
        /// </summary>
        public string UnitNo { get; set; }

        /// <summary>
        /// 線別
        /// </summary>
        public string Line { get; set; }

        /// <summary>
        /// ECN
        /// </summary>
        public string ECN { get; set; }

        /// <summary>
        /// EAN
        /// </summary>
        public string EAN { get; set; }

        /// <summary>
        /// 建置日期
        /// </summary>
        public string CreateDate { get; set; }

        /// <summary>
        /// DATECODE
        /// </summary>
        public string DateCode { get; set; }

        /// <summary>
        /// 客戶料號
        /// </summary>
        public string CustomerItemNo { get; set; }

        /// <summary>
        /// 工單備註
        /// </summary>
        public string Remarks { get; set; }
    }

    /// <summary>
    /// 生產歷程
    /// </summary>
    public class BarCodeLog
    {
        /// <summary>
        /// 編號
        /// </summary>
        public string No { get; set; }

        /// <summary>
        /// 站別名稱
        /// </summary>
        public string Station { get; set; }

        /// <summary>
        /// 規則描述
        /// </summary>
        public string RuleStation { get; set; }

        /// <summary>
        /// 系統類型
        /// </summary>
        public string SysType { get; set; }

        /// <summary>
        /// 使用者
        /// </summary>
        public string User { get; set; }

        /// <summary>
        /// 過站日期
        /// </summary>
        public string InputDate { get; set; }
    }


    /// <summary>
    /// 治具清單
    /// </summary>
    public class Outfit
    {
        /// <summary>
        /// 編號
        /// </summary>
        public string No { get; set; }

        /// <summary>
        /// 站别
        /// </summary>
        public string Station { get; set; }

        /// <summary>
        /// 治具代碼
        /// </summary>
        public string OutfitNo { get; set; }

        /// <summary>
        /// 過站日期
        /// </summary>
        public string InputDate { get; set; }
    }

    /// <summary>
    /// 條碼變更
    /// </summary>
    public class BarCodeChange
    {
        /// <summary>
        /// 舊條碼序號
        /// </summary>
        public string BarCodeOld { get; set; }

        /// <summary>
        /// 新條碼序號
        /// </summary>
        public string BarCodeNew { get; set; }

        /// <summary>
        /// 變更類型
        /// </summary>
        public string BarCodeChangeType { get; set; }

        /// <summary>
        /// 備註
        /// </summary>
        public string Memo { get; set; }

        /// <summary>
        /// 置換人員
        /// </summary>
        public string User { get; set; }

        /// <summary>
        /// 變更時間
        /// </summary>
        public string Date { get; set; }
    }

    /// <summary>
    /// 組件變更
    /// </summary>
    public class KPChange
    {
        /// <summary>
        /// 組件條碼
        /// </summary>
        public string KPPartNo { get; set; }

        /// <summary>
        /// 組件料號
        /// </summary>
        public string KPItemNo { get; set; }

        /// <summary>
        /// 置換類別
        /// </summary>
        public string ChangeType { get; set; }

        /// <summary>
        /// 置換人員
        /// </summary>
        public string User { get; set; }

        /// <summary>
        /// 變更時間
        /// </summary>
        public string Date { get; set; }
    }
}