コード例 #1
0
 public async Task Handle(CompleteTransfer completeTransfer, IMessageHandlerContext context)
 {
     try
     {
         log.Info($"CompleteTransferHandler, TransferId = {completeTransfer.TransactionId}");
         var nHibernateSession = context.SynchronizedStorageSession.Session();
         var transactionId = TransactionId.FromExisting(completeTransfer.TransactionId);
         var transaction = nHibernateSession.Get<Transaction>(transactionId) ?? Transaction.NonExisting();
         if (transaction.DoesNotExist())
         {
             return;
         }
         transaction.Complete();
         transaction.ChangeUpdatedAt();
         nHibernateSession.Save(transaction);
         var transferCompleted = new TransferCompleted
         (
             completeTransfer.TransactionId
         );
         await context.Publish(transferCompleted);
     }
     catch (Exception ex)
     {
         log.Error(ex.Message + " ** " + ex.StackTrace);
     }
 }
コード例 #2
0
        public static Transaction NonExisting()
        {
            DateTime      Now               = DateTime.Now;
            TransactionId transactionId     = TransactionId.FromExisting(null);
            BankAccountId fromBankAccountId = BankAccountId.FromExisting(null);
            BankAccountId toBankAccountId   = BankAccountId.FromExisting(null);

            return(new Transaction(
                       transactionId,
                       fromBankAccountId,
                       toBankAccountId,
                       null,
                       TransactionStateId.NULL,
                       Now,
                       Now));
        }
コード例 #3
0
 public async Task Handle(StartTransfer startTransfer, IMessageHandlerContext context)
 {
     try
     {
         log.Info($"StartTransferHandler, TransactionId = {startTransfer.TransactionId}");
         var nHibernateSession = context.SynchronizedStorageSession.Session();
         var transactionId     = TransactionId.FromExisting(startTransfer.TransactionId);
         var fromBankAccount   = nHibernateSession.Query <BankAccount>().FirstOrDefault
                                     (x => x.BankAccountNumber.Number == startTransfer.FromBankAccountNumber) ?? BankAccount.NonExisting();
         if (fromBankAccount.DoesNotExist())
         {
             return;
         }
         var toBankAccount = nHibernateSession.Query <BankAccount>().FirstOrDefault
                                 (x => x.BankAccountNumber.Number == startTransfer.ToBankAccountNumber) ?? BankAccount.NonExisting();
         if (toBankAccount.DoesNotExist())
         {
             return;
         }
         var money            = Money.Dollars(startTransfer.Amount);
         var transactionState = TransactionStateId.STARTED;
         var now         = DateTime.UtcNow;
         var transaction = new Transaction(
             transactionId,
             fromBankAccount.BankAccountId,
             toBankAccount.BankAccountId,
             money,
             transactionState,
             now,
             now
             );
         nHibernateSession.Save(transaction);
         var transferStarted = new TransferStarted
                               (
             startTransfer.TransactionId,
             fromBankAccount.BankAccountId.Id,
             toBankAccount.BankAccountId.Id,
             startTransfer.Amount
                               );
         await context.Publish(transferStarted);
     }
     catch (Exception ex)
     {
         log.Error(ex.Message + " ** " + ex.StackTrace);
     }
 }