Exemplo n.º 1
0
        public async Task <IActionResult> GetUsers([FromQuery] UParams uParams)
        {
            var currentUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var userfromrepo  = await _repo.GetUser(currentUserId);

            uParams.UserId = currentUserId;
            if (string.IsNullOrEmpty(uParams.Category))
            {
                uParams.Category = userfromrepo.Category;
            }

            var users = await _repo.GetUsers(uParams);

            var userToReturn = _mapper.Map <IEnumerable <UserForListDto> >(users);

            Response.AddPagination(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPage);
            return(Ok(userToReturn));
        }
Exemplo n.º 2
0
        public async Task <PagedList <User> > GetUsers(UParams uParams)
        {
            var users = _context.Users.Include(p => p.Photos).OrderByDescending(u => u.LastActive).AsQueryable();

            users = users.Where(u => u.Id != uParams.UserId);
            // category will be implemeted
            if (uParams.likees)
            {
                var usersLikees = await GetUserLikes(uParams.UserId, uParams.likers);

                users = users.Where(x => usersLikees.Contains(x.Id));
            }
            if (uParams.likers)
            {
                var usersLikers = await GetUserLikes(uParams.UserId, uParams.likers);

                users = users.Where(x => usersLikers.Contains(x.Id));
            }
            if (uParams.MinAge != 18 || uParams.MaxAge != 99)
            {
                users = users.Where(u => u.Age >= uParams.MinAge && u.Age <= uParams.MaxAge);
            }
            if (!string.IsNullOrEmpty(uParams.OrderBy))
            {
                switch (uParams.OrderBy)
                {
                case "created":
                    users = users.OrderByDescending(u => u.Created);
                    break;

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

            return(await PagedList <User> .CreateAsync(users, uParams.PageNumber, uParams.PageSize));
        }