using Aitex.Core.UI.MVVM;
using Aitex.Core.Utilities;
using MECF.Framework.Common.DataCenter;
using MECF.Framework.Common.Equipment;
using MECF.Framework.Common.RecipeCenter;
using MECF.Framework.Common.Utilities;
using Prism.Mvvm;
using PunkHPX8_MainPages.PMs;
using PunkHPX8_Themes.UserControls;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
namespace PunkHPX8_MainPages.ViewModels
{
    public class DqdrRecipeViewModel : BindableBase
    {
        #region 常量
        private const string ENGINEERING = "Engineering";
        private const string DQDR = "dqdr";
        private const string DEP = "dep";
        #endregion
        #region 内部变量
        /// 
        /// Recipe节点字典
        /// 
        private Dictionary _recipeNodeDic = new Dictionary();
        /// 
        /// 属性检验结果字典
        /// 
        private Dictionary _propertyValidResultDic = new Dictionary();
        /// 
        /// Recipe节点集合
        /// 
        private ObservableCollection _recipeNodes;
        /// 
        /// DepRecipe节点集合
        /// 
        private ObservableCollection _depRecipeNodes;
        /// 
        /// Plating Cell List
        /// 
        private ObservableCollection _platingCellList = new ObservableCollection();
        /// 
        /// DepRecipe Name List
        /// 
        private ObservableCollection _depRecipeNameList = new ObservableCollection();
        /// 
        /// uiRecipeManager
        /// 
        private UiRecipeManager _uiRecipeManager = new UiRecipeManager();
        /// 
        /// recipe
        /// 
        private DqdrRecipe _recipe;
        /// 
        /// 编辑可用性
        /// 
        private bool _editEnable;
        /// 
        /// 创建可用性
        /// 
        private bool _createEnable;
        /// 
        /// 当前节点
        /// 
        private RecipeNode _currentNode;
        /// 
        /// 是否可用
        /// 
        private bool _enable = false;
        /// 
        /// 是否为编辑(true-Edit,false-add)
        /// 
        private bool _isEdit = false;
        #endregion
        #region 属性
        public ObservableCollection RecipeNodes
        {
            get { return _recipeNodes; }
            set { SetProperty(ref _recipeNodes, value); }
        }
        public ObservableCollection DepRecipeNodes
        {
            get { return _depRecipeNodes; }
            set { SetProperty(ref _depRecipeNodes, value); }
        }
        public ObservableCollection PlatingCellList
        {
            get { return _platingCellList; }
            set { SetProperty(ref _platingCellList, value); }
        }
        public ObservableCollection DepRecipeNameList
        {
            get { return _depRecipeNameList; }
            set { SetProperty(ref _depRecipeNameList, value); }
        }
        /// 
        /// Recipe
        /// 
        public DqdrRecipe Recipe
        {
            get { return _recipe; }
            set { SetProperty(ref _recipe, value); }
        }
        /// 
        /// 创建可用性
        /// 
        public bool CreateEnable
        {
            get { return _createEnable; }
            set { SetProperty(ref _createEnable, value); }
        }
        /// 
        /// 编辑可用性
        /// 
        public bool EditEnable
        {
            get { return _editEnable; }
            set { SetProperty(ref _editEnable, value); }
        }
        /// 
        /// 当前节点
        /// 
        public RecipeNode CurrentNode
        {
            get { return _currentNode; }
            set { SetProperty(ref _currentNode, value); }
        }
        /// 
        /// 可用性
        /// 
        public bool Enable
        {
            get { return _enable; }
            set { SetProperty(ref _enable, value); }
        }
        /// 
        /// 属性数据检验结果
        /// 
        public Dictionary PropertyValidResultDic
        {
            get { return _propertyValidResultDic; }
            set { SetProperty(ref _propertyValidResultDic, value); }
        }
        #endregion
        #region 指令
        [IgnorePropertyChange]
        public ICommand OperationCommand
        {
            get;
            private set;
        }
        [IgnorePropertyChange]
        public ICommand CreateCommand { get; private set; }
        [IgnorePropertyChange]
        public ICommand EditCommand { get; private set; }
        [IgnorePropertyChange]
        public ICommand SaveRecipeCommand { get; private set; }
        [IgnorePropertyChange]
        public ICommand SaveAsRecipeCommand { get; private set; }
        public ICommand LinkedDepRecipeChangeCommand { get; private set; }
        #endregion
        /// 
        /// 构造函数
        /// 
        public DqdrRecipeViewModel()
        {
            OperationCommand = new DelegateCommand