Exemple #1
0
        /// <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
                    }
                });
            }
        }
Exemple #2
0
 /// <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");
         }
     }
 }
Exemple #3
0
        /// <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
                    }
                });
            }
        }
Exemple #4
0
 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
         });
     }
 }
Exemple #5
0
 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);
            });
        }