Exemplo n.º 1
0
        public async Task <PagedList <User> > GetUsers(PagenationParams pagenationParams)
        {
            // IQueryable<User> users = _context.Users.Include(x => x.Photos);
            var users = _context.Users.Include(x => x.Photos).OrderByDescending(u => u.LastActive).AsQueryable();

            users = users.Where(u => u.Id != pagenationParams.UserId)
                    .Where(u => u.Gender == pagenationParams.Gender);
            // Filter by Likers

            if (pagenationParams.likers)
            {
                var userLikers = await GetUserLikes(pagenationParams.UserId, pagenationParams.likers);

                users = users.Where(u => userLikers.Contains(u.Id));
            }
            // Filter by Likees

            if (pagenationParams.likees)
            {
                var userLikees = await GetUserLikes(pagenationParams.UserId, pagenationParams.likers);

                users = users.Where(u => userLikees.Contains(u.Id));
            }
            //  Filter by age
            if (pagenationParams.MinAge != 18 || pagenationParams.MaxAge != 99)
            {
                // convert maxAge && minAge to DateTime
                var minDate = DateTime.Today.AddYears(-pagenationParams.MaxAge - 1);
                var maxDate = DateTime.Today.AddYears(-pagenationParams.MinAge);
                users = users.Where(u => u.DateOfBirth >= minDate && u.DateOfBirth <= maxDate);
            }

            // FilterBy LastActive or Created
            if (!string.IsNullOrEmpty(pagenationParams.OrederBy))
            {
                switch (pagenationParams.OrederBy)
                {
                case "created":
                    users = users.OrderByDescending(u => u.Created);
                    break;

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

            return(await PagedList <User> .CreateAsync(users, pagenationParams.PageNumber, pagenationParams.PageSize));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> GetUsers([FromQuery] PagenationParams pagenationParams)
        {
            var userId       = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);
            var userFromRepo = await _repo.GetUser(userId);

            pagenationParams.UserId = userId;
            if (string.IsNullOrEmpty(pagenationParams.Gender))
            {
                pagenationParams.Gender = userFromRepo.Gender == "رجل" ? "إمرأة" : "رجل";
            }
            var users = await _repo.GetUsers(pagenationParams);

            Response.AddApplicationPagenation(users.CurrentPage, users.PageSize, users.TotalCount, users.TotlePages);
            var UsersToReturn = _mapper.Map <IEnumerable <UserForListDto> >(users);

            return(Ok(UsersToReturn));
        }