Пример #1
0
        private bool SaveMessageHtml(long messageId, string template, out string error)
        {
            error = string.Empty;
            try
            {
                var messageEntity = DiscussionMessageRepository.GetById(messageId);

                if (messageEntity == null)
                {
                    error = "message entity not found";
                    return(false);
                }

                var original  = messageEntity.Text;
                var html      = original;
                var emailHtml = original;
                //tags
                var tags = DiscussionMessageHashtagViewRepository.GetMany(x => x.MessageId == messageId);

                foreach (var tag in tags)
                {
                    var link = String.Format(template, messageEntity.Uid, tag.HashtagId, eFeedFilterKinds.Hashtag, "#", tag.HashTag);
                    html = html.Replace("#" + tag.HashTag, link);

                    link      = tag.HashTag.String2Html(HASHTAG_URL_TEMPLATE, HASHTAG_HTML_STYLE_UNDERLINE, tag.HashTag.Replace("#", ""));
                    emailHtml = emailHtml.Replace(tag.HashTag, link);
                }

                //users
                var users = DiscussionMessageUserRepository.GetMany(x => x.MessageId == messageId);

                foreach (var row in users)
                {
                    var user = UserRepository.GetById(row.UserId).Entity2TagItemDto();
                    var link = String.Format(template, messageEntity.Uid, user.value, eFeedFilterKinds.User, "@", user.label);
                    html = html.Replace("@" + user.label, link);

                    link      = user.label.String2Html(USER_PROFILE_URL_TEMPLATE, NAME_HTML_STYLE_UNDERLINE, user.value);
                    emailHtml = emailHtml.Replace("@" + user.label, link);
                }

                messageEntity.HtmlMessage      = html;
                messageEntity.HtmlEmailMessage = emailHtml;
                messageEntity.HtmlVersion      = CURRENT_MSG_HTML_VERSION;

                DiscussionMessageRepository.UnitOfWork.CommitAndRefreshChanges();

                return(true);
            }
            catch (Exception ex)
            {
                error = Utils.FormatError(ex);
                Logger.Error("SaveMessageHtml", messageId, ex, CommonEnums.LoggerObjectTypes.Discussion);
                return(false);
            }
        }
Пример #2
0
        public MessageViewDTO GetMessageDTO(Guid uid)
        {
            try
            {
                return(DiscussionMessageRepository.GetMessage(uid).Entity2MessageViewDto());
            }
            catch (Exception ex)
            {
                Logger.Error("get message dto", uid, ex, CommonEnums.LoggerObjectTypes.Discussion);

                return(null);
            }
        }
Пример #3
0
        private void SaveReplayMessageNotifications(long messageId, long parentId, out string error)
        {
            try
            {
                var userId = DiscussionMessageRepository.GetById(parentId).CreatedBy;

                _SaveNotification(userId, messageId, out error);
            }
            catch (Exception ex)
            {
                error = Utils.FormatError(ex);
                Logger.Error("save replay message notification", messageId, ex, CommonEnums.LoggerObjectTypes.Discussion);
            }
        }
Пример #4
0
        public List <MessageViewDTO> GetMessageFeed(Guid uid)
        {
            try
            {
                var entity = DiscussionMessageRepository.Get(x => x.Uid == uid);

                if (entity == null)
                {
                    return(new List <MessageViewDTO>());
                }

                var messageId = entity.ParentMessageId ?? entity.MessageId;

                var messages = DiscussionMessageRepository.GetMessageFeed(messageId).Select(s => s.Entity2MessageViewDto()).ToList();

                return(BuildMessageFeedTree(messages.ToArray(), DiscussionSortFields.AddOn, CommonEnums.SortDirections.desc));
            }
            catch (Exception ex)
            {
                Logger.Error("get message  feed", uid, ex, CommonEnums.LoggerObjectTypes.Discussion);
                return(new List <MessageViewDTO>());
            }
        }
Пример #5
0
        private void SaveFbPostMessages(long messageId, int courseId, int writerId)
        {
            try
            {
                var notifications = DiscussionMessageRepository.GetMessageNotifications4FB(messageId).ToList();

                //foreach (var notification in notifications)
                //{
                //    var token = notification.Entity2PostMessageDto();

                //    if (token == null) continue;

                //    string error;
                //    _facebookServices.SavePostMessage(token, out error, notification.NotificationId);
                //}

                //save writer story
                _facebookServices.CreateUserFbStory(writerId, courseId, FbEnums.eFbActions.comment);
            }
            catch (Exception ex)
            {
                Logger.Error("post message notification to FB", messageId, ex, CommonEnums.LoggerObjectTypes.Discussion);
            }
        }
Пример #6
0
        public bool SaveUserMessage(ref DiscussionMessageInputDTO token, int userId, out string error)
        {
            try
            {
                //var oid = FbServices.GetCourseFbObjectId(token.CourseId);

                token.HTMLVersion = CURRENT_MSG_HTML_VERSION;

                var entity = token.Dto2MessageEntity(userId);

                DiscussionMessageRepository.Add(entity);

                DiscussionMessageRepository.UnitOfWork.CommitAndRefreshChanges();

                var messageId = entity.MessageId;

                var names = String.IsNullOrEmpty(token.NamesArrayStr) ? new string[0] : JsSerializer.Deserialize <string[]>(token.NamesArrayStr);

                var tags = String.IsNullOrEmpty(token.TagsArrayStr) ? new string[0] : JsSerializer.Deserialize <string[]>(token.TagsArrayStr);

                if (tags.Length > 0)
                {
                    if (!SaveHashtags(tags, userId, out error))
                    {
                        return(false);
                    }

                    if (!SaveMessageHashtags(tags, messageId, out error))
                    {
                        return(false);
                    }
                }

                if (names.Length > 0)
                {
                    if (!SaveMessageUsers(names, messageId, out error))
                    {
                        return(false);
                    }
                }

                if (!SaveMessageHtml(messageId, FEED_LINK_V2, out error))
                {
                    return(false);
                }

                if (!SaveRoomFollower(userId, token.RoomId, out error))
                {
                    return(false);
                }

                SaveMessageNotifications(messageId, userId, out error);                //token.RoomId,

                if (token.ParentMessageId != null)
                {
                    SaveReplayMessageNotifications(messageId, (long)token.ParentMessageId, out error);
                }

                SaveMessageEmails(messageId);

                //UnitOfWork.CommitAndRefreshChanges();

                SaveFbPostMessages(messageId, token.CourseId, userId);

                token.MessageId = messageId;
                token.Uid       = entity.Uid;

                return(true);
            }
            catch (Exception ex)
            {
                error = Utils.FormatError(ex);

                Logger.Error("save user message", token.RoomId, ex, CommonEnums.LoggerObjectTypes.Discussion);

                return(false);
            }
        }