Beispiel #1
0
        public async Task <AppSrvResult <PageModelDto <UserDto> > > GetPagedAsync(UserSearchPagedDto search)
        {
            Expression <Func <SysUser, bool> > whereCondition = x => true;

            if (search.Account.IsNotNullOrWhiteSpace())
            {
                whereCondition = whereCondition.And(x => x.Account.Contains(search.Account));
            }

            if (search.Name.IsNotNullOrWhiteSpace())
            {
                whereCondition = whereCondition.And(x => x.Name.Contains(search.Name));
            }

            var pagedModel = await _userRepository.PagedAsync(search.PageIndex, search.PageSize, whereCondition, x => x.Id, false);

            var pageModelDto = _mapper.Map <PageModelDto <UserDto> >(pagedModel);

            pageModelDto.XData = await _deptAppService.GetSimpleListAsync();

            if (pageModelDto.RowsCount > 0)
            {
                var deptIds = pageModelDto.Data.Where(d => d.DeptId != null).Select(d => d.DeptId).Distinct().ToList();
                //var depts = await _deptRepository.SelectAsync(d => new { d.Id, d.FullName }, x => deptIds.Contains(x.Id));
                var depts = (await _deptAppService.GetAllFromCacheAsync())
                            .Where(x => deptIds.Contains(x.Id))
                            .Select(d => new { d.Id, d.FullName });
                //var roles = await _roleRepository.SelectAsync(r => new { r.Id, r.Name }, x => true);
                var roles = (await _roleAppService.GetAllFromCacheAsync())
                            .Select(r => new { r.Id, r.Name });

                foreach (var user in pageModelDto.Data)
                {
                    user.DeptName = depts.FirstOrDefault(x => x.Id == user.DeptId)?.FullName;
                    var roleIds = string.IsNullOrWhiteSpace(user.RoleIds)
                        ? new List <long>()
                        : user.RoleIds.Split(',', StringSplitOptions.RemoveEmptyEntries).Select(x => long.Parse(x))
                    ;
                    user.RoleNames = string.Join(',', roles.Where(x => roleIds.Contains(x.Id)).Select(x => x.Name));
                }
            }

            return(pageModelDto);
        }
Beispiel #2
0
 public async Task <ActionResult <PageModelDto <UserDto> > > GetPagedAsync([FromQuery] UserSearchPagedDto search)
 {
     return(Result(await _userService.GetPagedAsync(search)));
 }