Пример #1
0
        public async Task <PagedList <User> > GetUsers(UserPrams userPrams)
        {
            var users = _context.Users.Include(i => i.Photos).OrderByDescending(p => p.LastActive).AsQueryable();

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

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

            if (userPrams.MinAge != 18 || userPrams.MaxAge != 99)
            {
                var minDob = DateTime.Today.AddYears(-userPrams.MaxAge - 1);
                var maxDob = DateTime.Today.AddYears(-userPrams.MinAge);

                users = users.Where(u => u.DateOfBirth >= minDob && u.DateOfBirth <= maxDob);
            }
            if (!string.IsNullOrEmpty(userPrams.OrderBy))
            {
                switch (userPrams.OrderBy)
                {
                case "created":
                    users = users.OrderByDescending(p => p.Created);
                    break;

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

            return(await PagedList <User> .CreateAsync(users, userPrams.PageNumber, userPrams.PageSize));
        }
Пример #2
0
        public async Task <PageList <User> > GetUsers(UserPrams prams)
        {
            var users = _context.Users.Include(p => p.Photos).OrderBy(u => u.LastActive).AsQueryable();

            users = users.Where(u => u.Id != prams.Id);

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


            if (prams.Liker)
            {
                var likers = await GetUserLike(prams.Id, prams.Liker);

                users = users.Where(u => likers.Contains(u.Id));
            }

            if (prams.Likee)
            {
                var likees = await GetUserLike(prams.Id, prams.Liker);

                users = users.Where(u => likees.Contains(u.Id));
            }

            if (prams.MinAge != 18 || prams.MaxAge != 99)
            {
                var minDob = DateTime.Now.AddYears(-(prams.MaxAge + 1));
                var maxDob = DateTime.Now.AddYears(-prams.MinAge);

                users = users.Where(u => u.DateOfBirth >= minDob && u.DateOfBirth <= maxDob);
            }

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

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



            return(await PageList <User> .CreateAsync(users, prams.PageNumber, prams.pageSize));
        }
Пример #3
0
        public async Task <ActionResult <IEnumerable <MemberDto> > > GetUsers([FromQuery] UserPrams userPrams)
        {
            var gender = await _unitOfWork.UserRepository.GetUserGender(User.GetUsername());

            userPrams.CurrentUsername = User.GetUsername();
            if (string.IsNullOrEmpty(userPrams.Gender))
            {
                userPrams.Gender = gender;
            }

            var users = await _unitOfWork.UserRepository.GetMembersAsync(userPrams);

            // var usersToReturn = _mapper.Map<IEnumerable<MemberDto>>(users);
            Response.AddPaginationHeader(users.CurrentPage, users.TotalPages, users.TotalCount, users.PageSize);
            return(Ok(users));
        }
Пример #4
0
        public async Task <IActionResult> getUsers([FromQuery] UserPrams prams)
        {
            prams.Id = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            var userFromRepo = await _repo.GetUser(prams.Id);

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

            var users = await _repo.GetUsers(prams);

            var usersForReturn = _mapper.Map <IEnumerable <UsersForListDto> >(users);

            Response.AddPagination(users.TotalCount, users.TotalPages, users.PageSize, users.CurrentPage);
            return(Ok(usersForReturn));
        }
Пример #5
0
        public async Task <PageList <MemberDto> > GetMembersAsync(UserPrams userPrams)
        {
            var query = _context.Users.AsQueryable();

            query = query.Where(u => u.UserName != userPrams.CurrentUsername);
            query = query.Where(u => u.Gender == userPrams.Gender);

            var minDob = DateTime.Today.AddYears(-userPrams.MaxAge - 1);
            var maxDob = DateTime.Today.AddYears(-userPrams.MinAge);

            query = query.Where(u => u.BirthDate >= minDob && u.BirthDate <= maxDob);

            query = userPrams.OrderBy switch {
                "created" => query.OrderByDescending(u => u.Created),
                _ => query.OrderByDescending(u => u.LastActive)
            };
            // .AsNoTracking();

            return(await PageList <MemberDto> .CreateAsync(query
                                                           .ProjectTo <MemberDto>(_mapper.ConfigurationProvider).AsNoTracking()
                                                           , userPrams.PageNumber, userPrams.PageSize));
        }