コード例 #1
0
        // 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));
        }
コード例 #2
0
        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));
        }