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

namespace AMESCoreStudio.Web.ViewModels.PCS
{
    public class PCS021ViewModel
    {
        /// <summary>
        /// 工單號碼
        /// </summary>
        public string WipNO { get; set; }

        /// <summary>
        /// 工單ID
        /// </summary>
        public int WipID { get; set; }

        /// <summary>
        /// BarCodeID
        /// </summary>
        public int BarCodeID { get; set; }

        /// <summary>
        /// 工單數
        /// </summary>
        public int PlanQTY { get; set; } = 0;

        /// <summary>
        /// 已刷數
        /// </summary>
        public int InputQTY { get; set; } = 0;

        /// <summary>
        /// 線別
        /// </summary>
        public int LineID { get; set; }

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

        /// <summary>
        /// 流程ID
        /// </summary>
        public int FlowRuleID { get; set; }

        /// <summary>
        /// RuleStationID
        /// </summary>
        public int RuleStation { get; set; }

        /// <summary>
        /// 作業站
        /// </summary>
        public int Station { get; set; }

        /// <summary>
        /// 工作站類別
        /// </summary>
        public string StationTypeNo { get; set; }

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

        /// <summary>
        /// input
        /// </summary>
        public string Input { get; set; }

        /// <summary>
        /// inputNo (異常代碼)
        /// </summary>
        public string InputNo { get; set; }

        /// <summary>
        /// 過站順序
        /// </summary>
        public int StationSEQ { get; set; } = 0 ;

        /// <summary>
        /// 是否是內部序號 
        /// </summary>
        public bool Barcode { get; set; } = false ;

        /// <summary>
        /// 是否有不良代號
        /// </summary>
        public bool BarcodeNG { get; set; } = false;

        /// <summary>
        /// 站別測試類別代碼
        /// </summary>
        public string StationTestType { get; set; }

        /// <summary>
        /// 工程備註
        /// </summary>
        public string SystemMemo { get; set; }

        /// <summary>
        /// KeyPart 代號
        /// </summary>
        public string KpItemName { get; set; } = string.Empty;

        /// <summary>
        /// inputs
        /// </summary>

        public List<Inputs> Inputs { get; set; } = new List<Inputs>();

        /// <summary>
        /// 料號相關資料
        /// </summary>
        public MaterialItem MaterialItem { get; set; }

        /// <summary>
        /// 料號KP資訊資料檔
        /// </summary>
        public List<WipKpDto> WipKps { get; set; } = new List<WipKpDto>();

        /// <summary>
        /// 料號治具資訊
        /// </summary>
        public List<WipOutfitDtos> wipOutfits { get; set; } = new List<WipOutfitDtos>();

        /// <summary>
        /// 站別工項資料檔
        /// </summary>
        public List<MaterialStationsItem> MaterialStationsItems { get; set; } = new List<MaterialStationsItem>();

        public List<PCS021ViewModel_SOP> Sops { get; set; } = new List<PCS021ViewModel_SOP>();  
    }

    public class WipOutfitDtos : WipOutfitDto
    {
        public string Inputs { get; set; }

        /// <summary>
        /// 設備名稱
        /// </summary>
        public string PartNo { get; set; }
    }

    public class Inputs
    {
        /// <summary>
        /// 不良代號 || KeyPart
        /// </summary>
        public string Input { get; set; }

        /// <summary>
        /// 異常欄位
        /// </summary>
        public string InputNo { get; set; }
    }

    /// <summary>
    /// SOP
    /// </summary>
    public class PCS021ViewModel_SOP
    {
        /// <summary>
        /// 檔案名稱
        /// </summary>
        public string SopName { get; set; }

        /// <summary>
        /// 檔案路徑
        /// </summary>
        public string SopPath { get; set; }
    }
}