public ActionResult GetPlistPrivilegeByRoleId(GetPlistFunctionByRoleId requestData) { if (!ModelState.IsValid) { return(ModelState.ToJsonResult()); } var data = AcDomain.GetPlistPrivilegeByRoleId(requestData); Debug.Assert(requestData.Total != null, "requestData.total != null"); return(this.JsonResult(new MiniGrid <RoleAssignFunctionTr> { total = requestData.Total.Value, data = data })); }
public static IQueryable<RoleAssignFunctionTr> GetPlistPrivilegeByRoleId(this IAcDomain acDomain, GetPlistFunctionByRoleId requestData) { AppSystemState appSystem; if (!acDomain.AppSystemSet.TryGetAppSystem(requestData.AppSystemId, out appSystem)) { throw new ValidationException("意外的应用系统标识" + requestData.AppSystemId); } RoleState role; if (!acDomain.RoleSet.TryGetRole(requestData.RoleId, out role)) { throw new ValidationException("意外的角色标识" + requestData.RoleId); } if (requestData.ResourceTypeId.HasValue) { CatalogState resource; if (!acDomain.CatalogSet.TryGetCatalog(requestData.ResourceTypeId.Value, out resource)) { throw new ValidationException("意外的资源标识" + requestData.ResourceTypeId); } } var roleFunctions = acDomain.PrivilegeSet.Where(a => a.SubjectType == AcElementType.Role && a.ObjectType == AcElementType.Function).ToList(); var functions = acDomain.FunctionSet.Where(a => a.AppSystem.Id == requestData.AppSystemId && a.IsManaged); if (requestData.ResourceTypeId.HasValue) { functions = functions.Where(a => a.ResourceTypeId == requestData.ResourceTypeId.Value); } var data = new List<RoleAssignFunctionTr>(); foreach (var function in functions) { var roleFunction = roleFunctions.FirstOrDefault(a => a.SubjectInstanceId == role.Id && a.ObjectInstanceId == function.Id); if (requestData.IsAssigned.HasValue) { if (requestData.IsAssigned.Value) { if (roleFunction == null) { continue; } } else { if (roleFunction != null) { continue; } } } string createBy = null; DateTime? createOn = null; Guid? createUserId = null; Guid id; bool isAssigned; string orientation = null; string privilegeConstraint = null; if (roleFunction != null) { createBy = roleFunction.CreateBy; createOn = roleFunction.CreateOn; createUserId = roleFunction.CreateUserId; id = roleFunction.Id; isAssigned = true; orientation = roleFunction.AcContentType; privilegeConstraint = roleFunction.AcContent; } else { id = Guid.NewGuid(); isAssigned = false; } data.Add(new RoleAssignFunctionTr { AppSystemCode = appSystem.Code, AppSystemId = appSystem.Id, CreateBy = createBy, CreateOn = createOn, CreateUserId = createUserId, Description = function.Description, FunctionCode = function.Code, FunctionId = function.Id, Id = id, IsAssigned = isAssigned, AcContentType = orientation, AcContent = privilegeConstraint, ResourceCode = function.Resource.Code, ResourceTypeId = function.ResourceTypeId, ResourceName = function.Resource.Name, RoleId = requestData.RoleId, SortCode = function.SortCode }); } int pageIndex = requestData.PageIndex; int pageSize = requestData.PageSize; var queryable = data.AsQueryable(); if (!string.IsNullOrEmpty(requestData.Key)) { queryable = queryable.Where(a => a.Description.Contains(requestData.Key) || a.FunctionCode.Contains(requestData.Key)); } requestData.Total = queryable.Count(); return queryable.OrderBy(requestData.SortField + " " + requestData.SortOrder).Skip(pageIndex * pageSize).Take(pageSize); }
public ActionResult GetPlistPrivilegeByRoleId(GetPlistFunctionByRoleId requestData) { if (!ModelState.IsValid) { return ModelState.ToJsonResult(); } var data = AcDomain.GetPlistPrivilegeByRoleId(requestData); Debug.Assert(requestData.Total != null, "requestData.total != null"); return this.JsonResult(new MiniGrid<RoleAssignFunctionTr> { total = requestData.Total.Value, data = data }); }
public static IQueryable <RoleAssignFunctionTr> GetPlistPrivilegeByRoleId(this IAcDomain acDomain, GetPlistFunctionByRoleId requestData) { AppSystemState appSystem; if (!acDomain.AppSystemSet.TryGetAppSystem(requestData.AppSystemId, out appSystem)) { throw new ValidationException("意外的应用系统标识" + requestData.AppSystemId); } RoleState role; if (!acDomain.RoleSet.TryGetRole(requestData.RoleId, out role)) { throw new ValidationException("意外的角色标识" + requestData.RoleId); } if (requestData.ResourceTypeId.HasValue) { CatalogState resource; if (!acDomain.CatalogSet.TryGetCatalog(requestData.ResourceTypeId.Value, out resource)) { throw new ValidationException("意外的资源标识" + requestData.ResourceTypeId); } } var roleFunctions = acDomain.PrivilegeSet.Where(a => a.SubjectType == AcElementType.Role && a.ObjectType == AcElementType.Function).ToList(); var functions = acDomain.FunctionSet.Where(a => a.AppSystem.Id == requestData.AppSystemId && a.IsManaged); if (requestData.ResourceTypeId.HasValue) { functions = functions.Where(a => a.ResourceTypeId == requestData.ResourceTypeId.Value); } var data = new List <RoleAssignFunctionTr>(); foreach (var function in functions) { var roleFunction = roleFunctions.FirstOrDefault(a => a.SubjectInstanceId == role.Id && a.ObjectInstanceId == function.Id); if (requestData.IsAssigned.HasValue) { if (requestData.IsAssigned.Value) { if (roleFunction == null) { continue; } } else { if (roleFunction != null) { continue; } } } string createBy = null; DateTime?createOn = null; Guid? createUserId = null; Guid id; bool isAssigned; string orientation = null; string privilegeConstraint = null; if (roleFunction != null) { createBy = roleFunction.CreateBy; createOn = roleFunction.CreateOn; createUserId = roleFunction.CreateUserId; id = roleFunction.Id; isAssigned = true; orientation = roleFunction.AcContentType; privilegeConstraint = roleFunction.AcContent; } else { id = Guid.NewGuid(); isAssigned = false; } data.Add(new RoleAssignFunctionTr { AppSystemCode = appSystem.Code, AppSystemId = appSystem.Id, CreateBy = createBy, CreateOn = createOn, CreateUserId = createUserId, Description = function.Description, FunctionCode = function.Code, FunctionId = function.Id, Id = id, IsAssigned = isAssigned, AcContentType = orientation, AcContent = privilegeConstraint, ResourceCode = function.Resource.Code, ResourceTypeId = function.ResourceTypeId, ResourceName = function.Resource.Name, RoleId = requestData.RoleId, SortCode = function.SortCode }); } int pageIndex = requestData.PageIndex; int pageSize = requestData.PageSize; var queryable = data.AsQueryable(); if (!string.IsNullOrEmpty(requestData.Key)) { queryable = queryable.Where(a => a.Description.Contains(requestData.Key) || a.FunctionCode.Contains(requestData.Key)); } requestData.Total = queryable.Count(); return(queryable.OrderBy(requestData.SortField + " " + requestData.SortOrder).Skip(pageIndex * pageSize).Take(pageSize)); }