/// <summary> /// Updating exist message in Messages database table /// </summary> /// <param name="message"><see cref="MessageReceiveModel"/></param> public MessageResponseModel Update(MessageReceiveModel message) { using (var context = new DatabaseContext()) { if (message.Id.HasValue) { var messageDb = context.Messages.FirstOrDefault(m => m.Id == message.Id.Value); if (messageDb == null) { throw new Exception("Сообщение не найдено"); } messageDb.UserMessage = message.UserMassage ?? messageDb.UserMessage; messageDb.IsReaded = message.IsReaded; messageDb.File = message.File?.BinaryForm ?? messageDb.File; messageDb.FileExtension = message.File?.Extension ?? messageDb.FileExtension; messageDb.FileName = message.File?.FileName ?? messageDb.FileName; context.SaveChanges(); } else { throw new Exception("Ошибка передачи данных, у модели не установлено свойство Id"); } //getting updated message from database var updatedMessage = context.Messages.FirstOrDefault(m => m.Id == message.Id); return(new MessageResponseModel() { Id = updatedMessage.Id, UserId = updatedMessage.FromUserId, IsReaded = updatedMessage.IsReaded, ChatId = updatedMessage.ChatId, Date = updatedMessage.Date, UserMassage = updatedMessage.UserMessage, File = string.IsNullOrEmpty(updatedMessage.FileName) ? null : new FileModel() { FileName = updatedMessage.FileName, Extension = updatedMessage.FileExtension, BinaryForm = updatedMessage.File } }); } }
/// <summary> /// Deleting message from Messages database table by Id /// </summary> /// <param name="messageModel"><see cref="MessageReceiveModel"/></param> public void DeleteMessage(MessageReceiveModel messageModel) { using (DatabaseContext context = new DatabaseContext()) { if (messageModel.Id.HasValue) { var mess = context.Messages.FirstOrDefault(m => m.Id == messageModel.Id.Value); if (mess == null) { throw new Exception("Сообщение не найдено"); } context.Messages.Remove(mess); context.SaveChanges(); } else { throw new Exception("Ошибка передачи данных, у модели не установлено свойство Id"); } } }
/// <summary> /// Adding a new message to Messages database table /// </summary> /// <param name="messageModel"><see cref="MessageReceiveModel"/></param> /// <returns>?<see cref="MessageResponseModel"/></returns> public MessageResponseModel AddMessage(MessageReceiveModel messageModel) { using (DatabaseContext context = new DatabaseContext()) { context.Messages.Add(new Message() { ChatId = messageModel.ChatId, FromUserId = messageModel.FromUserId, Date = messageModel.Date, UserMessage = messageModel.UserMassage, IsReaded = false, FileName = messageModel.File?.FileName, FileExtension = messageModel.File?.Extension, File = messageModel.File?.BinaryForm }); context.SaveChanges(); //getting added message from database var addedMessage = context.Messages.FirstOrDefault(m => m.ChatId == messageModel.ChatId && m.FromUserId == messageModel.FromUserId && m.UserMessage.Equals(messageModel.UserMassage) && m.Date.Equals(messageModel.Date)); return(new MessageResponseModel() { Id = addedMessage.Id, UserId = addedMessage.FromUserId, ChatId = addedMessage.ChatId, Date = addedMessage.Date, IsReaded = addedMessage.IsReaded, UserMassage = addedMessage.UserMessage, File = string.IsNullOrEmpty(addedMessage.FileName) ? null : new FileModel() { FileName = addedMessage.FileName, Extension = addedMessage.FileExtension, BinaryForm = addedMessage.File } }); } }
public OperationResultInfo DeleteMessage(MessageReceiveModel messageModel) { try { _messageLogic.DeleteMessage(messageModel); return(new OperationResultInfo() { ErrorInfo = string.Empty, OperationResult = OperationsResults.Successfully, ToListener = ListenerType.ChatsMessagesDeleteListener }); } catch (Exception ex) { return(new OperationResultInfo() { ErrorInfo = ex.Message, OperationResult = OperationsResults.Unsuccessfully, ToListener = ListenerType.ChatsMessagesDeleteListener }); } }
public OperationResultInfo UpdateMessage(MessageReceiveModel messageModel) { try { var messageResponseModel = _messageLogic.Update(messageModel); return(new OperationResultInfo() { ErrorInfo = string.Empty, OperationResult = OperationsResults.Successfully, ToListener = ListenerType.ChatsMessagesListener, JsonData = messageResponseModel }); } catch (Exception ex) { return(new OperationResultInfo() { ErrorInfo = ex.Message, OperationResult = OperationsResults.Unsuccessfully, ToListener = ListenerType.ChatsMessagesListener }); } }
/// <summary> /// Synchronization users deleting messages /// </summary> public void SynchronizeChatsDeletingMessages(MessageReceiveModel message) { var chatUsers = _mainLogic.GetChatUsers(message.ChatId); var onlineUsers = _connectedClients.Where(ou => ou.Id != message.FromUserId && chatUsers.FirstOrDefault(u => u.Id == ou.Id) != null); Parallel.ForEach(onlineUsers, (ou) => { _logger.Info($"Sync deleting chat message {message.Id}: {message.UserMassage} for user {ou.Id} by user {message.FromUserId} from chat {message.ChatId}"); var responseJson = _jsonStringSerializer.Serialize(new OperationResultInfo() { ErrorInfo = string.Empty, ToListener = ListenerType.ChatsMessagesDeleteListener, OperationResult = OperationsResults.Successfully, JsonData = _jsonStringSerializer.Serialize(new MessageResponseModel() { Id = message.Id.Value, ChatId = message.ChatId }) }); ou.SendMessage(_encoder.Encryption(responseJson)); //ou.SendMessage(responseJson); }); }