//============================================================== // Copyright (C) 2020 Inc. All rights reserved. // //============================================================== // Create by 种道洋 at 2020/5/3 19:29:26. // Version 1.0 // 种道洋 //============================================================== using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Windows.Input; namespace DBInStudio.Desktop.ViewModel { /// /// /// public class PermissionDetailViewModel : ViewModelBase { #region ... Variables ... private System.Collections.ObjectModel.ObservableCollection mPermissions = new System.Collections.ObjectModel.ObservableCollection(); private ICommand mAddCommand; private ICommand mRemoveCommand; private PermissionItemViewModel mCurrentSelected; #endregion ...Variables... #region ... Events ... #endregion ...Events... #region ... Constructor... #endregion ...Constructor... #region ... Properties ... public ICommand AddCommand { get { if(mAddCommand==null) { mAddCommand = new RelayCommand(() => { Add(); }); } return mAddCommand; } } /// /// /// public ICommand RemoveCommand { get { if(mRemoveCommand==null) { mRemoveCommand = new RelayCommand(() => { Remove(); },()=> { return CurrentSelected != null && !CurrentSelected.IsSuper; }); } return mRemoveCommand; } } /// /// /// public PermissionItemViewModel CurrentSelected { get { return mCurrentSelected; } set { if (mCurrentSelected != value) { Update(); mCurrentSelected = value; OnPropertyChanged("CurrentSelected"); } } } public ObservableCollection Permissions { get { return mPermissions; } set { mPermissions = value; OnPropertyChanged("Permissions"); } } public string Database { get; set; } #endregion ...Properties... #region ... Methods ... /// /// /// public void Query() { var pps = DBDevelopClientApi.DevelopServiceHelper.Helper.GetAllDatabasePermission(Database); mPermissions.Clear(); foreach(var vv in pps) { var pp = new PermissionItemViewModel(vv); mPermissions.Add(pp); } } private string GetAvaiabelName(string name) { var names = this.Permissions.Select(e => e.Name).ToArray(); string ss = name; for(int i=1;i /// /// private void Add() { string sname = GetAvaiabelName("Permission"); Cdy.Tag.PermissionItem pitem = new Cdy.Tag.PermissionItem() { Name = sname }; //if(DBDevelopClientApi.DevelopServiceHelper.Helper.UpdateDatabasePermission(this.Database,pitem)) //{ this.Permissions.Add(new PermissionItemViewModel(pitem) { IsNew = true }); //} } /// /// /// private void Remove() { if(DBDevelopClientApi.DevelopServiceHelper.Helper.RemoveDatabasePermission(this.Database,CurrentSelected.Name)) { mPermissions.Remove(CurrentSelected); } } /// /// /// public void Update() { if (mCurrentSelected != null) { mCurrentSelected.IsNew = false; DBDevelopClientApi.DevelopServiceHelper.Helper.UpdateDatabasePermission(this.Database, mCurrentSelected.Model); } } #endregion ...Methods... #region ... Interfaces ... #endregion ...Interfaces... } public class PermissionItemViewModel:ViewModelBase { #region ... Variables ... private Cdy.Tag.PermissionItem mModel; private string mGroupString; private ICommand mGroupEditCommand; private bool mIsNew = false; #endregion ...Variables... #region ... Events ... #endregion ...Events... #region ... Constructor... /// /// /// public PermissionItemViewModel() { } /// /// /// /// public PermissionItemViewModel(Cdy.Tag.PermissionItem mode) { mModel = mode; MakeGroupString(); } #endregion ...Constructor... #region ... Properties ... /// /// /// public bool IsNew { get { return mIsNew; } set { if (mIsNew != value) { mIsNew = value; OnPropertyChanged("IsNew"); OnPropertyChanged("CanNameEdit"); } } } public bool IsNameReadOnly { get { return !mIsNew || mModel.SuperPermission; } } public bool IsEnableEdit { get { return !mModel.SuperPermission; } } /// /// /// public ICommand GroupEditCommand { get { if(mGroupEditCommand == null) { } return mGroupEditCommand; } } /// /// /// public Cdy.Tag.PermissionItem Model { get { return mModel; } set { if (mModel != value) { mModel = value; OnPropertyChanged("Model"); } } } /// /// /// public string Name { get { return mModel.Name; } set { mModel.Name = value; OnPropertyChanged("Name"); } } /// /// /// public string Desc { get { return mModel.Desc; } set { mModel.Desc = value; OnPropertyChanged("Desc"); } } /// /// /// public bool IsSuper { get { return mModel.SuperPermission; } } /// /// /// public bool EnableWrite { get { return mModel.EnableWrite; } set { if (mModel.EnableWrite != value) { mModel.EnableWrite = value; OnPropertyChanged("EnableWrite"); } } } /// /// /// public string GroupString { get { return mGroupString; } set { if (mGroupString != value) { mGroupString = value; ParserGroupString(); OnPropertyChanged("GroupString"); } } } /// /// /// public List Group { get { return Model.Group; } set { if (Model.Group != value) { Model.Group = value; } MakeGroupString(); OnPropertyChanged("Group"); } } #endregion ...Properties... #region ... Methods ... private void ParserGroupString() { Group = mGroupString.Split(new char[] { ',' }).ToList(); } private void MakeGroupString() { StringBuilder sb = new StringBuilder(); foreach(var vv in Group) { sb.Append(vv + ","); } sb.Length = sb.Length > 0 ? sb.Length - 1 : sb.Length; mGroupString = sb.ToString(); } #endregion ...Methods... #region ... Interfaces ... #endregion ...Interfaces... } }