public async Task <IActionResult> Index(KeywordPagedQuery input) { var queryable = _dbContext.Roles.AsQueryable(); if (!string.IsNullOrWhiteSpace(input.Q)) { queryable = queryable.Where( u => $"{u.Name}".Contains(input.Q) || $"{u.Description}".Contains(input.Q)); } var queryResult = await queryable.OrderBy(x => x.CreationTime).AsNoTracking() .ToPagedListAsync(input.GetPage(), input.GetSize()); var itemViewModels = new List <ListRoleItemViewModel>(); foreach (var role in queryResult) { var dto = _mapper.Map <ListRoleItemViewModel>(role); itemViewModels.Add(dto); } var pagedList = new StaticPagedList <ListRoleItemViewModel>(itemViewModels, queryResult.PageNumber, queryResult.PageSize, queryResult.TotalItemCount); var viewModel = new ListRoleViewModel { Roles = pagedList, Keyword = input.Q }; return(View(viewModel)); }
public async Task <IActionResult> SearchAsync([FromQuery] KeywordPagedQuery input) { PagedQueryResult <User> queryResult; if (string.IsNullOrWhiteSpace(input.Q)) { queryResult = await _userManager.Users.PagedQueryAsync(input); } else { queryResult = await _userManager.Users.PagedQueryAsync(input, u => u.Email.Contains(input.Q) || u.UserName.Contains(input.Q) || u.PhoneNumber.Contains(input.Q) || // Comment: 如果不拼接成字符串报空引用错, Lewis Zou, 2018-12-10 $"{u.LastName}{u.FirstName}".Contains(input.Q) || $"{u.FirstName}{u.LastName}".Contains(input.Q) ); } if (User.IsInRole(AdminConsts.AdminName)) { var userDtos = new List <UserOutputDto>(); foreach (var user in queryResult.Result) { var dto = Mapper.Map <UserOutputDto>(user); dto.Roles = string.Join("; ", await _userManager.GetRolesAsync(user)); userDtos.Add(dto); } return(new ApiResult(queryResult.ToResult(userDtos))); } else { var userDtos = new List <dynamic>(); foreach (var user in queryResult.Result) { userDtos.Add(new { user.Id, Name = $"{user.FirstName} {user.LastName}", user.Email, user.PhoneNumber, user.Title }); } return(new ApiResult(queryResult.ToResult(userDtos))); } }
public async Task <IActionResult> Index(KeywordPagedQuery input) { var queryable = _userManager.Users; if (!string.IsNullOrWhiteSpace(input.Q)) { queryable = queryable.Where( u => $"{u.Email}".Contains(input.Q) || $"{u.UserName}".Contains(input.Q) || $"{u.PhoneNumber}".Contains(input.Q) || // Comment: 如果不拼接成字符串报空引用错, Lewis Zou, 2018-12-10 $"{u.FamilyName}{u.GivenName}".Contains(input.Q) || $"{u.GivenName}{u.FamilyName}".Contains(input.Q) ); } var queryResult = await queryable.OrderBy(x => x.CreationTime).AsNoTracking() .ToPagedListAsync(input.GetPage(), input.GetSize()); var userItemViewModels = new List <ListUserItemViewModel>(); foreach (var user in queryResult) { var dto = _mapper.Map <ListUserItemViewModel>(user); dto.IsLockedOut = await _userManager.IsLockedOutAsync(user); //TODO: 需要优化成一次查询 dto.Roles = string.Join("; ", await _userManager.GetRolesAsync(user)); userItemViewModels.Add(dto); } var pagedList = new StaticPagedList <ListUserItemViewModel>(userItemViewModels, queryResult.PageNumber, queryResult.PageSize, queryResult.TotalItemCount); var viewModel = new ListUserViewModel { Users = pagedList, Keyword = input.Q }; return(View(viewModel)); }