// WTM默认页面 Wtm buidin page using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using WalkingTec.Mvvm.Core; using WalkingTec.Mvvm.Mvc.Admin.ViewModels.DataPrivilegeVMs; using WalkingTec.Mvvm.Mvc.Admin.ViewModels.FrameworkMenuVMs; namespace WalkingTec.Mvvm.Mvc.Admin.ViewModels.FrameworkGroupVMs { public class FrameworkGroupMDVM : BaseVM { public string GroupCode { get; set; } public List DpLists { get; set; } public FrameworkGroupMDVM() { } protected override void InitVM() { DpLists = new List(); foreach (var item in Wtm.DataPrivilegeSettings) { DpListVM list = new DpListVM(); list.Searcher = new DpSearcher(); list.Searcher.TableName = item.ModelName; DpLists.Add(new GroupDp { DpName = item.PrivillegeName, List = list, SelectedIds = new List() }); } var alldp = DC.Set().Where(x => x.GroupCode == GroupCode).ToList(); foreach (var item in DpLists) { var select = alldp.Where(x => x.TableName == item.List.Searcher.TableName).Select(x => x.RelateId).ToList(); if(select.Count == 0) { item.IsAll = null; } else if (select.Contains(null)) { item.IsAll = true; } else { item.IsAll = false; item.SelectedIds = select; } } } public bool DoChange() { List oldIDs = DC.Set().Where(x => x.GroupCode == GroupCode).Select(x => x.ID).ToList(); foreach (var oldid in oldIDs) { DataPrivilege dp = new DataPrivilege { ID = oldid }; DC.Set().Attach(dp); DC.DeleteEntity(dp); } foreach (var item in DpLists) { if(item.IsAll == true) { DataPrivilege dp = new DataPrivilege(); dp.RelateId = null; dp.GroupCode = GroupCode; dp.TableName = item.List.Searcher.TableName; DC.Set().Add(dp); } if (item.IsAll == false && item.SelectedIds != null) { foreach (var id in item.SelectedIds) { DataPrivilege dp = new DataPrivilege(); dp.RelateId = id; dp.GroupCode = GroupCode; dp.TableName = item.List.Searcher.TableName; DC.Set().Add(dp); } } } DC.SaveChanges(); return true; } } public class GroupDp { public DpListVM List { get; set; } public string DpName { get; set; } public List SelectedIds { get; set; } public bool? IsAll { get; set; } } }