public async Task <IActionResult> GetUsers([FromQuery] UsersParems userParem) { var userId = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value); userParem.Userid = userId; var userFromRepo = await _repo.GetUser(userId); if (string.IsNullOrEmpty(userParem.Gender)) { userParem.Gender = userFromRepo.Gender == "male" ? "female" : "male"; } var users = await _repo.GetUsers(userParem); var UserReturn = _mapper.Map <IEnumerable <UserForListDto> > (users); Response.AddPagintainHeader(users.CurrentPage, users.PageSize, users.TotalPages, users.TotalCount); return(Ok(UserReturn)); }
public async Task <PageList <User> > GetUsers(UsersParems usersParems) { var users = _Repo.Users.Include(m => m.Photos).OrderByDescending(p => p.LastActive).AsQueryable(); if (usersParems.MinAge != 18 || usersParems.MaxAge != 99) { var minDto = DateTime.Today.AddYears(-usersParems.MaxAge - 1); var maxDto = DateTime.Today.AddYears(-usersParems.MinAge); users = users.Where(u => u.DateOfBirth >= minDto && u.DateOfBirth <= maxDto); } if (!string.IsNullOrEmpty(usersParems.OrderBy)) { switch (usersParems.OrderBy) { case "Created": users = users.OrderByDescending(p => p.Created); break; default: users = users.OrderByDescending(p => p.LastActive); break; } } users = users.Where(u => u.Id != usersParems.Userid); users = users.Where(u => u.Gender == usersParems.Gender); if (usersParems.Likees) { var listUserLikees = await GetUserLike(usersParems.Userid, usersParems.Likees); users = users.Where(i => listUserLikees.Contains(i.Id)); } if (usersParems.Likers) { var listUserLikers = await GetUserLike(usersParems.Userid, usersParems.Likees); users = users.Where(i => listUserLikers.Contains(i.Id)); } return(await PageList <User> .CreateAsync(users, usersParems.PageSize, usersParems.PageNumber)); }