Esempio n. 1
0
        public async Task <ActionResult <UsersWithRolesToReturnDto> > GetUsersList([FromQuery] UserSpecParams userParams)
        {
            int skip  = userParams.PageSize * (userParams.PageIndex - 1);
            int take  = userParams.PageSize;
            var query = _context.Users.AsQueryable();

            if (!string.IsNullOrEmpty(userParams.Search))
            {
                query = query.Where(p =>
                                    p.UserName.ToLower().Contains(userParams.Search) ||
                                    p.DisplayName.ToLower().Contains(userParams.Search));
            }

            if (!string.IsNullOrEmpty(userParams.Sort))
            {
                switch (userParams.Sort)
                {
                case "usernameAsc":
                    query = query.OrderBy(p => p.UserName);
                    break;

                case "usernameDesc":
                    query = query.OrderByDescending(p => p.UserName);
                    break;

                default:
                    query = query.OrderBy(p => p.DisplayName);
                    break;
                }
            }

            query = query.Skip(skip).Take(take);

            var usersList = await query.ToListAsync();

            foreach (var perUser in usersList)
            {
                perUser.IsLockedOut = await CheckUserIsLockedOut(perUser);

                perUser.RolesNames = await GetRolesNameListBySelectedUser(perUser);
            }

            var totalItems = await _context.Users.CountAsync();

            var data = _mapper
                       .Map <IReadOnlyList <AppUser>, IReadOnlyList <UsersWithRolesToReturnDto> >(usersList);

            return(Ok(new Pagination <UsersWithRolesToReturnDto>(userParams.PageIndex, userParams.PageSize, totalItems, data)));
        }
Esempio n. 2
0
        public async Task <ActionResult <UserDto> > GetListUser([FromQuery] UserSpecParams userParams)
        {
            var totalItem = await _userManager.Users.CountAsync();

            var user = await _userManager.Users.Where(x => string.IsNullOrEmpty(userParams.Search) || x.Email.ToLower().Contains(userParams.Search))
                       .Skip(userParams.PageSize * (userParams.PageIndex - 1))
                       .Take(userParams.PageSize).ToListAsync();

            var data = _mapper.Map <IReadOnlyList <AppUser>, IReadOnlyList <UserDto> >(user);

            return(Ok(new Pagination <UserDto>(userParams.PageIndex, userParams.PageSize, user.Count(), data)));
            // return new UserDto
            // {
            //     Email = user.Email,
            //     DisplayName = user.DisplayName,
            //     FirstName = user.FirstName,
            //     LastName = user.LastName,
            //     Birthday = user.Birthday,
            //     Gender = user.Gender,
            //     Phone = user.Phone,
            // };
        }
        public async Task <ActionResult <Pagination <UserToReturnDto> > > GetAllWithSpec([FromQuery] UserSpecParams userParams)
        {
            var spec       = new UserWithDepartmentSpecification(userParams);
            var countSpec  = new UserWithDepartmentCountSpecification(userParams);
            var totalItems = await _userRepo.CountAsync(countSpec);

            // var data = await _userRepo.GetListWithSpec(spec);

            var data = _mapper.Map <IReadOnlyList <User>, IReadOnlyList <UserToReturnDto> >(await _userRepo.GetListWithSpec(spec));

            // return Ok(await _depRepo.GetListWithSpec(spec));
            return(Ok(new Pagination <UserToReturnDto>(userParams.PageIndex, userParams.PageSize, totalItems, data)));
        }