public async Task <PagedLists <MemberDto> > GetMembersAsync(UserParams userParams) { var query = _context.Users.AsQueryable(); query = query.Where(u => u.Name != userParams.CurrentUsername); query = query.Where(u => u.Gender == userParams.Gender); var minDob = DateTime.Today.AddYears(-userParams.MaxAge - 1); var maxdob = DateTime.Today.AddYears(-userParams.MinAge); query = query.Where(u => u.DateOfBirth >= minDob && u.DateOfBirth <= maxdob); //.ProjectTo<MemberDto>(_mapper.ConfigurationProvider) //.AsNoTracking() //.AsQueryable(); return(await PagedLists <MemberDto> .CreateAsync(query.ProjectTo <MemberDto>( _mapper.ConfigurationProvider).AsNoTracking(), userParams.PageNumber, userParams.PageSize)); }
public async Task <PagedLists <User> > GetUsers(UserParams userParams) { var users = _context.Users.Include(p => p.Photos).OrderByDescending(x => x.LastActive).Where(x => x.Gender == userParams.Gender); users = users.Where(x => x.Id != userParams.UserId); if (userParams.Likers) { var userLikers = await GetUserLikes(userParams.UserId, userParams.Likers); users = users.Where(u => userLikers.Contains(u.Id)); } if (userParams.Likees) { var userLikers = await GetUserLikes(userParams.UserId, userParams.Likers); users = users.Where(u => userLikers.Contains(u.Id)); } if (userParams.MinAge != 18 || userParams.MaxAge != 99) { users = users.Where(x => x.DateOfBirth.CalculateAge() >= userParams.MinAge && x.DateOfBirth.CalculateAge() <= userParams.MaxAge); } if (!string.IsNullOrEmpty(userParams.OrderBy)) { switch (userParams.OrderBy) { case "created": users = users.OrderByDescending(u => u.Created); break; default: users = users.OrderByDescending(u => u.LastActive); break; } } return(await PagedLists <User> .CreateAsync(users, userParams.PageNumber, userParams.pageSize)); }