Example #1
0
        public async Task <PagedList <LikeDto> > GetUserLikes(LikesSettings likesSettings)
        {
            IQueryable <AppUser> users;
            var likes = _context.Likes.AsQueryable();

            switch (likesSettings.Predicate)
            {
            case StringService.LikeRelationship.Likes:
                likes = likes.Where(like => like.LikerId == likesSettings.UserId);
                users = likes.Select(like => like.Likee);
                break;

            case StringService.LikeRelationship.LikedBy:
                likes = likes.Where(like => like.LikeeId == likesSettings.UserId);
                users = likes.Select(like => like.Liker);
                break;

            default:
                throw new Exception($"Unknown type of like: {likesSettings.Predicate}");
            }

            var likeDtos = users
                           .OrderBy(user => user.UserName)
                           .ProjectTo <LikeDto>(_mapper.ConfigurationProvider);

            return(await PagedList <LikeDto> .CreateAsync(likeDtos, likesSettings.PageNumber, likesSettings.PageSize));
        }
Example #2
0
        public async Task <ActionResult <IEnumerable <LikeDto> > > GetUserLikes([FromQuery] LikesSettings likesSettings)
        {
            likesSettings.UserId = User.GetUserId();

            var paginatedLikeDtos = await _likesRepository.GetUserLikes(likesSettings);

            Response.AddPaginationHeader(paginatedLikeDtos.PageNumber, paginatedLikeDtos.PageSize, paginatedLikeDtos.TotalCount, paginatedLikeDtos.TotalPages);

            return(Ok(paginatedLikeDtos));
        }