Esempio n. 1
0
        /// <summary>
        /// Calculate the hash tags trend score and save. Maintain the link between a has tag and meme
        /// NOTE: A meme's hash tag list never changes.
        /// </summary>
        /// <param name="hashTag"></param>
        /// <param name="memeId"></param>
        /// <param name="previousMemeTrendScore"></param>
        /// <param name="newMemeTrendScore"></param>
        /// <returns></returns>
        public IHashTag SaveMemeTags(string hashTag, string memeId, double previousMemeTrendScore, double newMemeTrendScore)
        {
            string id = hashTag.ToLower();
            // Get from repository or create new if doesn't exist
            IHashTag tag = repository.GetHashTag(id) ?? new HashTag {
                Id = id, Name = hashTag
            };

            // Update the score of the hash tag to account for the memes new score
            tag.TrendScoreOfAllMemes += newMemeTrendScore - previousMemeTrendScore;

            // Save hash tag in repository
            var savedHashTag = repository.Save(tag);

            // Maintain a link between the hash tag and meme
            repository.Save(new HashTagMeme(tag.Id, memeId, newMemeTrendScore));

            return(savedHashTag);
        }
Esempio n. 2
0
 /// <summary>
 /// Save the hashtag
 /// </summary>
 /// <param name="hashTag"></param>
 /// <returns></returns>
 public IHashTag Save(IHashTag hashTag)
 {
     hashTagCollection.Save(hashTag.ToBsonDocument());
     return(hashTag);
 }
Esempio n. 3
0
        /// <summary>
        /// Get a hashtag by name (ID is hash tag name)
        /// </summary>
        /// <param name="hashTagName"></param>
        /// <returns></returns>
        public IHashTag GetHashTag(string hashTagName)
        {
            IHashTag hashTag = hashTagCollection.FindOne(Query <HashTag> .EQ(e => e.Id, hashTagName));

            return(hashTag);
        }