| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 | using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using Aitex.Core.Util;using Caliburn.Micro;using MECF.Framework.Common.CommonData;using MECF.Framework.Common.DataCenter;using MECF.Framework.Common.Equipment;using MECF.Framework.Common.OperationCenter;using MECF.Framework.Common.RecipeCenter;using OpenSEMI.ClientBase;using RecipeEditorLib.RecipeModel.Params;using VirgoUI.Client.Models.Sys;namespace VirgoUI.Client.Models.Recipe.Clean{    public class CleanItem : NotifiableItem    {        public string ChamberModule { get; set; }        public string ModuleName { get; set; }        public bool IdlePurgeIsEnable { get; set; }        public string IdlePurgeRecipe { get; set; }        public int IdlePurgeIdleTimeSetPoint { get; set; }        public int IdlePurgeNextRunTime { get; set; }        public bool IdlePurgeIsSaved { get; set; }        public bool IdleCleanIsEnable { get; set; }        public string IdleCleanRecipe { get; set; }        public int IdleCleanIdleTimeSetPoint { get; set; }        public int IdleCleanNextRunTime { get; set; }        public bool IdleCleanIsSaved { get; set; }        public bool JobCleanIsEnable { get; set; }        public string PreJobRecipe { get; set; }        public string CompleteJobRecipe { get; set; }        public bool PreJobIsEnable { get; set; }        public bool CompleteJobIsEnable { get; set; }        public bool PreJobIdleTimeIsSaved { get; set; }        public int PreJobIdleTimeSetPoint { get; set; }    }    public class PMCleanViewModel : ModuleUiViewModelBase, ISupportMultipleSystem    {        private int MenuPermission;        public bool IsReadOnly        {            get => this.Permission == 2 ? true : false;        }        public bool IsEnableEdit        {            get => !IsReadOnly;        }        [Subscription("IdlePurgeNextRunTime")]        public int IdlePurgeNextRunTimePM { get; set; }        [Subscription("IdleCleanNextRunTime")]        public int IdleCleanNextRunTimePM { get; set; }        public CleanItem CleanDataPM { get; set; }        public PMCleanViewModel()        {            this.DisplayName = " CleanViewModel";            CleanDataPM = new CleanItem() { ChamberModule = $"{SystemName}", ModuleName = "", IdlePurgeIsSaved = true, IdleCleanIsSaved = true };        }        protected override void OnInitialize()        {            base.OnInitialize();        }        protected override void InvokeBeforeUpdateProperty(Dictionary<string, object> data)        {            base.InvokeBeforeUpdateProperty(data);        }        protected override void InvokeAfterUpdateProperty(Dictionary<string, object> data)        {            MenuPermission = ClientApp.Instance.GetPermission($"Clean{SystemName}");            base.InvokeAfterUpdateProperty(data);            CleanDataPM.IdleCleanNextRunTime = IdleCleanNextRunTimePM;            CleanDataPM.IdlePurgeNextRunTime = IdlePurgeNextRunTimePM;            CleanDataPM.InvokePropertyChanged("IdleCleanNextRunTime");            CleanDataPM.InvokePropertyChanged("IdlePurgeNextRunTime");        }        #region  Idle Purge        public void IdlePurgeIsEnableChanged(string ModuleName, bool isEnabled)        {            InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"System.IdlePurge.IsEnabled", isEnabled.ToString());        }        public void IdlePurgeSetTime(string module, string value)        {            if (string.IsNullOrEmpty(value) || !int.TryParse(value, out _))            {                DialogBox.ShowWarning("Time not valid");                return;            }            InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"System.IdlePurge.IdlePurgeTime", value);            CleanDataPM.IdlePurgeIsSaved = true;            CleanDataPM.InvokePropertyChanged("IdlePurgeIsSaved");        }        public void IdlePurgeResetTime(string module)        {            InvokeClient.Instance.Service.DoOperation($"System.ResetIdlePurgeTime", module);        }        public void IdlePurgeSelectRecipe(string module)        {            //RecipeSequenceSelectDialogViewModel dialog = new RecipeSequenceSelectDialogViewModel();            //dialog.DisplayName = "Select Recipe";            //List<string> lstFiles = RecipeClient.Instance.Service.GetRecipesByPath($"ALD\\Process\\", false).ToList();            //dialog.Files = new ObservableCollection<FileNode>(RecipeSequenceTreeBuilder.GetFiles("prefixPath", lstFiles));            //WindowManager wm = new WindowManager();            //bool? ret = wm.ShowDialog(dialog);            //if ((bool)ret)            //{            //    CleanDataPM.IdlePurgeRecipe = dialog.DialogResult;            //    CleanDataPM.InvokePropertyChanged("IdlePurgeRecipe");            //    InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{module}.IdlePurge.IdlePurgeRecipe", dialog.DialogResult);            //}        }        public void SelectRecipe(string path)        {            RecipeSequenceSelectDialogViewModel dialog = new RecipeSequenceSelectDialogViewModel();            dialog.DisplayName = "Select Recipe";             string module = ModuleName.System.ToString();            List<string> lstFiles;                 lstFiles = RecipeClient.Instance.Service.GetRecipesByPath($"{module}", false).ToList();             dialog.Files = new ObservableCollection<FileNode>(RecipeSequenceTreeBuilder.GetFiles(lstFiles));            WindowManager wm = new WindowManager();            bool? bret = wm.ShowDialog(dialog);            if ((bool)bret)            {                //param.Value = dialog.DialogResult;                //param.IsSaved = false;            }        }        #endregion        #region IdleClean        public void IdleCleanIsEnableChanged(string ModuleName, bool isEnabled)        {            InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{SystemName}.IdleClean.IsEnabled", isEnabled.ToString());        }        public void IdleCleanSetTime(string module, string value)        {            if (MenuPermission != 3) return;            if (string.IsNullOrEmpty(value) || !int.TryParse(value, out _))            {                DialogBox.ShowWarning("Time not valid");                return;            }            InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{SystemName}.IdleClean.IdleCleanTime", value);            CleanDataPM.IdleCleanIsSaved = true;            CleanDataPM.InvokePropertyChanged("IdleCleanIsSaved");        }        public void PreJobSetIdleTime(string module, string value)        {            if (MenuPermission != 3) return;            if (string.IsNullOrEmpty(value) || !int.TryParse(value, out _))            {                DialogBox.ShowWarning("Time not valid");                return;            }            InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{SystemName}.JobClean.IdleCleanTime", value);            CleanDataPM.PreJobIdleTimeIsSaved = true;            CleanDataPM.InvokePropertyChanged("PreJobIdleTimeIsSaved");        }        public void IdleCleanResetTime(string module)        {            if (MenuPermission != 3) return;            InvokeClient.Instance.Service.DoOperation($"System.ResetIdleCleanTime", $"{SystemName}");        }        public void IdleCleanSelectRecipe(string module)        {            if (MenuPermission != 3) return;            RecipeSequenceSelectDialogViewModel dialog = new RecipeSequenceSelectDialogViewModel();            dialog.DisplayName = "Select Recipe";            List<string> lstFiles = new List<string>();            module = SystemName;            lstFiles.Add("");            lstFiles.AddRange(RecipeClient.Instance.Service.GetRecipesByPath($"{module}", false).ToList());            dialog.Files = new ObservableCollection<FileNode>(RecipeSequenceTreeBuilder.GetFiles(lstFiles));            WindowManager wm = new WindowManager();            bool? ret = wm.ShowDialog(dialog);             if ((bool)ret)            {                CleanDataPM.IdleCleanRecipe = dialog.DialogResult;                CleanDataPM.InvokePropertyChanged("IdleCleanRecipe");                InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{SystemName}.IdleClean.IdleCleanRecipe", dialog.DialogResult);            }        }        #endregion        #region JobClean        public void JobCleanIsEnableChanged(string module, bool isEnabled)        {            InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{SystemName}.JobClean.IsEnabled", isEnabled.ToString());        }        public void PreJobIsEnableChanged(string module, bool isEnabled)        {            InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{SystemName}.JobClean.EnablePreJobClean", isEnabled.ToString());        }        public void CompleteJobIsEnableChanged(string module, bool isEnabled)        {            InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{SystemName}.JobClean.EnableCompleteJobClean", isEnabled.ToString());        }        public void PreJobSelectRecipe(string module)        {            if (MenuPermission != 3) return;            RecipeSequenceSelectDialogViewModel dialog = new RecipeSequenceSelectDialogViewModel();            dialog.DisplayName = "Select Recipe";            List<string> lstFiles = new List<string>();            module = SystemName;            lstFiles.Add("");            lstFiles.AddRange(RecipeClient.Instance.Service.GetRecipesByPath($"{module}", false).ToList());            dialog.Files = new ObservableCollection<FileNode>(RecipeSequenceTreeBuilder.GetFiles(lstFiles));            WindowManager wm = new WindowManager();            bool? ret = wm.ShowDialog(dialog);            if ((bool)ret)            {                CleanDataPM.PreJobRecipe = dialog.DialogResult;                CleanDataPM.InvokePropertyChanged("PreJobRecipe");                InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{SystemName}.JobClean.PreJobCleanRecipe", dialog.DialogResult);            }        }        public void CompleteJobSelectRecipe(string module)        {            if (MenuPermission != 3) return;            RecipeSequenceSelectDialogViewModel dialog = new RecipeSequenceSelectDialogViewModel();            dialog.DisplayName = "Select Recipe";            module =  SystemName;            List<string> lstFiles = new List<string>();            lstFiles.Add("");            lstFiles.AddRange(RecipeClient.Instance.Service.GetRecipesByPath($"{module}", false).ToList());            dialog.Files = new ObservableCollection<FileNode>(RecipeSequenceTreeBuilder.GetFiles( lstFiles));            WindowManager wm = new WindowManager();            bool? ret = wm.ShowDialog(dialog);            if ((bool)ret)            {                CleanDataPM.CompleteJobRecipe = dialog.DialogResult;                CleanDataPM.InvokePropertyChanged("CompleteJobRecipe");                InvokeClient.Instance.Service.DoOperation($"System.SetConfig", $"{SystemName}.JobClean.CompleteJobCleanRecipe", dialog.DialogResult);            }        }        #endregion        protected override void OnActivate()        {            base.OnActivate();            List<string> _lsConfigName = new List<string>()            {                $"{SystemName}.IdleClean.IsEnabled",                $"{SystemName}.IdleClean.IdleCleanRecipe",                $"{SystemName}.IdleClean.IdleCleanTime",                $"{SystemName}.JobClean.IsEnabled",                $"{SystemName}.JobClean.PreJobCleanRecipe",                $"{SystemName}.JobClean.CompleteJobCleanRecipe",                $"{SystemName}.JobClean.EnablePreJobClean",                $"{SystemName}.JobClean.EnableCompleteJobClean",                $"{SystemName}.JobClean.IdleCleanTime",            };            var configs = QueryDataClient.Instance.Service.PollConfig(_lsConfigName);            CleanDataPM.ChamberModule = SystemName;             CleanDataPM.IdleCleanIdleTimeSetPoint = (int)configs[$"{SystemName}.IdleClean.IdleCleanTime"];            CleanDataPM.IdleCleanIsEnable = (bool)configs[$"{SystemName}.IdleClean.IsEnabled"];            CleanDataPM.IdleCleanRecipe = (string)configs[$"{SystemName}.IdleClean.IdleCleanRecipe"];            CleanDataPM.JobCleanIsEnable = (bool)configs[$"{SystemName}.JobClean.IsEnabled"];            CleanDataPM.PreJobRecipe = (string)configs[$"{SystemName}.JobClean.PreJobCleanRecipe"];            CleanDataPM.PreJobIsEnable = (bool)configs[$"{SystemName}.JobClean.EnablePreJobClean"];            CleanDataPM.CompleteJobRecipe = (string)configs[$"{SystemName}.JobClean.CompleteJobCleanRecipe"];            CleanDataPM.CompleteJobIsEnable = (bool)configs[$"{SystemName}.JobClean.EnableCompleteJobClean"];            CleanDataPM.PreJobIdleTimeSetPoint = (int)configs[$"{SystemName}.JobClean.IdleCleanTime"];        }        protected override void OnDeactivate(bool close)        {            base.OnDeactivate(close);        }    }}
 |