// this will fetch us the list of users who liked this user public async Task <PageList <LikeDTO> > GetUserLikes(LikedParams likedParams) { var users = _context.Users.OrderBy(u => u.UserName).AsQueryable(); var likes = _context.Likes.AsQueryable(); // we are joinning above two queries to get list of users who liked this user if (likedParams.Predicate == "liked") // this is list of users that currently loggeed in User has liked { likes = likes.Where(likes => likes.SourceUserId == likedParams.UserId); users = likes.Select(like => like.LikedUser); // likeed Users from like table } if (likedParams.Predicate == "likedBy") { likes = likes.Where(likes => likes.LikedUserId == likedParams.UserId); users = likes.Select(like => like.SourceUser); // this will give us list of users that liked currently loggedIn user } var likedUsers = users.Select(user => new LikeDTO { Username = user.UserName, KnownAs = user.KnownAs, Age = user.DateOfBirth.CalculateAge(), PhotoUrl = user.Photos.FirstOrDefault(p => p.IsMain).Url, City = user.City, Id = user.Id }); return(await PageList <LikeDTO> .CreateAsync(likedUsers, likedParams.PageNumber, likedParams.PageSize)); }
public async Task <ActionResult <IEnumerable <LikeDTO> > > GetUserLikes([FromQuery] LikedParams likedParams) { likedParams.UserId = User.GetUserId(); var users = await _likesRepository.GetUserLikes(likedParams); // to recieve paginated repsonse Response.AddPaginationHeader(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPages); return(Ok(users)); }