public async Task <PagedLists <MemberDto> > GetMembersAsync(UserParams userParams)
        {
            var query = _context.Users.AsQueryable();

            query = query.Where(u => u.Name != userParams.CurrentUsername);
            query = query.Where(u => u.Gender == userParams.Gender);

            var minDob = DateTime.Today.AddYears(-userParams.MaxAge - 1);
            var maxdob = DateTime.Today.AddYears(-userParams.MinAge);

            query = query.Where(u => u.DateOfBirth >= minDob && u.DateOfBirth <= maxdob);
            //.ProjectTo<MemberDto>(_mapper.ConfigurationProvider)
            //.AsNoTracking()
            //.AsQueryable();

            return(await PagedLists <MemberDto> .CreateAsync(query.ProjectTo <MemberDto>(
                                                                 _mapper.ConfigurationProvider).AsNoTracking(),
                                                             userParams.PageNumber, userParams.PageSize));
        }
Example #2
0
        public async Task <PagedLists <User> > GetUsers(UserParams userParams)
        {
            var users = _context.Users.Include(p => p.Photos).OrderByDescending(x => x.LastActive).Where(x => x.Gender == userParams.Gender);

            users = users.Where(x => x.Id != userParams.UserId);

            if (userParams.Likers)
            {
                var userLikers = await GetUserLikes(userParams.UserId, userParams.Likers);

                users = users.Where(u => userLikers.Contains(u.Id));
            }
            if (userParams.Likees)
            {
                var userLikers = await GetUserLikes(userParams.UserId, userParams.Likers);

                users = users.Where(u => userLikers.Contains(u.Id));
            }
            if (userParams.MinAge != 18 || userParams.MaxAge != 99)
            {
                users = users.Where(x => x.DateOfBirth.CalculateAge() >= userParams.MinAge && x.DateOfBirth.CalculateAge() <= userParams.MaxAge);
            }
            if (!string.IsNullOrEmpty(userParams.OrderBy))
            {
                switch (userParams.OrderBy)
                {
                case "created":
                    users = users.OrderByDescending(u => u.Created);
                    break;

                default:
                    users = users.OrderByDescending(u => u.LastActive);
                    break;
                }
            }
            return(await PagedLists <User> .CreateAsync(users, userParams.PageNumber, userParams.pageSize));
        }