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)); }
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)); }