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);
        }