123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566 |
- using System;
- using System.Collections.Generic;
- using System.Collections.ObjectModel;
- using System.ComponentModel;
- using System.Security.Policy;
- using System.Windows;
- using System.Windows.Controls;
- using System.Xml;
- using Aitex.Core.Account;
- using Aitex.Core.RT.Log;
- using Aitex.Core.UI.MVVM;
- using Aitex.Core.Util;
- namespace MECF.Framework.UI.Core.Accounts
- {
- public class AccountViewModel
- {
- public class AccountInfo
- {
- public Account Account { get; set; }
- public int No { get; set; }
- public string AccountId { get { return Account.AccountId; } }
- public bool IsEnabled { get { return Account.AccountStatus; } }
- public string RealName { get { return Account.RealName; } }
- public string Role { get { return Account.Role; } }
- public string Department { get { return Account.Department; } }
- public string LastLoginTime { get { return Account.LastLoginTime; } }
- public string Description { get { return Account.Description; } }
- public string Email { get { return Account.Email; } }
- public string Telephone { get { return Account.Telephone; } }
- }
- public List<AccountInfo> AccountList { get; private set; }
- /// <summary>
- /// 总共创建的账号数目
- /// </summary>
- public int TotalAccountNum
- {
- get
- {
- return AccountList.Count;
- }
- }
- /// <summary>
- /// 账号有效的用户数
- /// </summary>
- public int EnabledAccountNum
- {
- get
- {
- int num = 0;
- foreach (var item in AccountList)
- {
- if (item.IsEnabled) num++;
- }
- return num;
- }
- }
- /// <summary>
- /// Construction
- /// </summary>
- /// <param name="hideDisabledAccounts"></param>
- public AccountViewModel(bool hideDisabledAccounts)
- {
- AccountList = new List<AccountInfo>();
- var accounts = AccountClient.Instance.Service.GetAccountList();
- if (accounts == null) return;
- int num = 1;
- foreach (var account in accounts.AccountList)
- {
- if (!account.AccountStatus && hideDisabledAccounts) continue;
- AccountList.Add(new AccountInfo() { Account = account, No = num++ });
- }
- }
- }
- public class RolePermissionViewModel : INotifyPropertyChanged
- {
- #region Command
- public DelegateCommand<object> SavePermissionCommand { get; set; }
- #endregion
-
- public SerializableDictionary<string, SerializableDictionary<string, ViewPermission>> Roles
- {
- get;
- set;
- }
- ObservableCollection<string> roleNames = new ObservableCollection<string>();
- public ObservableCollection<string> RoleNames
- {
- get
- {
- return roleNames;
- }
- set
- {
- roleNames = value;
- }
- }
- public RolePermissionViewModel()
- {
- //cs 设置
- loadPermissionFile();
- Roles = AccountClient.Instance.Service.GetAllRolesPermission();
- RoleNames.Clear();
- foreach (string rolename in Roles.Keys)
- {
- RoleNames.Add(rolename);
- }
- }
- public void SelectRoleChanged(string role)
- {
- CurrentRoleName = role;
- BindAll();
- }
- public void InitialRolePermissionVM()
- {
- SavePermissionCommand = new DelegateCommand<object>(
- param =>
- {
- try
- {
- //_xmlRecipeFormat.Save(recipePermissionFile);
- bool suc = AccountClient.Instance.Service.SaveProcessViewPermission(_xmlRecipeFormat.InnerXml);
- if (suc)
- MessageBox.Show("保存菜单查看权限成功");
- //Publisher.Notify(Subject.SendSaveSuccessMessage, "保存菜单查看权限成功");
- }
- catch (Exception ex)
- {
- LOG.Write(ex);
- MessageBox.Show("保存菜单查看权限失败!");
- //Publisher.Notify(Subject.SendWarningMessage, "保存菜单查看权限失败!");
- }
- },
- param => { if (string.IsNullOrEmpty(CurrentRoleName))return false; return true; });
- }
- public CheckTreeViewModel ChamberAViewModel { get; set; }
- //public CheckTreeViewModel ChamberBViewModel { get; set; }
- //public CheckTreeViewModel ChamberCViewModel { get; set; }
- //public CheckTreeViewModel ChamberDViewModel { get; set; }
- public string CurrentRoleName { get; set; }
- #region UI Logical
- public
- void loadPermissionFile()
- {
- ChamberAViewModel = new CheckTreeViewModel();
-
- }
-
- public static XmlDocument _xmlRecipeFormat = new XmlDocument();
- public void BindAll()
- {
-
- }
-
- #endregion
- #region INotifyPropertyChanged Members
- public event PropertyChangedEventHandler PropertyChanged;
- protected virtual void OnPropertyChanged(string proName)
- {
- if (PropertyChanged != null)
- PropertyChanged(this, new PropertyChangedEventArgs(proName));
- }
- #endregion
- }
- public class CheckTreeViewModel : INotifyPropertyChanged
- {
- public NodeViewModel Nodes { get; private set; }
- public NodeInfo NodeInfo { get; private set; }
- public CheckTreeViewModel()
- {
- NodeInfo = new NodeInfo();
- NodeInfo.SelectedNodeChanged += (s, e) => RefreshCommands();
- Nodes = new NodeViewModel(NodeInfo);
- }
- NodeViewModel GetOperationNode()
- {
- if (NodeInfo.SelectedNode == null)
- return Nodes;
- return NodeInfo.SelectedNode;
- }
- bool CheckSelection(object obj)
- {
- return NodeInfo.SelectedNode != null;
- }
- void RefreshCommands()
- {
-
- }
- #region INotifyPropertyChanged Members
- public event PropertyChangedEventHandler PropertyChanged;
- protected virtual void OnPropertyChanged(string proName)
- {
- if (PropertyChanged != null)
- PropertyChanged(this, new PropertyChangedEventArgs(proName));
- }
- #endregion
- }
- public class NodeInfo : INotifyPropertyChanged
- {
- NodeViewModel selectedNode;
- int count;
- public NodeViewModel SelectedNode
- {
- get { return selectedNode; }
- set
- {
- if (selectedNode != value)
- {
- selectedNode = value;
- OnSelectedNodeChanged();
- OnPropertyChanged("SelectedNode");
- }
- }
- }
- public int Count
- {
- get { return count; }
- private set
- {
- if (count != value)
- {
- count = value;
- OnPropertyChanged("Count");
- }
- }
- }
- internal void SetCount(int newcount)
- {
- Count = newcount;
- }
- public event EventHandler SelectedNodeChanged;
- protected virtual void OnSelectedNodeChanged()
- {
- if (SelectedNodeChanged != null)
- SelectedNodeChanged(this, EventArgs.Empty);
- }
- #region INotifyPropertyChanged Members
- public event PropertyChangedEventHandler PropertyChanged;
- protected virtual void OnPropertyChanged(string proName)
- {
- if (PropertyChanged != null)
- PropertyChanged(this, new PropertyChangedEventArgs(proName));
- }
- #endregion
- }
- public class NodeViewModel : INotifyPropertyChanged
- {
- /*
- * 省去构造函数,公共方法和一些静态成员
- * */
- const string DataName = "数据 ";
- public XmlNode NodeXmlData { get; set; }
- public string CurrentRoleName { get; set; }
- static int DataCounter = 1;
- public static string GetNextDataName()
- {
- return String.Concat(DataName, DataCounter++);
- }
- public NodeViewModel(NodeInfo info)
- {
- children = new ObservableCollection<NodeViewModel>();
- NodeInfo = info;
- CheckBoxCommand = new DelegateCommand<object>((p) => checkBoxSelect(p), param => { return true; });
- }
- private NodeViewModel(NodeViewModel parent, string name, string role)
- : this(parent, name, false, null, role)
- {
- }
- private NodeViewModel(NodeViewModel parent, string name, bool isSelected, XmlNode node, string role)
- {
- Parent = parent;
- Name = name;
- NodeInfo = parent.NodeInfo;
- IsSelected = isSelected;
- children = new ObservableCollection<NodeViewModel>();
- SelectedNode = node;
- CheckBoxCommand = new DelegateCommand<object>((p) => checkBoxSelect(p), param =>
- {
- return true;
- });
- CurrentRoleName = role;
- }
- public XmlNode SelectedNode = null;
- void checkBoxSelect(object p)
- {
- if (SelectedNode != null)
- {
- CheckBox cb = p as CheckBox;
- if (null != SelectedNode.Attributes["DenyRole"])
- {
- string denyroles = "," + SelectedNode.Attributes["DenyRole"].Value + ",";
- string tagrole = "," + CurrentRoleName + ",";
- if (cb.IsChecked.Value)
- {
- denyroles = denyroles.Replace(tagrole, ",");
- SelectedNode.Attributes["DenyRole"].Value = denyroles.Trim(","[0]);
- }
- else
- {
- //没权限
- if (denyroles.IndexOf(tagrole) < 0)
- {
- //本来有权限,现在要没权限
- SelectedNode.Attributes["DenyRole"].Value = (denyroles + CurrentRoleName).Trim(","[0]);
- }
- }
- }
- else
- {
- if (cb.IsChecked.Value)
- {
- }
- else
- {
- XmlAttribute xmlAttribute = RolePermissionViewModel._xmlRecipeFormat.CreateAttribute("DenyRole");
- xmlAttribute.Value = CurrentRoleName;
- SelectedNode.Attributes.Append(xmlAttribute);
- }
- }
- //SelectedNode.Attributes["DenyRole"].Value = cb.IsChecked + "";
- }
- }
- #region 字段
- string name;
- bool isExpanded;
- bool isSelected;
- ObservableCollection<NodeViewModel> children;
- #endregion
- #region 属性
- public DelegateCommand<object> CheckBoxCommand { get; private set; }
- public NodeInfo NodeInfo { get; private set; }
- public NodeViewModel Parent { get; private set; }
- public string Name
- {
- get
- {
- return name;
- }
- set
- {
- if (name != value)
- {
- name = value;
- OnPropertyChanged("Name");
- }
- }
- }
- public bool IsExpanded
- {
- get
- {
- return isExpanded;
- }
- set
- {
- if (isExpanded != value)
- {
- isExpanded = value;
- OnPropertyChanged("IsExpanded");
- OnIsExpandedChanged();
- }
- }
- }
- public bool IsSelected
- {
- get { return isSelected; }
- set
- {
- if (isSelected != value)
- {
- isSelected = value;
- OnPropertyChanged("IsSelected");
- OnIsSelectedChanged();
- }
- }
- }
- public ReadOnlyObservableCollection<NodeViewModel> Children
- {
- get
- {
- return new ReadOnlyObservableCollection<NodeViewModel>(children);
- }
- }
- #endregion
- #region 方法
- public void Remove()
- {
- //if (Parent != null)
- //{
- // Parent.children.Remove(this);
- // RefreshInfoCount(-1);
- //}
- children.Clear();
- RefreshInfoCount(-1);
- }
- public NodeViewModel Add(string name, XmlNode node, string role)
- {
- return Add(name, false, node, role);
- }
- public NodeViewModel Add(string name, bool ischecked, XmlNode node, string role)
- {
- //SelectedNode = node;
- IsExpanded = true;
- NodeViewModel nodeModel = new NodeViewModel(this, name, ischecked, node, role);
- children.Insert(0, nodeModel);
- RefreshInfoCount(1);
- return nodeModel;
- }
- public void Append(string name, string role)
- {
- IsExpanded = true;
- children.Add(new NodeViewModel(this, name, role));
- RefreshInfoCount(1);
- }
- public void Rename()
- {
- Name = GetNextDataName();
- }
- public void MoveUp()
- {
- if (Parent != null)
- {
- var idx = Parent.children.IndexOf(this);
- if (idx > 0)
- {
- Parent.children.RemoveAt(idx);
- Parent.children.Insert(--idx, this);
- }
- IsSelected = true;
- }
- }
- public void MoveDown()
- {
- if (Parent != null)
- {
- var idx = Parent.children.IndexOf(this);
- if (idx < Parent.children.Count - 1)
- {
- Parent.children.RemoveAt(idx);
- Parent.children.Insert(++idx, this);
- }
- IsSelected = true;
- }
- }
- #endregion
- #region 私有方法
- void RefreshInfoCount(int addition)
- {
- if (NodeInfo != null)
- NodeInfo.SetCount(NodeInfo.Count + addition);
- }
- #endregion
- #region 事件
- public event EventHandler IsExpandedChanged;
- public event EventHandler IsSelectedChanged;
- protected virtual void OnIsExpandedChanged()
- {
- if (IsExpandedChanged != null)
- IsExpandedChanged(this, EventArgs.Empty);
- }
- protected virtual void OnIsSelectedChanged()
- {
- if (IsSelectedChanged != null)
- IsSelectedChanged(this, EventArgs.Empty);
- if (IsSelected)
- NodeInfo.SelectedNode = this;
- }
- #endregion
- #region INotifyPropertyChanged Members
- public event PropertyChangedEventHandler PropertyChanged;
- protected virtual void OnPropertyChanged(string proName)
- {
- if (PropertyChanged != null)
- PropertyChanged(this, new PropertyChangedEventArgs(proName));
- }
- #endregion
- }
- }
|