Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
        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));
        }