コード例 #1
0
        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));
        }
コード例 #2
0
        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)));
            }
        }
コード例 #3
0
        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));
        }