コード例 #1
0
        private async Task <Stars.Models.Star> StarDeleted(Stars.Models.Star star)
        {
            if (star == null)
            {
                return(null);
            }

            // Is this a article star?
            if (!star.Name.Equals(StarTypes.Article.Name, StringComparison.OrdinalIgnoreCase))
            {
                return(star);
            }

            // Ensure the entity we are starring exists
            var entity = await _entityStore.GetByIdAsync(star.ThingId);

            if (entity == null)
            {
                return(star);
            }

            // Update total stars
            entity.TotalStars = entity.TotalStars - 1;

            // Ensure we don't go negative
            if (entity.TotalStars < 0)
            {
                entity.TotalStars = 0;
            }

            // Persist changes
            var updatedEntity = await _entityStore.UpdateAsync(entity);

            if (updatedEntity != null)
            {
                // Revoke reputation from user removing the entity star
                await _reputationAwarder.RevokeAsync(Reputations.StarArticle, star.CreatedUserId, "Unstarred an article");

                // Revoke reputation from entity author for user removing there entity star
                await _reputationAwarder.RevokeAsync(Reputations.StarredArticle, entity.CreatedUserId, "A user unstarred my article");
            }

            return(star);
        }
コード例 #2
0
        private async Task <Stars.Models.Star> StarCreated(Stars.Models.Star star)
        {
            if (star == null)
            {
                return(null);
            }

            // Is this a article star?
            if (!star.Name.Equals(StarTypes.Article.Name, StringComparison.OrdinalIgnoreCase))
            {
                return(star);
            }

            // Ensure the entity we are starring exists
            var entity = await _entityStore.GetByIdAsync(star.ThingId);

            if (entity == null)
            {
                return(star);
            }

            // Update total stars
            entity.TotalStars = entity.TotalStars + 1;

            // Persist changes
            var updatedEntity = await _entityStore.UpdateAsync(entity);

            if (updatedEntity != null)
            {
                // Award reputation to user starring the entity
                await _reputationAwarder.AwardAsync(Reputations.StarArticle, star.CreatedUserId, "Starred an article");

                // Award reputation to entity author when there entity is starred
                await _reputationAwarder.AwardAsync(Reputations.StarredArticle, entity.CreatedUserId, "Someone starred my article");
            }

            return(star);
        }