using System.IO; using System.Linq; using System.Reflection; using Caliburn.Micro; using MECF.Framework.Common.Account.Extends; namespace MECF.Framework.UI.Client.ClientBase { public class BaseApp { public UserContext UserContext { get; private set; } public MenuManager MenuManager { get; private set; } public UserMode UserMode { get; set; } public bool Initialized { get; private set; } public ModuleDataMonitor _dataMonitor; private static BaseApp _instance = null; public static BaseApp Instance { get => _instance; set => _instance = value; } public BaseApp() { UserMode = UserMode.None; Initialized = false; Configure(); } public void Initialize(bool force = false) { if (Initialized && !force) return; MenuManager = new MenuManager(); UserContext = new UserContext(); var file = $"{System.AppDomain.CurrentDomain.BaseDirectory}MECF.Framework.UI.Client.dll"; if (File.Exists(file)) { var assembly = Assembly.LoadFile(file); AssemblySource.Instance.Add(assembly); } OnInitialize(); //must be called after specific project initialized _dataMonitor = new ModuleDataMonitor(); Initialized = true; } public virtual void Dispose() { } protected void Configure() { //config skin/language... OnConfiguration(); } protected virtual void OnInitialize() { } protected virtual void OnConfiguration() { } public virtual void SwitchPage(string mainMenu, string subMenu, object parameter) { } public int GetPermission(string menuid) { var per = 1; if (UserContext != null) { var list = UserContext.Role.PermissionContent.Split(';'); var result = from r in list where r.Split(',')[0] == menuid select r; if (result.Count() > 0) per = int.Parse(result.ToArray()[0].Split(',')[1]); } return per; } } }