private void OnTransactionCompleted(object sender, TransactionEventArgs e) { var transaction = e.Transaction; var transId = transaction.TransactionInformation.LocalIdentifier; try { logger?.LogDebug("TransId:{0} OnTransactionCompleted Status:{1}", transId, transaction.TransactionInformation.Status); var items = GetAll(transId, true); if (transaction.TransactionInformation.Status == TransactionStatus.Committed) { TransactionCommitted?.Invoke(this, items); } else { TransactionAborted?.Invoke(this, items); } } finally { transaction.TransactionCompleted -= OnTransactionCompleted; subscribedTransaction = null; transactionItems.TryRemove(transId, out _); } }
private void Apply(TransactionCommitted transactionCommitted) { Balance -= transactionCommitted.Amount; OutstandingTransactions.Remove(transactionCommitted.TransactionId); }