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)); }
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)); }