public async Task <PagedList <User> > GetUsers(UserParams userParams) { var users = _context.Users.Include(p => p.Photos); return(await PagedList <User> .CreateAysnc(users, userParams.PageNumber, userParams.PageSize)); }
public async Task <PagedList <User> > GetUsersAsync(UserParams userParams) { var query = _db.Users .Include(i => i.Photos) .Include(i => i.Likers) .Include(i => i.Likees) .AsQueryable(); query = query.Where(w => (w.Gender == userParams.Gender || userParams.Gender == null) && w.Id != userParams.UserId); if (userParams.Likers) { query = query.Where(w => w.Likees.Any(a => a.LikeeId == userParams.UserId)); } if (userParams.Likees) { query = query.Where(w => w.Likers.Any(a => a.LikerId == userParams.UserId)); } DateTime?minDob = null; DateTime?maxDob = null; if (userParams.MaxAge is int max) { minDob = DateTime.Today.AddYears(-max - 1); } if (userParams.MinAge is int min) { maxDob = DateTime.Today.AddYears(-min); } query = query.Where(w => (w.DateOfBirth >= minDob || minDob == null) && (w.DateOfBirth <= maxDob || maxDob == null)); // Još neki od slučajeva sa pattern matchingom //var minDob2 = userParams.MaxAge !=null ? DateTime.Today.AddYears((int)-userParams.MaxAge - 1) : (DateTime?)null; //var minDob3 = userParams.MaxAge is int maxx // ? DateTime.Today.AddYears((int) -userParams.MaxAge - 1) // : (DateTime?) null; if (!string.IsNullOrEmpty(userParams.OrderBy)) { switch (userParams.OrderBy) { case "created": query = query.OrderBy(o => o.Created); break; case "createdDesc": query = query.OrderByDescending(o => o.Created); break; case "age": query = query.OrderBy(o => o.DateOfBirth); break; case "ageDesc": query = query.OrderByDescending(o => o.DateOfBirth); break; default: query = query.OrderByDescending(o => o.LastActive); break; } } var pagedList = await PagedList <User> .CreateAsync(query, userParams.PageNumber, userParams.PageSize); return(pagedList); }