public async Task<PagedList<AppUser>> GetUsers(RequestQueryUserParams userParams) { var users = _context.Users .Where(u => u.Id != userParams.UserId); if (!string.IsNullOrEmpty(userParams.Gender)) { users = users.Where(u => u.Gender == userParams.Gender); } if (userParams.Likers || userParams.Likees) { var currentUser = await GetCurrentUser(); users = users.Where(u => currentUser .GetUserLikesExt(userParams.Likers) .Contains(u.Id)); // .Select(x => ) } if (userParams.MinAge != 18 || userParams.MaxAge != 99) { var minDateOfBirth = DateTime.Today.AddYears(-userParams.MaxAge - 1); var maxDateOfBirth = DateTime.Today.AddYears(-userParams.MinAge); users = users.Where(u => u.DateOfBirth >= minDateOfBirth && u.DateOfBirth <= maxDateOfBirth); } if (!string.IsNullOrEmpty(userParams.OrderBy)) { switch (userParams.OrderBy) { case "created": users = users.OrderByDescending(u => u.Created); break; case "lastActive": users = users.OrderByDescending(u => u.LastActive); break; default: break; } } return await PagedList<AppUser> .CreateAsync(users, userParams.PageNumber, userParams.PageSize); }
public async Task <IActionResult> GetUsers([FromQuery] RequestQueryUserParams userParams) { var currentUser = await _usersRepository.GetCurrentUser(); if (currentUser == null) { return(Unauthorized()); } userParams.UserId = currentUser.Id; var users = await _usersRepository.GetUsers(userParams); if (users == null) { return(BadRequest()); } var usersToReturn = _mapper.Map <IEnumerable <UserForListDto> >(users); Response.AddPagination(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPages); return(Ok(usersToReturn)); }