using Aitex.Core.RT.Log;
using MECF.Framework.Common.Device.Rinse;
using MECF.Framework.Common.OperationCenter;
using System;
using System.Collections.Generic;
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
{
    /// 
    /// RinseUIControl.xaml 的交互逻辑
    /// 
    public partial class RinseUIControl : UserControl
    {
        public RinseUIControl()
        {
            InitializeComponent();
        }
        public static readonly DependencyProperty ModuleNameProperty = DependencyProperty.Register(
            "ModuleName", typeof(string), typeof(RinseUIControl),
        new FrameworkPropertyMetadata("", FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// 模块名称
        /// 
        public string ModuleName
        {
            get
            {
                return (string)this.GetValue(ModuleNameProperty);
            }
            set
            {
                this.SetValue(ModuleNameProperty, value);
            }
        }
        public static readonly DependencyProperty RinseCommonDataProperty = DependencyProperty.Register(
         "RinseCommonData", typeof(RinseData), typeof(RinseUIControl), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// RinseData
        /// 
        public bool RinseCommonData
        {
            get
            {
                return (bool)this.GetValue(RinseCommonDataProperty);
            }
            set
            {
                this.SetValue(RinseCommonDataProperty, value);
            }
        }
        public static readonly DependencyProperty InterLockProperty = DependencyProperty.Register(
         "InterLock", typeof(bool), typeof(RinseUIControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// InterLock
        /// 
        public bool InterLock
        {
            get
            {
                return (bool)this.GetValue(InterLockProperty);
            }
            set
            {
                this.SetValue(InterLockProperty, value);
            }
        }
        public static readonly DependencyProperty IsErrorProerty = DependencyProperty.Register(
           "IsError", typeof(bool), typeof(RinseUIControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// 工艺腔体是否error
        /// 
        public bool IsError
        {
            get
            {
                return (bool)this.GetValue(IsErrorProerty);
            }
            set
            {
                this.SetValue(IsErrorProerty, value);
            }
        }
        public static readonly DependencyProperty IsWaferHolderProerty = DependencyProperty.Register(
            "IsWaferHolder", typeof(bool), typeof(RinseUIControl), new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// 工艺腔体是否存在WaferHolder
        /// 
        public bool IsWaferHolder
        {
            get
            {
                return (bool)this.GetValue(IsWaferHolderProerty);
            }
            set
            {
                this.SetValue(IsWaferHolderProerty, value);
            }
        }
        public static readonly DependencyProperty UIWaterLevelProperty = DependencyProperty.Register(
        "UIWaterLevel", typeof(double), typeof(RinseUIControl), new FrameworkPropertyMetadata(0.0, FrameworkPropertyMetadataOptions.AffectsRender));
        /// 
        /// UIWaterLevel
        /// 
        public double UIWaterLevel
        {
            get
            {
                return (double)this.GetValue(UIWaterLevelProperty);
            }
            set
            {
                this.SetValue(UIWaterLevelProperty, value);
            }
        }
        private void Metals_Click(object sender, RoutedEventArgs e)
        {
        }
        private void Wastes_Click(object sender, RoutedEventArgs e)
        {
        }
        private void OpenClampValve_Click(object sender, RoutedEventArgs e)
        {
            LOG.WriteLog(eEvent.EV_DEVICE_INFO, "", $"ClampValveOn");
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ClampValveOn");
        }
        private void CloseClampValve_Click(object sender, RoutedEventArgs e)
        {
            LOG.WriteLog(eEvent.EV_DEVICE_INFO, "", $"ClampValveOff");
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ClampValveOff");
        }
        private void OpenN2Valve_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.N2ValveOn");
        }
        private void CloseN2Valve_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.N2ValveOff");
        }
        private void OpenDrainValve_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.DrainValveOn");
        }
        private void CloseDrainValve_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.DrainValveOff");
        }
        private void OpenWasteValve_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.WasteValveOn");
        }
        private void CloseWasteValve_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.WasteValveOff");
        }
        private void OpenFillValve_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.FillValveOn");
        }
        private void CloseFillValve_Click(object sender, RoutedEventArgs e)
        {
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.FillValveOff");
        }
        private void CheckBox_Checked(object sender, RoutedEventArgs e)
        {
            InterLock = true;
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ByPassInterLocks", InterLock);
        }
        private void CheckBox_UnChecked(object sender, RoutedEventArgs e)
        {
            InterLock = false;
            InvokeClient.Instance.Service.DoOperation($"{ModuleName}.ByPassInterLocks", InterLock);
        }
    }
}