using MECF.Framework.Common.CommonData;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
namespace MECF.Framework.Common.RecipeCenter
{
    [Serializable]
    public class SequenceRecipe : NotifiableItem
    {
        #region 内部变量
        /// 
        /// 作者
        /// 
        private string _author;
        /// 
        /// 描述 
        /// 
        private string _description;
        /// 
        /// 名称
        /// 
        private string _ppid;
        /// 
        /// Recipe类型
        /// 
        private RecipeType _recipeType;
        /// 
        /// 保存时间
        /// 
        private DateTime _saveDate;
        /// 
        /// 创建时间
        /// 
        private DateTime _createDate;
        /// 
        /// Align角度 
        /// 
        private double _alignmentAngle;
        /// 
        /// CRS类型
        /// 
        private string _crsType;
        private string _fiducialType;
        /// 
        /// 最后单片使用哪一面
        /// 
        private bool _lastSingleWaferToSideB;
        /// 
        /// WaferSize
        /// 
        private int _substrateSize;
        /// 
        /// Recipe集合
        /// 
        private List _recipes;
        /// 
        /// Sequence类型(Production或Engineering)
        /// 
        private string _sequenceType;
        #endregion
        #region 属性
        [JsonProperty]
        public string Author { get { return _author; }  set { _author = value; InvokePropertyChanged(nameof(Author)); } }
        public string Description { get { return _description; } set { _description = value; InvokePropertyChanged(nameof(Description)); } }
        [JsonProperty]
        public string Ppid { get { return _ppid; } set { _ppid = value;InvokePropertyChanged(nameof(Ppid)); } }
        [JsonProperty]
        public RecipeType RecipeType { get { return _recipeType; } set { _recipeType = value; InvokePropertyChanged(nameof(RecipeType)); } }
        [JsonProperty]
        public DateTime CreateDate { get { return _createDate; } set { _createDate = value; InvokePropertyChanged(nameof(CreateDate)); } }
        [JsonProperty]
        public DateTime SaveDate { get { return _saveDate; } set { _saveDate = value;InvokePropertyChanged(nameof(SaveDate)); } }
        [JsonProperty]
        public double AlignmentAngle { get { return _alignmentAngle; } set { _alignmentAngle = value; InvokePropertyChanged(nameof(AlignmentAngle)); } }
        [JsonProperty]
        public string CrsType { get { return _crsType; } set { _crsType = value;  InvokePropertyChanged(nameof(CrsType)); } }
        [JsonProperty]
        public string FiducialType { get { return _fiducialType; } set { _fiducialType = value;InvokePropertyChanged(nameof(FiducialType)); } }
        [JsonProperty]
        public bool LastSingleWaferToSideB { get { return _lastSingleWaferToSideB; } set { _lastSingleWaferToSideB = value;InvokePropertyChanged(nameof(LastSingleWaferToSideB)); } }
        [JsonProperty]
        public int SubstrateSize { get { return _substrateSize; } set { _substrateSize = value; InvokePropertyChanged(nameof(SubstrateSize)); } }
        [JsonProperty]
        public List Recipes { get { return _recipes; } set { _recipes = value; InvokePropertyChanged(nameof(Recipes)); } }
        public string SequenceType { get { return _sequenceType; } set { _sequenceType = value; InvokePropertyChanged(nameof(SequenceType)); } }
        #endregion
    }
}