private async Task <Message> SaveMessageAsync(DecryptedMessageDto message) { var dialog = await dialogProvider.GetDialogAsync(message.SenderId, message.ReceiverId); if (dialog == null) { dialog = new Dialog() { User1Id = message.SenderId, User2Id = message.ReceiverId }; await dialogProvider.CreateOrUpdateAsync(dialog); } var cypher = await cypherProvider.CreateOrUpdateAsync(new Cypher() { Secret = message.Aes.FromUrlSafeBase64() }); var model = new Message() { MessageId = message.MessageId, Created = DateTime.Now, MessageText = message.CryptedText, CypherId = cypher.Id, SenderId = message.SenderId, ReceiverId = message.ReceiverId, DialogId = dialog.Id, IsReaded = false }; await messageProvider.CreateOrUpdateAsync(model); return(model); }