/// <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)); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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; } }
/// <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(); } }
/// <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); }
public DynamicModelChat(ModelChatMessage _ModelChatMessage) { this._ModelChatMessage = _ModelChatMessage; }
/// <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); }
/// <summary> Сохранить черновик </summary> public static bool SaveDraftModelChatMessage(ModelChatMessage modelChatMessage) { return(Logic.SaveChatMessageDraft(GetChatMessageModelManagedFromModelChatMessage(modelChatMessage))); }
/// <summary> Разрешение редактировать сообщение </summary> public bool CanEditMessage(ModelChatMessage modelChatMessage) { return(DataSourceChat.CanEditMessage(modelChatMessage)); }
/// <summary> Редактировать сообщение с ответом </summary> public static bool EditMessage(ModelChatMessage modelChatMessage, string text, bool shouldDeleteQuote) { return(Logic.CorrectMessage(modelChatMessage.Id, text, shouldDeleteQuote)); }
/// <summary> Редактировать сообщение </summary> public static bool EditMessage(ModelChatMessage modelChatMessage, string text) { return(Logic.CorrectMessage(modelChatMessage.Id, text)); }
/// <summary> Разрешение редактировать сообщение </summary> public static bool CanEditMessage(ModelChatMessage modelChatMessage) { return(Logic.CanEditMessage(modelChatMessage.Id)); }
/// <summary> Удалить сообщение </summary> public static bool DeleteModelChatMessage(ModelChatMessage modelChatMessage) { return(Logic.DeleteMessages(new string[] { modelChatMessage.Id })); }
/// <summary> Пометить сообщения как прочитанные (помечаются все сообщения выше переданного) </summary> public static bool MarkReadModelChatMessage(ModelChatMessage modelChatMessage) { return(Logic.MarkMessagesAsReaded(modelChatMessage.Id)); }
/// <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); }
/// <summary> Добавить сообщение к цитированым </summary> public void AddToQuotedMessage(ModelChatMessage modelChatMessage) { _currentListQuotedMessage.Add(modelChatMessage); JustAnswerCurrentMessage = true; }