public async Task <PagedList <User> > GetUsers(UserPrams userPrams) { var users = _context.Users.Include(i => i.Photos).OrderByDescending(p => p.LastActive).AsQueryable(); users = users.Where(u => u.Id != userPrams.UserId); users = users.Where(u => u.Gender == userPrams.Gender); if (userPrams.MinAge != 18 || userPrams.MaxAge != 99) { var minDob = DateTime.Today.AddYears(-userPrams.MaxAge - 1); var maxDob = DateTime.Today.AddYears(-userPrams.MinAge); users = users.Where(u => u.DateOfBirth >= minDob && u.DateOfBirth <= maxDob); } if (!string.IsNullOrEmpty(userPrams.OrderBy)) { switch (userPrams.OrderBy) { case "created": users = users.OrderByDescending(p => p.Created); break; default: users = users.OrderByDescending(p => p.LastActive); break; } } return(await PagedList <User> .CreateAsync(users, userPrams.PageNumber, userPrams.PageSize)); }
public async Task <PageList <User> > GetUsers(UserPrams prams) { var users = _context.Users.Include(p => p.Photos).OrderBy(u => u.LastActive).AsQueryable(); users = users.Where(u => u.Id != prams.Id); users = users.Where(u => u.Gender == prams.Gender); if (prams.Liker) { var likers = await GetUserLike(prams.Id, prams.Liker); users = users.Where(u => likers.Contains(u.Id)); } if (prams.Likee) { var likees = await GetUserLike(prams.Id, prams.Liker); users = users.Where(u => likees.Contains(u.Id)); } if (prams.MinAge != 18 || prams.MaxAge != 99) { var minDob = DateTime.Now.AddYears(-(prams.MaxAge + 1)); var maxDob = DateTime.Now.AddYears(-prams.MinAge); users = users.Where(u => u.DateOfBirth >= minDob && u.DateOfBirth <= maxDob); } if (!string.IsNullOrEmpty(prams.OrderBy)) { switch (prams.OrderBy) { case "created": users = users.OrderBy(u => u.Created); break; default: users = users.OrderBy(u => u.LastActive); break; } } return(await PageList <User> .CreateAsync(users, prams.PageNumber, prams.pageSize)); }
public async Task <ActionResult <IEnumerable <MemberDto> > > GetUsers([FromQuery] UserPrams userPrams) { var gender = await _unitOfWork.UserRepository.GetUserGender(User.GetUsername()); userPrams.CurrentUsername = User.GetUsername(); if (string.IsNullOrEmpty(userPrams.Gender)) { userPrams.Gender = gender; } var users = await _unitOfWork.UserRepository.GetMembersAsync(userPrams); // var usersToReturn = _mapper.Map<IEnumerable<MemberDto>>(users); Response.AddPaginationHeader(users.CurrentPage, users.TotalPages, users.TotalCount, users.PageSize); return(Ok(users)); }
public async Task <IActionResult> getUsers([FromQuery] UserPrams prams) { prams.Id = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var userFromRepo = await _repo.GetUser(prams.Id); if (string.IsNullOrEmpty(prams.Gender)) { prams.Gender = userFromRepo.Gender == "male" ? "female" : "male"; } var users = await _repo.GetUsers(prams); var usersForReturn = _mapper.Map <IEnumerable <UsersForListDto> >(users); Response.AddPagination(users.TotalCount, users.TotalPages, users.PageSize, users.CurrentPage); return(Ok(usersForReturn)); }
public async Task <PageList <MemberDto> > GetMembersAsync(UserPrams userPrams) { var query = _context.Users.AsQueryable(); query = query.Where(u => u.UserName != userPrams.CurrentUsername); query = query.Where(u => u.Gender == userPrams.Gender); var minDob = DateTime.Today.AddYears(-userPrams.MaxAge - 1); var maxDob = DateTime.Today.AddYears(-userPrams.MinAge); query = query.Where(u => u.BirthDate >= minDob && u.BirthDate <= maxDob); query = userPrams.OrderBy switch { "created" => query.OrderByDescending(u => u.Created), _ => query.OrderByDescending(u => u.LastActive) }; // .AsNoTracking(); return(await PageList <MemberDto> .CreateAsync(query .ProjectTo <MemberDto>(_mapper.ConfigurationProvider).AsNoTracking() , userPrams.PageNumber, userPrams.PageSize)); }