Ejemplo n.º 1
0
        /// <summary> Ответить на сообщение </summary>
        public static bool QuoteAndSendMessages(ModelChatMessage modelChatMessage, List <ModelChatMessage> listQuotedModelChatMessage, bool JustAnswer)
        {
            var arrayQuoteMessages = ConvertListModelChatMessageFromListChatMessageModelManaged(listQuotedModelChatMessage).ToArray();

            modelChatMessage.Id = Logic.PregenerateMessageId();

            return(Logic.QuoteAndSendMessages(arrayQuoteMessages, modelChatMessage.Id, modelChatMessage.IdChat, modelChatMessage.StringContentText, JustAnswer));
        }
Ejemplo n.º 2
0
        /// <summary> Получить ModelChatMessage из ChatMessageModelManaged </summary>
        private static ModelChatMessage GetModelChatMessageFromChatMessageModelManaged(ChatMessageModelManaged chatMessageModelManaged)
        {
            if (chatMessageModelManaged == null)
            {
                return(null);
            }

            var dataSourceContact = new DataSourceContact();

            var result = new ModelChatMessage
            {
                Id            = chatMessageModelManaged.Id,
                IdChat        = chatMessageModelManaged.ChatId,
                SendTime      = chatMessageModelManaged.SendTime,
                Servered      = chatMessageModelManaged.Servered,
                Readed        = chatMessageModelManaged.Readed,
                StringContent = chatMessageModelManaged.StringContent,
                Changed       = chatMessageModelManaged.Changed,
                Rownum        = chatMessageModelManaged.Rownum,
                Encrypted     = chatMessageModelManaged.Encrypted,

                Sender           = DataSourceContact.GetModelContactFromContactModelManaged(chatMessageModelManaged.Sender),
                ModelContactData = DataSourceContact.GetModelContactFromContactModelManaged(chatMessageModelManaged.ContactData),

                ModelEnumChatMessageTypeObj          = ModelEnumChatMessageType.GetModelEnum((int)chatMessageModelManaged.Type),
                ModelEnumChatMessageQuoteTypeObj     = ModelEnumChatMessageQuoteType.GetModelEnum((int)chatMessageModelManaged.QuoteType),
                ModelEnumChatMessageSecurityLevelObj = ModelEnumChatMessageSecurityLevel.GetModelEnum((int)chatMessageModelManaged.SecurityLevel)
            };

            if (result.ModelContactData != null)
            {
                DataSourceContact.RefreshModelContactStatus(result.ModelContactData);
            }

            var quotedMessages = ConvertChatMessageModelManagedAtModelChatMessage(chatMessageModelManaged.QuotedMessages);

            if (quotedMessages.Count != 0)
            {
                result.ListQuotedModelChatMessage = new ObservableCollection <ModelChatMessage>(quotedMessages);
            }

            if (chatMessageModelManaged.NotificationData != null)
            {
                result.ModelNotificationDataObj = new ModelNotificationData()
                {
                    ListModelContact = DataSourceContact.GetListModelContactFromArrayContactModelManaged(chatMessageModelManaged.NotificationData.Contacts),
                    ModelEnumChatNotificationTypeObj = ModelEnumChatNotificationType.GetModelEnum((int)chatMessageModelManaged.NotificationData.Type)
                };
            }



            return(result);
        }
Ejemplo n.º 3
0
        /// <summary> Возвращает список новых сообщений постранично </summary>
        public static List <ModelChatMessage> GetPagedNewModelChatMessage(ModelChatMessage modelChatMessage)
        {
            var chatId = modelChatMessage.IdChat;

            var messageId = modelChatMessage.Id;

            var listChatMessageModelManaged = Logic.GetChatMessagesPaged(chatId, 50, messageId, 1);

            var listModelChatMessage = ConvertChatMessageModelManagedAtModelChatMessage(listChatMessageModelManaged);

            return(listModelChatMessage);
        }
Ejemplo n.º 4
0
        /// <summary> Редактировать сообщение </summary>
        public bool EditMessage(ModelChatMessage modelChatMessage, string text)
        {
            var result = true;

            modelChatMessage.StringContent = text;

            modelChatMessage.Changed = true;

            if (modelChatMessage.Sender.Iam)
            {
                result = DataSourceChat.EditMessage(modelChatMessage, text);
            }

            return(result);
        }
Ejemplo n.º 5
0
        /// <summary> Отправить новое сообщение </summary>
        public static bool SendModelChatMessage(ModelChatMessage modelChatMessage)
        {
            var result = true;

            if (modelChatMessage == null)
            {
                return(false);
            }

            modelChatMessage.Id = Logic.PregenerateMessageId();

            var thread = new Thread(obj => Logic.SendTextMessage(modelChatMessage.Id, modelChatMessage.IdChat, modelChatMessage.StringContent));

            thread.Start();

            return(result);
        }
Ejemplo n.º 6
0
        /// <summary> Метод отправки сообщения </summary>
        private void SendModelMessage()
        {
            CurrentModelChatMessage.Sender   = DataSourceContact.ModelContactIam;
            CurrentModelChatMessage.SendTime = DateTime.Now;
            CurrentModelChatMessage.ModelEnumChatMessageTypeObj = ModelEnumChatMessageType.GetModelEnum(0); // простое тесктовое сообщение
            CurrentModelChatMessage.IdChat = CurrentModelChat.Id;

            if (CurrentModelChat.IsP2P)
            {
                CurrentModelChatMessage.ModelEnumChatMessageSecurityLevelObj = ModelEnumChatMessageSecurityLevel.GetModelEnum(1); //сообщения зашифрованые
            }
            else
            {
                CurrentModelChatMessage.ModelEnumChatMessageSecurityLevelObj = ModelEnumChatMessageSecurityLevel.GetModelEnum(0); //сообщения не зашифрованые
            }

            if (_currentListQuotedMessage.Count != 0)
            {
                if (_currentListQuotedMessage.Count == 1 && JustAnswerCurrentMessage && String.IsNullOrWhiteSpace(_currentListQuotedMessage.First().StringContent))
                {
                    JustAnswerCurrentMessage = false;
                }

                DataSourceChat.QuoteAndSendMessages(CurrentModelChatMessage, _currentListQuotedMessage, JustAnswerCurrentMessage);

                _currentListQuotedMessage.Clear();
                CurrentModelChatMessage = new ModelChatMessage();
            }
            else
            {
                if (DataSourceChat.SendModelChatMessage(CurrentModelChatMessage))
                {
                    OnEventViewModel("SendModelMessage", CurrentModelChatMessage);

                    ListModelChatMessage.Add(CurrentModelChatMessage);

                    CurrentModelChatMessage = new ModelChatMessage();
                }
            }

            if (CurrentModelChat.DraftMessage != null)
            {
                CurrentModelChat.DraftMessage = null;
            }
        }
Ejemplo n.º 7
0
        /// <summary> Удалить сообщение </summary>
        public void DeleteModelChatMessage(ModelChatMessage modelChatMessage)
        {
            if (modelChatMessage.Sender.Iam)
            {
                if (DataSourceChat.DeleteModelChatMessage(modelChatMessage))
                {
                    modelChatMessage.ModelEnumChatMessageTypeObj = ModelEnumChatMessageType.GetModelEnum(5);
                }
            }
            else
            {
                modelChatMessage.ModelEnumChatMessageTypeObj = ModelEnumChatMessageType.GetModelEnum(5);
            }

            if (modelChatMessage.ListQuotedModelChatMessage != null)
            {
                modelChatMessage.ListQuotedModelChatMessage.Clear();
            }
        }
Ejemplo n.º 8
0
        /// <summary> Редактировать сообщение с ответом </summary>
        public bool EditMessage(ModelChatMessage modelChatMessage, string text, bool shouldDeleteQuote)
        {
            var result = true;

            if (shouldDeleteQuote)
            {
                modelChatMessage.ListQuotedModelChatMessage.Clear();
            }

            modelChatMessage.StringContent = text;

            modelChatMessage.Changed = true;

            if (modelChatMessage.Sender.Iam)
            {
                result = DataSourceChat.EditMessage(modelChatMessage, text, shouldDeleteQuote);
            }

            return(result);
        }
Ejemplo n.º 9
0
 public DynamicModelChat(ModelChatMessage _ModelChatMessage)
 {
     this._ModelChatMessage = _ModelChatMessage;
 }
Ejemplo n.º 10
0
        /// <summary> Получить ChatMessageModelManaged из ModelChatMessage </summary>
        private static ChatMessageModelManaged GetChatMessageModelManagedFromModelChatMessage(ModelChatMessage modelChatMessage)
        {
            var result = new ChatMessageModelManaged
            {
                Changed       = modelChatMessage.Changed,
                ChatId        = modelChatMessage.IdChat,
                Readed        = modelChatMessage.Readed,
                Rownum        = modelChatMessage.Rownum,
                StringContent = modelChatMessage.StringContent,
                Sender        = DataSourceContact.GetContactModelManagedFromModelContact(modelChatMessage.Sender)
            };

            if (modelChatMessage.ModelContactData != null)
            {
                result.ContactData = DataSourceContact.GetContactModelManagedFromModelContact(modelChatMessage.ModelContactData);
            }

            if (modelChatMessage.ListQuotedModelChatMessage != null)
            {
                result.QuotedMessages = GetArrayChatMessageModelManagedFromListModelChatMessage(modelChatMessage.ListQuotedModelChatMessage.ToList());
                result.QuoteType      = ChatMessageQuoteTypeManaged.Quote;
            }

            //if (modelChatMessage.ListQuotedModelChatMessage.Count > 0) result.QuoteType = ChatMessageQuoteTypeManaged.Quote;

            return(result);
        }
Ejemplo n.º 11
0
 /// <summary> Сохранить черновик </summary>
 public static bool SaveDraftModelChatMessage(ModelChatMessage modelChatMessage)
 {
     return(Logic.SaveChatMessageDraft(GetChatMessageModelManagedFromModelChatMessage(modelChatMessage)));
 }
Ejemplo n.º 12
0
 /// <summary> Разрешение редактировать сообщение </summary>
 public bool CanEditMessage(ModelChatMessage modelChatMessage)
 {
     return(DataSourceChat.CanEditMessage(modelChatMessage));
 }
Ejemplo n.º 13
0
 /// <summary> Редактировать сообщение с ответом </summary>
 public static bool EditMessage(ModelChatMessage modelChatMessage, string text, bool shouldDeleteQuote)
 {
     return(Logic.CorrectMessage(modelChatMessage.Id, text, shouldDeleteQuote));
 }
Ejemplo n.º 14
0
 /// <summary> Редактировать сообщение </summary>
 public static bool EditMessage(ModelChatMessage modelChatMessage, string text)
 {
     return(Logic.CorrectMessage(modelChatMessage.Id, text));
 }
Ejemplo n.º 15
0
 /// <summary> Разрешение редактировать сообщение </summary>
 public static bool CanEditMessage(ModelChatMessage modelChatMessage)
 {
     return(Logic.CanEditMessage(modelChatMessage.Id));
 }
Ejemplo n.º 16
0
 /// <summary> Удалить сообщение </summary>
 public static bool DeleteModelChatMessage(ModelChatMessage modelChatMessage)
 {
     return(Logic.DeleteMessages(new string[] { modelChatMessage.Id }));
 }
Ejemplo n.º 17
0
 /// <summary> Пометить сообщения как прочитанные (помечаются все сообщения выше переданного) </summary>
 public static bool MarkReadModelChatMessage(ModelChatMessage modelChatMessage)
 {
     return(Logic.MarkMessagesAsReaded(modelChatMessage.Id));
 }
Ejemplo n.º 18
0
        /// <summary> Получить ChatMessageModelManaged из ModelChatMessage </summary>
        private static ChatMessageModelManaged ConvertModelChatMessageFromChatMessageModelManaged(ModelChatMessage modelChatMessage)
        {
            if (modelChatMessage == null)
            {
                return(null);
            }

            var result = new ChatMessageModelManaged
            {
                Id            = modelChatMessage.Id,
                ChatId        = modelChatMessage.IdChat,
                SendTime      = modelChatMessage.SendTime,
                Servered      = modelChatMessage.Servered,
                Readed        = modelChatMessage.Readed,
                StringContent = modelChatMessage.StringContent,

                Sender      = DataSourceContact.GetContactModelManagedFromModelContact(modelChatMessage.Sender),
                ContactData = DataSourceContact.GetContactModelManagedFromModelContact(modelChatMessage.ModelContactData),
                Type        = (ChatMessageTypeManaged)modelChatMessage.ModelEnumChatMessageTypeObj.Code
            };


            if (modelChatMessage.ModelNotificationDataObj != null)
            {
                result.NotificationData = new ChatNotificationDataManaged()
                {
                    Contacts = DataSourceContact.ConvertListModelContactFromArrayContactModelManaged(modelChatMessage.ModelNotificationDataObj.ListModelContact).ToArray(),
                    Type     = (ChatNotificationTypeManaged)modelChatMessage.ModelNotificationDataObj.ModelEnumChatNotificationTypeObj.Code
                };
            }

            if (modelChatMessage.HaveQuoted)
            {
                result.QuotedMessages = ConvertListModelChatMessageFromListChatMessageModelManaged(modelChatMessage.ListQuotedModelChatMessage.ToList()).ToArray();
            }

            return(result);
        }
Ejemplo n.º 19
0
        /// <summary> Добавить сообщение к цитированым </summary>
        public void AddToQuotedMessage(ModelChatMessage modelChatMessage)
        {
            _currentListQuotedMessage.Add(modelChatMessage);

            JustAnswerCurrentMessage = true;
        }