public PageData <EntityRoleOutputDto> Read(PageRequest request) { Expression <Func <EntityRole, bool> > predicate = _filterService.GetExpression <EntityRole>(request.FilterGroup); if (request.PageCondition.SortConditions.Length == 0) { request.PageCondition.SortConditions = new[] { new SortCondition("RoleId"), new SortCondition("EntityId"), new SortCondition("Operation") }; } RoleManager <Role> roleManager = HttpContext.RequestServices.GetService <RoleManager <Role> >(); Func <EntityRole, bool> updateFunc = _filterService.GetDataFilterExpression <EntityRole>(null, DataAuthOperation.Update).Compile(); Func <EntityRole, bool> deleteFunc = _filterService.GetDataFilterExpression <EntityRole>(null, DataAuthOperation.Delete).Compile(); var page = _securityManager.EntityRoles.ToPage(predicate, request.PageCondition, m => new { D = m, RoleName = roleManager.Roles.First(n => n.Id == m.RoleId).Name, EntityName = m.EntityInfo.Name, EntityType = m.EntityInfo.TypeName, }).ToPageResult(data => data.Select(m => new EntityRoleOutputDto(m.D) { RoleName = m.RoleName, EntityName = m.EntityName, EntityType = m.EntityType, Updatable = updateFunc(m.D), Deletable = deleteFunc(m.D) }).ToArray()); return(page.ToPageData()); }
public PageData <UserOutputDto> Read(PageRequest request) { Check.NotNull(request, nameof(request)); IFunction function = this.GetExecuteFunction(); Func <User, bool> updateFunc = _filterService.GetDataFilterExpression <User>(null, DataAuthOperation.Update).Compile(); Func <User, bool> deleteFunc = _filterService.GetDataFilterExpression <User>(null, DataAuthOperation.Delete).Compile(); Expression <Func <User, bool> > predicate = _filterService.GetExpression <User>(request.FilterGroup); //查询某一角色的所有用户 //var roleId = request.FilterGroup.Rules.FirstOrDefault(m => m.Field == "RoleId")?.CastTo(0); //if (roleId != 0) //{ // predicate = predicate.And(m => m.UserRoles.Any(n => n.RoleId == roleId)); //} var page = _userManager.Users.ToPage(predicate, request.PageCondition, m => new { D = m, Roles = m.UserRoles.Select(n => n.Role.Name) }).ToPageResult(data => data.Select(m => new UserOutputDto(m.D) { Roles = m.Roles.ToArray(), Updatable = updateFunc(m.D), Deletable = deleteFunc(m.D) }).ToArray()); return(page.ToPageData()); }
public PageData<UserOutputDto> Read(PageRequest request) { Check.NotNull(request, nameof(request)); IFunction function = this.GetExecuteFunction(); Func<User, bool> updateFunc = _filterService.GetDataFilterExpression<User>(null, DataAuthOperation.Update).Compile(); Func<User, bool> deleteFunc = _filterService.GetDataFilterExpression<User>(null, DataAuthOperation.Delete).Compile(); Expression<Func<User, bool>> predicate = _filterService.GetExpression<User>(request.FilterGroup); var page = _cacheService.ToPageCache(_userManager.Users, predicate, request.PageCondition, m => new { D = m, Roles = m.UserRoles.Select(n => n.Role.Name) }, function).ToPageResult(data => data.Select(m => new UserOutputDto(m.D) { Roles = m.Roles.ToArray(), Updatable = updateFunc(m.D), Deletable = deleteFunc(m.D) }).ToArray()); return page.ToPageData(); }
public AjaxResult Read(PageRequest request) { Expression <Func <UserRole, bool> > predicate = _filterService.GetExpression <UserRole>(request.FilterGroup); Func <UserRole, bool> updateFunc = _filterService.GetDataFilterExpression <UserRole>(null, DataAuthOperation.Update).Compile(); Func <UserRole, bool> deleteFunc = _filterService.GetDataFilterExpression <UserRole>(null, DataAuthOperation.Delete).Compile(); PageResult <UserRoleOutputDto> page = _identityContract.UserRoles.ToPage(predicate, request.PageCondition, m => new { D = m, UserName = m.User.UserName, RoleName = m.Role.Name, }).ToPageResult(data => data.Select(m => new UserRoleOutputDto(m.D) { UserName = m.UserName, RoleName = m.RoleName, Updatable = updateFunc(m.D), Deletable = deleteFunc(m.D) }).ToArray()); return(new AjaxResult("数据读取成功", AjaxResultType.Success, page.ToPageData())); }
public PageData <UserRoleOutputDto> Read(PageRequest request) { Expression <Func <UserRole, bool> > predicate = _filterService.GetExpression <UserRole>(request.FilterGroup); Func <UserRole, bool> updateFunc = _filterService.GetDataFilterExpression <UserRole>(null, DataAuthOperation.Update).Compile(); Func <UserRole, bool> deleteFunc = _filterService.GetDataFilterExpression <UserRole>(null, DataAuthOperation.Delete).Compile(); PageResult <UserRoleOutputDto> page = _identityContract.UserRoles.ToPage(predicate, request.PageCondition, m => new { D = m, UserName = _identityContract.Users.Where(n => n.Id == m.UserId).Select(n => n.UserName).FirstOrDefault(), RoleName = _identityContract.Roles.Where(n => n.Id == m.RoleId).Select(n => n.Name).FirstOrDefault() }).ToPageResult(data => data.Select(m => new UserRoleOutputDto(m.D) { UserName = m.UserName, RoleName = m.RoleName, Updatable = updateFunc(m.D), Deletable = deleteFunc(m.D) }).ToArray()); return(page.ToPageData()); }
public PageData <UserOutputDto> Read(PageRequest request) { Check.NotNull(request, nameof(request)); IFunction function = this.GetExecuteFunction(); Func <User, bool> updateFunc = _filterService.GetDataFilterExpression <User>(null, DataAuthOperation.Update).Compile(); Func <User, bool> deleteFunc = _filterService.GetDataFilterExpression <User>(null, DataAuthOperation.Delete).Compile(); Expression <Func <User, bool> > predicate = _filterService.GetExpression <User>(request.FilterGroup); var page = _cacheService.ToPageCache(_userManager.Users, predicate, request.PageCondition, m => new { D = m, Roles = _identityContract.UserRoles.Where(n => !n.IsLocked && n.UserId == m.Id) .SelectMany(n => _identityContract.Roles.Where(o => o.Id == n.RoleId).Select(o => o.Name)).Distinct().ToArray() }, function).ToPageResult(data => data.Select(m => new UserOutputDto(m.D) { Roles = m.Roles, Updatable = updateFunc(m.D), Deletable = deleteFunc(m.D) }).ToArray()); return(page.ToPageData()); }
/// <summary> /// 将数据源映射为指定<typeparamref name="TOutputDto"/>的集合, /// 并验证数据的<see cref="DataAuthOperation.Update"/>,<see cref="DataAuthOperation.Delete"/>数据权限状态 /// </summary> /// <param name="source">数据源</param> /// <param name="getKey">是否应用于获取缓存键时</param> public static IQueryable <TOutputDto> ToOutput <TEntity, TOutputDto>(this IQueryable <TEntity> source, bool getKey = false) { if (!typeof(TOutputDto).IsBaseOn <IDataAuthEnabled>() || getKey) { return(MapperExtensions.ToOutput <TEntity, TOutputDto>(source)); } List <TEntity> entities = source.ToList(); List <TOutputDto> dtos = new List <TOutputDto>(); IFilterService filterService = ServiceLocator.Instance.GetService <IFilterService>(); Func <TEntity, bool> updateFunc = filterService.GetDataFilterExpression <TEntity>(null, DataAuthOperation.Update).Compile(); Func <TEntity, bool> deleteFunc = filterService.GetDataFilterExpression <TEntity>(null, DataAuthOperation.Delete).Compile(); foreach (TEntity entity in entities) { TOutputDto dto = entity.MapTo <TOutputDto>(); IDataAuthEnabled dto2 = (IDataAuthEnabled)dto; dto2.Updatable = updateFunc(entity); dto2.Deletable = deleteFunc(entity); dtos.Add(dto); } return(dtos.AsQueryable()); }