public async Task <Unit> Handle(TransferCommand request, CancellationToken cancellationToken) { var transaction = await _transactionsTable.GetByIdAsync(request.TransactionId); var writeOffAccount = await _accountsTable.GetAsync(transaction.WriteOffAccount, transaction.UserId); ValidateWriteOffAccount(writeOffAccount, transaction); var destinationAccount = await _accountsTable.GetByIdAsync(transaction.DestinationAccount); ValidateDestinationAccount(destinationAccount, transaction); writeOffAccount.Balance -= transaction.Amount; writeOffAccount.LastModified = DateTime.UtcNow; destinationAccount.Balance += transaction.Amount; destinationAccount.LastModified = DateTime.UtcNow; await _accountsTable.UpdateAsync(writeOffAccount); await _accountsTable.UpdateAsync(destinationAccount); return(Unit.Value); }