using System.Collections.Generic;
using System.Linq;
using MECF.Framework.Common.DataCenter;
using OpenSEMI.ClientBase;
namespace VirgoUI.Client
{
    public static class ModuleManager
    {
        /// 
        /// all module need init
        /// 
        public static readonly List ModulesID = new List();
        private static readonly List ModuleNames = new List{ "LP1", "LP2", "LP3", "EfemRobot", "Aligner1", "Aligner2", "Cooling1", "Cooling2", "Buffer", "PMA", "PMB", "Flipper" };
     
        public static Dictionary ModuleInfos { get; private set; } = new Dictionary();
        static ModuleManager()
        {
            string moduleString = (string)QueryDataClient.Instance.Service.GetConfig("System.InstalledModules");
            var modules = moduleString.Split(',');
            foreach(var mod in ModuleNames)
            {
                if(mod.Contains("LP"))
                    ModulesID.Add(mod.Trim());
                else if (modules.Contains(mod.Trim()))
                    ModulesID.Add(mod.Trim());
            }
            //foreach (var mod in modules) 
            //    if(ModuleNames.Contains(mod.Trim())) 
            //        ModulesID.Add(mod.Trim());
        }
        public static void Initialize()
        {
            ModuleInfos.Clear();
            foreach (string moduleID in ModulesID)
            {
                ModuleInfo modInfo = CreateModule(moduleID, true);
                ModuleInfos.Add(moduleID, modInfo);
            }
        }
        private static ModuleInfo CreateModule(string p_modid, bool p_install)
        {
            ModuleInfo m_data;
            if (p_install)
                m_data = new ModuleInfo(p_modid, p_install, VirgoUI.Client.ClientApp.Instance.WaferStatusManager.WaferStatusDic[p_modid], false);
            else
                m_data = new ModuleInfo(p_modid, p_install, null, false);
            return m_data;
        }
    }
}