Example #1
0
        private async Task ResolveMentionsAsync(CommentModel comment, IntranetEntityTypeEnum activityType)
        {
            var mentionIds = _mentionService.GetMentions(comment.Text).ToList();

            var isActivity = activityType.Is(IntranetEntityTypeEnum.Events, IntranetEntityTypeEnum.News,
                                             IntranetEntityTypeEnum.Social);

            if (mentionIds.Any())
            {
                UintraLinkModel url;

                if (isActivity)
                {
                    url = await _commentLinkHelper.GetDetailsUrlWithCommentAsync(comment.ActivityId, comment.Id);
                }
                else
                {
                    var content = _nodeModelService.AsEnumerable().FirstOrDefault(x => x.Key == comment.ActivityId);
                    url = _commentLinkHelper.GetDetailsUrlWithComment(content, comment.Id);
                }

                _mentionService.ProcessMention(new MentionModel
                {
                    MentionedSourceId = comment.Id,
                    CreatorId         = await _intranetMemberService.GetCurrentMemberIdAsync(),
                    MentionedUserIds  = mentionIds,
                    Title             = comment.Text.StripMentionHtml().TrimByWordEnd(50),
                    Url          = url,
                    ActivityType = CommunicationTypeEnum.CommunicationSettings
                });
            }
        }
Example #2
0
        public async Task <CommentsOverviewModel> Delete(Guid targetId, IntranetEntityTypeEnum targetType, Guid commentId)
        {
            var comment = await _commentsService.GetAsync(commentId);

            if (!_commentsService.CanDelete(comment, await _intranetMemberService.GetCurrentMemberIdAsync()))
            {
                return(await _commentsHelper.OverViewAsync(comment.ActivityId));
            }

            var command = new RemoveCommentCommand(targetId, targetType, commentId);

            _commandPublisher.Publish(command);

            switch (targetType)
            {
            case IntranetEntityTypeEnum type
                when type.Is(IntranetEntityTypeEnum.News, IntranetEntityTypeEnum.Social, IntranetEntityTypeEnum.Events):
                var activityCommentsInfo = GetActivityComments(targetId);

                return(await _commentsHelper.OverViewAsync(activityCommentsInfo.Id, activityCommentsInfo.Comments, activityCommentsInfo.IsReadOnly));

            default:
                return(await _commentsHelper.OverViewAsync(comment.ActivityId));
            }
        }
Example #3
0
        public async Task <IHttpActionResult> AddLike([FromUri] Guid entityId, [FromUri] IntranetEntityTypeEnum entityType)
        {
            if (!await CanAddRemoveLikeAsync(entityId, entityType))
            {
                return(StatusCode(HttpStatusCode.Forbidden));
            }

            var command = new AddLikeCommand(entityId, entityType, await _intranetMemberService.GetCurrentMemberIdAsync());

            _commandPublisher.Publish(command);

            switch (entityType)
            {
            case IntranetEntityTypeEnum.Comment:
                return(Ok(await _likesService.GetLikeModelsAsync(entityId)));

            case IntranetEntityTypeEnum.ContentPage:
                return(Ok(await _likesService.GetLikeModelsAsync(entityId)));

            case IntranetEntityTypeEnum type when type.Is(IntranetEntityTypeEnum.News, IntranetEntityTypeEnum.Social, IntranetEntityTypeEnum.Events):
                var activityLikeInfo = GetActivityLikes(entityId);

                return(Ok(activityLikeInfo.Likes));

            default:
                throw new IndexOutOfRangeException();
            }
        }
Example #4
0
        private async Task <bool> CanAddRemoveLikeAsync(Guid entityId, IntranetEntityTypeEnum entityType)
        {
            if (entityType.Is(IntranetEntityTypeEnum.Social, IntranetEntityTypeEnum.News, IntranetEntityTypeEnum.Events))
            {
                var member = await _intranetMemberService.GetCurrentMemberAsync();

                var activityGroupId = _groupActivityService.GetGroupId(entityId);

                if (activityGroupId.HasValue)
                {
                    var group = _groupService.Get(activityGroupId.Value);
                    if (group == null || group.IsHidden)
                    {
                        return(false);
                    }
                }

                if (activityGroupId.HasValue && !member.GroupIds.Contains(activityGroupId.Value))
                {
                    return(false);
                }
            }
            else if (entityType.Is(IntranetEntityTypeEnum.Comment))
            {
                var comment = await _commentsService.GetAsync(entityId);

                var activityType = _activityTypeHelper.GetActivityType(comment.ActivityId);

                return(await CanAddRemoveLikeAsync(comment.ActivityId, (IntranetEntityTypeEnum)activityType));
            }

            return(true);
        }
Example #5
0
        public async Task <IEnumerable <LikeModel> > RemoveLike(Guid entityId, IntranetEntityTypeEnum entityType)
        {
            if (await CanAddRemoveLikeAsync(entityId, entityType))
            {
                var command = new RemoveLikeCommand(entityId, entityType, await _intranetMemberService.GetCurrentMemberIdAsync());
                _commandPublisher.Publish(command);
            }

            switch (entityType)
            {
            case IntranetEntityTypeEnum.Comment:
                return(await _likesService.GetLikeModelsAsync(entityId));

            case IntranetEntityTypeEnum.ContentPage:
                return(await _likesService.GetLikeModelsAsync(entityId));

            case IntranetEntityTypeEnum type when type.Is(IntranetEntityTypeEnum.News, IntranetEntityTypeEnum.Social, IntranetEntityTypeEnum.Events):
                var activityLikeInfo = GetActivityLikes(entityId);

                return(activityLikeInfo.Likes);

            default:
                throw new IndexOutOfRangeException();
            }
        }
Example #6
0
        private async Task OnCommentEditedAsync(Guid commentId, IntranetEntityTypeEnum activityType)
        {
            var comment = await _commentsService.GetAsync(commentId);

            await ResolveMentionsAsync(comment, activityType);
        }