Ejemplo n.º 1
0
        public async Task <PageList <User> > GetUsers(UserParms userParms)
        {
            var users = _context.Users.Include(p => p.Photos).OrderByDescending(u => u.LastActive).AsQueryable();

            users = users.Where(u => u.Id != userParms.UserId);

            users = users.Where(u => u.Gender == userParms.Gender);

            if (userParms.Likers)
            {
                var userLiker = await GetUserLikes(userParms.UserId, userParms.Likers);

                users = users.Where(x => userLiker.Contains(x.Id));
            }

            if (userParms.Likees)
            {
                var userLikees = await GetUserLikes(userParms.UserId, userParms.Likers);

                var lst = userLikees.ToList();
                users = users.Where(x => userLikees.Contains(x.Id));
            }

            if (userParms.MinAge != 18 || userParms.MaxAge != 99)
            {
                var minDob = DateTime.Today.AddYears(-userParms.MaxAge - 1);
                var maxDob = DateTime.Today.AddYears(-userParms.MinAge);
                users = users.Where(u => u.DateOfBirth >= minDob && u.DateOfBirth <= maxDob);
            }

            if (!string.IsNullOrEmpty(userParms.OrderBy))
            {
                switch (userParms.OrderBy)
                {
                case "created":
                    users = users.OrderBy(u => u.Created);
                    break;

                default:
                    users = users.OrderByDescending(u => u.LastActive);
                    break;
                }
            }

            return(await PageList <User> .CreateAsync(users, userParms.PageNumber, userParms.PageSize));
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> GetUsers([FromQuery] UserParms userParms)
        {
            var currentUserid = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var userFromRepo  = await _repo.GetUser(currentUserid);

            userParms.UserId = currentUserid;

            if (string.IsNullOrEmpty(userParms.Gender))
            {
                userParms.Gender = userFromRepo.Gender == "male" ? "female" : "male";
            }

            var users = await _repo.GetUsers(userParms);

            var usesToReturn = _mapper.Map <IEnumerable <UserForListsDto> > (users);

            Response.AddPagination(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPage);

            return(Ok(usesToReturn));
        }