public void SetTop3ReactionCounts(IHaveReactions item) { var reactions = new List <ReactionCounter>(); if (item.Reactions != null) { var reactionTypes = RepositoryContext.ReactionTypes.ToList(); foreach (ReactionType rt in reactionTypes) { // Create a counter for each reaction type ReactionCounter counter = new ReactionCounter() { RType = rt, Count = item.Reactions .Count(i => i.TypeId.Equals(rt.TypeId)) }; // Add all counts of reaction types reactions.Add(counter); } } // Assign top 3 of top reactions item.ReactionCounts = reactions .OrderByDescending(r => r.Count) .Take(3) .ToList(); }
private void SetReferenceKeys(React reaction) { IHaveReactions reactible = reaction.Article != null ? (IHaveReactions)reaction.Article : reaction.Comment; // AccountId reaction.AccountId = reaction.Account.Id; // TypeId reaction.TypeId = reaction.Reaction.TypeId; reaction.Reaction = null; // Slug, BlogId, Version if (reactible is Article) { SetArticleReferenceKey(reaction); //reaction.Article = null; } // CommentId, Revision else if (reactible is Comment) { SetCommentRefenceKeys(reaction); } }
public void AnAccountCanReactOnArticle() { Account account = Manu; IHaveReactions reactible = ArticleZero; React reacted = Wrapper.React.React(NullNormalized <React>(r => { r.Article = ArticleZero; r.Account = Manu; r.Reaction = new ReactionType { TypeId = CONFUSED }; })); }