using Aitex.Core.UI.MVVM;
using Aitex.Core.Utilities;
using CyberX8_Core;
using MECF.Framework.Common.CommonData.Reservoir;
using MECF.Framework.Common.OperationCenter;
using MECF.Framework.Common.RecipeCenter;
using MECF.Framework.UI.Core.Control;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace CyberX8_Themes.UserControls
{
    /// <summary>
    /// PMCounterComponent.xaml 的交互逻辑
    /// </summary>
    public partial class PMCounterComponent : UserControl
    {
        public PMCounterComponent()
        {
            InitializeComponent();
            KeyDownCommand = new DelegateCommand<object[]>(KeyDownAction);
        }
        [IgnorePropertyChange]
        public ICommand KeyDownCommand { get; private set; }

        public static readonly DependencyProperty ComponentNodesProperty = DependencyProperty.
                Register("ComponentNodes", typeof(ObservableCollection<PMCounterNode>), typeof(PMCounterComponent));
        public ObservableCollection<PMCounterNode> ComponentNodes
        {
            get { return (ObservableCollection<PMCounterNode>)this.GetValue(ComponentNodesProperty); }
            set { this.SetValue(ComponentNodesProperty, value); }
        }

        private void KeyDownAction(object[] param)
        {
            if (param.Length > 2)
            {
                string PMCounterName = (string)param[0];
                if(PMCounterName.Length < 7)  //修改的是metal
                {
                    string CounterName = (string)param[1];
                    string NewValue = (string)param[2];
                    //根据输入的newvalue在后台更新PMCounterComponent的新值并执行对应的操作
                    InvokeClient.Instance.Service.DoOperation($"{PMCounterName}.UpdateMetalUsage", PMCounterName, CounterName, NewValue);
                }
                else //修改的是reservoir
                {
                    string CounterName = (string)param[1];
                    string NewValue = (string)param[2];
                    //根据输入的newvalue在后台更新PMCounterComponent的新值并执行对应的操作
                    InvokeClient.Instance.Service.DoOperation($"{PMCounterName}.UpdateReservoirUsage", PMCounterName, CounterName, NewValue);
                }
               
            }
        }
           

    }
}