using System;
using Aitex.Core.RT.SCCore;
using Aitex.Core.UI.MVVM;
using MECF.Framework.Common.CommonData;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Net.Configuration;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using Aitex.Core.RT.Log;
using Aitex.Core.Util;
using DocumentFormat.OpenXml.Presentation;
using MECF.Framework.Common.Equipment;
using FurnaceRT.Equipments.PMs;
using FurnaceRT.Equipments.Systems;
namespace FurnaceRT.Backends
{
    /// 
    /// BackendPressureTuneView.xaml 的交互逻辑
    /// 
    public partial class BackendPressureTuneView : UserControl
    {
        public BackendPressureTuneView()
        {
            InitializeComponent();
            this.Loaded += SCConfigView_Loaded;
            this.IsVisibleChanged += BackendSCConfigView_IsVisibleChanged;
        }
        private void BackendSCConfigView_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if (this.DataContext == null)
            {
                DataContext = new BackendPressureTuneViewModel();
            }
            (this.DataContext as BackendPressureTuneViewModel).Reload("");
        }
        private void SCConfigView_Loaded(object sender, RoutedEventArgs e)
        {
            if (this.DataContext == null)
            {
                DataContext = new BackendPressureTuneViewModel();
            }
        }
    }
    public class BackendPressureTuneViewModel : ViewModelBase
    {
 
        public ICommand SaveCommand { get; set; }
        public ICommand ReloadCommand { get; set; }
        public bool IsEnable1
        {
            get;
            set;
        }
        public bool IsEnable2
        {
            get;
            set;
        }
        public string Tuning1
        {
            get;
            set;
        }
        public string Tuning2
        {
            get;
            set;
        }
 
        public BackendPressureTuneViewModel()
        {
 
            Init();
            SaveCommand = new DelegateCommand(PerformSave);
            ReloadCommand = new DelegateCommand(Reload);
        }
        private void PerformSave(string obj)
        {
            try
            {
 
                SC.SetItemValue($"PM.PM1.LeakCheck.EnableTuning", IsEnable1);
                SC.SetItemValue($"PM.PM2.LeakCheck.EnableTuning", IsEnable2);
                SC.SetItemValue($"PM.PM1.LeakCheck.TuningPercent", double.Parse(Tuning1));
                SC.SetItemValue($"PM.PM2.LeakCheck.TuningPercent", double.Parse(Tuning2));
                MessageBox.Show("Tune setting Saved");
            }
            catch (Exception ex)
            {
                MessageBox.Show("value not valid, failed save setting");
                LOG.Write(ex);
            }
        }
        public void Reload( string obj)
        {
            Init();
        }
        void Init()
        {
            IsEnable1 = SC.GetValue($"PM.PM1.LeakCheck.EnableTuning");
            Tuning1 = SC.GetValue($"PM.PM1.LeakCheck.TuningPercent").ToString("F2");
            IsEnable2 = SC.GetValue($"PM.PM2.LeakCheck.EnableTuning");
            Tuning2 = SC.GetValue($"PM.PM2.LeakCheck.TuningPercent").ToString("F2");
            InvokeAllPropertyChanged();
        }
    }
}