public ActionResult GetPlistRoleGroups(GetPlistRoleGroups requestData) { if (!ModelState.IsValid) { return(ModelState.ToJsonResult()); } var data = AcDomain.GetPlistRoleGroups(requestData); Debug.Assert(requestData.Total != null, "requestData.total != null"); return(this.JsonResult(new MiniGrid <Dictionary <string, object> > { total = requestData.Total.Value, data = data })); }
public ActionResult GetPlistRoleGroups(GetPlistRoleGroups requestData) { if (!ModelState.IsValid) { return ModelState.ToJsonResult(); } var data = AcDomain.GetPlistRoleGroups(requestData); Debug.Assert(requestData.Total != null, "requestData.total != null"); return this.JsonResult(new MiniGrid<Dictionary<string, object>> { total = requestData.Total.Value, data = data }); }
public static IQueryable<Dictionary<string, object>> GetPlistRoleGroups(this IAcDomain acDomain, GetPlistRoleGroups requestData) { RoleState role; if (!acDomain.RoleSet.TryGetRole(requestData.RoleId, out role)) { throw new ValidationException("意外的角色标识" + requestData.RoleId); } var data = new List<Dictionary<string, object>>(); foreach (var group in acDomain.GroupSet) { var roleGroup = acDomain.PrivilegeSet.FirstOrDefault(a => a.SubjectType == AcElementType.Role && a.ObjectType == AcElementType.Group && a.SubjectInstanceId == role.Id && a.ObjectInstanceId == group.Id); if (requestData.IsAssigned.HasValue) { if (requestData.IsAssigned.Value) { if (roleGroup == null) { continue; } } else { if (roleGroup != null) { continue; } } } string createBy = null; DateTime? createOn = null; Guid? createUserId = null; Guid id; bool isAssigned; if (roleGroup != null) { createBy = roleGroup.CreateBy; createOn = roleGroup.CreateOn; createUserId = roleGroup.CreateUserId; id = roleGroup.Id; isAssigned = true; } else { id = Guid.NewGuid(); isAssigned = false; } data.Add(new Dictionary<string, object> { {"CategoryCode", group.CategoryCode??string.Empty}, {"CreateBy", createBy}, {"CreateOn", createOn}, {"CreateUserId", createUserId}, {"GroupId", group.Id}, {"Id", id}, {"IsAssigned", isAssigned}, {"IsEnabled", group.IsEnabled}, {"Name", group.Name??string.Empty}, {"RoleId", role.Id}, {"SortCode", group.SortCode} }); } var pageIndex = requestData.PageIndex; var pageSize = requestData.PageSize; var queryable = data.AsQueryable(); if (!string.IsNullOrEmpty(requestData.Key)) { queryable = queryable.Where(a => a["Name"].ToString().Contains(requestData.Key) || a["CategoryCode"].ToString().Contains(requestData.Key)); } requestData.Total = queryable.Count(); if (requestData.Total > 0) { var firstRecord = queryable.First(); if (!firstRecord.Keys.Contains(requestData.SortField)) { throw new ValidationException("意外的字段" + requestData.SortField); } var sortOrder = (requestData.SortOrder ?? "asc").ToLower(); switch (sortOrder) { case "asc": queryable = queryable.OrderBy(a => a[requestData.SortField]); break; case "desc": queryable = queryable.OrderByDescending(a => a[requestData.SortField]); break; default: throw new InvalidOperationException(); } } return queryable.Skip(pageIndex * pageSize).Take(pageSize); }
public static IQueryable <Dictionary <string, object> > GetPlistRoleGroups(this IAcDomain acDomain, GetPlistRoleGroups requestData) { RoleState role; if (!acDomain.RoleSet.TryGetRole(requestData.RoleId, out role)) { throw new ValidationException("意外的角色标识" + requestData.RoleId); } var data = new List <Dictionary <string, object> >(); foreach (var group in acDomain.GroupSet) { var roleGroup = acDomain.PrivilegeSet.FirstOrDefault(a => a.SubjectType == AcElementType.Role && a.ObjectType == AcElementType.Group && a.SubjectInstanceId == role.Id && a.ObjectInstanceId == group.Id); if (requestData.IsAssigned.HasValue) { if (requestData.IsAssigned.Value) { if (roleGroup == null) { continue; } } else { if (roleGroup != null) { continue; } } } string createBy = null; DateTime?createOn = null; Guid? createUserId = null; Guid id; bool isAssigned; if (roleGroup != null) { createBy = roleGroup.CreateBy; createOn = roleGroup.CreateOn; createUserId = roleGroup.CreateUserId; id = roleGroup.Id; isAssigned = true; } else { id = Guid.NewGuid(); isAssigned = false; } data.Add(new Dictionary <string, object> { { "CategoryCode", group.CategoryCode ?? string.Empty }, { "CreateBy", createBy }, { "CreateOn", createOn }, { "CreateUserId", createUserId }, { "GroupId", group.Id }, { "Id", id }, { "IsAssigned", isAssigned }, { "IsEnabled", group.IsEnabled }, { "Name", group.Name ?? string.Empty }, { "RoleId", role.Id }, { "SortCode", group.SortCode } }); } var pageIndex = requestData.PageIndex; var pageSize = requestData.PageSize; var queryable = data.AsQueryable(); if (!string.IsNullOrEmpty(requestData.Key)) { queryable = queryable.Where(a => a["Name"].ToString().Contains(requestData.Key) || a["CategoryCode"].ToString().Contains(requestData.Key)); } requestData.Total = queryable.Count(); if (requestData.Total > 0) { var firstRecord = queryable.First(); if (!firstRecord.Keys.Contains(requestData.SortField)) { throw new ValidationException("意外的字段" + requestData.SortField); } var sortOrder = (requestData.SortOrder ?? "asc").ToLower(); switch (sortOrder) { case "asc": queryable = queryable.OrderBy(a => a[requestData.SortField]); break; case "desc": queryable = queryable.OrderByDescending(a => a[requestData.SortField]); break; default: throw new InvalidOperationException(); } } return(queryable.Skip(pageIndex * pageSize).Take(pageSize)); }