public async Task <ListaStron <User> > GetUsers(UserParametry userParametry) { var users = _context.Users.Include(p => p.Zdjecia) .OrderByDescending(u => u.OstatnioAktywny).AsQueryable(); users = users.Where(u => u.Id != userParametry.UserId); users = users.Where(u => u.Plec == userParametry.Plec); if (userParametry.Lubisz) { var userLajki = await GetUserPolubienia(userParametry.UserId, userParametry.Lubisz); users = users.Where(u => userLajki.Contains(u.Id)); } if (userParametry.Lubic) { var userLajkii = await GetUserPolubienia(userParametry.UserId, userParametry.Lubisz); users = users.Where(u => userLajkii.Contains(u.Id)); } if (userParametry.MinWiek != 18 || userParametry.MaxWiek != 99) { var minDob = DateTime.Today.AddYears(-userParametry.MaxWiek - 1); var maxDob = DateTime.Today.AddYears(-userParametry.MinWiek); users = users.Where(u => u.Urodziny >= minDob && u.Urodziny <= maxDob); } if (!string.IsNullOrEmpty(userParametry.OstatnioByl)) { switch (userParametry.OstatnioByl) { case "utworzony": users = users.OrderByDescending(u => u.Utworzony); break; default: users = users.OrderByDescending(u => u.OstatnioAktywny); break; } } return(await ListaStron <User> .CreateAsync(users, userParametry.NumerStrony, userParametry.RozmiarStrony)); }
public async Task <IActionResult> GetUsers([FromQuery] UserParametry userParametry) { var dowolnyUserId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); var userFromRepo = await _repo.GetUser(dowolnyUserId); userParametry.UserId = dowolnyUserId; if (string.IsNullOrEmpty(userParametry.Plec)) { userParametry.Plec = userFromRepo.Plec == "mezczyzna" ? "kobieta" : "mezczyzna"; } var users = await _repo.GetUsers(userParametry); var usersToReturn = _mapper.Map <IEnumerable <UserForListDto> >(users); Response.DodajPaginacje(users.DomyslnaStrona, users.RozmiarStrony, users.CaloscKont, users.CaloscStron); return(Ok(usersToReturn)); }