using Newtonsoft.Json.Converters; using Newtonsoft.Json; using System.Collections.ObjectModel; using System.ComponentModel; using System.Runtime.Serialization; using Venus_Core; namespace Venus_MainPages.Roles { [DataContract] public class Menu : INotifyPropertyChanged { public Menu(string firstmenu, string secondmenu) { FirstMenu = firstmenu; SecondMenu = secondmenu; } private string m_firstMenu; [DataMember] public string FirstMenu { get { return m_firstMenu; } set { m_firstMenu = value; OnPropertyChanged("FirstMenu"); } } private string m_SecondMenu; [DataMember] public string SecondMenu { get { return m_SecondMenu; } set { m_SecondMenu = value; OnPropertyChanged("SecondMenu"); } } private MenuPermission m_Permission; [DataMember] [JsonConverter(typeof(StringEnumConverter))] public MenuPermission Permission { get { return m_Permission; } set { m_Permission = value; OnPropertyChanged("Permission"); } } private string m_View; [DataMember] public string View { get { return m_View; } set { m_View = value; OnPropertyChanged("View"); } } #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion INotifyPropertyChanged } public enum MenuPermission { None, ReadOnly, ReadWrite } [DataContract] public class RoleDefine : INotifyPropertyChanged { private string m_RoleName; [DataMember] public string RoleName { get { return m_RoleName; } set { m_RoleName = value; OnPropertyChanged("RoleName"); } } [DataMember] private bool m_IsLocked; public bool IsLocked { get { return m_IsLocked; } set { m_IsLocked = value; OnPropertyChanged("IsLocked"); } } [DataMember] private int m_LockTime; public int LockTime { get { return m_LockTime; } set { if (value < 20) { m_LockTime = 20; } else { m_LockTime = value; } OnPropertyChanged("LockTime"); } } [DataMember] public ObservableCollection Menus { get; set; } public RoleDefine(string roleName, ObservableCollection menus) { RoleName = roleName; Menus = menus; } #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion INotifyPropertyChanged } [DataContract] public class User : INotifyPropertyChanged { public User(string name, string password, Role role) { Name = name; Password = password; Role = role; } private string m_Name; [DataMember] public string Name { get { return m_Name; } set { m_Name = value; OnPropertyChanged("Name"); } } public string m_Password; [DataMember] public string Password { get { return m_Password; } set { m_Password = value; OnPropertyChanged("Password"); } } public Role m_Role; [DataMember] [JsonConverter(typeof(StringEnumConverter))] public Role Role { get { return m_Role; } set { m_Role = value; OnPropertyChanged("Role"); } } #region INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion INotifyPropertyChanged } }