Пример #1
0
        public async Task <ActionResult <List <UserListResponse> > > Get([FromQuery] RequestForUserList request)
        {
            var id = int.Parse(User.FindFirst(ClaimTypes.NameIdentifier).Value);

            request.UserId = id;
            var envelope = await _serv.GetAll(request);

            Response.AddPaginationHeaders(envelope.PaginationHeaders);
            return(envelope.Response);
        }
Пример #2
0
        public async Task <PaginatedList <User> > GetAll(RequestForUserList request)
        {
            var users = _context.Users
                        .Include(u => u.Photos)
                        .Include(l => l.Likers)
                        .AsQueryable();

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

            if (request.MinAge > 0)
            {
                var maxDOB = DateTime.Now.AddYears(-request.MinAge);
                users = users.Where(u => u.DateOfBirth <= maxDOB);
            }
            if (request.MaxAge > 0)
            {
                var minDOB = DateTime.Now.AddYears(-request.MaxAge - 1);
                users = users.Where(u => u.DateOfBirth >= minDOB);
            }

            if (request.Matches)
            {
                users = users.Where(u => u.Likers.Any(l => l.LikerId == request.UserId) &&
                                    u.Likees.Any(l => l.LikeeId == request.UserId));
            }

            if (request.Likees)
            {
                users = users.Where(u => u.Likers.Any(l => l.LikerId == request.UserId));
            }

            if (request.Likers)
            {
                users = users.Where(u => u.Likees.Any(l => l.LikeeId == request.UserId));
            }

            switch (request.SortBy)
            {
            case UserSortColumns.LastActive:
                users = users.CustomOrderBy(u => u.LastActive, request.SortOrder);
                break;

            default:
                users = users.CustomOrderBy(u => u.Created, request.SortOrder);
                break;
            }
            return(await PaginatedList <User> .CreateAsync(users, request.Page, request.PerPage));
        }
Пример #3
0
        public async Task <PaginatedResponseEnvelope <UserListResponse> > GetAll(RequestForUserList request)
        {
            if (string.IsNullOrEmpty(request.Gender))
            {
                var user = await _repo.Get(request.UserId);

                request.Gender = user.Gender == "male" ? "female" : "male";
            }
            var users = await _repo.GetAll(request);

            var response = _mapper.Map <List <UserListResponse> >(users);

            return(new PaginatedResponseEnvelope <UserListResponse>
            {
                Response = response,
                PaginationHeaders = _mapper.Map <PaginationHeaders>(users)
            });
        }