Exemple #1
0
        public MessageModel(Tgnet.FootChat.Push.Data.IDBMessage message)
        {
            ContentType = message.contentType;
            MessageId   = message.messageId;
            SessionType = message.sessionType;
            Timestamp   = message.timestamp;
            Sender      = message.sender;
            SessionId   = message.sessionId;
            Content     = message.content;

            Extensions = new Dictionary <string, object>();
            if (message.extensions != null)
            {
                foreach (var item in message.extensions)
                {
                    if (Tgnet.FootChat.Push.MessageExtensions.IncludeToMessage(item.Key))
                    {
                        Extensions[item.Key] = item.Value;
                    }
                }
            }
        }
        private Dictionary <long, MessageStoreResult> SaveMessage(NotifyMessageRequest message, out Tgnet.FootChat.Push.Data.IDBMessage senderMessage)
        {
            if (message.Receivers != null)
            {
                var kind = _MessageService.GetMessageKind(message.MessageType, message.SessionType);
                Dictionary <long, MessageStoreResult> result;
                bool firstSave = false;
                switch (kind)
                {
                case MessageKind.User:
                    result = new Dictionary <long, MessageStoreResult>();
                    foreach (var receiver in message.Receivers)
                    {
                        var r = new MessageStoreResult
                        {
                            Message = _MessageService.SaveUserMessage(message.SessionType, message.Sender, receiver, message.Created, message.ContentType, message.Content, message.Extension, out firstSave)
                        };
                        r.IsInsert       = firstSave;
                        result[receiver] = r;
                    }
                    senderMessage = result.Values.Select(r => r.Message).FirstOrDefault();
                    return(result);

                case MessageKind.MuiltUser:
                    var muiltMessage = _MessageService.SaveMultiUserMessage(message.SessionType, message.SessionId, message.Sender, message.Created, message.ContentType, message.Content, message.Receivers, message.Extension, out firstSave);
                    result = message.Receivers.Distinct().ToDictionary(r => r, r => new MessageStoreResult
                    {
                        Message  = muiltMessage,
                        IsInsert = firstSave,
                    });
                    senderMessage = muiltMessage;
                    return(result);

                case MessageKind.Other:
                    result = new Dictionary <long, MessageStoreResult>();
                    switch (message.MessageType)
                    {
                    case MessageType.Once:
                    case MessageType.OnceAndOnce:
                        var onceMessage = _MessageService.SaveOnceMessage(message.SessionType, message.SessionId, message.Sender, message.Receivers, message.Created, message.ContentType, message.Content,
                                                                          MessageType.OnceAndOnce == message.MessageType, null, message.Extension);
                        foreach (var item in message.Receivers)
                        {
                            result[item] = new MessageStoreResult
                            {
                                Message  = onceMessage,
                                IsInsert = true,
                            };
                        }
                        break;

                    case MessageType.Online:
                        var onlineMessage = _MessageService.SaveOnlineMessage(message.SessionType, message.SessionId, message.Sender, message.Receivers, message.Created, message.ContentType, message.Content, null);
                        foreach (var item in message.Receivers)
                        {
                            result[item] = new MessageStoreResult
                            {
                                Message  = onlineMessage,
                                IsInsert = true,
                            };
                        }
                        break;
                    }
                    senderMessage = result.Values.Select(r => r.Message).FirstOrDefault();
                    return(result);
                }
            }
            senderMessage = null;
            return(new Dictionary <long, MessageStoreResult>());
        }
Exemple #3
0
 public MessageModel(string senderName, Tgnet.FootChat.Push.Data.IDBMessage message)
     : this(message)
 {
     SenderName = senderName;
 }