Beispiel #1
0
        public async Task <PagedList <User> > GetUsers(PageRequestUserParams pageInfo)
        {
            var users = context.Users.Include(p => p.Photos).OrderByDescending(u => u.LastActive).AsQueryable();

            users = users.Where(u => u.Id != pageInfo.UserId);
            users = users.Where(u => u.Gender == pageInfo.Gender); // that could be combined with previous line, but wanted to keep it separated to remind that 'where' predicates can be combined in chunks, very powerful stuff.
            var minDBO = DateTime.Today.AddYears(-pageInfo.MinAge);
            var maxDBO = DateTime.Today.AddYears(-pageInfo.MaxAge);

            users = users.Where(u => u.DateOfBirth <= minDBO && u.DateOfBirth >= maxDBO);

            if (!string.IsNullOrEmpty(pageInfo.OrderBy))
            {
                switch (pageInfo.OrderBy)
                {
                case "created":
                    users = users.OrderByDescending(u => u.Created);
                    break;

                default:
                    users = users.OrderByDescending(u => u.LastActive);
                    break;
                }
            }

            return(await PagedList <User> .CreateAsync(users, pageInfo.PageNumber, pageInfo.PageSize));
        }
Beispiel #2
0
        public async Task <IActionResult> GetUsers([FromQuery] PageRequestUserParams pageRequestPrms)
        {
            var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var userFromRepo  = await repo.GetUser(currentUserId);

            pageRequestPrms.UserId = currentUserId;
            if (string.IsNullOrEmpty(pageRequestPrms.Gender))
            {
                pageRequestPrms.Gender = (userFromRepo.Gender == "male" ? "female":"male");
            }


            var users = await repo.GetUsers(pageRequestPrms);

            var usersToReturn = mapper.Map <IEnumerable <UserForListDto> >(users);

            Response.AddPagination(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPages);
            return(Ok(usersToReturn));
        }