ICollection <PostGetAllDto> IPostBusinessLogic.GetAll(Guid trendId, UserInfoModel userInfo) { ICollection <Post> posts = postRepository.GetAllByFilter(p => p.TrendId == trendId, "Reacts"); ICollection <PostGetAllDto> returnedPosts = new List <PostGetAllDto>(); foreach (Post post in posts) { PostGetAllDto postGetAllDto = mapper.Map <PostGetAllDto>(post); if (userInfo != null && post.Reacts != null) { PostReact react = post.Reacts.FirstOrDefault(pr => pr.UserId == userInfo.CreatorId); if (react != null) { if (react.Type == ReactType.Like) { postGetAllDto.Liked = true; } else if (react.Type == ReactType.Dislike) { postGetAllDto.Disliked = true; } } } returnedPosts.Add(postGetAllDto); } return(returnedPosts); }
PostGetByIdDto IPostBusinessLogic.GetById(Guid id, UserInfoModel userInfo) { Post post = postRepository.GetById(id, "Reacts"); if (post == null) { return(null); } PostGetByIdDto returnedPost = mapper.Map <PostGetByIdDto>(post); if (userInfo != null && post.Reacts != null) { PostReact react = post.Reacts.FirstOrDefault(pr => pr.UserId == userInfo.CreatorId); if (react != null) { if (react.Type == ReactType.Like) { returnedPost.Liked = true; } else if (react.Type == ReactType.Dislike) { returnedPost.Disliked = true; } } } return(returnedPost); }
void IPostBusinessLogic.PatchReact(PostPatchReactDto postPatchReact) { PostReact postReact = postReactRepository.GetByFilter( pr => pr.UserId == postPatchReact.CreatorId && pr.PostId == postPatchReact.Id); ReactType type = (ReactType)System.Enum.Parse(typeof(ReactType), postPatchReact.Type); int deltaUpvotes = 0, deltaDownvotes = 0; if (postReact == null) { postReact = new PostReact { PostId = postPatchReact.Id, UserId = postPatchReact.CreatorId, Type = type }; postReactRepository.Insert(postReact); postReactRepository.SaveChanges(); ReactsUtils.UpdateDeltas(ref deltaUpvotes, ref deltaDownvotes, type, ReactType.None); } else { if (type == ReactType.None) { ReactsUtils.UpdateDeltas(ref deltaUpvotes, ref deltaDownvotes, type, postReact.Type); postReactRepository.Delete(postReact.Id); postReactRepository.SaveChanges(); } else if (type != postReact.Type) { ReactsUtils.UpdateDeltas(ref deltaUpvotes, ref deltaDownvotes, type, postReact.Type); postReact.Type = type; postReactRepository.Update(postReact); postReactRepository.SaveChanges(); } } if (deltaUpvotes != 0 || deltaDownvotes != 0) { Post post = postRepository.GetById(postPatchReact.Id); post.Upvotes += deltaUpvotes; post.Downvotes += deltaDownvotes; postRepository.Update(post); postRepository.SaveChanges(); } }