Ejemplo n.º 1
0
 private void GetUserLikes(string currUserId)
 {
     // Get from cache
     userReviewLikesIds     = _userLikesCacheService.GetUserLikedReviewsIds(currUserId);
     userCommentLikesIds    = _userLikesCacheService.GetUserLikedCommentsIds(currUserId);
     userReviewDislikesIds  = _userLikesCacheService.GetUserDisikedReviewsIds(currUserId);
     userCommentDislikesIds = _userLikesCacheService.GetUserDisikedCommentsIds(currUserId);
     userPostLikesIds       = _userLikesCacheService.GetUserLikedPostsIds(currUserId);
     // If not check the Database
     if (userReviewLikesIds == null || userReviewLikesIds.Count() == 0)
     {
         userReviewLikesIds = _userLikesDataService.GetUserLikedReviewsIds(currUserId);
         _userLikesCacheService.SetUserLikedReviewsIds(currUserId, userReviewLikesIds, 20);
     }
     if (userCommentLikesIds == null || userCommentLikesIds.Count() == 0)
     {
         userCommentLikesIds = _userLikesDataService.GetUserLikedCommentsIds(currUserId);
         _userLikesCacheService.SetUserLikedCommentsIds(currUserId, userCommentLikesIds, 20);
     }
     if (userReviewDislikesIds == null || userReviewDislikesIds.Count() == 0)
     {
         userReviewDislikesIds = _userLikesDataService.GetUserDisikedReviewsIds(currUserId);
         _userLikesCacheService.SetUserDisikedReviewsIds(currUserId, userReviewDislikesIds, 20);
     }
     if (userCommentDislikesIds == null || userCommentDislikesIds.Count() == 0)
     {
         userCommentDislikesIds = _userLikesDataService.GetUserDisikedCommentsIds(currUserId);
         _userLikesCacheService.SetUserDisikedCommentsIds(currUserId, userCommentDislikesIds, 20);
     }
     if (userPostLikesIds == null || userPostLikesIds.Count() == 0)
     {
         userPostLikesIds = _userLikesDataService.GetUserLikedPostsIds(currUserId);
         _userLikesCacheService.SetUserLikedPostsIds(currUserId, userPostLikesIds, 20);
     }
 }
Ejemplo n.º 2
0
 private void GetUserPostLikes(string currUserId)
 {
     userPostLikesIds = _userLikesCacheService.GetUserLikedPostsIds(currUserId);
     if (userPostLikesIds == null || userPostLikesIds.Count() == 0)
     {
         userPostLikesIds = _userLikesDataService.GetUserLikedPostsIds(currUserId);
         _userLikesCacheService.SetUserLikedPostsIds(currUserId, userPostLikesIds, 20);
     }
 }
Ejemplo n.º 3
0
 private void GetUserLikes(string currUserId)
 {
     // Get from cache
     userReviewLikesIds     = _userLikesCacheService.GetUserLikedReviewsIds(currUserId);
     userCommentLikesIds    = _userLikesCacheService.GetUserLikedCommentsIds(currUserId);
     userReviewDislikesIds  = _userLikesCacheService.GetUserDisikedReviewsIds(currUserId);
     userCommentDislikesIds = _userLikesCacheService.GetUserDisikedCommentsIds(currUserId);
     userPostLikesIds       = _userLikesCacheService.GetUserLikedPostsIds(currUserId);
     userGroupFollowIds     = _userLikesCacheService.GetUserFollowingGroupsIds(currUserId);
     currentUserFollowings  = _userFollowCacheService.GetFollowingUserIds(currUserId);
     // If not check the Database
     if (userReviewLikesIds == null || userReviewLikesIds.Count() == 0)
     {
         userReviewLikesIds = _userLikesDataService.GetUserLikedReviewsIds(currUserId);
         _userLikesCacheService.SetUserLikedReviewsIds(currUserId, userReviewLikesIds, 20);
     }
     if (userCommentLikesIds == null || userCommentLikesIds.Count() == 0)
     {
         userCommentLikesIds = _userLikesDataService.GetUserLikedCommentsIds(currUserId);
         _userLikesCacheService.SetUserLikedCommentsIds(currUserId, userCommentLikesIds, 20);
     }
     if (userReviewDislikesIds == null || userReviewDislikesIds.Count() == 0)
     {
         userReviewDislikesIds = _userLikesDataService.GetUserDisikedReviewsIds(currUserId);
         _userLikesCacheService.SetUserDisikedReviewsIds(currUserId, userReviewDislikesIds, 20);
     }
     if (userCommentDislikesIds == null || userCommentDislikesIds.Count() == 0)
     {
         userCommentDislikesIds = _userLikesDataService.GetUserDisikedCommentsIds(currUserId);
         _userLikesCacheService.SetUserDisikedCommentsIds(currUserId, userCommentDislikesIds, 20);
     }
     if (userPostLikesIds == null || userPostLikesIds.Count() == 0)
     {
         userPostLikesIds = _userLikesDataService.GetUserLikedPostsIds(currUserId);
         _userLikesCacheService.SetUserLikedPostsIds(currUserId, userPostLikesIds, 20);
     }
     if (userGroupFollowIds == null || userGroupFollowIds.Count() == 0)
     {
         userGroupFollowIds = _userLikesDataService.GetUserFollowingGroups(currUserId, 30);
         _userLikesCacheService.SetUserFollowingGroupsIds(currUserId, userGroupFollowIds, 20);
     }
     if (currentUserFollowings == null || currentUserFollowings.Count == 0)
     {
         currentUserFollowings = _userLikesDataService.GetFollowingUserIds(currUserId);
         if (currentUserFollowings == null)
         {
             currentUserFollowings = new Dictionary <string, FollowState>();
         }
         else
         {
             _userFollowCacheService.SetFollowingUserIds(currUserId, currentUserFollowings, 10);
         }
     }
 }
Ejemplo n.º 4
0
        public LikePostReturn LikePost(int postId, string currUserId)
        {
            LikePostReturn ret = new LikePostReturn
            {
                IsLiked         = true,
                IsActionSucceed = true
            };
            UserPostLike rel = _dbEntitySet.FirstOrDefault(f => f.UserInfoId == currUserId && f.PostId == postId);

            if (rel == null)
            {
                _dbEntitySet.Add(new UserPostLike()
                {
                    PostId       = postId,
                    UserInfoId   = currUserId,
                    DateUtcLiked = DateTime.UtcNow
                });
                Post             pst = _context.Set <Post>().AsNoTracking().FirstOrDefault(p => p.Id == postId);
                int[]            gps = _context.SetChild <GroupPost>().Where(p => p.PostId == postId).Select(f => f.GroupId).ToArray();
                List <UserGroup> ugs = _context.SetChild <UserGroup>().Where(p => gps.Contains(p.GroupId) && p.UserId == pst.UserInfoId).ToList();
                foreach (var item in ugs)
                {
                    item.UserReputationInGroup += 10;
                    _context.GetChildDbEntityEntrySafely <UserGroup>(item).State = EntityState.Modified;
                }
                if (!(_context.SaveChanges() <= 0))
                {
                    ret.IsActionSucceed = true;
                    int[] prevLikes = _userLikesCacheService.GetUserLikedPostsIds(currUserId);
                    prevLikes = prevLikes.Append(postId).ToArray();
                    _userLikesCacheService.SetUserLikedPostsIds(currUserId, prevLikes, 30);
                }
            }
            ret.PostAuthorId = _postSet.Where(p => p.Id == postId).Select(p => p.UserInfoId).FirstOrDefault();
            return(ret);
        }
Ejemplo n.º 5
0
        public PaginatedPostCardReturn GetUserFavourites(string userName, int pageIndex, int pageSize, string order, string currUserId)
        {
            bool isLoggedIn = !string.IsNullOrEmpty(currUserId);

            PaginatedPostCardReturn ret = new PaginatedPostCardReturn();

            if (isLoggedIn)
            {
                GetUserPostLikes(currUserId);
            }

            string userId = GetUserId(userName);

            int [] favPostLikesIds = _userLikesCacheService.GetUserLikedPostsIds(userId);
            if (favPostLikesIds == null || favPostLikesIds.Count() == 0)
            {
                favPostLikesIds = _userLikesDataService.GetUserLikedPostsIds(userId);
                _userLikesCacheService.SetUserLikedPostsIds(userId, favPostLikesIds, 20);
            }
            // Get Users post Count From Cache
            int?favouriteCount = favPostLikesIds.Count();

            // If null Get From Database and set Cache 60Min
            if (!favouriteCount.HasValue)
            {
                var favourites = _context.SetChild <UserPostLike>()
                                 .AsNoTracking().Where(p => p.UserInfoId == userId);

                favouriteCount = _context.SetChild <UserPostLike>()
                                 .AsNoTracking().Count(p => p.UserInfoId == userId);

                _userCacheService.SetUserFavouriteCount(userId, favouriteCount.Value, 60);
                if (favouriteCount == 0)
                {
                    return(ret);
                }
            }

            var entities = _context.Set <Post>()
                           .AsNoTracking()
                           .Where(p => favPostLikesIds.Skip((pageIndex - 1) * pageSize).Take(pageSize).Contains(p.Id) && p.IsPublished)
                           .OrderByDescending(p => p.DateUtcPublished)
                           .Skip((pageIndex - 1) * pageSize)
                           .Take(pageSize)
                           .Select(p => new PostCardModel()
            {
                DateUtcPublished = p.DateUtcPublished,
                AuthorInfo       = new UserCardModel()
                {
                    AppUserId    = p.UserInfoId,
                    Name         = p.UserInfo.Name,
                    Username     = p.UserInfo.UName,
                    Surname      = p.UserInfo.Surname,
                    ProfileImage = p.UserInfo.ProfilePicture.SmallPath
                },
                Content   = p.Content,
                Title     = p.Title,
                PostParts = p.PostParts.Select(f => new PostPartDisplay()
                {
                    Description = f.Description,
                    Image       = new BaseImageReturn()
                    {
                        Dimension = f.Image.ImageDimension,
                        Extension = f.Image.FileExtension,
                        LazyUrl   = f.Image.BlurLazyPath,
                        ThumbUrl  = f.Image.ThumbPath,
                        Url       = f.Image.ResizedPath,
                        SmallUrl  = f.Image.SmallPath
                    },
                    Title = f.Title,
                    Id    = f.Id
                }).ToList(),
                Id = p.Id,
            }).ToList();

            foreach (var post in entities)
            {
                post.IsCurrentUserLiked = userPostLikesIds.Contains(post.Id);
                post.FavouriteCount     = _postCacheService.GetPostLikesCount(post.Id)
                                          ?? _postDataService.GetPostLikeCount(post.Id, cacheTreshold: 20);
                post.ReviewCount = _postDataService.GetPostReviewsCount(post.Id);
                post.Rating      = GetPostRating(post.Id, 30);
            }
            ret.Entities = entities.ToPaginatedList(pageIndex, pageSize, favouriteCount.Value);
            return(ret);
        }