public async Task <ActionResult <List <UserListResponse> > > Get([FromQuery] RequestForUserList request) { var id = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); request.UserId = id; var envelope = await _serv.GetAll(request); Response.AddPaginationHeaders(envelope.PaginationHeaders); return(envelope.Response); }
public async Task <PaginatedList <User> > GetAll(RequestForUserList request) { var users = _context.Users .Include(u => u.Photos) .Include(l => l.Likers) .AsQueryable(); users = users.Where(u => u.Id != request.UserId); users = users.Where(u => u.Gender == request.Gender); if (request.MinAge > 0) { var maxDOB = DateTime.Now.AddYears(-request.MinAge); users = users.Where(u => u.DateOfBirth <= maxDOB); } if (request.MaxAge > 0) { var minDOB = DateTime.Now.AddYears(-request.MaxAge - 1); users = users.Where(u => u.DateOfBirth >= minDOB); } if (request.Matches) { users = users.Where(u => u.Likers.Any(l => l.LikerId == request.UserId) && u.Likees.Any(l => l.LikeeId == request.UserId)); } if (request.Likees) { users = users.Where(u => u.Likers.Any(l => l.LikerId == request.UserId)); } if (request.Likers) { users = users.Where(u => u.Likees.Any(l => l.LikeeId == request.UserId)); } switch (request.SortBy) { case UserSortColumns.LastActive: users = users.CustomOrderBy(u => u.LastActive, request.SortOrder); break; default: users = users.CustomOrderBy(u => u.Created, request.SortOrder); break; } return(await PaginatedList <User> .CreateAsync(users, request.Page, request.PerPage)); }
public async Task <PaginatedResponseEnvelope <UserListResponse> > GetAll(RequestForUserList request) { if (string.IsNullOrEmpty(request.Gender)) { var user = await _repo.Get(request.UserId); request.Gender = user.Gender == "male" ? "female" : "male"; } var users = await _repo.GetAll(request); var response = _mapper.Map <List <UserListResponse> >(users); return(new PaginatedResponseEnvelope <UserListResponse> { Response = response, PaginationHeaders = _mapper.Map <PaginationHeaders>(users) }); }